Управление SSH для безопасного доступа к узлам Служба Azure Kubernetes (AKS)
В этой статье описывается, как настроить ключи SSH (предварительная версия) в кластерах AKS или пулах узлов во время первоначального развертывания или позже.
AKS поддерживает следующие параметры конфигурации для управления ключами SSH на узлах кластера:
- Создание кластера с помощью ключей SSH
- Обновление ключей SSH в существующем кластере AKS
- Отключение и включение службы SSH
Внимание
Предварительные версии функций AKS доступны на уровне самообслуживания. Предварительные версии предоставляются "как есть" и "при наличии". На них не распространяются соглашения об уровне обслуживания и ограниченная гарантия. Предварительные версии AKS предоставляются с частичной клиентской поддержкой по мере возможности. Следовательно, эти функции не предназначены для использования в рабочей среде. Дополнительные сведения доступны в следующих статьях поддержки.
Подготовка к работе
- Для использования обновления требуется
aks-preview
версия 0.5.116 или более поздняя. - Для использования disable требуется
aks-preview
версия 1.0.0b6 или более поздняя. - Функция создания и обновления SSH поддерживает пулы узлов Linux, Windows и Azure Linux в существующих кластерах.
- Функция Disable SSH не поддерживается в этом предварительном выпуске в пулах узлов под управлением операционной системы Windows Server.
Установка расширения Azure CLI aks-preview
Установите расширение aks-preview с помощью
az extension add
команды.az extension add --name aks-preview
Обновите до последней версии расширения с помощью
az extension update
команды.az extension update --name aks-preview
Регистрация флага компонента DisableSSHPreview
Чтобы использовать функцию Disable SSH, выполните следующие действия, чтобы зарегистрировать и включить ее в подписке.
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
Создание кластера AKS с помощью ключей SSH
Используйте команду az aks create для развертывания кластера AKS с открытым ключом SSH. Можно указать ключ или файл ключа с помощью аргумента --ssh-key-value
.
Параметр SSH | Description | Default value |
---|---|---|
--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 |
--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 myAKSCluster --resource-group MyResourceGroup --generate-ssh-key
Чтобы указать файл открытого ключа SSH, добавьте
--ssh-key-value
аргумент:az aks create --name myAKSCluster --resource-group MyResourceGroup --ssh-key-value ~/.ssh/id_rsa.pub
Обновление открытого ключа SSH в существующем кластере AKS
az aks update
Используйте команду, чтобы обновить открытый ключ SSH (предварительная версия) в кластере. Эта операция обновляет ключ во всех пулах узлов. Можно указать ключ или файл ключа с помощью аргумента --ssh-key-value
.
Примечание.
Обновление ключей SSH поддерживается в масштабируемых наборах виртуальных машин Azure с кластерами AKS.
Ниже приведены примеры этой команды:
Чтобы указать новое значение открытого ключа SSH, добавьте
--ssh-key-value
аргумент:az aks update --name myAKSCluster --resource-group MyResourceGroup --ssh-key-value 'ssh-rsa AAAAB3Nza-xxx'
Чтобы указать файл открытого ключа SSH, укажите его с аргументом
--ssh-key-value
:az aks update --name myAKSCluster --resource-group MyResourceGroup --ssh-key-value ~/.ssh/id_rsa.pub
Внимание
После обновления ключа SSH AKS не обновляет пул узлов автоматически. В любое время вы можете выполнить операцию обновления nodepool. Операция обновления ключей SSH вступает в силу после завершения обновления образа узла.
Общие сведения об отключении SSH
Чтобы повысить безопасность и поддержку требований к корпоративной безопасности или стратегии, AKS поддерживает отключение SSH (предварительная версия) как в кластере, так и на уровне пула узлов. Отключение SSH представляет упрощенный подход по сравнению с единственным поддерживаемым решением, которое требует настройки правил группы безопасности сети в карта сетевого интерфейса AKS или узла.
При отключении SSH во время создания кластера оно вступает в силу после создания кластера. Однако при отключении SSH в существующем кластере или пуле узлов AKS не отключает SSH автоматически. В любое время вы можете выполнить операцию обновления nodepool. Операция отключения и включения ключей SSH вступает в силу после завершения обновления образа узла.
Параметр SSH | Description |
---|---|
disabled |
Служба SSH отключена. |
localuser |
Служба SSH включена, и пользователи с ключами SSH могут безопасно получить доступ к узлу. |
Примечание.
Узел отладки kubectl продолжает работать после отключения SSH, так как он не зависит от службы SSH.
Отключение SSH в новом развертывании кластера
По умолчанию служба SSH на узлах кластера AKS открыта для всех пользователей и модулей pod, работающих в кластере. Вы можете запретить прямой доступ SSH из любой сети к узлам кластера, чтобы ограничить вектор атаки, если контейнер в модуле pod скомпрометирован.
az aks create
Используйте команду для создания нового кластера и включения аргумента--ssh-access disabled
, чтобы отключить SSH (предварительная версия) во всех пулах узлов во время создания кластера.
Внимание
После отключения службы SSH в кластере невозможно выполнить административные задачи или устранить неполадки.
az aks create -g myResourceGroup -n myManagedCluster --ssh-access disabled
Через несколько минут выполнение команды завершается и отображаются сведения о кластере в формате JSON. Следующий пример напоминает выходные данные и результаты, связанные с отключением SSH:
"securityProfile": {
"sshAccess": "Disabled"
},
Отключение SSH в существующем кластере
az aks update
Используйте команду для обновления существующего кластера и включения аргумента --ssh-access disabled
для отключения SSH (предварительная версия) во всех пулах узлов в кластере.
az aks update -g myResourceGroup -n myManagedCluster --ssh-access disabled
Через несколько минут выполнение команды завершается и отображаются сведения о кластере в формате JSON. Следующий пример напоминает выходные данные и результаты, связанные с отключением SSH:
"securityProfile": {
"sshAccess": "Disabled"
},
Чтобы изменение ввело в силу, необходимо повторно использовать все пулы узлов с помощью az aks nodepool upgrade
команды.
az aks nodepool upgrade --cluster-name myManagedCluster --name mynodepool --resource-group myResourceGroup --node-image-only
Внимание
Во время этой операции все экземпляры масштабируемого набора виртуальных машин обновляются и переосмыслены для использования новой конфигурации SSH.
Отключение SSH для нового пула узлов
az aks nodepool add
Используйте команду для добавления пула узлов и включения аргумента --ssh-access disabled
для отключения SSH во время создания пула узлов.
az aks nodepool add --cluster-name myManagedCluster --name mynodepool --resource-group myResourceGroup --ssh-access disabled
Через несколько минут команда завершает работу и возвращает данные в формате JSON о кластере, указывающие на успешное создание mynodepool . Следующий пример напоминает выходные данные и результаты, связанные с отключением SSH:
"securityProfile": {
"sshAccess": "Disabled"
},
Отключение SSH для существующего пула узлов
Используйте аргумент [az aks nodepool update][az-aks-nodepool-update] command with the
-ssh-access disabled', чтобы отключить SSH (предварительная версия) в существующем пуле узлов.
az aks nodepool update --cluster-name myManagedCluster --name mynodepool --resource-group myResourceGroup --ssh-access disabled
Через несколько минут команда завершает работу и возвращает данные в формате JSON о кластере, указывающие на успешное создание mynodepool . Следующий пример напоминает выходные данные и результаты, связанные с отключением SSH:
"securityProfile": {
"sshAccess": "Disabled"
},
Чтобы изменение ввело в силу, необходимо повторно создать пул узлов с помощью az aks nodepool upgrade
команды.
az aks nodepool upgrade --cluster-name myManagedCluster --name mynodepool --resource-group myResourceGroup --node-image-only
Повторное включение SSH в существующем кластере
az aks update
Используйте команду для обновления существующего кластера и включения --ssh-access localuser
аргумента для повторного включения SSH (предварительная версия) во всех пулах узлов в кластере.
az aks update -g myResourceGroup -n myManagedCluster --ssh-access localuser
При выполнении процесса возвращается следующее сообщение:
Only after all the nodes are reimaged, does the disable/enable SSH Access operation take effect."
После повторного включения SSH узлы не будут переосмыслены автоматически. В любое время вы можете выполнить операцию повторного создания образа.
Внимание
Во время этой операции все экземпляры масштабируемого набора виртуальных машин обновляются и переимыкаются для использования нового открытого ключа SSH.
Повторно включите SSH для определенного пула узлов
az aks update
Используйте команду для обновления определенного пула узлов и включения --ssh-access localuser
аргумента для повторного включения SSH (предварительная версия) в этом пуле узлов в кластере. В следующем примере nodepool1 — это целевой пул узлов.
az aks nodepool update --cluster-name myManagedCluster --name nodepool1 --resource-group myResourceGroup --ssh-access localuser
При выполнении процесса возвращается следующее сообщение:
Only after all the nodes are reimaged, does the disable/enable SSH Access operation take effect.
Внимание
Во время этой операции все экземпляры масштабируемого набора виртуальных машин обновляются и переимыкаются для использования нового открытого ключа SSH.
Состояние службы SSH
Выполните следующие действия, чтобы использовать оболочку узла на одном узле и проверить состояние службы SSH с помощью systemctl
.
Получите стандартную оболочку bash, выполнив команду
kubectl node-shell <node>
.kubectl node-shell aks-nodepool1-20785627-vmss000001
systemctl
Выполните команду, чтобы проверка состояние службы SSH.systemctl status ssh
Если SSH отключен, в следующем примере выходных данных отображаются результаты:
ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; disabled; vendor preset: enabled)
Active: inactive (dead) since Wed 2024-01-03 15:36:57 UTC; 20min ago
Если SSH включен, в следующем примере выходных данных отображаются результаты:
ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2024-01-03 15:40:20 UTC; 19min ago
Следующие шаги
Чтобы устранить проблемы с подключением SSH к узлам кластеров, можно просмотреть журналы kubelet или просмотреть журналы главного узла Kubernetes.