Consul Key/value 在启用 acl 时不工作

Consul Key/value not working when acl enbled

当我将 Spring 微服务配置为启用 acl 时,consul 无法从 consul 读取 key/value。

“acl”:{ “启用”:真, "default_policy":"拒绝", “enable_token_persistence”:是的, "down_policy": "扩展缓存", “令牌”:{ “主人”:“72bef82a-5fdd-225e-5561-c07001492b22” } }

当 default_policy 允许我访问键值时。

我想确保default_policy拒绝。

请让我知道我在这里缺少什么?我需要任何政策吗?

您需要创建一个 ACL 策略来授予读取(和可选写入)所需 KV 路径的权限。例如:

# spring-cloud-consul-kv-policy.hcl
#
key_prefix "env/prod/app/springapp" {
  # Grant read and write permissions for the specified prefix.
  # Change to policy = 'read' if write is not needed.

  policy = "write"
}

使用 consul acl policy create 创建策略。

consul acl policy create \
  -name="SpringCloudAppPolicy" \
  -description="ACL policy for my SpringCloud app" \
  -rules=@spring-cloud-consul-kv-policy.hcl

然后创建一个令牌并使用consul acl token create分配此策略的权限。

consul acl token create -policy-name="SpringCloudAppPolicy"

令牌的 Secret ID 必须设置为 spring.cloud.consul.config.acl-token application property in in Spring Cloud Consul (see https://cloud.spring.io/spring-cloud-consul/reference/html/appendix.html) 的值。

执行这些步骤后,您的应用程序应该能够使用提供的 ACL 令牌从 Consul KV 存储中检索其配置。

我建议阅读 https://learn.hashicorp.com/tutorials/consul/access-control-setup-production 以获取有关使用 ACL 保护 Consul 的更多信息。