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"
  }
}

配置

在用户或者及其可以使用该验证方法之前必须预先进行必要的配置。需要执行以下步骤:

  1. 启用 GitHub 验证方法:
$ vault auth enable github
  1. 通过 /config 端点来配置 Vault 如何验证 GitHub 的令牌:
$ vault write auth/github/config organization=hashicorp

请访问相关 API 文档获取完整的配置项列表。

  1. 将 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 策略。

results matching ""

    No results matching ""