Как обезопасить порт только для чтения 10255 в GKE? - PullRequest
5 голосов
/ 04 июля 2019

Я создал частный кластер GKE ( версия: 1.13.6-gke.13 ), используя следующую команду:

gcloud container clusters create a-cluster-with-user-pass \
 --network vpc-name \
 --subnetwork subnet-name    \
 --enable-master-authorized-networks \
 --username random \
 --password averylongpassword \
 --enable-ip-alias \
 --enable-private-nodes \
 --enable-private-endpoint \
 --master-ipv4-cidr xxx.xx.xx.xx/28 \
 --cluster-version 1.13.6-gke.13 \
 --num-nodes 2 \
 --zone asia-south1-a

Я вижу, что порт (10255) открыт в обоих узлах (или мы можем сказать, GCP-вычисления), созданных в вышеуказанном кластере.

Если я создаю простые экземпляры вычислений GCP (всего у меня есть 3 экземпляра виртуальных машин) и пытаюсь получить доступ к внутреннему IP-адресу узла GKE через порт 10255 с этой виртуальной машины, я могу получить к нему доступ без какой-либо аутентификации или авторизации. Ниже приведена команда, используемая для создания экземпляра вычислений GCP:

gcloud compute instances create vm-name \
 --network vpc-name \
 --subnetwork subnet-name    \
 --zone asia-south1-a

Если я отправлю простой запрос CURL GET по адресу ( xxx.xx.xx.xx: 10255 / pods ), я получу тонны информации о модулях и приложениях. Как я вижу в документации Kubernetes здесь , упоминается, что:

--read-only-port int32
     The read-only port for the Kubelet to serve on with no authentication/authorization (set to 0 to disable) (default 10255)

Я попытался отключить порт, отредактировав файл kube-config.yaml в узле, выполнив ssh и перезапустив kubelet, и я добился успеха. Но хороший ли это подход? Я считаю, что может быть несколько проблем, когда xxx.xx.xx.xx: 10255 / metrics отключено. Есть ли способ обезопасить порт? Вместо того, чтобы отключить его?

Я вижу эту проблему github , и я уверен, что есть способ защитить этот порт. Я не уверен, как это сделать.

Я вижу, что документация Kubernetes в целом предоставляет нам несколько способов защиты порта. Как это сделать в Google Kubernetes Engine?

Ответы [ 2 ]

3 голосов
/ 04 июля 2019

Kubelet выставляет собранные метрики узла, используя этот порт. Неспособность раскрыть эти метрики может привести к неожиданному поведению, поскольку система будет по существу летать вслепую.

Поскольку GKE является управляемой системой, вы не должны настраивать флаги kubelet, так как настройки будут сброшены при воссоздании узла (узлы основаны на шаблонах GCE, которые не будут включать вашу собственную конфигурацию).

Что касается безопасности, я думаю, что безопасно оставить этот порт как есть, так как вы используете частный кластер, что означает, что только ресурсы в одном и том же VPC могут достигать узлов.

0 голосов
/ 07 июля 2019

Как сказал в своем ответе Яхир Эрнандес, этот порт используется для представления метрик, связанных с системой, которая обеспечивает бесперебойную работу. Возможно, не стоит отключать этот порт.

Что нам нужно сделать, это запретить доступ к этому порту извне VPC.

Так как вы используете GKE на GCP. Если вы используете VPC, вы можете добавить правила брандмауэра в порт (10255), чтобы разрешить входящий трафик только из ресурсов на VPC. Отключить доступ к этому порту из интернета.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...