События
Присоединение к вызову ИИ Навыков
8 апр., 15 - 28 мая, 07
Отточите свои навыки ИИ и введите подметки, чтобы выиграть бесплатный экзамен сертификации
Зарегистрируйтесь!Этот браузер больше не поддерживается.
Выполните обновление до Microsoft Edge, чтобы воспользоваться новейшими функциями, обновлениями для системы безопасности и технической поддержкой.
Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье сравниваются сетевые режимы для службы Azure Kubernetes (AKS) и Amazon Elastic Kubernetes Service (EKS). В нем описывается, как повысить безопасность подключения к управляемому серверу API кластера AKS. Он также включает параметры ограничения доступа к общедоступной сети.
Примечание
Эта статья является частью серии статей, которые помогают специалистам, знакомым с Amazon EKS, понять Службу Azure Kubernetes (AKS).
Для запуска ресурсов Amazon Web Services (AWS) в виртуальной сети с общедоступными и частными подсетями можно использовать Amazon Virtual Cloud (VPC). Подсети — это диапазоны IP-адресов в VPC. Общедоступная подсеть размещает ресурсы, подключающиеся к Интернету. Частная подсеть размещает ресурсы, которые не подключаются к общедоступному Интернету. Amazon EKS может подготавливать управляемые группы узлов как в общедоступных, так и в частных подсетях.
Управление доступом к конечной точке позволяет настроить доступ к конечной точке сервера API из общедоступного Интернета или через VPC. Amazon EKS предоставляет несколько способов управления доступом к конечной точке кластера. Вы можете включить общедоступную конечную точку по умолчанию, частную конечную точку или обе конечные точки одновременно. Если включить общедоступную конечную точку, можно добавить ограничения маршрутизации без классов (CIDR), чтобы ограничить IP-адреса клиента, которые могут подключаться к общедоступной конечной точке.
Параметр конечной точки кластера определяет, как узлы Amazon EKS подключаются к управляемой плоскости управления Kubernetes. Параметры конечной точки можно изменить с помощью консоли Amazon EKS или API. Дополнительные сведения см. в разделе "Управление доступом к конечной точке кластера Amazon EKS".
Режим по умолчанию для новых кластеров Amazon EKS предоставляет плоскость управления через общедоступную конечную точку. Если включена только общедоступная конечная точка кластера, запросы к API Kubernetes, которые инициируются внутри VPC, покидают VPC, но остаются в сети Amazon. Эти запросы включают обмен данными с рабочего узла на плоскость управления. Узлы подключаются к плоскости управления через общедоступный IP-адрес и маршрут к интернет-шлюзу. Кроме того, он может использовать маршрут к шлюзу преобразования сетевых адресов (NAT), где он может использовать общедоступный IP-адрес шлюза NAT.
При включении общедоступных и частных конечных точек запросы к API Kubernetes из VPC взаимодействуют с контрольной плоскостью через управляемые Amazon EKS эластичные сетевые интерфейсы (ENIs) в VPC. Сервер API кластера доступен из Интернета.
Если включить только частную конечную точку, весь трафик к серверу API кластера, например kubectl
или helm
командам, должен поступать из VPC кластера или подключенной сети. Общедоступный доступ к серверу API из Интернета отключен. Чтобы реализовать этот режим доступа, используйте виртуальную частную сеть AWS (VPN) или AWS DirectConnect к VPC. Чтобы ограничить доступ к конечной точке без VPN AWS или DirectConnect, можно добавить ограничения CIDR в общедоступную конечную точку, чтобы ограничить подключения без настройки дополнительных сетей.
Если отключить общедоступный доступ для конечной точки сервера API Kubernetes кластера, вы можете получить доступ к конечной точке сервера API Kubernetes одним из следующих способов:
Подключенная сеть: Подключите вашу сеть к VPC с помощью транзитного шлюза AWS, а затем используйте компьютер в подключенной сети. Кроме того, можно использовать другие параметры подключения. Убедитесь, что группа безопасности, используемая уровнем управления Amazon EKS, содержит правила, позволяющие трафику входить через порт 443 из подключенной сети.
Узел бастиона Amazon EC2: Вы можете запустить экземпляр Amazon EC2 в публичной подсети в VPC вашего кластера. Войдите в этот экземпляр с помощью Secure Shell (SSH) для выполнения kubectl
команд. Убедитесь, что группа безопасности плоскости управления Amazon EKS содержит правила, позволяющие входящий трафик через порт 443 с вашего узла бастиона. Дополнительные сведения см. в разделе Просмотр требований к группе безопасности Amazon EKS для кластеров.
При настройке узла бастиона kubectl
используйте учетные данные AWS, которые соответствуют конфигурации управления доступом на основе ролей (RBAC) вашего кластера. Или вы можете добавить субъект идентификации и управления доступом AWS (IAM), которое использует ваш бастион, в конфигурацию RBAC перед удалением общедоступного доступа к конечной точке. Дополнительные сведения см. в статье Предоставление доступа пользователей и ролей IAM к API Kubernetes и Несанкционированный доступ или отказ в доступе (kubectl).
Интегрированная среда разработки AWS Cloud9: AWS Cloud9 — это облачная интегрированная среда разработки (IDE), которую можно использовать для записи, запуска и отладки кода только в браузере. Вы можете создать интегрированную среду разработки AWS Cloud9 в VPC кластера и использовать интегрированную среду разработки для взаимодействия с кластером. Дополнительные сведения см. в статье "Создание среды в AWS Cloud9". Убедитесь, что группа безопасности плоскости управления Amazon EKS содержит правила, позволяющие входящего трафика через порт 443 из группы безопасности интегрированной среды разработки. Дополнительные сведения см. в разделе Просмотр требований к группе безопасности Amazon EKS для кластеров.
При настройке kubectl
для интегрированной среды разработки AWS Cloud9 используйте учетные данные AWS, которые соответствуют конфигурации RBAC кластера. Кроме того, вы можете добавить принципал IAM, который используется вашей IDE, в конфигурации RBAC перед удалением общедоступного доступа к конечной точке. Дополнительные сведения см. в статье Предоставление доступа пользователей и ролей IAM к API Kubernetes и Несанкционированный доступ или отказ в доступе (kubectl).
Дополнительные сведения о параметрах подключения см. в разделе "Доступ к серверу API только для частного доступа".
Чтобы защитить сетевой доступ к API Kubernetes в AKS, можно использовать частный кластер AKS или авторизованные диапазоны IP-адресов.
Частный кластер AKS помогает гарантировать, что сетевой трафик между сервером API и узлами агента остается в виртуальной сети. В частном кластере AKS уровень управления или сервер API имеет внутренние IP-адреса. Частный кластер помогает убедиться, что сетевой трафик между сервером API и пулами узлов остается только в частной сети.
В частном кластере AKS сервер API имеет внутренний IP-адрес, доступный только через частную конечную точку Azure, расположенную в той же виртуальной сети. Виртуальные машины в той же виртуальной сети могут приватно взаимодействовать с плоскостем управления через эту частную конечную точку. Уровень управления или сервер API размещается в управляемой Azure подписке. Кластер AKS и пулы узлов находятся в подписке клиента.
На следующей схеме показана частная конфигурация кластера AKS.
Скачайте файл Visio для этой архитектуры.
Чтобы подготовить частный кластер AKS, поставщик ресурсов AKS создает частное полное доменное имя (FQDN) для группы ресурсов узла в частной зоне системы доменных имен (DNS). Кроме того, AKS может создать общедоступное полное доменное имя, которое имеет соответствующую запись адреса A
в общедоступной зоне DNS Azure. Узлы агента используют A
запись в частной зоне DNS для разрешения IP-адреса частной конечной точки для связи с сервером API.
Поставщик ресурсов AKS может создать частную зону DNS в группе ресурсов узла, или вы можете создать частную зону DNS и передать её идентификатор ресурса в систему предоставления ресурсов. Чтобы создать частный кластер, можно использовать Terraform с Azure, Bicep, шаблонами Azure Resource Manager, Azure CLI, модулем Azure PowerShell или REST API Azure.
Вы можете включить публичное полное доменное имя для сервера API во время развертывания или с помощью команды az aks update с параметром --enable-public-fqdn
в существующих кластерах. Если включить общедоступное полное доменное имя, виртуальные машины, обращающиеся к серверу, должны находиться в той же виртуальной сети, где размещается кластер или сеть, подключенная через пиринг виртуальной сети или VPN типа "сеть — сеть". Примеры этих виртуальных машин включают в себя локальный агент Azure DevOps или локальное средство выполнения GitHub Actions.
Для частного кластера AKS отключите общедоступное полное доменное имя сервера API. Чтобы взаимодействовать с частной плоскостей управления, виртуальная машина должна находиться в одной виртуальной сети или в одноранговой виртуальной сети, которая имеет связь виртуальной сети с частной зоной DNS. Запись A
в частной зоне DNS разрешает полное доменное имя сервера API в IP-адрес приватной конечной точки, который связывается с базовой плоскостью управления. Дополнительные сведения см. в статье Создание частного кластера AKS.
Поставщик ресурсов AKS предоставляет следующие параметры для настройки развертываний частных кластеров AKS:
Строка authorizedIpRanges
задает допустимые диапазоны IP-адресов в формате CIDR.
disableRunCommand
Логический переключатель указывает, нужно ли отключить run
команду для кластера.
enablePrivateCluster
Булевый параметр определяет, следует ли создавать кластер как частный.
Boolean enablePrivateClusterPublicFQDN
указывает, следует ли создавать еще одно общедоступное полное доменное имя для частного кластера.
Строка privateDnsZone
задает частную зону DNS в группе ресурсов узла. Если значение не указано, поставщик ресурсов создает зону. Можно указать следующие значения:
По умолчанию устанавливается значение System
.
None
по умолчанию используется общедоступный DNS, поэтому AKS не создает частную зону DNS.
<Your own private DNS zone resource ID>
использует частную зону DNS, созданную в формате privatelink.<region>.azmk8s.io
или <subzone>.privatelink.<region>.azmk8s.io
.
В следующей таблице показаны параметры конфигурации DNS для развертывания частного кластера AKS:
Опции частной зоны DNS | enablePrivateClusterPublicFQDN: true |
enablePrivateClusterPublicFQDN: false |
---|---|---|
Система | Узлы агента и любые другие виртуальные машины в виртуальной сети кластера AKS или в любой виртуальной сети, подключенной к частной зоне DNS, используют запись частной зоны DNS A для определения частного IP-адреса частной конечной точки.Другие виртуальные машины используют общедоступное полное доменное имя сервера API. |
Узлы агента и любые другие виртуальные машины в виртуальной сети кластера AKS или в любой виртуальной сети, подключенной к частной зоне DNS, используют запись частной зоны A DNS для разрешения частного IP-адреса частной конечной точки.Полное доменное имя сервера общедоступного API не доступно. |
Нет | Все виртуальные машины, включая узлы агента, используют общее полностью квалифицированное доменное имя сервера API с помощью записи A в общедоступной зоне DNS, управляемой Azure. |
Неправильная конфигурация. Для разрешения имен сервера API в частном кластере AKS требуется по крайней мере общедоступная или частная зона DNS. |
Собственный идентификатор ресурса частной зоны DNS | Узлы агентa и любые другие виртуальные машины в виртуальной сети кластера AKS или в любой виртуальной сети, подключенной к частной зоне DNS, используют запись частной зоны DNS A для определения частного IP-адреса частной конечной точки.Другие виртуальные машины используют общедоступное полное доменное имя сервера API. |
Узлы агента и любые другие виртуальные машины в виртуальной сети кластера AKS или в любой виртуальной сети, подключенной к частной зоне DNS, используют запись частной зоны A DNS для разрешения частного IP-адреса частной конечной точки.Полное доменное имя сервера общедоступного API не доступно. |
В частном кластере AKS конечная точка сервера API не имеет общедоступного IP-адреса. Чтобы установить сетевое подключение к частному кластеру, можно использовать один из следующих вариантов:
Создайте виртуальную машину в той же виртуальной сети, что и кластер AKS, использующий az vm create
команду с флагом --vnet-name
.
Используйте виртуальную машину в отдельной виртуальной сети и настройте пиринг виртуальных сетей с виртуальной сетью кластера AKS.
Настройте Azure ExpressRoute или VPN-шлюз для подключения к виртуальной сети кластера.
Создайте подключение частной конечной точки Azure в другой виртуальной сети.
Используйте экземпляр Azure Cloud Shell , развернутый в подсети, подключенной к серверу API для кластера.
Используйте Azure CLI, чтобы запустить команду az aks invoke , чтобы получить доступ к частным кластерам без настройки VPN или шлюза ExpressRoute. Используйте эту команду для удаленного вызова других команд, например kubectl
helm
в частном кластере через API Azure, без прямого подключения к кластеру. Чтобы использовать command invoke
, настройте необходимые разрешения для действий Microsoft.ContainerService/managedClusters/runcommand/action
и Microsoft.ContainerService/managedclusters/commandResults/read
.
На портале Azure можно использовать функцию Run command
для выполнения команд в частном кластере. Эта функция использует функциональность command invoke
для выполнения команд на кластере. Функция Run command
, создающая модуль pod, предоставляет инструменты kubectl
и helm
для управления кластером. Кроме того, в Run command
модуле pod предоставляется среда Bash, которая включает такие инструменты, как jq
, xargs
и grep
awk
.
Бастион Azure можно использовать в одной виртуальной сети или одноранговой виртуальной сети для подключения к виртуальной машине управления прыжками. Бастион Azure — это полностью управляемая платформа как услуга (PaaS), которую можно использовать для подключения к виртуальной машине через браузер и портал Azure. Azure Bastion обеспечивает высокозащищенное и бесшовное подключение с использованием протоколов удаленного рабочего стола (RDP) или SSH для виртуальных машин через протокол безопасности транспортного уровня (TLS) непосредственно с портала Azure. Если виртуальные машины подключаются через Бастион Azure, они не нуждаются в общедоступном IP-адресе, агенте или специальном клиентском программном обеспечении.
Кластер AKS, настроенный с помощью интеграции виртуальных сетей API Server, направляет конечную точку сервера API непосредственно в делегированную подсеть. Подсеть находится в виртуальной сети, в которой развертывается AKS. Интеграция виртуальной сети СЕРВЕРА API обеспечивает сетевое взаимодействие между сервером API и узлами кластера без приватного канала или туннеля. Сервер API доступен через виртуальный IP-адрес внутреннего балансировщика нагрузки, который находится в делегированной подсети. Узлы настроены для использования внутреннего балансировщика нагрузки VIP. Используйте интеграцию виртуальной сети API-сервера, чтобы убедиться, что сетевой трафик между сервером API и пулами узлов остается только в частной сети.
Уровень управления или сервер API находится в управляемой AKS подписке Azure. Кластер или пул узлов находится в подписке Azure. Сервер и виртуальные машины, составляющие узлы кластера, могут обмениваться данными через IP-адрес сервера API и IP-адреса pod, проецируемые в делегированную подсеть.
Вы можете использовать интеграцию виртуальной сети API Server с общедоступными кластерами и частными кластерами. После подготовки кластера можно добавить или удалить общедоступный доступ. В отличие от кластеров, не имеющих интеграции виртуальной сети, узлы агента всегда взаимодействуют напрямую с частным IP-адресом внутреннего IP-адреса сервера API, не используя DNS. Трафик, проходящий с узла на трафик сервера API, находится в частной сети. Подключение между узлами API не требует туннеля. Клиенты вне кластера могут взаимодействовать с сервером API обычно, если включен доступ к общедоступной сети. Если доступ к общедоступной сети отключен, следуйте той же методике настройки частного DNS, что и стандартные частные кластеры. Дополнительные сведения см. в статье "Создание кластера AKS с помощью интеграции виртуальной сети СЕРВЕРА API".
Вы также можете использовать авторизованные диапазоны IP-адресов для повышения безопасности кластера и минимизации атак на сервер API. Диапазоны авторизованных IP-адресов ограничивают доступ к управляющей плоскости общедоступного кластера AKS к известному списку IP-адресов и CIDR. При использовании этого параметра сервер API по-прежнему предоставляется публично, но доступ ограничен.
Следующая az aks update
команда Azure CLI разрешает диапазоны IP-адресов:
az aks update \
--resource-group myResourceGroup \
--name myAKSCluster \
--api-server-authorized-ip-ranges 73.140.245.0/24
Рассмотрим следующие ключевые моменты подключения AKS:
Частный кластер AKS обеспечивает повышенную безопасность и изоляцию по сравнению с авторизованными диапазонами IP-адресов. Однако нельзя преобразовать существующий общедоступный кластер AKS в частный кластер. Вместо этого можно включить авторизованные диапазоны IP-адресов для любого существующего кластера AKS.
Не удается применить авторизованные диапазоны IP-адресов к конечной точке частного сервера API. Они применяются только к общедоступному серверу API.
Частные кластеры не поддерживают агенты, размещенные в Azure DevOps. Вместо этого следует использовать локальные агенты.
Чтобы реестр контейнеров Azure функционировал с частным кластером AKS, необходимо настроить приватный канал для реестра контейнеров в виртуальной сети кластера. Кроме того, можно установить пиринг между виртуальной сетью реестра контейнеров и виртуальной сетью частного кластера.
Ограничения Приватного канала Azure применяются к частным кластерам.
Если частная конечная точка в подсети клиента частного кластера удаляется или изменяется, кластер перестает работать.
Корпорация Майкрософт поддерживает эту статью. Следующие авторы написали эту статью.
Основные авторы:
Другие участники:
Чтобы просмотреть неопубликованные профили LinkedIn, войдите в LinkedIn.
События
Присоединение к вызову ИИ Навыков
8 апр., 15 - 28 мая, 07
Отточите свои навыки ИИ и введите подметки, чтобы выиграть бесплатный экзамен сертификации
Зарегистрируйтесь!