vault登录后创建vault令牌-方法ldap
Vault版本1.5.2 我的最终目标是在一些地形代码中使用Vault来检索临时凭证。问题是Terraform将始终生成新的子令牌,即使当前令牌是5分钟令牌。这意味着当前的VAULT_令牌必须是某种超级根令牌,因为我已尝试使用LDAP后端登录,并且尝试使用哪些策略或令牌角色并不重要,似乎我永远无法生成新令牌 要复制Terraform正在做的事情:vault登录后创建vault令牌-方法ldap,ldap,terraform,hashicorp-vault,pulumi,Ldap,Terraform,Hashicorp Vault,Pulumi,Vault版本1.5.2 我的最终目标是在一些地形代码中使用Vault来检索临时凭证。问题是Terraform将始终生成新的子令牌,即使当前令牌是5分钟令牌。这意味着当前的VAULT_令牌必须是某种超级根令牌,因为我已尝试使用LDAP后端登录,并且尝试使用哪些策略或令牌角色并不重要,似乎我永远无法生成新令牌 要复制Terraform正在做的事情: vault login -address vault.example -ca-cert ca.pem -method ldap -path ldap_
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>
删除-role
参数,我们会得到相同的错误
我试着到处寻找我缺少的东西,但唯一可以创建子令牌的令牌似乎是根令牌
如果我错过了一些非常简单的事情,我道歉
我附加的一个示例策略(我尝试了许多策略,但这一个似乎是最极端的)
感谢您的帮助
编辑:
我花时间设置了一些方法来测试这一点。我添加了与LDAP后端完全相同的策略。使用approle,我可以获得一个令牌,然后从初始令牌创建新令牌。我查看了LDAP文档,看看是否遗漏了一个地方,上面说您不能从源自LDAP的令牌创建子令牌,我找不到任何内容:
编辑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\u num\u uses
。从和,将token\u num\u uses
设置为非零将阻止令牌创建子令牌
对于LDAP和AppRole,它被破坏的原因是因为LDAP后端正在应用
token\u num\u uses
属性,而我猜AppRole后端没有。您可以显示LDAP中令牌的详细信息吗?您对它有任何限制吗,比如令牌\u num\u使用的?LDAP引擎的配置是什么?token_num使用的看起来像56。我粘贴了用于创建LDAP后端的pulumi块。我认为大多数变量都不相关,但如果需要,可以给出扩展使用的示例,看起来将token\u num\u uses
设置为非零会阻止令牌创建子令牌。它在LDAP中被破坏并为AppRole工作的原因是LDAP后端正在应用token\u num\u uses
属性,而我猜AppRole后端是not@lxop这就是解决办法。你能补充一个答案吗?这样我就可以给你评分了?
path "auth/*" {
capabilities = ["create", "read", "update", "delete", "list", "sudo"]
}
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,
)