Hashicorp Vault ACL 策略模板/用于 Vault 主机密钥签名

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

我尝试设置安全保管库主机密钥签名。

为此,我在保险库中编写了以下政策:

path "ssh_host_signer/sign/*" {
  capabilities = ["create", "update"]
  required_parameters = ["cert_type", "public_key", "valid_principals"]
  allowed_parameters = {
    "cert_type" = ["host"],
    "public_key" = [],
    "valid_principals" = ["{{identity.entity.aliases.auth_cert_XXX.name}}"]
  }
}

不幸的是,这不起作用。使用

valid_principals" = []
而不是在策略中,密钥签名有效,因此问题一定存在。

我尝试像这样签署主机密钥:

vault write ssh_host_signer/sign/host cert_type=host public_key=@/etc/ssh/ssh_host_rsa_key.pub valid_principals=hostname.internal

如果我得到

entity_id
$ vault token lookup
然后是实体数据,我得到:

vault read identity/entity/id/__ENTITY_ID__

Key                    Value
---                    -----
aliases                [map[canonical_id:XXX creation_time:1990-XXX custom_metadata:<nil> id:XXX last_update_time:XXX local:false merged_from_canonical_ids:<nil> metadata:<nil> mount_accessor:auth_cert_XXX mount_path:auth/cert/ mount_type:cert name:hostname.internal]]
creation_time          XXX
direct_group_ids       []
disabled               false
group_ids              []
id                     XXX
inherited_group_ids    []
last_update_time       XXX
merged_entity_ids      <nil>
metadata               <nil>
name                   entity_XXX
namespace_id           root
policies               []

以及别名数据:

vault read identity/entity-alias/id/__ALIAS_ID__

Key                          Value
---                          -----
canonical_id                 XXX
creation_time                XXX
custom_metadata              <nil>
id                           XXX
last_update_time             XXX
local                        false
merged_from_canonical_ids    <nil>
metadata                     <nil>
mount_accessor               auth_cert_XXX
mount_path                   auth/cert/
mount_type                   cert
name                         hostname.internal
namespace_id                 root

关于应该有效的文档:https://developer.hashicorp.com/vault/tutorials/policies/policy-templated#create-templated-acl-policies

那么为什么这不能像上面描述的那样工作(

"valid_principals" = ["{{identity.entity.aliases.auth_cert_XXX.name}}"]
)以及如何解决主机只能签署自己的密钥的问题?

acl hashicorp-vault vault hashicorp
1个回答
0
投票

借助 HashiCorp Vault 中的 ACL 策略路径模板,您只能在策略的 path 组件中利用模板参数。这是您政策的第一行,如下所示:

path "ssh_host_signer/sign/*" {

遗憾的是,您无法像您尝试那样在 Vault ACL 策略的

allowed_parameters
组件中利用 ACL 策略路径模板。为了达到您想要的结果,您需要为每个主机制定单独的策略。

HashiCorp 网站上的 Fine Grained Control 文档很好地详细说明了

allowed_parameters
选项的可能性。

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