Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается настройка доступа SSH (предварительная версия) в кластерах AKS или пулах узлов, во время первоначального развертывания или позже.
AKS поддерживает следующие параметры конфигурации для управления доступом SSH на узлах кластера:
- Отключенный SSH: полностью отключить доступ SSH к узлам кластера для повышения безопасности
-
SSH на основе Microsoft Entra ID: используйте учетные данные Microsoft Entra ID для проверки подлинности SSH. Преимущества использования SSH с использованием Entra ID:
- Централизованное управление удостоверениями: Использование существующих удостоверений Entra ID для доступа к узлам кластера
- Нет управления ключами SSH: устраняет необходимость создавать, распространять и поворачивать ключи SSH.
- Улучшенная безопасность: используйте функции безопасности Entra ID, такие как условный доступ и многофакторная аутентификация.
- Аудит и соответствие: централизованное ведение журнала событий доступа с помощью журналов Entra ID
- JIT-доступ: Совмещайте с Azure RBAC для детального управления доступом
- Локальный пользователь SSH: традиционная проверка подлинности на основе ключей SSH для доступа к узлам
Внимание
Предварительные версии функций AKS доступны на уровне самообслуживания. Предварительные версии предоставляются "как есть" и "при наличии". На них не распространяются соглашения об уровне обслуживания и ограниченная гарантия. Предварительные версии AKS предоставляются с частичной клиентской поддержкой по мере возможности. Следовательно, эти функции не предназначены для использования в рабочей среде. Дополнительные сведения доступны в следующих статьях поддержки.
Внимание
Предварительные версии функций AKS доступны на уровне самообслуживания. Предварительные версии предоставляются "как есть" и "при наличии". На них не распространяются соглашения об уровне обслуживания и ограниченная гарантия. Предварительные версии AKS предоставляются с частичной клиентской поддержкой по мере возможности. Следовательно, эти функции не предназначены для использования в рабочей среде. Дополнительные сведения доступны в следующих статьях поддержки.
Предпосылки
Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см. в статье "Начало работы с Azure Cloud Shell".
Если вы предпочитаете запускать справочные команды CLI локально, установите Azure CLI. Если вы работаете в Windows или macOS, подумайте о запуске Azure CLI в контейнере Docker. Дополнительные сведения см. в статье Как запустить Azure CLI в контейнере Docker.
Если вы используете локальную установку, войдите в Azure CLI с помощью команды az login . Чтобы завершить процесс аутентификации, следуйте шагам, отображаемым в вашем терминале. Сведения о других параметрах входа см. в статье "Проверка подлинности в Azure с помощью Azure CLI".
Когда вас попросят, установите расширение Azure CLI при первом использовании. Дополнительные сведения о расширениях см. в статье Использование расширений и управление ими с помощью Azure CLI.
Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.
Для этой статьи требуется версия 2.61.0 или более поздняя версия Azure CLI. Если вы используете Azure Cloud Shell, последняя версия уже установлена там.
Вам нужна
aks-previewверсия 9.0.0b1 или более поздняя.- Если у вас еще нет
aks-previewрасширения, установите его с помощьюaz extension addкоманды:az extension add --name aks-preview - Если у вас уже есть
aks-previewрасширение, обновите его, чтобы убедиться, что у вас установлена последняя версия с помощьюaz extension updateкоманды:az extension update --name aks-preview
- Если у вас еще нет
DisableSSHPreviewЗарегистрируйте флаг компонента с помощьюaz feature registerкоманды.az feature register --namespace "Microsoft.ContainerService" --name "DisableSSHPreview"Через несколько минут отобразится состояние Registered (Зарегистрировано).
Проверьте состояние регистрации с помощью
az feature showкоманды.az feature show --namespace "Microsoft.ContainerService" --name "DisableSSHPreview"Когда состояние отражает зарегистрировано, обновите регистрацию поставщика ресурсов Microsoft.ContainerService с помощью
az provider registerкоманды.az provider register --namespace Microsoft.ContainerService
Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см. в статье "Начало работы с Azure Cloud Shell".
Если вы предпочитаете запускать справочные команды CLI локально, установите Azure CLI. Если вы работаете в Windows или macOS, подумайте о запуске Azure CLI в контейнере Docker. Дополнительные сведения см. в статье Как запустить Azure CLI в контейнере Docker.
Если вы используете локальную установку, войдите в Azure CLI с помощью команды az login . Чтобы завершить процесс аутентификации, следуйте шагам, отображаемым в вашем терминале. Сведения о других параметрах входа см. в статье "Проверка подлинности в Azure с помощью Azure CLI".
Когда вас попросят, установите расширение Azure CLI при первом использовании. Дополнительные сведения о расширениях см. в статье Использование расширений и управление ими с помощью Azure CLI.
Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.
Для этой статьи требуется версия 2.73.0 или более поздняя версия Azure CLI. Если вы используете Azure Cloud Shell, последняя версия уже установлена там.
Вам нужна
aks-previewверсия 19.0.0b7 или более поздняя для Entra ID SSH.- Если у вас еще нет
aks-previewрасширения, установите его с помощьюaz extension addкоманды:az extension add --name aks-preview - Если у вас уже есть
aks-previewрасширение, обновите его, чтобы убедиться, что у вас установлена последняя версия с помощьюaz extension updateкоманды:az extension update --name aks-preview
- Если у вас еще нет
Соответствующие разрешения Azure RBAC для доступа к узлам:
-
Необходимое действие:
Microsoft.Compute/virtualMachineScaleSets/*/readдля прочтения информации о наборах масштабируемых виртуальных машин-
Необходимая операция с данными:
-
Microsoft.Compute/virtualMachineScaleSets/virtualMachines/login/action— для проверки подлинности и входа в виртуальные машины в качестве обычного пользователя. -
Microsoft.Compute/virtualMachines/loginAsAdmin/action— для входа с правами корневого пользователя.
-
- Встроенная роль: имя входа администраторавиртуальной машины или имя входа пользователя виртуальной машины (для доступа без администратора)
-
Необходимая операция с данными:
-
Необходимое действие:
EntraIdSSHPreviewЗарегистрируйте флаг компонента с помощьюaz feature registerкоманды.az feature register --namespace "Microsoft.ContainerService" --name "EntraIdSSHPreview"Через несколько минут отобразится состояние Registered (Зарегистрировано).
Проверьте состояние регистрации с помощью
az feature showкоманды.az feature show --namespace "Microsoft.ContainerService" --name "EntraIdSSHPreview"Когда состояние отражает зарегистрировано, обновите регистрацию поставщика ресурсов Microsoft.ContainerService с помощью
az provider registerкоманды.az provider register --namespace Microsoft.ContainerService
Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см. в статье "Начало работы с Azure Cloud Shell".
Если вы предпочитаете запускать справочные команды CLI локально, установите Azure CLI. Если вы работаете в Windows или macOS, подумайте о запуске Azure CLI в контейнере Docker. Дополнительные сведения см. в статье Как запустить Azure CLI в контейнере Docker.
Если вы используете локальную установку, войдите в Azure CLI с помощью команды az login . Чтобы завершить процесс аутентификации, следуйте шагам, отображаемым в вашем терминале. Сведения о других параметрах входа см. в статье "Проверка подлинности в Azure с помощью Azure CLI".
Когда вас попросят, установите расширение Azure CLI при первом использовании. Дополнительные сведения о расширениях см. в статье Использование расширений и управление ими с помощью Azure CLI.
Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.
- Для этой статьи требуется версия 2.61.0 или более поздняя версия Azure CLI. Если вы используете Azure Cloud Shell, последняя версия уже установлена там.
- Для обновления метода доступа SSH на nodepools требуется
aks-previewверсия 9.0.0b1 или более поздней версии.- Если у вас еще нет
aks-previewрасширения, установите его с помощьюaz extension addкоманды:az extension add --name aks-preview - Если у вас уже есть
aks-previewрасширение, обновите его, чтобы убедиться, что у вас установлена последняя версия с помощьюaz extension updateкоманды:az extension update --name aks-preview
- Если у вас еще нет
Настройка переменных среды
Задайте следующие переменные среды для группы ресурсов, имени кластера и расположения:
export RESOURCE_GROUP="<your-resource-group-name>"
export CLUSTER_NAME="<your-cluster-name>"
export LOCATION="<your-azure-region>"
Ограничения
- Поддержка SSH Entra ID для узлов пока недоступна для пула Windows.
- SSH с использованием Entra ID к узлам не поддерживается для системы автоматического управления AKS из-за блокировки группы ресурсов узлов, предотвращающей назначения ролей.
Настройка доступа SSH
Чтобы повысить безопасность и поддержку требований к корпоративной безопасности или стратегии, AKS поддерживает отключение SSH как в кластере, так и на уровне пула узлов. Отключение SSH представляет упрощенный подход по сравнению с настройкой правил группы безопасности сети в подсети ИЛИ сетевой карте сетевого интерфейса AKS. Отключить SSH поддерживает только пулы узлов Масштабируемые наборы виртуальных машин.
При отключении SSH во время создания кластера оно вступает в силу после создания кластера. Однако при отключении SSH в существующем кластере или пуле узлов AKS не отключает SSH автоматически. В любое время вы можете выполнить операцию обновления nodepool. Операция отключения или включения SSH вступает в силу после завершения обновления образа узла.
Примечание.
При отключении SSH на уровне кластера он применяется ко всем существующим пулам узлов. Все пулы узлов, созданные после этой операции, будут включены по умолчанию, и вам потребуется снова выполнить эти команды, чтобы отключить его.
Примечание.
Узел отладки kubectl продолжает работать после отключения SSH, так как он не зависит от службы SSH.
Создайте группу ресурсов
Создайте группу ресурсов с помощью команды az group create.
az group create --name $RESOURCE_GROUP --location $LOCATION
Отключение SSH в новом развертывании кластера
По умолчанию служба SSH на узлах кластера AKS открыта для всех пользователей и модулей pod, работающих в кластере. Вы можете запретить прямой доступ SSH из любой сети к узлам кластера, чтобы ограничить вектор атаки, если контейнер в модуле pod скомпрометирован.
az aks create Используйте команду для создания нового кластера и включения аргумента--ssh-access disabled, чтобы отключить SSH (предварительная версия) во всех пулах узлов во время создания кластера.
Внимание
После отключения службы SSH в кластере невозможно выполнить административные задачи или устранить неполадки.
Примечание.
В созданном кластере отключите SSH только для настройки первого пула системных узлов. Все остальные пулы узлов должны быть настроены на уровне пула узлов.
az aks create --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --ssh-access disabled
Через несколько минут выполнение команды завершается и отображаются сведения о кластере в формате JSON. Следующий пример напоминает выходные данные и результаты, связанные с отключением SSH:
"securityProfile": {
"sshAccess": "Disabled"
},
Отключение SSH для нового пула узлов
az aks nodepool add Используйте команду для добавления пула узлов и включения аргумента --ssh-access disabled для отключения SSH во время создания пула узлов.
az aks nodepool add \
--cluster-name $CLUSTER_NAME \
--name mynodepool \
--resource-group $RESOURCE_GROUP \
--ssh-access disabled
Через несколько минут команда завершает работу и возвращает данные в формате JSON о кластере, указывающие на успешное создание mynodepool . Следующий пример напоминает выходные данные и результаты, связанные с отключением SSH:
"securityProfile": {
"sshAccess": "Disabled"
},
Отключение SSH для существующего пула узлов
Внимание
Предварительные версии функций AKS доступны на уровне самообслуживания. Предварительные версии предоставляются "как есть" и "при наличии". На них не распространяются соглашения об уровне обслуживания и ограниченная гарантия. Предварительные версии AKS предоставляются с частичной клиентской поддержкой по мере возможности. Следовательно, эти функции не предназначены для использования в рабочей среде. Дополнительные сведения доступны в следующих статьях поддержки.
az aks nodepool update Используйте команду с аргументом--ssh-access disabled, чтобы отключить SSH (предварительная версия) в существующем пуле узлов.
az aks nodepool update \
--cluster-name $CLUSTER_NAME \
--name mynodepool \
--resource-group $RESOURCE_GROUP \
--ssh-access disabled
Через несколько минут команда завершает работу и возвращает данные в формате JSON о кластере, указывающие на успешное обновление mynodepool . Следующий пример напоминает выходные данные и результаты, связанные с отключением SSH:
"securityProfile": {
"sshAccess": "Disabled"
},
Чтобы изменение ввело в силу, необходимо повторно создать пул узлов с помощью az aks nodepool upgrade команды.
az aks nodepool upgrade \
--cluster-name $CLUSTER_NAME \
--name mynodepool \
--resource-group $RESOURCE_GROUP \
--node-image-only
Внимание
Чтобы отключить SSH в существующем кластере, необходимо отключить SSH для каждого пула узлов в этом кластере.
Повторное включение доступа SSH
Чтобы повторно включить доступ SSH в пуле узлов, обновите пул узлов с помощью --ssh-access localuser (для традиционного доступа на основе ключей SSH) или --ssh-access entraid (для доступа на основе Entra ID). Подробные инструкции см. в соответствующих разделах.
Кластер AKS можно настроить для использования идентификатора Microsoft Entra (ранее Azure AD) для проверки подлинности SSH на узлах кластера. Это устраняет необходимость управления ключами SSH и позволяет использовать учетные данные Entra ID для безопасного доступа к узлам.
Создайте группу ресурсов
Создайте группу ресурсов с помощью команды az group create.
az group create --name $RESOURCE_GROUP --location $LOCATION
Включение SSH с использованием Entra ID в новом кластере
Используйте команду az aks create с аргументом --ssh-access entraid, чтобы включить аутентификацию SSH на основе Entra ID во время создания кластера.
az aks create \
--resource-group $RESOURCE_GROUP \
--name $CLUSTER_NAME \
--ssh-access entraid
Через несколько минут выполнение команды завершается и отображаются сведения о кластере в формате JSON. Следующий пример похож на выходные данные:
"securityProfile": {
"sshAccess": "EntraID"
},
Включить SSH с использованием Entra ID для нового пула узлов
Используйте команду az aks nodepool add с аргументом --ssh-access entraid, чтобы включить SSH на основе Entra ID во время создания пула узлов.
az aks nodepool add \
--cluster-name $CLUSTER_NAME \
--name mynodepool \
--resource-group $RESOURCE_GROUP \
--ssh-access entraid
Через несколько минут команда завершает свою работу и возвращает данные в формате JSON, указывающие на то, что mynodepool был успешно создан с использованием SSH, основанного на Entra ID. Следующий пример похож на выходные данные:
"securityProfile": {
"sshAccess": "EntraID"
},
Включите SSH на основе Entra ID для существующего пула узлов
Используйте команду az aks nodepool update с аргументом --ssh-access entraid, чтобы включить SSH на основе Entra ID в существующем пуле узлов.
az aks nodepool update \
--cluster-name $CLUSTER_NAME \
--name mynodepool \
--resource-group $RESOURCE_GROUP \
--ssh-access entraid
Через несколько минут команда завершает выполнение и возвращает данные в формате JSON, указывающие на успешное обновление mynodepool с помощью SSH на базе Entra ID. Следующий пример похож на выходные данные:
"securityProfile": {
"sshAccess": "EntraID"
},
Чтобы изменение ввело в силу, необходимо повторно создать пул узлов с помощью az aks nodepool upgrade команды.
az aks nodepool upgrade \
--cluster-name $CLUSTER_NAME \
--name mynodepool \
--resource-group $RESOURCE_GROUP \
--node-image-only
Внимание
Чтобы включить SSH на основе Entra ID в кластере, необходимо включить его для каждого пула узлов по очереди.
Доступ к SSH локального пользователя использует традиционную проверку подлинности на основе ключей SSH. Это метод доступа по умолчанию SSH для кластеров AKS.
Создайте группу ресурсов
Создайте группу ресурсов с помощью команды az group create.
az group create --name $RESOURCE_GROUP --location $LOCATION
Создание кластера AKS с помощью ключей SSH
Используйте команду az aks create для развертывания кластера AKS с открытым ключом SSH. Ключ или файл ключа можно указать с помощью аргумента --ssh-key-value или использовать --ssh-access localuser для явного задания доступа локального пользователя SSH.
| Параметр SSH | Описание | Значение по умолчанию |
|---|---|---|
--generate-ssh-key |
Если у вас нет собственных ключей SSH, укажите --generate-ssh-key. Azure CLI автоматически создает набор ключей SSH и сохраняет их в каталоге ~/.ssh/по умолчанию. |
|
--ssh-key-value |
Путь к открытому ключу или содержимому ключа для установки на виртуальных машинах узла для доступа к SSH. Например, ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm. |
~/.ssh/id_rsa.pub |
--ssh-access localuser |
Явным образом включите доступ локального пользователя SSH с проверкой подлинности на основе ключей. | |
--no-ssh-key |
Если ключи SSH не требуются, укажите этот аргумент. Однако AKS автоматически создает набор ключей SSH, так как зависимость ресурса виртуальной машины Azure не поддерживает пустой файл ключей SSH. В результате ключи не возвращаются и не могут использоваться для SSH на виртуальных машинах узла. Закрытый ключ удаляется и не сохраняется. |
Примечание.
Если параметры не указаны, Azure CLI по умолчанию ссылается на ключи SSH, хранящиеся в ~/.ssh/id_rsa.pub файле. Если ключи не найдены, команда возвращает сообщение An RSA key file or key value must be supplied to SSH Key Value.
Примеры:
Чтобы создать кластер и использовать созданные по умолчанию ключи SSH:
az aks create --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --generate-ssh-keyЧтобы указать файл открытого ключа SSH, выполните указанные действия.
az aks create --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --ssh-key-value ~/.ssh/id_rsa.pubЧтобы явно включить доступ К SSH локального пользователя, выполните приведенные действия.
az aks create --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --ssh-access localuser --generate-ssh-key
Включение SSH локального пользователя для нового пула узлов
Используйте команду az aks nodepool add с аргументом --ssh-access localuser для включения SSH локального пользователя во время создания пула узлов.
az aks nodepool add \
--cluster-name $CLUSTER_NAME \
--name mynodepool \
--resource-group $RESOURCE_GROUP \
--ssh-access localuser
Включение SSH локального пользователя для существующего пула узлов
Внимание
Предварительные версии функций AKS доступны на уровне самообслуживания. Предварительные версии предоставляются "как есть" и "при наличии". На них не распространяются соглашения об уровне обслуживания и ограниченная гарантия. Предварительные версии AKS предоставляются с частичной клиентской поддержкой по мере возможности. Следовательно, эти функции не предназначены для использования в рабочей среде. Дополнительные сведения доступны в следующих статьях поддержки.
az aks nodepool update Используйте команду с аргументом--ssh-access localuser, чтобы включить SSH локального пользователя в существующем пуле узлов.
az aks nodepool update \
--cluster-name $CLUSTER_NAME \
--name mynodepool \
--resource-group $RESOURCE_GROUP \
--ssh-access localuser
Внимание
Чтобы изменение ввело в силу, необходимо повторно создать пул узлов с помощью az aks nodepool upgrade команды.
az aks nodepool upgrade \
--cluster-name $CLUSTER_NAME \
--name mynodepool \
--resource-group $RESOURCE_GROUP \
--node-image-only
Обновление открытого ключа SSH в существующем кластере AKS
az aks update Используйте команду, чтобы обновить открытый ключ SSH (предварительная версия) в кластере. Эта операция обновляет ключ во всех пулах узлов. Можно указать ключ или файл ключа с помощью аргумента --ssh-key-value .
Примечание.
Обновление ключей SSH поддерживается в масштабируемых наборах виртуальных машин Azure с кластерами AKS.
Примеры:
Чтобы указать новое значение открытого ключа SSH, выполните указанные действия.
az aks update --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --ssh-key-value 'ssh-rsa AAAAB3Nza-xxx'Чтобы указать файл открытого ключа SSH, выполните указанные действия.
az aks update --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --ssh-key-value ~/.ssh/id_rsa.pub
Внимание
После обновления ключа SSH AKS не обновляет пул узлов автоматически. В любое время вы можете выполнить операцию обновления nodepool. Операция обновления ключей SSH вступает в силу после завершения обновления образа узла. Для кластеров с включенным автоматическим предоставлением узлов можно выполнить обновление образа узла, применив новую метку к ресурсу пользователя Kubernetes NodePool.
Проверка состояния службы SSH
После отключения SSH можно убедиться, что служба SSH неактивна на узлах кластера.
Используйте команду Virtual Machine Scale Set az vmss run-command invoke для проверки состояния SSH-сервиса.
az vmss run-command invoke --resource-group <node-resource-group> --name <vmss-name> --command-id RunShellScript --instance-id 0 --scripts "systemctl status ssh"
В следующем примере выходных данных показан ожидаемый результат при отключении SSH:
{
"value": [
{
"code": "ProvisioningState/succeeded",
"displayStatus": "Provisioning succeeded",
"level": "Info",
"message": "Enable succeeded: \n[stdout]\n○ ssh.service - OpenBSD Secure Shell server\n Loaded: loaded (/lib/systemd/system/ssh.service; disabled; vendor preset: enabled)\n Active: inactive (dead) since Wed 2024-01-03 15:36:53 UTC; 25min ago\n..."
}
]
}
Найдите слово "Активный " и убедитесь, что его значение имеет значение Active: inactive (dead), которое подтверждает, что SSH отключен на узле.
После включения SSH с использованием Entra ID можно убедиться, что служба SSH активна и настроена для аутентификации с помощью Entra ID на узлах кластера.
Используйте команду масштабируемого набора az vmss run-command invoke виртуальных машин для проверки состояния службы SSH.
az vmss run-command invoke --resource-group <node-resource-group> --name <vmss-name> --command-id RunShellScript --instance-id 0 --scripts "systemctl status ssh"
В следующем примере выходных данных показан ожидаемый результат при включении SSH:
{
"value": [
{
"code": "ProvisioningState/succeeded",
"displayStatus": "Provisioning succeeded",
"level": "Info",
"message": "Enable succeeded: \n[stdout]\n● ssh.service - OpenBSD Secure Shell server\n Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)\n Active: active (running) since Wed 2024-01-03 15:40:20 UTC; 19min ago\n..."
}
]
}
Найдите слово "Активный " и убедитесь, что его значение имеет значение Active: active (running), которое подтверждает, что SSH включен на узле.
После настройки SSH локального пользователя можно убедиться, что служба SSH активна на узлах кластера.
Используйте команду масштабируемого набора az vmss run-command invoke виртуальных машин для проверки состояния службы SSH.
az vmss run-command invoke --resource-group <node-resource-group> --name <vmss-name> --command-id RunShellScript --instance-id 0 --scripts "systemctl status ssh"
В следующем примере выходных данных показан ожидаемый результат при включении SSH:
{
"value": [
{
"code": "ProvisioningState/succeeded",
"displayStatus": "Provisioning succeeded",
"level": "Info",
"message": "Enable succeeded: \n[stdout]\n● ssh.service - OpenBSD Secure Shell server\n Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)\n Active: active (running) since Wed 2024-01-03 15:40:20 UTC; 19min ago\n..."
}
]
}
Найдите слово "Активный " и убедитесь, что его значение имеет значение Active: active (running), которое подтверждает, что SSH включен на узле.
Следующие шаги
Чтобы устранить проблемы с подключением SSH к узлам кластеров, можно просмотреть журналы kubelet или просмотреть журналы главного узла Kubernetes.