Включение федерального стандарта обработки информации (FIPS) для пулов узлов Azure Kubernetes Service (AKS)

Федеральный стандарт обработки информации (FIPS) 140-2 — это стандартный государственный стандарт США, который определяет минимальные требования к безопасности для криптографических модулей в продуктах и системах информационных технологий. Azure Kubernetes Service (AKS) позволяет создавать пулы узлов Linux и Windows с включенным FIPS 140-2. Экземпляры, развернутые в пулах узлов, соответствующих FIPS, могут использовать эти криптографические модули для повышения безопасности и обеспечения соответствия требованиям безопасности в рамках соответствия требованиям FedRAMP. Дополнительные сведения о FIPS 140-2 см. в разделе Федеральный стандарт обработки информации (FIPS) 140.

Внимание

Начиная с march 17, 2027 Azure Kubernetes Service (AKS) больше не поддерживает или предоставляет обновления для системы безопасности для Ubuntu 20.04. Все существующие образы узлов будут удалены, и вы не сможете масштабировать пулы узлов под управлением Ubuntu 20.04. Выполните миграцию в поддерживаемую версию Ubuntu, обновив пулы узлов до Kubernetes версии 1.35+. Дополнительные сведения об этом выводе из эксплуатации см. в вопросе GitHub и объявлении о выводе из эксплуатации в Azure Updates. Чтобы оставаться в курсе объявлений и обновлений, следуйте заметкам о релизах AKS.

Внимание

Начиная с 30 ноября 2025 Azure Kubernetes Service (AKS) больше не поддерживает или не предоставляет обновления системы безопасности для Azure Linux 2.0. Образ узла Azure Linux 2.0 заморожен в выпуске 202512.06.0. Начиная с 31 марта 2026 г. образы узлов будут удалены, и вы не сможете масштабировать пулы узлов. Мигрируйте на поддерживаемую версию Azure Linux путем обновления пулов узлов до поддерживаемой версии Kubernetes или перехода на osSku AzureLinux3. Для получения дополнительной информации см. вопрос на GitHub о завершении поддержки и объявление о завершении поддержки в Azure Updates. Чтобы оставаться в курсе объявлений и обновлений, следуйте заметкам о релизах AKS.

Предварительные условия

  • Активная подписка Azure. Если у вас нет подписки Azure, создайте учетную запись free перед началом работы.

  • Задайте контекст подписки с помощью az account set команды. Рассмотрим пример.

    az account set --subscription "00000000-0000-0000-0000-000000000000"
    
  • установлен kubectl. Ее можно установить локально с помощью az aks install-cli команды.

  • Terraform установлен локально. Инструкции по установке см. в разделе "Установка Terraform".

Совместимость версий

  • Azure CLI версии 2.32.0 или более поздней версии, установленной и настроенной. Чтобы узнать версию, выполните команду az --version. Дополнительные сведения об установке или обновлении Azure CLI см. в разделе Install Azure CLI.
  • Примеры шаблонов ARM в этой статье используют версию API 2023-03-01 для Microsoft.ContainerService/managedClusters и Microsoft.ContainerService/managedClusters/agentPools.
  • Примеры Bicep в данной статье используют версию API 2023-03-01 для Microsoft.ContainerService/managedClusters и Microsoft.ContainerService/managedClusters/agentPools.
  • Примеры Terraform в этой статье используют провайдер AzureRM 3.x.
  • Для параметров FIPS Terraform используйте enable_fips_image на azurerm_kubernetes_cluster.default_node_pool и fips_enabled на azurerm_kubernetes_cluster_node_pool.

Ограничения

Пулы узлов с поддержкой FIPS имеют следующие ограничения:

  • Для пулов узлов, соответствующих FIPS, необходима служба Kubernetes версии 1.19 и выше.
  • Чтобы обновить базовые пакеты или модули, используемые для FIPS, необходимо использовать обновление образа узла.
  • Образы контейнеров на узлах FIPS не проверяются на соответствие FIPS.
  • Подключение общей папки CIFS завершается сбоем, так как FIPS отключает некоторые модули проверки подлинности. Чтобы обойти эту проблему, обратитесь к разделу Ошибки при подключении общей папки на узелах с поддержкой FIPS.
  • Пулы узлов с поддержкой FIPS с виртуальными машинами Arm64 поддерживаются только в Azure Linux 3.0+.
  • Надстройка мониторинга AKS поддерживает FIPS-совместимые пулы узлов на платформах Ubuntu, Azure Linux и Windows, начиная с версии агента 3.1.17 (для Linux) и Win-3.1.17 (для Windows).

Внимание

Образ Linux, соответствующий FIPS, отличается от образа по умолчанию, используемого для пулов узлов на базе Linux.

Образы узлов с поддержкой FIPS могут иметь разные номера версий, например версию ядра, чем образы, которые не включены в FIPS. Цикл обновления для пулов узлов и образов узлов с включенной поддержкой FIPS может отличаться от циклов обновления для пулов узлов и образов, не поддерживающих FIPS.

Поддерживаемые версии ОС

Пулы узлов с поддержкой FIPS можно создавать во всех поддерживаемых типах ОС (Linux и Windows). Однако не все версии ОС поддерживают пулы узлов с поддержкой FIPS. После выпуска новой версии ОС обычно существует период ожидания, прежде чем он соответствует FIPS.

В следующей таблице перечислены поддерживаемые версии ОС для пулов узлов с поддержкой FIPS:

Тип ОС Артикул ОС Соответствие FIPS По умолчанию
Линукс Ubuntu Поддерживается Отключено по умолчанию
Линукс Azure Linux Поддерживается Отключено по умолчанию
Windows Windows Server 2022 Поддерживается Включен по умолчанию
Windows Windows Server 2025 г. Поддерживается Включена по умолчанию и не может быть отключена

При запросе Ubuntu с поддержкой FIPS, если версия Ubuntu по умолчанию не поддерживает FIPS, то AKS по умолчанию переключается на последнюю версию Ubuntu, поддерживающую FIPS. Например, Ubuntu 22.04 по умолчанию используется для пулов узлов Linux. Поскольку версия 22.04 в настоящее время не поддерживает FIPS, AKS по умолчанию выбирает Ubuntu 20.04 для пулов узлов с поддержкой Linux FIPS.

Примечание.

Ранее можно использовать GetOSOptions API для определения того, поддерживается ли данная ОС FIPS. API GetOSOptions объявлен устаревшим и больше не включается в новые версии API AKS, начиная с 2024-05-01.

Создание файла конфигурации Terraform

Файлы конфигурации Terraform определяют инфраструктуру, которую Terraform создает и управляет ею.

  1. Создайте файл с именем main.tf и добавьте следующий код, чтобы определить версию Terraform и указать поставщика Azure:

    terraform {
      required_version = ">= 1.0"
    
      required_providers {
        azurerm = {
          source  = "hashicorp/azurerm"
          version = "~> 3.0"
        }
      }
    }
    
    provider "azurerm" {
      features {}
    }
    
  2. Добавьте следующий код в main.tf для создания группы ресурсов Azure. При необходимости вы можете изменить имя и расположение группы ресурсов.

    resource "azurerm_resource_group" "example" {
      name     = "example-fips-rg"
      location = "East US"
    }
    

Создание кластера AKS с пулом узлов с поддержкой FIPS по умолчанию

При создании нового кластера AKS можно включить FIPS в пуле узлов по умолчанию.

При создании дополнительных пулов узлов в кластере, который уже имеет пул узлов с поддержкой FIPS по умолчанию, необходимо также включить FIPS в новых пулах узлов с помощью --enable-fips-image параметра.

  1. Создайте кластер AKS с включенной поддержкой FIPS в пуле узлов по умолчанию, используя команду az aks create с параметром --enable-fips-image.

    az aks create \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --node-count 3 \
        --enable-fips-image
    
  2. Проверьте, включена ли в вашем пуле узлов поддержка FIPS, используя команду az aks show и запрос значения enableFIPS в agentPoolProfiles.

    az aks show \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \
        -o table
    

    В следующем примере вывода показано, что пул узлов по умолчанию поддерживает FIPS:

    Name       enableFips
    ---------  ------------
    nodepool1  True
    

Включение FIPS во время создания кластера AKS в настоящее время не поддерживается на портале Azure. Чтобы создать кластер с пулом узлов с поддержкой FIPS по умолчанию, используйте инструкции Azure CLI, шаблона ARM, Bicep или Terraform.

При создании дополнительных пулов узлов в кластере, который уже имеет пул узлов с поддержкой FIPS по умолчанию, необходимо также включить FIPS в новых пулах узлов, установив для него значение enableFipstrue.

  1. Создайте кластер AKS с включенным FIPS в пуле узлов по умолчанию с помощью шаблона ARM, задав enableFips свойство true в профиле пула агентов. Рассмотрим пример.

    {
      "type": "Microsoft.ContainerService/managedClusters",
      "location": "[parameters('location')]",
      "name": "[parameters('clusterName')]",
      "properties": {
        "kubernetesVersion": "1.27",
        "enableRBAC": true,
        "dnsPrefix": "[parameters('dnsPrefix')]",
        "agentPoolProfiles": [
          {
            "name": "nodepool1",
            "count": 3,
            "vmSize": "Standard_D2s_v3",
            "osType": "Linux",
            "osSKU": "Ubuntu",
            "type": "VirtualMachineScaleSets",
            "mode": "System",
            "enableFips": true
          }
        ]
      },
      "identity": {
        "type": "SystemAssigned"
      }
    }
    
  2. Разверните шаблон ARM с помощью портала Azure, Azure CLI или Azure PowerShell. Дополнительные сведения о развертывании шаблонов ARM см. в статье "Развертывание ресурсов с помощью шаблонов ARM".

  3. Проверьте, включена ли в вашем пуле узлов поддержка FIPS, используя команду az aks show и запрос значения enableFIPS в agentPoolProfiles.

    az aks show \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \
        -o table
    

    В следующем примере вывода показано, что пул узлов по умолчанию поддерживает FIPS:

    Name       enableFips
    ---------  ------------
    nodepool1  True
    

При создании дополнительных пулов узлов в кластере, который уже имеет пул узлов с поддержкой FIPS по умолчанию, необходимо также включить FIPS в новых пулах узлов, установив для него значение enableFIPStrue.

  1. Создайте кластер AKS с поддержкой FIPS в пуле узлов по умолчанию с помощью Bicep, задав в профиле агентного пула параметру enableFIPS значение true. Рассмотрим пример.

    param location string
    param clusterName string
    param dnsPrefix string
    
    resource aks 'Microsoft.ContainerService/managedClusters@2023-03-01' = {
      name: clusterName
      location: location
      identity: {
        type: 'SystemAssigned'
      }
      properties: {
        kubernetesVersion: '1.27'
        enableRBAC: true
        dnsPrefix: dnsPrefix
        agentPoolProfiles: [
          {
            name: 'nodepool1'
            count: 3
            vmSize: 'Standard_D2s_v3'
            osType: 'Linux'
            osSKU: 'Ubuntu'
            type: 'VirtualMachineScaleSets'
            mode: 'System'
            enableFIPS: true
          }
        ]
      }
    }
    
  2. Разверните файл Bicep с помощью Azure CLI, Azure PowerShell или портала Azure. Дополнительные сведения о развертывании файлов Bicep см. в статье Create Bicep files using Visual Studio Code.

  3. Проверьте, включена ли в вашем пуле узлов поддержка FIPS, используя команду az aks show и запрос значения enableFIPS в agentPoolProfiles.

    az aks show \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \
        -o table
    

    В следующем примере вывода показано, что пул узлов по умолчанию поддерживает FIPS:

    Name       enableFips
    ---------  ------------
    nodepool1  True
    

При создании дополнительных пулов узлов в кластере, который уже имеет пул узлов по умолчанию с поддержкой FIPS, необходимо также включить FIPS в новых пулах узлов, установив параметр fips_enabled в значение true на azurerm_kubernetes_cluster_node_pool.

  1. Добавьте следующий код в main.tf, чтобы создать кластер AKS с включенным FIPS в пуле узлов по умолчанию:

    resource "azurerm_kubernetes_cluster" "example" {
      name                = "example-aks-cluster"
      location            = azurerm_resource_group.example.location
      resource_group_name = azurerm_resource_group.example.name
      dns_prefix          = "example-aks"
    
      default_node_pool {
        name              = "nodepool1"
        node_count        = 3
        vm_size           = "Standard_D2s_v3"
        os_sku            = "Ubuntu"
        enable_fips_image = true
      }
    
      identity {
        type = "SystemAssigned"
      }
    }
    
  2. Инициализируйте Terraform в каталоге, содержащем ваш файл main.tf, с помощью команды terraform init.

    terraform init
    
  3. Создайте план выполнения Terraform с помощью terraform plan команды.

    terraform plan
    
  4. Примените конфигурацию с помощью terraform apply команды для развертывания кластера с пулом узлов с поддержкой FIPS по умолчанию.

    terraform apply
    
  5. Подключитесь к кластеру AKS с помощью команды [az aks get-credentials][az-aks-get-credentials].

    az aks get-credentials \
        --resource-group myResourceGroup \
        --name myAKSCluster
    
  6. Проверьте, включена ли в вашем пуле узлов поддержка FIPS, используя команду az aks show и запрос значения enableFIPS в agentPoolProfiles.

    az aks show \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \
        -o table
    

    В следующем примере вывода показано, что пул узлов по умолчанию поддерживает FIPS:

    Name       enableFips
    ---------  ------------
    nodepool1  True
    

Дополнительные сведения о ресурсе azurerm_kubernetes_cluster см. в документации по поставщику Terraform Azure.

Добавление пула узлов Linux с поддержкой FIPS в существующий кластер AKS

  1. Добавьте пул узлов Linux с поддержкой FIPS в существующий кластер с помощью az aks nodepool add команды с параметром --enable-fips-image .

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name fipsnp \
        --enable-fips-image
    
  2. Проверьте конфигурацию пула узлов с помощью az aks show команды и запроса значения enableFIPS в agentPoolProfiles.

    az aks show \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \
        -o table
    

    В следующем примере выходных данных показано, что пул узлов fipsnp поддерживает FIPS:

    Name       enableFips
    ---------  ------------
    fipsnp     True
    nodepool1  False  
    
  3. Перечислите узлы с помощью команды kubectl get nodes.

    kubectl get nodes
    

    В следующем примере выходных данных показан список узлов в кластере. Узлы, начиная с aks-fipsnp , являются частью пула узлов с поддержкой FIPS.

    NAME                                STATUS   ROLES   AGE     VERSION
    aks-fipsnp-12345678-vmss000000      Ready    agent   6m4s    v1.19.9
    aks-fipsnp-12345678-vmss000001      Ready    agent   5m21s   v1.19.9
    aks-fipsnp-12345678-vmss000002      Ready    agent   6m8s    v1.19.9
    aks-nodepool1-12345678-vmss000000   Ready    agent   34m     v1.19.9
    
  4. Запустите развертывание с интерактивным сеансом на одном из узлов в пуле узлов с поддержкой FIPS с помощью kubectl debug команды.

    kubectl debug node/aks-fipsnp-12345678-vmss000000 -it --image=mcr.microsoft.com/dotnet/runtime-deps:6.0
    
  5. В выходных данных интерактивного сеанса убедитесь, что включены криптографические библиотеки FIPS. Выходные данные должны выглядеть примерно так:

    root@aks-fipsnp-12345678-vmss000000:/# cat /proc/sys/crypto/fips_enabled
    1
    

    Пулы узлов с включенной поддержкой FIPS также имеют метку kubernetes.azure.com/fips_enabled=true, которую развертывания могут использовать для обращения к этим пулам узлов.

Включение FIPS при добавлении пула узлов Linux в настоящее время не поддерживается на портале Azure. Чтобы добавить пул узлов Linux с поддержкой FIPS, используйте инструкции Azure CLI, шаблона ARM, Bicep или Terraform.

  1. Создайте пул узлов Linux с поддержкой FIPS с помощью шаблона ARM, развернув ресурс пула агентов с заданным enableFipsсвойствомtrue. Рассмотрим пример.

    {
      "type": "Microsoft.ContainerService/managedClusters/agentPools",
      "apiVersion": "2023-03-01",
      "name": "[concat(parameters('clusterName'), '/fipsnp')]",
      "properties": {
        "count": 3,
        "vmSize": "Standard_D2s_v3",
        "osType": "Linux",
        "osSKU": "Ubuntu",
        "mode": "User",
        "enableFips": true
      }
    }
    
  2. Разверните шаблон ARM с помощью портала Azure, Azure CLI или Azure PowerShell. Дополнительные сведения о развертывании шаблонов ARM см. в статье "Развертывание ресурсов с помощью шаблонов ARM".

  3. Проверьте конфигурацию пула узлов с помощью az aks show команды и запроса значения enableFIPS в agentPoolProfiles.

    az aks show \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \
        -o table
    

    В следующем примере выходных данных показано, что пул узлов fipsnp поддерживает FIPS:

    Name       enableFips
    ---------  ------------
    fipsnp     True
    nodepool1  False  
    
  4. Перечислите узлы с помощью команды kubectl get nodes.

    kubectl get nodes
    

    В следующем примере выходных данных показан список узлов в кластере. Узлы, начиная с aks-fipsnp , являются частью пула узлов с поддержкой FIPS.

    NAME                                STATUS   ROLES   AGE     VERSION
    aks-fipsnp-12345678-vmss000000      Ready    agent   6m4s    v1.19.9
    aks-fipsnp-12345678-vmss000001      Ready    agent   5m21s   v1.19.9
    aks-fipsnp-12345678-vmss000002      Ready    agent   6m8s    v1.19.9
    aks-nodepool1-12345678-vmss000000   Ready    agent   34m     v1.19.9
    
  5. Запустите развертывание с интерактивным сеансом на одном из узлов в пуле узлов с поддержкой FIPS с помощью kubectl debug команды.

    kubectl debug node/aks-fipsnp-12345678-vmss000000 -it --image=mcr.microsoft.com/dotnet/runtime-deps:6.0
    
  6. В выходных данных интерактивного сеанса убедитесь, что включены криптографические библиотеки FIPS. Выходные данные должны выглядеть примерно так:

    root@aks-fipsnp-12345678-vmss000000:/# cat /proc/sys/crypto/fips_enabled
    1
    

    Пулы узлов с включенной поддержкой FIPS также имеют метку kubernetes.azure.com/fips_enabled=true, которую развертывания могут использовать для обращения к этим пулам узлов.

  1. Создайте пул узлов Linux с поддержкой FIPS с помощью Bicep путем развертывания ресурса пула агентов с enableFIPS для параметра true. Рассмотрим пример.

    param clusterName string
    param nodePoolName string = 'fipsnp'
    
    resource nodePool 'Microsoft.ContainerService/managedClusters/agentPools@2023-03-01' = {
      name: '${clusterName}/${nodePoolName}'
      properties: {
        count: 3
        vmSize: 'Standard_D2s_v3'
        osType: 'Linux'
        osSKU: 'Ubuntu'
        mode: 'User'
        enableFIPS: true
      }
    }
    
  2. Разверните файл Bicep с помощью Azure CLI, Azure PowerShell или портала Azure. Дополнительные сведения о развертывании файлов Bicep см. в статье Create Bicep files using Visual Studio Code.

  3. Проверьте конфигурацию пула узлов с помощью az aks show команды и запроса значения enableFIPS в agentPoolProfiles.

    az aks show \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \
        -o table
    

    В следующем примере выходных данных показано, что пул узлов fipsnp поддерживает FIPS:

    Name       enableFips
    ---------  ------------
    fipsnp     True
    nodepool1  False  
    
  4. Перечислите узлы с помощью команды kubectl get nodes.

    kubectl get nodes
    

    В следующем примере выходных данных показан список узлов в кластере. Узлы, начиная с aks-fipsnp , являются частью пула узлов с поддержкой FIPS.

    NAME                                STATUS   ROLES   AGE     VERSION
    aks-fipsnp-12345678-vmss000000      Ready    agent   6m4s    v1.19.9
    aks-fipsnp-12345678-vmss000001      Ready    agent   5m21s   v1.19.9
    aks-fipsnp-12345678-vmss000002      Ready    agent   6m8s    v1.19.9
    aks-nodepool1-12345678-vmss000000   Ready    agent   34m     v1.19.9
    
  5. Запустите развертывание с интерактивным сеансом на одном из узлов в пуле узлов с поддержкой FIPS с помощью kubectl debug команды.

    kubectl debug node/aks-fipsnp-12345678-vmss000000 -it --image=mcr.microsoft.com/dotnet/runtime-deps:6.0
    
  6. В выходных данных интерактивного сеанса убедитесь, что включены криптографические библиотеки FIPS. Выходные данные должны выглядеть примерно так:

    root@aks-fipsnp-12345678-vmss000000:/# cat /proc/sys/crypto/fips_enabled
    1
    

    Пулы узлов с включенной поддержкой FIPS также имеют метку kubernetes.azure.com/fips_enabled=true, которую развертывания могут использовать для обращения к этим пулам узлов.

  1. Добавьте следующий код в main.tf, чтобы добавить пул узлов Linux с поддержкой FIPS в кластер AKS:

    resource "azurerm_kubernetes_cluster_node_pool" "fips_linux" {
      name                   = "fipsnp"
      kubernetes_cluster_id  = azurerm_kubernetes_cluster.example.id
      vm_size                = "Standard_D2s_v3"
      os_type                = "Linux"
      os_sku                 = "Ubuntu"
      node_count             = 3
      fips_enabled           = true
    
      node_taints = []
    }
    
  2. Примените обновленную конфигурацию Terraform, используя команды terraform plan и terraform apply.

    terraform plan
    terraform apply
    
  3. Подключитесь к кластеру AKS с помощью команды [az aks get-credentials][az-aks-get-credentials].

    az aks get-credentials \
        --resource-group myResourceGroup \
        --name myAKSCluster
    
  4. Проверьте конфигурацию пула узлов с помощью az aks show команды и запроса значения enableFIPS в agentPoolProfiles.

    az aks show \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \
        -o table
    

    В следующем примере выходных данных показано, что пул узлов fipsnp поддерживает FIPS:

    Name       enableFips
    ---------  ------------
    fipsnp     True
    nodepool1  False  
    
  5. Перечислите узлы с помощью команды kubectl get nodes.

    kubectl get nodes
    

    В следующем примере выходных данных показан список узлов в кластере. Узлы, начиная с aks-fipsnp , являются частью пула узлов с поддержкой FIPS.

    NAME                                STATUS   ROLES   AGE     VERSION
    aks-fipsnp-12345678-vmss000000      Ready    agent   6m4s    v1.19.9
    aks-fipsnp-12345678-vmss000001      Ready    agent   5m21s   v1.19.9
    aks-fipsnp-12345678-vmss000002      Ready    agent   6m8s    v1.19.9
    aks-nodepool1-12345678-vmss000000   Ready    agent   34m     v1.19.9
    
  6. Запустите развертывание с интерактивным сеансом на одном из узлов в пуле узлов с поддержкой FIPS с помощью kubectl debug команды.

    kubectl debug node/aks-fipsnp-12345678-vmss000000 -it --image=mcr.microsoft.com/dotnet/runtime-deps:6.0
    
  7. В выходных данных интерактивного сеанса убедитесь, что включены криптографические библиотеки FIPS. Выходные данные должны выглядеть примерно так:

    root@aks-fipsnp-12345678-vmss000000:/# cat /proc/sys/crypto/fips_enabled
    1
    

    Пулы узлов с включенной поддержкой FIPS также имеют метку kubernetes.azure.com/fips_enabled=true, которую развертывания могут использовать для обращения к этим пулам узлов.

Дополнительные сведения о ресурсе azurerm_kubernetes_cluster_node_pool см. в документации по поставщику Terraform Azure.

Добавление пула узлов Windows с поддержкой FIPS

В этом разделе мы добавим пул узлов Windows в существующий кластер AKS. В пулах узлов Windows Server 2022 и более поздних версий FIPS включен по умолчанию, даже если enableFips не отображает True. пулы узлов Windows Server 2025 и более поздних версий не поддерживают отключение FIPS.

  1. Создайте пул узлов Windows с помощью команды az aks nodepool add. В отличие от пулов узлов на основе Linux, Windows пулы узлов используют один и тот же набор образов.

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name fipsnp \
        --enable-fips-image \
        --os-type Windows
    
  2. Проверьте конфигурацию пула узлов с помощью az aks show команды и запроса значения enableFIPS в agentPoolProfiles.

    az aks show \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \
        -o table
    
  3. Убедитесь, что пулы узлов Windows имеют доступ к криптографическим библиотекам FIPS путем создания подключения RDP к узлу Windows в пуле узлов и проверке реестра. В программе 'Выполнить' введите regedit.

  4. Найдите HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy в реестре.

  5. Если Enabled установлено в 1, то FIPS включен.

    Снимок экрана показывает изображение редактора реестра для Политики алгоритма FIPS и его включение.

    Пулы узлов с включенной поддержкой FIPS также имеют метку kubernetes.azure.com/fips_enabled=true, которую развертывания могут использовать для обращения к этим пулам узлов.

Нет возможности Azure портала для включения или отключения параметров FIPS для пулов узлов Windows. Все пулы узлов Windows, созданные с помощью портала Azure, имеют активированную функцию FIPS. Windows Server 2022 и более поздние версии пулов узлов включают FIPS по умолчанию, а пулы узлов Windows Server 2025 и более поздние версии не поддерживают отключение FIPS.

  1. Создайте пул узлов Windows с помощью шаблона ARM, развернув ресурс пула агентов, в котором osType установлен на Windows. Рассмотрим пример.

    {
      "type": "Microsoft.ContainerService/managedClusters/agentPools",
      "apiVersion": "2023-03-01",
      "name": "[concat(parameters('clusterName'), '/fipsnp')]",
      "properties": {
        "count": 3,
        "vmSize": "Standard_D2s_v3",
        "osType": "Windows",
        "osSKU": "Windows2022",
        "mode": "User"
      }
    }
    
  2. Разверните шаблон ARM с помощью портала Azure, Azure CLI или Azure PowerShell. Дополнительные сведения о развертывании шаблонов ARM см. в статье "Развертывание ресурсов с помощью шаблонов ARM".

  3. Проверьте конфигурацию пула узлов с помощью az aks show команды и запроса значения enableFIPS в agentPoolProfiles.

    az aks show \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \
        -o table
    
  4. Убедитесь, что пулы узлов Windows имеют доступ к криптографическим библиотекам FIPS путем создания подключения RDP к узлу Windows в пуле узлов и проверке реестра. В программе 'Выполнить' введите regedit.

  5. Найдите HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy в реестре.

  6. Если Enabled установлено в 1, то FIPS включен.

    Снимок экрана показывает изображение редактора реестра для Политики алгоритма FIPS и его включение.

    Пулы узлов с включенной поддержкой FIPS также имеют метку kubernetes.azure.com/fips_enabled=true, которую развертывания могут использовать для обращения к этим пулам узлов.

  1. Создайте пул узлов Windows через Bicep, развернув ресурс пула агентов с osType установленным на Windows. Рассмотрим пример.

    param clusterName string
    param nodePoolName string = 'fipsnp'
    
    resource nodePool 'Microsoft.ContainerService/managedClusters/agentPools@2023-03-01' = {
      name: '${clusterName}/${nodePoolName}'
      properties: {
        count: 3
        vmSize: 'Standard_D2s_v3'
        osType: 'Windows'
        osSKU: 'Windows2022'
        mode: 'User'
        enableFIPS: true
      }
    }
    
  2. Разверните файл Bicep с помощью Azure CLI, Azure PowerShell или портала Azure. Дополнительные сведения о развертывании файлов Bicep см. в статье Create Bicep files using Visual Studio Code.

  3. Проверьте конфигурацию пула узлов с помощью az aks show команды и запроса значения enableFIPS в agentPoolProfiles.

    az aks show \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \
        -o table
    
  4. Убедитесь, что пулы узлов Windows имеют доступ к криптографическим библиотекам FIPS путем создания подключения RDP к узлу Windows в пуле узлов и проверке реестра. В программе 'Выполнить' введите regedit.

  5. Найдите HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy в реестре.

  6. Если Enabled установлено в 1, то FIPS включен.

    Снимок экрана показывает изображение редактора реестра для Политики алгоритма FIPS и его включение.

    Пулы узлов с включенной поддержкой FIPS также имеют метку kubernetes.azure.com/fips_enabled=true, которую развертывания могут использовать для обращения к этим пулам узлов.

  1. Добавьте следующий код в main.tf, чтобы создать пул узлов Windows в кластере AKS:

    resource "azurerm_kubernetes_cluster_node_pool" "fips_windows" {
      name                   = "fipsnp"
      kubernetes_cluster_id  = azurerm_kubernetes_cluster.example.id
      vm_size                = "Standard_D2s_v3"
      os_type                = "Windows"
      os_sku                 = "Windows2022"
      node_count             = 3
      fips_enabled           = true
    
      node_taints = []
    }
    
  2. Примените обновленную конфигурацию Terraform, используя команды terraform plan и terraform apply.

    terraform plan
    terraform apply
    
  3. Подключитесь к кластеру AKS с помощью команды [az aks get-credentials][az-aks-get-credentials].

    az aks get-credentials \
        --resource-group myResourceGroup \
        --name myAKSCluster
    
  4. Проверьте конфигурацию пула узлов с помощью az aks show команды и запроса значения enableFIPS в agentPoolProfiles.

    az aks show \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \
        -o table
    
  5. Убедитесь, что пулы узлов Windows имеют доступ к криптографическим библиотекам FIPS путем создания подключения RDP к узлу Windows в пуле узлов и проверке реестра. В программе 'Выполнить' введите regedit.

  6. Найдите HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy в реестре.

  7. Если Enabled установлено в 1, то FIPS включен.

    Снимок экрана показывает изображение редактора реестра для Политики алгоритма FIPS и его включение.

    Пулы узлов с включенной поддержкой FIPS также имеют метку kubernetes.azure.com/fips_enabled=true, которую развертывания могут использовать для обращения к этим пулам узлов.

Обновление существующего пула узлов для включения или отключения FIPS

Существующие пулы узлов Linux можно обновить, чтобы включить или отключить FIPS. Если вы планируете перенести пулы узлов из не FIPS в FIPS, сначала проверьте правильность работы приложения в тестовой среде перед переносом в рабочую среду. Проверка приложения в тестовой среде должна предотвратить проблемы, вызванные блокировкой ядра FIPS некоторых слабых шифров или алгоритмов шифрования, таких как алгоритм MD4, который не соответствует FIPS.

Примечание.

При обновлении существующего пула узлов Linux для включения или отключения FIPS обновление пула узлов переключается между образами FIPS и не FIPS. Обновление пула узлов вызывает переустановку, чтобы завершить обновление. Это может привести к тому, что обновление пула узлов займет несколько минут.

Предварительные требования для обновления существующего пула узлов

Azure CLI версии 2.64.0 или более поздней. Чтобы узнать версию, выполните команду az --version. Если необходимо установить или обновить, см. раздел Install Azure CLI.

Включите FIPS на существующем пуле узлов

Вы можете обновить существующие пулы узлов Linux, чтобы включить FIPS. При обновлении существующего пула узлов образ узла изменяется с текущего образа на рекомендуемый образ FIPS того же SKU ОС.

  1. Обновите пул узлов, используя команду az aks nodepool update с параметром --enable-fips-image.

    az aks nodepool update \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name np \
        --enable-fips-image
    

    Эта команда запускает повторную версию пула узлов немедленно для развертывания ОС, совместимой с FIPS. Это повторное создание происходит во время обновления пула узлов. Дополнительные шаги не требуются.

  2. Проверьте, включена ли в вашем пуле узлов поддержка FIPS, используя команду az aks show и запрос значения enableFIPS в agentPoolProfiles.

    az aks show \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \
        -o table
    

    В следующем примере выходных данных показано, что пул узлов np поддерживает FIPS.

    Name       enableFips
    ---------  ------------
    np         True
    nodepool1  False  
    

Включение FIPS в существующем пуле узлов в настоящее время не поддерживается на портале Azure. Чтобы включить FIPS в существующем пуле узлов, используйте Azure CLI, шаблоны ARM, инструкции Bicep или Terraform, описанные в этой статье.

  1. Включите FIPS в существующем пуле узлов с помощью шаблона ARM, обновив профиль пула агентов, установив свойство enableFips в значение true. Рассмотрим пример.

    {
      "type": "Microsoft.ContainerService/managedClusters/agentPools",
      "name": "[concat(parameters('clusterName'), '/np')]",
      "apiVersion": "2023-03-01",
      "properties": {
        "enableFips": true
      }
    }
    
  2. Разверните обновленный шаблон с помощью портала Azure, Azure CLI или Azure PowerShell. Дополнительные сведения о развертывании шаблонов ARM см. в статье "Развертывание ресурсов с помощью шаблонов ARM".

  3. Проверьте, включена ли в вашем пуле узлов поддержка FIPS, используя команду az aks show и запрос значения enableFIPS в agentPoolProfiles.

    az aks show \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \
        -o table
    

    В следующем примере выходных данных показано, что пул узлов np поддерживает FIPS.

    Name       enableFips
    ---------  ------------
    np         True
    nodepool1  False  
    
  1. Включите FIPS в существующем пуле нодов с помощью Bicep, обновив ресурс пула агентов для установки enableFIPS в true. Рассмотрим пример.

    param clusterName string
    param nodePoolName string = 'np'
    
    resource nodePool 'Microsoft.ContainerService/managedClusters/agentPools@2023-03-01' = {
      name: '${clusterName}/${nodePoolName}'
      properties: {
        enableFIPS: true
      }
    }
    
  2. Разверните обновленный файл Bicep с помощью Azure CLI, Azure PowerShell или портала Azure. Дополнительные сведения о развертывании файлов Bicep см. в статье Create Bicep files using Visual Studio Code.

  3. Убедитесь, что ваш пул узлов с поддержкой FIPS, используя команду az aks show и проверьте значение enableFIPS в agentPoolProfiles.

    az aks show \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \
        -o table
    

    В следующем примере выходных данных показано, что пул узлов np поддерживает FIPS.

    Name       enableFips
    ---------  ------------
    np         True
    nodepool1  False  
    
  1. Обновите ресурс azurerm_kubernetes_cluster_node_pool в main.tf, установив fips_enabled на true:

    resource "azurerm_kubernetes_cluster_node_pool" "example" {
      name                   = "np"
      kubernetes_cluster_id  = azurerm_kubernetes_cluster.example.id
      vm_size                = "Standard_D2s_v3"
      os_type                = "Linux"
      os_sku                 = "Ubuntu"
      node_count             = 3
      fips_enabled           = true
    }
    
  2. Примените обновленную конфигурацию Terraform, используя команды terraform plan и terraform apply. Terraform обнаруживает изменение fips_enabled и запускает необходимую операцию переустановки образа.

    terraform plan
    terraform apply
    
  3. Подключитесь к кластеру AKS с помощью команды [az aks get-credentials][az-aks-get-credentials].

    az aks get-credentials \
        --resource-group myResourceGroup \
        --name myAKSCluster
    
  4. Проверьте, включена ли в вашем пуле узлов поддержка FIPS, используя команду az aks show и запрос значения enableFIPS в agentPoolProfiles.

    az aks show \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \
        -o table
    

    В следующем примере выходных данных показано, что пул узлов np поддерживает FIPS.

    Name       enableFips
    ---------  ------------
    np         True
    nodepool1  False  
    

Отключение FIPS в существующем пуле узлов

Вы можете обновить существующие пулы узлов Linux, чтобы отключить FIPS. При обновлении существующего пула узлов образ узла изменяется с текущего FIPS образа на рекомендуемый не-FIPS образ с такой же SKU ОС. Изменение образа узла происходит после повторного воспроизведения.

  1. Обновите пул узлов Linux с помощью команды az aks nodepool update с параметром --disable-fips-image.

    az aks nodepool update \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name np \
        --disable-fips-image
    

    Эта команда запускает повторную версию пула узлов немедленно для развертывания ОС, совместимой с FIPS. Это повторное создание происходит во время обновления пула узлов. Дополнительные шаги не требуются.

  2. Убедитесь, что ваш пул узлов не поддерживает FIPS, используя команду az aks show и запрос значения enableFIPS в agentPoolProfiles.

    az aks show \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \
        -o table
    

    В следующем примере выходных данных показано, что пул узлов np не поддерживает FIPS.

    Name       enableFips
    ---------  ------------
    np         False
    nodepool1  False  
    

Отключение FIPS в существующем пуле узлов в настоящее время не поддерживается на портале Azure. Чтобы отключить FIPS в существующем пуле узлов, используйте инструкции Azure CLI, шаблона ARM, Bicep или Terraform в этой статье.

  1. Отключите FIPS в существующем пуле узлов с помощью шаблона ARM, обновив профиль пула агентов, чтобы установить значение свойства enableFips на false. Рассмотрим пример.

    {
      "type": "Microsoft.ContainerService/managedClusters/agentPools",
      "name": "[concat(parameters('clusterName'), '/np')]",
      "apiVersion": "2023-03-01",
      "properties": {
        "enableFips": false
      }
    }
    
  2. Разверните обновленный шаблон с помощью портала Azure, Azure CLI или Azure PowerShell. Дополнительные сведения о развертывании шаблонов ARM см. в статье "Развертывание ресурсов с помощью шаблонов ARM".

  3. Убедитесь, что ваш пул узлов не поддерживает FIPS, используя команду az aks show и запрос значения enableFIPS в agentPoolProfiles.

    az aks show \
      --resource-group myResourceGroup \
      --name myAKSCluster \
      --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \
      -o table
    

    В следующем примере выходных данных показано, что пул узлов np не поддерживает FIPS.

    Name       enableFips
    ---------  ------------
    np         False
    nodepool1  False  
    
  1. Отключите FIPS в существующем пуле узлов с помощью Bicep, обновив ресурс пула агентов, чтобы задать enableFIPS значение false. Рассмотрим пример.

    param clusterName string
    param nodePoolName string = 'np'
    
    resource nodePool 'Microsoft.ContainerService/managedClusters/agentPools@2023-03-01' = {
      name: '${clusterName}/${nodePoolName}'
      properties: {
        enableFIPS: false
      }
    }
    
  2. Разверните обновленный файл Bicep с помощью Azure CLI, Azure PowerShell или портала Azure. Дополнительные сведения о развертывании файлов Bicep см. в статье Create Bicep files using Visual Studio Code.

  3. Убедитесь, что ваш пул узлов не поддерживает FIPS, используя команду az aks show и запрос значения enableFIPS в agentPoolProfiles.

    az aks show \
      --resource-group myResourceGroup \
      --name myAKSCluster \
      --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \
      -o table
    

    В следующем примере выходных данных показано, что пул узлов np не поддерживает FIPS.

    Name       enableFips
    ---------  ------------
    np         False
    nodepool1  False  
    
  1. Обновите ресурс azurerm_kubernetes_cluster_node_pool в main.tf, установив fips_enabled на false:

    resource "azurerm_kubernetes_cluster_node_pool" "example" {
      name                   = "np"
      kubernetes_cluster_id  = azurerm_kubernetes_cluster.example.id
      vm_size                = "Standard_D2s_v3"
      os_type                = "Linux"
      os_sku                 = "Ubuntu"
      node_count             = 3
      fips_enabled           = false
    }
    
  2. Примените обновленную конфигурацию Terraform, используя команды terraform plan и terraform apply. Terraform обнаруживает изменение fips_enabled и запускает необходимую операцию переустановки образа.

    terraform plan
    terraform apply
    
  3. Убедитесь, что ваш пул узлов не поддерживает FIPS, используя команду az aks show и запрос значения enableFIPS в agentPoolProfiles.

    az aks show \
      --resource-group myResourceGroup \
      --name myAKSCluster \
      --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \
      -o table
    

    В следующем примере выходных данных показано, что пул узлов np не поддерживает FIPS.

    Name       enableFips
    ---------  ------------
    np         False
    nodepool1  False  
    

Сообщение дня

Вы можете заменить сообщение дня (MOTD) на узлах Linux с помощью --message-of-the-day флага при создании кластера или добавлении пула узлов.

Создайте кластер и замените сообщение дня с помощью команды az aks create с флагом --message-of-the-day, установленным на путь к новому файлу MOTD.

az aks create --cluster-name myAKSCluster --resource-group myResourceGroup --message-of-the-day ./newMOTD.txt

Добавьте пул узлов и замените сообщение дня с помощью az aks nodepool add команды флагом --message-of-the-day , заданным для пути нового файла MOTD.

az aks nodepool add --name mynodepool1 --cluster-name myAKSCluster --resource-group myResourceGroup --message-of-the-day ./newMOTD.txt

Дополнительные сведения о безопасности AKS см. в статье Best practices for cluster security and upgrades in Azure Kubernetes Service (AKS).