Бөлісу құралы:


Включение стандарта FIPS для пулов узлов Службы Azure Kubernetes (AKS)

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

Необходимые компоненты

  • Azure CLI версии 2.32.0 или более поздней версии, установленной и настроенной. Чтобы узнать версию, выполните команду az --version. Дополнительные сведения об установке или обновлении Azure CLI см. в разделе Установка Azure CLI.

Примечание.

Надстройка мониторинга AKS поддерживает пулы узлов с поддержкой FIPS с Ubuntu, Azure Linux и Windows, начиная с агента 3.1.17 (Linux) и Win-3.1.17 (Windows).

Ограничения

  • Пулы узлов с поддержкой FIPS имеют следующие ограничения:
    • Для пулов узлов, соответствующих FIPS, необходима служба Kubernetes версии 1.19 и выше.
    • Чтобы обновить базовые пакеты или модули, используемые для FIPS, необходимо использовать Обновление образа узла.
    • Образы контейнеров на узлах, отвечающих стандарту FIPS, не проверялись на соответствие этому стандарту.
    • Подключение общей папки CIFS завершается сбоем, так как FIPS отключает некоторые модули проверки подлинности. Чтобы обойти эту проблему, ознакомьтесь с ошибками при подключении общей папки в пуле узлов с поддержкой FIPS.

Внимание

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

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

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

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

В таблице ниже приведены поддерживаемые версии ОС:

Тип ОС SKU ОС Соответствие FIPS
Linux Ubuntu Поддерживается
Linux Azure Linux Поддерживается
Windows Windows Server 2019 Поддерживается
Windows Windows Server 2022 Поддерживается

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

Примечание.

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

Создание пула узлов Linux с поддержкой FIPS

  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
    

    Примечание.

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

  2. Убедитесь, что пул узлов включен с поддержкой az aks show FIPS с помощью команды и запроса значения 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, которую развертывания могут использовать для целевых пулов узлов.

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

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

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

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

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

  5. Если Enabled задано значение 1, то fiPS включен.

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

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

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

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

Примечание.

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

Необходимые компоненты

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

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

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

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

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

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

  1. Убедитесь, что пул узлов включен с помощью 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  
    
  2. Вывод списка узлов с помощью kubectl get nodes команды.

    kubectl get nodes
    

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

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

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

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

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

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

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

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

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

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

  1. Убедитесь, что пул узлов не включен с помощью 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  
    

Следующие шаги

Дополнительные сведения о безопасности AKS см. в разделе Рекомендации по обеспечению безопасности кластера и обновления в службе Azure Kubernetes (AKS).