如何在HashiCorp Vault Docker Compose文件中设置自己的root令牌

7

当前使用的Vault Docker Compose文件中,我无法使用我在Docker Compose文件中设置的令牌进行登录。当Vault容器启动时,它会提供自己的根令牌来验证Vault服务器。每当我们启动新容器时,这个根令牌都会改变,开发人员必须每次从控制台记下令牌并使用该令牌登录Vault。

相反,我希望将其作为Docker Compose文件的一部分设置 - 我该如何做到这一点。

请查看我的Docker Compose文件如下:

version: '3'
services:
  myvault:
        image: vault
        container_name: myvault
        ports:
          - "192.168.99.100:8200:8200"
        environment:
           VAULT_SERVER: "http://192.168.99.100:8200"
           TOKEN: mysuper-secret-vault-token
        volumes:
          - ./file:/vault/file:rw
          - ./config:/vault/config:rw
        cap_add:
          - IPC_LOCK
3个回答

4
您可以通过在环境中传递VAULT_DEV_ROOT_TOKEN_ID来创建自己的根令牌,但请记住,这仅在您使用开发模式下的Vault时才有效,不建议在生产环境中使用。请访问https://www.vaultproject.io/docs/commands/server.html
version: '3'
services:
myvault:
    image: vault
    container_name: myvault
    ports:
      - 8200:8200
    environment:
       VAULT_SERVER: "http://127.0.0.1:8200"
       VAULT_DEV_ROOT_TOKEN_ID: "my-token"

4
首先,出于安全原因,不应使用根令牌进行身份验证,因为它可以执行任何操作

Vault团队建议只在必要的初始设置(通常是设置身份验证方法和策略以允许管理员获取更受限制的令牌)或紧急情况下使用根令牌,并在不再需要时立即撤销。如果需要新的根令牌,则可以使用operator generate-root命令和相关的API端点来实时生成一个。

现在,关于根令牌创建,从vault文档中得知:

只有三种方式可以创建根令牌:

  • 在初始化时生成的初始根令牌--该令牌没有过期时间
  • 使用另一个根令牌;带有过期时间的根令牌无法创建永不过期的根令牌
  • 使用拥有解密密钥的多数派权限的vault operator generate-root(示例)

对于您的情况,您可以考虑使用其他身份验证方法,而不是令牌身份验证,例如Userpass Auth Method
Userpass Auth将允许您为同一用户角色设置相同的用户名/密码对。您可以创建一些脚本,在服务器的每个初始设置中启用此身份验证机制并为每个用户设置角色。

0

遵循 hvac 文档 ( https://hvac.readthedocs.io/en/stable/overview.html#initialize-the-client )

我使用以下 Python 脚本成功获取了 root token:

import hvac
from icecream import ic
client = hvac.Client(url='http://localhost:8200')
ic(client.is_authenticated())
ic(client.sys.is_initialized())

shares = 5
threshold = 3

result = client.sys.initialize(shares, threshold)
ic(result['root_token'])
ic(result['keys'])

ic(client.sys.is_initialized())

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接