允许用户密码验证方法用户更新自己密码的策略

问题描述 投票:0回答:1

我刚刚启动了一个保管库服务器并创建了两个策略,一个用于用户,另一个用于管理员。我使用默认密码创建了用户,但每次我想以用户身份修改密码时,它都不起作用。 这是政策

path "example-user-secret/*" {
  capabilities = ["list"]
}

path "auth/example-user-secret/users/{{identity.entity.name}}" {
  capabilities = ["update"]
  allowed_parameters = {
    "password" = []
  }
}

我希望用户能够登录他们的帐户并更改密码。

authentication password-protection policy hashicorp-vault
1个回答
0
投票

不幸的是,您的问题缺乏相当多的细节,特别是您使用的身份验证方法以及该身份验证方法安装在什么路径。您的策略似乎也将身份验证方法和秘密引擎混为一谈,因为您正在为

example-user-secret
编写功能,假定它是秘密引擎,但随后使用带有
auth/
前缀的相同路径,就好像它是身份验证方法一样。

抛开这些复杂性不谈,我认为您所追求的是授予 userpass auth method 用户在验证 Vault 后更改自己密码的权限。这可以通过ACL 策略路径模板 来完成。您需要找出

Accessor
身份验证方法的
userpass
名称是什么,然后将其用作策略路径模板的组件,将
userpass
用户名动态插入到 ACL 路径中。

我在下面提供了一个例子。该示例假设您已经运行 Vault 并且在默认路径启用了

userpass
身份验证方法。

概念证明

列出身份验证方法并记下

Accessor
方法。在这种情况下,它是
userpass
auth_userpass_3d268f1a

使用上一步中的 
~/work/sandbox/docker ❯ vault auth list Path Type Accessor Description Version ---- ---- -------- ----------- ------- token/ token auth_token_da64fc15 token based credentials n/a userpass/ userpass auth_userpass_3d268f1a n/a n/a

编写使用 ACL 策略路径模板的策略。

Accessor

创建一个用户并为其分配允许他们更改自己密码的策略。

~/work/sandbox/docker ❯ vault policy write update-password - << EOF path "auth/userpass/users/{{identity.entity.aliases.auth_userpass_3d268f1a.name}}/password" { capabilities = ["update"] } EOF Success! Uploaded policy: update-password

使用 
~/work/sandbox/docker ❯ vault write auth/userpass/users/bob \ password=foo \ policies=update-password Success! Data written to: auth/userpass/users/bob

用户登录。

userpass

更改您作为 
~/work/sandbox/docker ❯ vault login -method=userpass \ username=bob \ password=foo Success! You are now authenticated. The token information displayed below is already stored in the token helper. You do NOT need to run "vault login" again. Future Vault requests will automatically use this token. Key Value --- ----- token hvs.CAESIJH3IstBb2HTa4KStniyp4-rWOMTNjXSFy5dP7-oVjGqGh4KHGh2cy52NElqZGhsQ0J6R1VwQ3lTTWMzRVpYaUM token_accessor TRdlRhIbSt2PNVPuKX2a40pe token_duration 768h token_renewable true token_policies ["default" "update-password"] identity_policies [] policies ["default" "update-password"] token_meta_username bob

用户的密码。

userpass

使用新密码再次登录来测试更改。

~/work/sandbox/docker ❯ vault write auth/userpass/users/bob/password password=bar Success! Data written to: auth/userpass/users/bob/password

© www.soinside.com 2019 - 2024. All rights reserved.