腾讯云主机安全 | 将 Github Actions 加入异常登录白名单

  • ~3.06K 字
  • 次阅读
  • 条评论
  1. 1. 先看看相关文档吧~
  2. 2. 创建 Github 令牌
  3. 3. 获取 Github Actions 的 IP 地址
  4. 4. 配置腾讯云主机安全白名单

博主在折腾 Github Actions 自动化构建前端项目并部署至服务器时用到了 SCP 和 SSH ,但由于 Github Actions 的 Windows 和 Ubuntu 运行程序是托管在 Azure 的,并不属于常用登录地,于是乎,请看 VCR :

站内信

短信

怎么最后还有个总结(笑cry.jpg

那么怎样才能在不关闭异常登录提醒(好像也不能关)的情况下,通过白名单配置,减少 Github Actions 自动化部署带来的打扰呢?

先看看相关文档吧~

Github 在 Github Actions 的文档中提到了运行器的 IP 地址通信要求,直接配置 Github 提供的 CNAME 地址理论可行,但很可惜腾讯云并不支持这种操作…

IP格式不正确

好在 Github 的 REST API 提供了获取 Github 元数据的接口,所以根据 Github 文档,我们可以通过 API 来获取 Github Actions 的 IP 地址范围。

在请求 API 之前,我们需要创建一个 Github 令牌(Token)。

创建 Github 令牌

登录 Github 之后,便可以在 这里 生成一个令牌。

创建令牌

点击右上角的 Generate new token (classic) 之后,会进入到令牌的配置页面,Notes 部分用作密钥标识,任意即可,随后不需要授予任何权限,在页面最底部直接点击 Generate token 创建令牌。

配置令牌

随后你会在一个浅绿色的框中看到一串以 ghp_ 开头的内容,点击复制按钮,这就是你刚创建的 Github 令牌。

获取 Github Actions 的 IP 地址

参照 Github 文档 ,我们可以在终端使用 cURL 工具发起如下请求(需要将 <YOUR-TOKEN> 替换为上一步得到的令牌值)

1
2
3
4
5
curl -L \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/meta

Github API 返回的内容是 JSON 格式的数据,并且包含了不止一个服务的 IP 地址和域名,Github Actions 的 IP 地址在 action 字段

对于 Linux 用户,可以使用 jq 工具进行解析:

1
2
3
4
curl -L -H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/meta | jq -r '.actions[]' > actions.txt

对于 Windows 用户,可以使用 PowerShell 来完成:

1
2
3
4
5
6
7
curl.exe -L -H "Accept: application/vnd.github+json" `
-H "Authorization: Bearer <YOUR-TOKEN>" `
-H "X-GitHub-Api-Version: 2022-11-28" `
https://api.github.com/meta |
ConvertFrom-Json |
Select-Object -ExpandProperty actions |
Out-File actions.txt -Encoding utf8

这两种方案均可解析 JSON 并将 Github Actions 的 IP 存入当前目录下的 actions.txt 文件,一行一个。

获取 Github Actions 的 IP 地址

配置腾讯云主机安全白名单

登录腾讯云控制台,进入 异常登录白名单管理 ,点击添加白名单,将 actions.txt 中的内容粘贴至 登录源IP 的输入框中,配置相应的生效范围并保存。

配置白名单

emm…似乎不太行 ::>_<::

经过测试,腾讯云的白名单有字数限制,因此只能扩大 IP 地址范围来满足字数限制。

超聚合的 IPv4 的结果如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
4.0.0.0/8
9.0.0.0/8
13.64.0.0/11
13.80.0.0/12
13.88.0.0/13
13.104.0.0/14
20.0.0.0/10
20.32.0.0/11
20.64.0.0/10
20.128.0.0/9
23.96.0.0/11
23.100.0.0/13
40.64.0.0/10
40.128.0.0/9
48.208.0.0/13
48.209.0.0/16
48.211.0.0/16
48.213.128.0/18
48.214.0.0/17
48.216.128.0/17
48.217.0.0/16
48.219.240.0/20
48.221.0.0/17
50.85.0.0/16
51.0.0.0/10
52.96.0.0/12
52.128.0.0/9
57.150.0.0/15
57.152.0.0/13
64.236.0.0/16
65.52.0.0/14
68.154.0.0/15
70.37.0.0/16
72.145.0.0/13
74.178.0.0/15
94.245.88.0/21
104.40.0.0/13
104.208.0.0/11
108.141.0.0/15
128.24.0.0/13
130.131.0.0/16
130.213.0.0/16
132.164.0.0/15
134.33.0.0/15
134.149.0.0/16
135.18.128.0/17
135.119.0.0/16
135.130.0.0/16
135.222.0.0/16
135.224.0.0/13
137.116.0.0/15
151.206.0.0/16
157.55.0.0/16
168.61.0.0/16
168.62.0.0/15
168.63.0.0/16
172.168.0.0/13
191.233.0.0/13
193.149.64.0/18
199.30.0.0/16
204.79.180.0/24
207.46.0.0/16
209.199.17.0/24
213.199.128.0/17

用超聚合后的地址进行配置显然会降低安全性,因此建议同时配置登录用户名,并将登录时间设置为工作时间来降低风险。

这显然不是最优方法,但是聊胜于无。博主暂时没有找到更好的方法来完整填入这些地址范围,或许只有等腾讯云增大输入框的字数限制了orz.

什么,你说分批配置?也不是不行 :D

赞助喵
非常感谢您的喜欢!
赞助喵
分享这一刻
让朋友们也来瞅瞅!