vault登录后创建vault令牌-方法ldap

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版本1.5.2

我的最终目标是在一些地形代码中使用Vault来检索临时凭证。问题是Terraform将始终生成新的子令牌,即使当前令牌是5分钟令牌。这意味着当前的VAULT_令牌必须是某种超级根令牌,因为我已尝试使用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>
删除
-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,
    )