Назад | Перейти на главную страницу

Настроить кластер Consul с включенным ACL

Всем привет и спасибо за чтение.

Я новичок в Консуле. Я читал документацию и некоторое время практиковался, поэтому мне удалось правильно настроить consul на нескольких узлах.

Теперь я хочу включить списки управления доступом, чтобы управлять безопасностью кластера Consul, но я не могу заставить это работать. Я следую этому руководству: https://learn.hashicorp.com/consul/security-networking/production-acls#create-the-agent-policy.

Мой сценарий:

Чего я жду:

Я могу включить ACL на одном Consul Agent, запустив его с помощью следующей команды:

consul agent -server -bootstrap -config-dir = / etc / consul / conf.d / agent.json -data-dir = / tmp / consul / -ui -client = 0.0.0.0

Вот мой файл agent.json:

{
  "primary_datacenter": "dc1",
  "acl" : {
    "enabled": true,
    "default_policy": "allow",
    "down_policy": "extend-cache"
  }
}

Как только Консул запущен, я бегу

# консул acl bootstrap

что дает мне

AccessorID:   3c354e3c-2d1c-24b1-41ce-0645fdd6c3e7
SecretID:     1e026ae6-8902-eae2-6a18-6b0fb36bbed4
Description:  Bootstrap Token (Global Management)
Local:        false
Create Time:  2019-05-03 12:41:18.038389106 -0300 -03
Policies:
   00000000-0000-0000-0000-000000000001 - global-management

Я создаю политику и токен, чтобы разрешить все действия узла:

# consul acl policy create -name "Agent-write-policy" -description "Политика для создания разрешений на запись для агентов" -rules @ agent_write_policy.hcl -token "1e026ae6-8902-eae2-6a18-6b0fb36bbed4"

И

# consul acl token create -description "Agent write token" -policy-name "Agent-write-policy" -token "1e026ae6-8902-eae2-6a18-6b0fb36bbed4"

AccessorID:   7324d2d0-f82f-cea8-44d1-82c2d07cd35a
SecretID:     11dfcacf-7eae-a286-f108-990c1963fb29
Description:  Agent write token
Local:        false
Create Time:  2019-05-03 12:30:11.292590345 -0300 -03
Policies:
   0171cfc2-06f3-6702-9c46-df117eb1bd53 - Agent-write-policy

Затем я перехожу на свой второй серверный узел и запускаю консул

# consul agent -server -data-dir = / tmp / consul -config-dir = / etc / consul / conf.d / agent.json

Мой файл agent.json:

{
  "primary_datacenter": "dc1",
  "acl" : {
    "enabled": true,
    "default_policy": "allow",
    "down_policy": "extend-cache",
    "tokens": {
                "default": "11dfcacf-7eae-a286-f108-990c1963fb29"
        }
  }
}

Подняв второй узел, я бегу

# консул присоединиться 172.20.10.41

Error joining address '172.20.10.41': Unexpected response code: 403 (ACL not found)
Failed to join any nodes.

Я также пробовал добавить -token = "" к команде соединения.

Если я отключу acl на узле 2, я смогу присоединиться к кластеру, но информация об узле / службе не будет синхронизироваться.

2019/05/03 12:35:26 [WARN] agent: Node info update blocked by ACLs
2019/05/03 12:35:51 [WARN] agent: Coordinate update blocked by ACLs

Что я делаю не так?

Может быть, я много чего делаю неправильно. Если у кого-то из вас есть для меня надежное руководство, я буду очень благодарен.

Спасибо за ваше время. (и извините за мой плохой английский)

Приветствую.