保管库登录后创建保管库令牌-方法 ldap
vault token create after vault login -method ldap
保险库版本 1.5.2
我的最终目标是在某些 Terraform 代码中使用 Vault 来检索临时凭证。问题是 Terraform 将始终生成一个新的子令牌,即使当前令牌是 5 分钟令牌也是如此。这意味着当前 VAULT_TOKEN 必须是某种超级根令牌,因为我已经尝试使用 LDAP 后端登录,而且我尝试使用哪种策略或令牌角色并不重要,似乎我永远无法生成新的令牌。
要复制 Terraform 正在做的事情:
vault login -address vault.example -ca-cert ca.pem -method ldap -path ldap_users user=botman
Couldn't start vault with IPC_LOCK. Disabling IPC_LOCK, please use --privileged or --cap-add IPC_LOCK
Password (will be hidden):
s.<token>
我拥有策略定义的所有权限,一切似乎都很好。
现在尝试创建子令牌:
vault token create -address vault.example -ca-cert ca.pem -role superrole
Error creating token: Error making API request.
URL: POST https://vault.example/v1/auth/token/create/superrole
Code: 400. Errors:
* restricted use token cannot generate child tokens
删除-role
参数,我们得到同样的错误。
我试着到处寻找我遗漏了什么,但唯一可以创建子令牌的令牌似乎是根令牌。
如果我错过了一些非常简单的事情,我深表歉意。
我附上的示例政策(我尝试了很多政策,但这个似乎是最极端的)
path "auth/*" {
capabilities = ["create", "read", "update", "delete", "list", "sudo"]
}
感谢任何帮助。
编辑:
我花时间设置了一些 approles 来测试它。我添加了与 LDAP 后端完全相同的策略。有了 approle,我可以获得一个令牌,然后从初始令牌创建新令牌。我查看了 LDAP 文档,看看我是否遗漏了某处说您无法从源自 LDAP 的令牌创建子令牌的地方,但我找不到任何内容:https://www.vaultproject.io/docs/auth/ldap.html
编辑 2:
LDAP 身份验证后端的 Pulumi 配置
return vault.ldap.AuthBackend(
resource_name="vault-ldap-{}".format(ldap.name),
binddn=bind_dn,
bindpass=bind_pass,
certificate=cert,
description=ldap.desc,
discoverdn=False,
groupattr="cn",
groupdn=ldap.groupdn,
groupfilter="(&(objectClass=group)(member:1.2.840.113556.1.4.1941:={{.UserDN}}))",
insecure_tls=False,
path="ldap_{}".format(ldap.name),
starttls=False,
tls_max_version="tls12",
tls_min_version="tls10",
token_explicit_max_ttl=14 * 60 * 60 * 24,
token_max_ttl=7 * 60 * 60 * 24,
token_num_uses=56,
url=url,
userattr="samaccountname",
userdn=ldap.userdn,
opts=opts,
)
我看到您的 LDAP 后端正在设置 token_num_uses
。从 this documentation and this discussion 开始,将 token_num_uses
设置为 non-zero 将阻止令牌创建子令牌。
它在 LDAP 上被破坏并在 AppRole 上工作的原因是因为 LDAP 后端正在应用 token_num_uses
属性,而我猜 AppRole 后端不是。
保险库版本 1.5.2
我的最终目标是在某些 Terraform 代码中使用 Vault 来检索临时凭证。问题是 Terraform 将始终生成一个新的子令牌,即使当前令牌是 5 分钟令牌也是如此。这意味着当前 VAULT_TOKEN 必须是某种超级根令牌,因为我已经尝试使用 LDAP 后端登录,而且我尝试使用哪种策略或令牌角色并不重要,似乎我永远无法生成新的令牌。
要复制 Terraform 正在做的事情:
vault login -address vault.example -ca-cert ca.pem -method ldap -path ldap_users user=botman
Couldn't start vault with IPC_LOCK. Disabling IPC_LOCK, please use --privileged or --cap-add IPC_LOCK
Password (will be hidden):
s.<token>
我拥有策略定义的所有权限,一切似乎都很好。
现在尝试创建子令牌:
vault token create -address vault.example -ca-cert ca.pem -role superrole
Error creating token: Error making API request.
URL: POST https://vault.example/v1/auth/token/create/superrole
Code: 400. Errors:
* restricted use token cannot generate child tokens
删除-role
参数,我们得到同样的错误。
我试着到处寻找我遗漏了什么,但唯一可以创建子令牌的令牌似乎是根令牌。
如果我错过了一些非常简单的事情,我深表歉意。
我附上的示例政策(我尝试了很多政策,但这个似乎是最极端的)
path "auth/*" {
capabilities = ["create", "read", "update", "delete", "list", "sudo"]
}
感谢任何帮助。
编辑:
我花时间设置了一些 approles 来测试它。我添加了与 LDAP 后端完全相同的策略。有了 approle,我可以获得一个令牌,然后从初始令牌创建新令牌。我查看了 LDAP 文档,看看我是否遗漏了某处说您无法从源自 LDAP 的令牌创建子令牌的地方,但我找不到任何内容:https://www.vaultproject.io/docs/auth/ldap.html
编辑 2:
LDAP 身份验证后端的 Pulumi 配置
return vault.ldap.AuthBackend(
resource_name="vault-ldap-{}".format(ldap.name),
binddn=bind_dn,
bindpass=bind_pass,
certificate=cert,
description=ldap.desc,
discoverdn=False,
groupattr="cn",
groupdn=ldap.groupdn,
groupfilter="(&(objectClass=group)(member:1.2.840.113556.1.4.1941:={{.UserDN}}))",
insecure_tls=False,
path="ldap_{}".format(ldap.name),
starttls=False,
tls_max_version="tls12",
tls_min_version="tls10",
token_explicit_max_ttl=14 * 60 * 60 * 24,
token_max_ttl=7 * 60 * 60 * 24,
token_num_uses=56,
url=url,
userattr="samaccountname",
userdn=ldap.userdn,
opts=opts,
)
我看到您的 LDAP 后端正在设置 token_num_uses
。从 this documentation and this discussion 开始,将 token_num_uses
设置为 non-zero 将阻止令牌创建子令牌。
它在 LDAP 上被破坏并在 AppRole 上工作的原因是因为 LDAP 后端正在应用 token_num_uses
属性,而我猜 AppRole 后端不是。