领事配置和发现-只读键值存储,服务的写权限

时间:2019-05-24 11:02:28

标签: security consul service-discovery

我想将Consul用于服务发现,并用作我的微服务的分布式配置。没有任何安全性,我的系统运行良好,但是我不希望每个用户都可以更改键值存储中的值。因此,我尝试通过Consul的ACL引入安全性,但是现在我的服务无法再进行自我注册。

我将HCL配置中的默认策略设置为“拒绝”,并尝试为每个服务设置写策略,以便它们可以在Consul注册自己,并为键值存储区注册读策略,因此这些值只能通过UI读取。但是我的服务在注册过程中收到403。

agent.hcl

service_prefix "" {
  policy = "write"
}
key_prefix "" {
  policy = "read"
}

consul-policy.hcl

service_prefix "" {
  policy = "write"
}
key_prefix "" {
  policy = "read"
}

我通过以下方式启动服务器:

consul agent -config-file agent.hcl -dev

并添加了策略(获取并设置ACL令牌后):

consul acl policy create -name consul-server-one -rules @consul-policy.hcl
  1. 如何定义UI中键值存储的只读策略和服务的写策略?
  2. 是否可以使用ACL配置启动Consul(而不是在启动过程后交付)?
  3. 哪些ACL资源最适合我的问题? service_prefix和key_prefix是正确的选择吗?

1 个答案:

答案 0 :(得分:0)

我想念的是您需要为策略生成令牌的事实。

consul acl token create -description "Token description" -policy-name "consul-server-one" -token "(your global token)"

我想使用可以通过以下方式设置的默认令牌:

consul acl set-agent-token -token "(your global token)" default (your generated token)