首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我们可以在领事策略中使用通配符作为节点或服务吗?

我们可以在领事策略中使用通配符作为节点或服务吗?
EN

Stack Overflow用户
提问于 2021-08-23 14:40:45
回答 1查看 313关注 0票数 0

我正试图建立领事支持的金库群。我的领事集群运行良好,但是当我设置我的保险库领事代理时,我需要给代理令牌一个带有策略的代理令牌,以便在节点上具有写访问权限。

基本上,我希望我的保险库领事代理应该能够注册节点,其名称仅以“vault”开头。

为此,我尝试了以下政策

代码语言:javascript
复制
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阻止的更新

实际上,我希望我的代理应该能够用特定的名称注册它们的节点,而只识别它们。对于每个服务,都会有具有特定策略的独立代理令牌。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-26 21:59:52

领事的ACL系统支持定义两种类型的规则:基于前缀的规则和精确匹配规则.根据https://www.consul.io/docs/security/acl/acl-rules#rule-specification

当使用基于前缀的规则时,最特定的前缀匹配决定操作.这允许灵活的规则,比如一个空前缀,允许对所有资源进行只读访问,以及一些允许写访问或拒绝所有访问的特定前缀。精确匹配规则只适用于指定的确切资源。

当为领事代理创建令牌时,您可以使用以下策略,这些代理与Vault服务器位于同一位置。

代码语言:javascript
复制
## 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:readsession:read特权,所以我已经从示例策略中删除了这些特权。

在领事1.8.1+中,您可以通过使用节点标识进一步简化这一点,如果您希望锁定令牌的策略,则无需创建特定节点的ACL策略,以便它只能注册特定的名称(例如,vault-01)。

代码语言:javascript
复制
$ consul acl token create -node-identity=vault-01:dc1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68894626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档