Рейтинг:0

Запретить прямой IP-доступ к приложению, развернутому в Kubernetes

флаг ru

у меня есть NodeJS приложение с экспресс.js как бэкенд-фреймворк, развернутый в облаке с помощью Kubernetes. K8s работает поверх шаблона Ubuntu. Приложение, развернутое в Kubernetes, оказание услуг тип NodePort. Это означает, что приложение использует внешний IP-адрес узлов K8s. В моем случае в настоящее время используется внешний IP-адрес одного из главных узлов.

Затем я назначил DNS-имя хоста для приложения, используя Cloudflare Tunnel (он же Argo Tunnel). Он отлично работает, так как я могу получить доступ к приложению из-за пределов кластера K8s с разрешенным DNS-именем хоста. Однако я также могу получить доступ к приложению напрямую из abcd: 31130. Вот фрагмент из config.yml файл, используемый при создании туннеля Cloudflare:

туннель: ***********8ab68bscjbi9cddhujhdhbh
файл учетных данных: /home/sebastian/.cloudflared/***********8ab68bscjbi9cddhujhdhbh.json

вход:
  - имя хоста: myapp.test.io
    сервис: http://a.b.c.d:31130
  - сервис: http_status:404

Меня беспокоит то, как запретить или заблокировать прямой IP-доступ к приложению, поскольку я не хочу раскрывать IP-адрес и усложнять себе жизнь с точки зрения безопасности?

Я также сомневаюсь, что это нужно настраивать из кластера Cloudflare или K8s. Любые отзывы и предложения будут оценены.

Рейтинг:1
флаг br

С точки зрения kubernetes, Ingress-controller — это стандартный способ предоставления серверной части HTTP через соединение TLS от кластера к клиенту.

Вы можете опубликовать приложение, используя сертификаты TLS. При создании сертификата TLS вы можете указать альтернативные имена, которые вы разрешили бы для своего приложения. Другие имена или IP-адреса не будут допущены к веб-сайту.

Вот пример альтернативных имен. Мы можем удалить IP-адреса, если не хотим разрешать доступ с использованием IP.

X509v3 Альтернативное имя субъекта:
                DNS:kmaster, DNS:kubernetes, DNS:kubernetes.default, DNS:kubernetes.default.svc, DNS:kubernetes.default.svc.cluster.local, IP-адрес:10.96.0.1, IP-адрес:172.16.16.100

Примеры входящего TLS https://github.com/kubernetes/ingress-nginx/tree/main/docs/examples/tls-терминация

Альтернативные имена https://kubernetes.io/docs/tasks/administer-cluster/certificates/#openssl

Ответить или комментировать

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