GitHub
github
验证方法可使用 GitHub 个人访问令牌对 Vault 进行身份验证。这种身份验证方法对人类最有用:运维或开发人员直接通过命令行登录 Vault 。
重要说明:Vault 不支持通过 OAuth 工作流程来生成 GitHub 令牌,因此它不是一个 GitHub 应用程序。所以该验证方法使用个人访问令牌。一个重要的结果是,通过 Vault 配置 GitHub 组织中的任何用户的有效 GitHub 访问令牌,只要具有 read:org
权限,都可以用于身份验证。如果此类令牌从第三方服务中被盗,并且攻击者能够通过网络对 Vault 进行调用,他们将能够以生成访问令牌的用户的身份登录 Vault。使用本方法时,最好禁止通过公网对 Vault 进行访问。如果这种风险是不可承受的,则应使用不同的方法。
身份验证
通过命令行
默认挂载路径是/github
。如果在其他挂载点启用该方法,请替代命令中的-path=/my-path
部分:
$ vault login -method=github token="MY_TOKEN"
通过 API
默认端点是 auth/github/login
。如果在其他挂载点启用该方法,请替代路径中的 github
:
$ curl \
--request POST \
--data '{"token": "MY_TOKEN"}' \
http://127.0.0.1:8200/v1/auth/github/login
响应会在 auth.client_token
包含令牌数据:
{
"auth": {
"renewable": true,
"lease_duration": 2764800,
"metadata": {
"username": "my-user",
"org": "my-org"
},
"policies": ["default", "dev-policy"],
"accessor": "f93c4b2d-18b6-2b50-7a32-0fecf88237b8",
"client_token": "1977fceb-3bfa-6c71-4d1f-b64af98ac018"
}
}
配置
在用户或者及其可以使用该验证方法之前必须预先进行必要的配置。需要执行以下步骤:
- 启用 GitHub 验证方法:
$ vault auth enable github
- 通过
/config
端点来配置 Vault 如何验证 GitHub 的令牌:
$ vault write auth/github/config organization=hashicorp
请访问相关 API 文档获取完整的配置项列表。
- 将 GitHub 组织里的用户名或者组名映射到 Vault 策略上。组名必须经过 ASCII 编码处理(slugify)。
$ vault write auth/github/map/teams/dev value=dev-policy
在上面的例子里,属于 "hashicorp" 组织的 "dev" 组的用户的 GitHub 个人访问令牌可以被用来登录 Vault,他们会得到一个包含 "dev-policy" 策略的令牌。
我们也可以通过 map/users/<user>
端点把特定用户映射到指定策略上:
$ vault write auth/github/map/users/sethvargo value=sethvargo-policy
在上面的例子里,除了现存的团队策略以外,名为 sethvargo
的 GitHub 用户还会被授予 sethvargo-policy
策略。