Share via


AKS(Azure Kubernetes Service) 노드 풀에 대해 FIPS(Federal Information Process Standard) 사용

FIPS(Federal Information Processing Standard) 140-2는 정보 기술 제품 및 시스템에서 암호화 모듈에 대한 최소 보안 요구 사항을 정의하는 미국 정부 표준입니다. AKS(Azure Kubernetes Service)를 사용하면 FIPS 140-2가 사용하도록 설정된 Linux 및 Windows 노드 풀을 만들 수 있습니다. FIPS 사용 노드 풀에서 실행되는 배포는 이러한 암호화 모듈을 사용하여 향상된 보안을 제공하고 FedRAMP 준수의 일환으로 보안 제어를 지원할 수 있습니다. FIPS 140-2에 대한 자세한 내용은 FIPS(Federal Information Processing Standard) 140을 참조하세요.

필수 조건

  • Azure CLI 버전 2.32.0 이상 설치 및 구성 az --version을 실행하여 버전을 찾습니다. Azure CLI 설치 또는 업그레이드에 대한 자세한 내용은 Azure CLI 설치를 참조하세요.

참고 항목

AKS 모니터링 추가 기능은 에이전트 버전 3.1.17(Linux) 및 Win-3.1.17(Windows)부터 Ubuntu, Azure Linux 및 Windows에서 FIPS 지원 노드 풀을 지원합니다.

제한 사항

  • FIPS 사용 노드 풀에는 다음과 같은 제한이 있습니다.
    • FIPS 사용 노드 풀에는 Kubernetes 버전 1.19 이상이 필요합니다.
    • FIPS에 사용되는 기본 패키지 또는 모듈을 업데이트하려면 노드 이미지 업그레이드를 사용해야 합니다.
    • FIPS 노드의 컨테이너 이미지는 FIPS 준수에 대해 평가되지 않았습니다.
    • FIPS가 일부 인증 모듈을 사용하지 않도록 설정하기 때문에 CIFS 공유 탑재가 실패합니다. 이 문제를 해결하려면 FIPS 지원 노드 풀에 파일 공유를 탑재할 때 오류 발생을 참조하세요.

Important

FIPS 사용 Linux 이미지는 Linux 기반 노드 풀에 사용되는 기본 Linux 이미지와 다른 이미지입니다. 노드 풀에서 FIPS를 사용하도록 설정하려면 새 Linux 기반 노드 풀을 만들어야 합니다. 기존 노드 풀에서는 FIPS를 사용하도록 설정할 수 없습니다.

FIPS 사용 노드 이미지는 FIPS를 사용하지 않는 이미지와 같은 다른 버전 번호(예: 커널 버전)를 포함할 수 있습니다. FIPS 사용 노드 풀 및 노드 이미지의 업데이트 주기는 FIPS를 사용하지 않는 노드 풀 및 이미지와 다를 수 있습니다.

지원되는 OS 버전

지원되는 모든 OS 형식, Linux 및 Windows에서 FIPS 지원 노드 풀을 만들 수 있습니다. 그러나 모든 OS 버전이 FIPS 지원 노드 풀을 지원하는 것은 아닙니다. 새 OS 버전이 릴리스된 후 일반적으로 FIPS 규격이 되기까지 대기 기간이 있습니다.

아래 표에는 지원되는 OS 버전이 포함되어 있습니다.

OS 종류 OS SKU FIPS 준수
Linux Ubuntu 지원됨
Linux Azure Linux 지원됨
Windows Windows Server 2019 지원됨
Windows Windows Server 2022 지원됨

FIPS 지원 Ubuntu를 요청할 때 기본 Ubuntu 버전이 FIPS를 지원하지 않는 경우 AKS는 기본적으로 최신 FIPS 지원 Ubuntu 버전을 사용합니다. 예를 들어, Ubuntu 22.04는 Linux 노드 풀의 기본값입니다. 22.04는 현재 FIPS를 지원하지 않으므로 AKS는 Linux FIPS 지원 노드 풀에 대해 기본적으로 Ubuntu 20.04로 설정됩니다.

참고 항목

이전에는 GetOSOptions API를 사용하여 해당 OS가 FIPS를 지원하는지 여부를 확인할 수 있었습니다. GetOSOptions API는 이제 더 이상 사용되지 않으며 2024-05-01부터 시작되는 새 AKS API 버전에 더 이상 포함되지 않습니다.

FIPS 지원 Linux 노드 풀 만들기

  1. --enable-fips-image 매개 변수와 함께 az aks nodepool add 명령을 사용하여 FIPS 사용 Linux 노드 풀을 만듭니다.

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name fipsnp \
        --enable-fips-image
    

    참고 항목

    기본 노드 풀에서 FIPS를 사용하도록 설정하기 위해 클러스터를 만들 때 az aks create 명령과 함께 --enable-fips-image 매개 변수를 사용할 수도 있습니다. 이러한 방식으로 생성된 클러스터에 노드 풀을 추가할 때 FIPS 지원 노드 풀을 생성하기 위해 노드 풀을 추가할 때 --enable-fips-image 매개 변수를 사용해야 합니다.

  2. agentPoolProfilesenableFIPS 값에 대한 az aks show 명령 및 쿼리를 사용하여 노드 풀이 FIPS를 사용하고 있는지 확인합니다.

    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. kubectl debug 명령을 사용하여 FIPS 사용 노드 풀의 해당 노드 중 하나에서 대화형 세션으로 배포를 실행합니다.

    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 지원 Windows 노드 풀 만들기

  1. --enable-fips-image 매개 변수와 함께 az aks nodepool add 명령을 사용하여 FIPS 사용 Windows 노드 풀을 만듭니다. Linux 기반 노드 풀과 달리 Windows 노드 풀은 동일한 이미지 집합을 공유합니다.

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name fipsnp \
        --enable-fips-image \
        --os-type Windows
    
  2. agentPoolProfilesenableFIPS 값에 대한 az aks show 명령 및 쿼리를 사용하여 노드 풀이 FIPS를 사용하고 있는지 확인합니다.

    az aks show \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \
        -o table
    
  3. FIPS 사용 노드 풀에서 Windows 노드에 대한 RDP 연결을 생성하여 Windows 노드 풀이 FIPS 암호화 라이브러리에 액세스할 수 있는지 확인하고 레지스트리를 확인합니다. 실행 애플리케이션에서 regedit를 입력합니다.

  4. 레지스트리에서 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy를 찾습니다.

  5. Enabled1로 설정되면 FIPS가 사용하도록 설정됩니다.

FIPS 알고리즘 정책에 대한 레지스트리 편집기의 모습과 편집기가 사용하도록 설정되어 있는 것을 보여 주는 스크린샷

FIPS 사용 노드 풀에는 배포에서 해당 노드 풀을 대상으로 하는 데 사용할 수 있는 kubernetes.azure.com/fips_enabled=true 레이블도 있습니다.

다음 단계

AKS 보안에 대한 자세한 내용은 AKS(Azure Kubernetes Service)의 클러스터 보안 및 업그레이드 모범 사례를 참조하세요.