Consul ACL 和 Nomad

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

我遇到以下问题,我不确定我是否做错了什么或者它没有按预期工作。

  1. 我有一个启用了 ACL 的 consul 集群。
  2. ACL 默认策略设置为 DENY ("acl_default_policy": "deny",)
  3. 目前我一直使用主要管理 CONSUL 令牌进行通信。
  4. 我还使用管理令牌配置了 VAULT 和 NOMAD,并且“vault.service.consul”和“nomad.service.consul”正在 consul 中注册
  5. 我专门使用 consul 节和 consul 管理令牌配置了 NOMAD,以便能够与 consul 通信并注册自身。

consul {
      address = "127.0.0.1:8500"
      token   = "management token"
    }

我正在使用 NOMAD 来调度 Docker 容器。这些 docker 容器需要填充来自 CONSUL KV 存储的配置文件,我使其与 consul 模板一起使用(当未启用 ACL 时)。

现在我的问题是,当我在 CONSUL 中启用 ACL 时 - 由于 ACL,docker 容器无法从 CONSUL KV 存储中获取值,并出现 403 错误(权限拒绝)。我想既然我已经在 NOMAD 中配置了 consul 节,就像:

consul {
  address = "127.0.0.1:8500"
  token   = "management token"
}

使用 NOMAD 安排的所有作业都将能够使用该管理令牌,并且 Docker 容器将能够与 CONSUL KV 进行通信?!

如果我将管理令牌作为 Docker 环境变量放在 NOMAD 作业描述中 - 那么它会起作用:

env {
      "CONSUL_HTTP_TOKEN" = "management token"
    }

但是我不想将该管理令牌放在职位描述中,因为它们将在 git 中检查。

我做错了什么还是这根本不起作用?

提前谢谢您。

acl consul nomad
1个回答
0
投票

为什么在Nomad服务配置文件中设置consul token会自动为作业导出token?这将是一个安全漏洞,任何工作都可以擦除所有领事配置。

有适当的解决方案来管理任何类型的秘密。最先进的是与 HashicorpVault 集成https://developer.hashicorp.com/nomad/docs/integrations/vault#dynamic-configuration-with-secrets然后您可以使用模板插入存储在Vault中的秘密的环境变量.

一个简单的解决方案是将令牌存储在 Nomad 变量中,然后使用模板从中设置环境变量。通过使用 Nomad 变量的正确路径,您可以限制作业对其的访问。请参阅 https://developer.hashicorp.com/nomad/docs/concepts/variables .

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