我正试图建立领事支持的金库群。我的领事集群运行良好,但是当我设置我的保险库领事代理时,我需要给代理令牌一个带有策略的代理令牌,以便在节点上具有写访问权限。
基本上,我希望我的保险库领事代理应该能够注册节点,其名称仅以“vault”开头。
为此,我尝试了以下政策
agent_prefix "" {
policy = "write"
}
node "vault-*" {
policy = "write"
}
node_prefix "" {
policy = "read"
}
service_prefix "" {
policy = "read"
}
session_prefix "" {
policy = "read"
}在我的领事配置中,我给出了node_name=va-0/1/2
我尝试在策略中使用通配符对特定节点名进行写访问,并对所有节点进行读取,结果如下所示
代理:协调由ACLs: accessorID=3db5e2e7-3264-50a9-c8f1-a5c955c5bec0阻止的更新
实际上,我希望我的代理应该能够用特定的名称注册它们的节点,而只识别它们。对于每个服务,都会有具有特定策略的独立代理令牌。
发布于 2021-08-26 21:59:52
领事的ACL系统支持定义两种类型的规则:基于前缀的规则和精确匹配规则.根据https://www.consul.io/docs/security/acl/acl-rules#rule-specification,
当使用基于前缀的规则时,最特定的前缀匹配决定操作.这允许灵活的规则,比如一个空前缀,允许对所有资源进行只读访问,以及一些允许写访问或拒绝所有访问的特定前缀。精确匹配规则只适用于指定的确切资源。
当为领事代理创建令牌时,您可以使用以下策略,这些代理与Vault服务器位于同一位置。
## consul-agent-policy.hcl
# Allow the agent write access to agent APIs on nodes starting with the name 'vault-'.
agent_prefix "vault-" {
policy = "write"
}
# Allow registering a node into the catalog if the name starts with 'vault-'
node_prefix "vault-" {
policy = "write"
}
# Allow the node to resolve any service in the datacenter
service_prefix "" {
policy = "read"
}您不应该需要领事代理的node:read或session:read特权,所以我已经从示例策略中删除了这些特权。
在领事1.8.1+中,您可以通过使用节点标识进一步简化这一点,如果您希望锁定令牌的策略,则无需创建特定节点的ACL策略,以便它只能注册特定的名称(例如,vault-01)。
$ consul acl token create -node-identity=vault-01:dc1https://stackoverflow.com/questions/68894626
复制相似问题