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

Docker Machine / Swarm with Consul - безопасны по умолчанию?

Я использовал команды из это суть (дублируется ниже), чтобы создать Docker Swarm с помощью Consul.

docker-machine create \
  --driver=digitalocean \
  --digitalocean-access-token=$DO_TOKEN \
  --digitalocean-size=512mb \
  --digitalocean-region=nyc3 \
  --digitalocean-private-networking=true \
  --digitalocean-image=ubuntu-15-04-x64 \
    docker-swarm-kv-store

docker $(docker-machine config docker-swarm-kv-store) run -d \
  --net=host progrium/consul --server -bootstrap-expect 1

kvip=$(docker-machine ip docker-swarm-kv-store)

docker-machine create \
  --driver=digitalocean \
  --digitalocean-access-token=$DO_TOKEN \
  --digitalocean-size=2gb \
  --digitalocean-region=nyc3 \
  --digitalocean-private-networking=true \
  --digitalocean-image=ubuntu-15-04-x64 \
  --swarm \
  --swarm-master \
  --swarm-discovery consul://${kvip}:8500 \
  --engine-opt "cluster-store consul://${kvip}:8500" \
  --engine-opt "cluster-advertise eth1:2376" \
    docker-swarm-master

docker-machine create \
  --driver=digitalocean \
  --digitalocean-access-token=$DO_TOKEN \
  --digitalocean-size=2gb \
  --digitalocean-region=nyc3 \
  --digitalocean-private-networking=true \
  --digitalocean-image=ubuntu-15-04-x64 \
  --swarm \
  --swarm-discovery consul://${kvip}:8500 \
  --engine-opt "cluster-store consul://${kvip}:8500" \
  --engine-opt "cluster-advertise eth1:2376" \
    docker-swarm-agent-1

eval $(docker-machine env --swarm docker-swarm-master)
docker info

Обеспечивает ли Docker Machine безопасность роя (возможно, за счет скрытого управления сертификатами SSL), или может ли кто-нибудь присоединиться к моему кластеру Consul, указав на ${kvip}:8500?

В дополнение к тому, что упоминает @RyanKennedy, учтите, что любой может:

  • присоединить агента к кластеру консула (один из способов избежать этого может быть шифрование)
  • отправить данные консулу (чего можно избежать, используя Токены ACL)

Очевидно, все это предполагает, что ничто другое не обеспечивает защиты, но чтобы обеспечить некоторую глубину вашей защиты, я определенно рассмотрел бы два элемента конфигурации, упомянутые выше.

Похоже, ответ таков: кластер не защищен по умолчанию.

Вторая перечисленная выше команда - это то место, где запускается служба Consul. Если бы сертификаты проходили, они бы отображались в этой строке.

В Руководство по началу работы с Consul требуется только имя хоста / порт другого узла в кластере, к которому вы хотите присоединиться - аутентификация не требуется. Однако, если вы создали сертификаты TLS, вы можете добавить их. как показано в руководстве по DigitalOcean. Одно предостережение заключается в том, что, поскольку в исходном вопросе упоминается запуск Consul в контейнере Docker, вам нужно будет использовать тома для перемещения сертификатов.