다음을 통해 공유


AKS(Azure Kubernetes Service)에 대한 신뢰할 수 있는 시작

신뢰할 수 있는 시작 은 고급 및 영구 공격 기술로부터 보호하여 2세대 VM(가상 머신)의 보안을 향상시킵니다. 이를 통해 관리자는 확인되고 서명된 부트로더, OS 커널 및 드라이버와 함께 기본 가상 머신을 포함하는 AKS 노드를 배포할 수 있습니다. 안전하고 신중한 부팅을 사용함으로써 관리자는 전체 부팅 체인의 무결성에 대한 인사이트와 확신을 얻을 수 있습니다.

이 문서는 이 새로운 기능과 그 구현 방법을 이해하는 데 도움이 됩니다.

개요

신뢰할 수 있는 시작은 독립적으로 사용하도록 설정할 수 있는 몇 가지 조정된 인프라 기술로 구성되어 있습니다. 각 기술은 정교한 위협에 대한 또 다른 방어 계층을 제공합니다.

  • vTPM - 신뢰할 수 있는 출시에는 TPM 2.0 사양을 준수하는 하드웨어 TPM(신뢰할 수 있는 플랫폼 모듈)의 가상화된 버전이 도입되었습니다. 키 및 측정을 위한 전용 보안 자격 증명 모음 역할을 합니다. 신뢰할 수 있는 시작은 VM의 범위 외부에 있는 보안 환경에서 실행되는 고유한 전용 TPM 인스턴스를 VM에 제공합니다. vTPM은 VM(UEFI, OS, 시스템 및 드라이버)의 전체 부팅 체인을 측정하여 증명을 사용합니다. 신뢰할 수 있는 시작은 클라우드에서 원격 증명을 수행하는 데 vTPM을 사용합니다. 이는 플랫폼 상태 검사 및 신뢰 기반 결정을 내리는 데 사용됩니다. 상태 검사를 통해 신뢰할 수 있는 시작은 VM이 올바르게 부팅되었음을 암호화하여 인증할 수 있습니다. VM이 승인되지 않은 구성 요소를 실행하기 때문에 프로세스가 실패하면 클라우드용 Microsoft Defender에서 무결성 경고를 발행합니다. 경고에는 무결성 검사를 통과하지 못한 구성 요소에 대한 세부 정보가 포함됩니다.

  • 보안 부팅 - 신뢰할 수 있는 시작의 근본에는 VM의 보안 부팅이 있습니다. 플랫폼 펌웨어에서 구현되는 이 모드는 맬웨어 기반 루트킷 및 부팅 키트의 설치를 방지합니다. 보안 부팅은 서명된 운영 체제 및 드라이버만 부팅할 수 있도록 하기 위해 작동합니다. VM의 소프트웨어 스택에 대한 “신뢰할 수 있는 루트”를 설정합니다. 보안 부팅을 사용하도록 설정하면 신뢰할 수 있는 게시자가 모든 OS 부팅 구성 요소(부트 로더, 커널, 커널 드라이버)에 서명해야 합니다. Windows 및 일부 Linux 배포판은 모두 보안 부팅을 지원합니다. 보안 부팅이 신뢰할 수 있는 게시자가 서명한 이미지를 인증하지 못하면 VM 부팅이 허용되지 않습니다. 자세한 내용은 보안 부팅을 참조하세요.

시작하기 전에

  • Azure CLI 버전 2.44.1 이상. az --version을 실행하여 버전을 찾고 az upgrade를 실행하여 버전을 업그레이드합니다. 설치 또는 업그레이드해야 하는 경우 Azure CLI 설치를 참조하세요.
  • 보안 부팅에는 서명된 부트 로더, OS 커널 및 드라이버가 필요합니다.

제한 사항

  • AKS는 버전 1.25.2 이상에서 신뢰할 수 있는 시작을 지원합니다.
  • 신뢰할 수 있는 시작은 Azure 2세대 VM만 지원합니다.
  • Windows Server 운영 체제를 실행하는 클러스터 노드는 지원되지 않습니다.
  • 신뢰할 수 있는 시작은 FIPS를 사용하거나 Arm64를 기반으로 하는 노드 풀을 지원하지 않습니다.
  • 신뢰할 수 있는 시작은 가상 노드를 지원하지 않습니다.
  • 가용성 집합은 지원되지 않으며 Virtual Machine Scale Sets만 지원됩니다.
  • GPU 노드 풀에서 보안 부팅을 사용하도록 설정하려면 GPU 드라이버 설치를 건너뛰어야 합니다. 자세한 내용은 GPU 드라이버 설치 건너뛰기를 참조하세요.
  • 임시 OS 디스크는 신뢰할 수 있는 시작을 통해 만들 수 있으며 모든 지역이 지원됩니다. 그러나 모든 가상 머신 크기가 지원되는 것은 아닙니다. 자세한 내용은 신뢰할 수 있는 시작 임시 OS 크기를 참조하세요.

새 클러스터 배포

Azure CLI를 사용하여 AKS 클러스터를 배포하려면 다음 단계를 수행합니다.

  1. az aks create 명령을 사용하여 AKS 클러스터를 만듭니다. 명령을 실행하기 전에 다음 매개 변수를 검토합니다.

    • --name: AKS 클러스터에 대한 고유 이름(예: myAKSCluster)을 입력합니다.
    • --resource-group: AKS 클러스터 리소스를 호스팅할 기존 리소스 그룹의 이름을 입력합니다.
    • --enable-secure-boot: 보안 부팅을 사용하도록 설정하여 신뢰할 수 있는 게시자가 서명한 이미지를 인증합니다.
    • --enable-vtpm: vTPM을 사용하도록 설정하고 VM의 전체 부팅 체인을 측정하여 증명을 수행합니다.

    참고 항목

    보안 부팅에는 서명된 부트 로더, OS 커널 및 드라이버가 필요합니다. 보안 부팅을 사용하도록 설정한 후 노드가 시작되지 않으면 Azure Linux 가상 머신 내에서 보안 부팅 오류를 담당하는 부팅 구성 요소를 확인할 수 있습니다. 보안 부팅 실패 확인을 참조하세요.

    다음 예에서는 myResourceGroup에 하나의 노드가 있는 myAKSCluster라는 클러스터를 만들고 보안 부팅 및 vTPM을 사용하도록 설정합니다.

    az aks create \
        --name myAKSCluster \
        --resource-group myResourceGroup \
        --node-count 1 \
        --enable-secure-boot \
        --enable-vtpm \
        --generate-ssh-keys
    
  2. 다음 명령을 실행하여 Kubernetes 클러스터에 대한 액세스 자격 증명을 가져옵니다. az aks get-credentials 명령을 사용하고 클러스터 이름과 리소스 그룹 이름의 값을 바꿉니다.

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    

신뢰할 수 있는 시작이 사용하도록 설정된 노드 풀 추가

az aks nodepool add 명령을 사용하여 신뢰할 수 있는 시작이 사용하도록 설정된 노드 풀을 배포합니다. 명령을 실행하기 전에 다음 매개 변수를 검토합니다.

  • --cluster-name: AKS 클러스터의 이름을 입력합니다.
  • --resource-group: AKS 클러스터 리소스를 호스팅할 기존 리소스 그룹의 이름을 입력합니다.
  • --name: 노드 풀의 고유 이름을 입력합니다. 노드 풀의 이름은 영숫자 소문자만 포함할 수 있고 소문자 문자로 시작해야 합니다. Linux 노드 풀의 경우 길이는 1~11자 사이여야 합니다.
  • --node-count: Kubernetes 에이전트 풀의 노드 수입니다. 기본값은 3입니다.
  • --enable-secure-boot: 보안 부팅을 사용하도록 설정하여 신뢰할 수 있는 게시자가 서명한 이미지를 인증합니다.
  • --enable-vtpm: vTPM을 사용하도록 설정하고 VM의 전체 부팅 체인을 측정하여 증명을 수행합니다.

참고 항목

보안 부팅에는 서명된 부트 로더, OS 커널 및 드라이버가 필요합니다. 보안 부팅을 사용하도록 설정한 후 노드가 시작되지 않으면 Azure Linux 가상 머신 내에서 보안 부팅 오류를 담당하는 부팅 구성 요소를 확인할 수 있습니다. 보안 부팅 실패 확인을 참조하세요.

다음 예에서는 3개의 노드가 있는 myAKSCluster라는 클러스터에 vTPM이 사용하도록 설정된 노드 풀을 배포합니다.

az aks nodepool add --resource-group myResourceGroup -–cluster-name myAKSCluster --name mynodepool --node-count 3 --enable-vtpm  

다음 예에서는 3개의 노드가 있는 myAKSCluster라는 클러스터에 vTPM 및 보안 부팅이 사용하도록 설정된 노드 풀을 배포합니다.

az aks nodepool add --resource-group myResourceGroup --cluster-name myAKSCluster --name mynodepool --node-count 3 --enable-vtpm --enable-secure-boot

클러스터 업데이트 및 신뢰할 수 있는 시작 사용

az aks nodepool update 명령을 사용하여 신뢰할 수 있는 시작이 사용하도록 설정된 노드 풀을 업데이트합니다. 명령을 실행하기 전에 다음 매개 변수를 검토합니다.

  • --resource-group: 기존 AKS 클러스터를 호스팅하는 기존 리소스 그룹의 이름을 입력합니다.
  • --cluster-name: AKS 클러스터의 고유한 이름(예: myAKSCluster)을 입력합니다.
  • --name: mynodepool과 같은 노드 풀의 이름을 입력합니다.
  • --enable-secure-boot: 신뢰할 수 있는 게시자가 이미지에 서명했음을 인증하기 위해 보안 부팅을 사용하도록 설정합니다.
  • --enable-vtpm: vTPM을 사용하도록 설정하고 VM의 전체 부팅 체인을 측정하여 증명을 수행합니다.

참고 항목

기본적으로 TL 호환 구성을 사용하여 노드 풀을 만들면 신뢰할 수 있는 시작 이미지가 생성됩니다. --enable-vtpm 또는 --enable-secure-boot 매개 변수를 지정하지 않으면 기본적으로 사용하지 않도록 설정되며 나중에 az aks nodepool update 명령을 사용하여 사용하도록 설정할 수 있습니다. 기존 노드 풀을 사용하도록 설정하려면 기존 노드 풀이 신뢰할 수 있는 시작 이미지를 사용해야 합니다.

참고 항목

보안 부팅에는 서명된 부트 로더, OS 커널 및 드라이버가 필요합니다. 보안 부팅을 사용하도록 설정한 후 노드가 시작되지 않으면 Azure Linux 가상 머신 내에서 보안 부팅 오류를 담당하는 부팅 구성 요소를 확인할 수 있습니다. 보안 부팅 실패 확인을 참조하세요.

다음 예에서는 myResourceGroupmyAKSCluster에서 노드 풀 mynodepool을 업데이트하고 보안 부팅 및 vTPM을 사용하도록 설정합니다.

az aks nodepool update --cluster-name myCluster --resource-group myResourceGroup --name mynodepool --enable-secure-boot --enable-vtpm 

신뢰할 수 있는 시작이 사용하도록 설정된 노드에 Pod 할당

Pod를 제한하고 특정 노드에서 시작되도록 제한하거나 신뢰할 수 있는 시작이 사용하도록 설정된 노드를 선호할 수 있습니다. Pod 매니페스트에서 다음 노드 풀 선택기를 사용하여 이를 제어할 수 있습니다.

vTPM을 실행하는 노드 풀의 경우 다음을 적용합니다.

spec:
  nodeSelector:
        kubernetes.azure.com/trusted-launch: true

보안 부팅을 실행하는 노드 풀의 경우 다음을 적용합니다.

spec:
  nodeSelector:
        kubernetes.azure.com/secure-boot: true

보안 부팅 사용 안 함

AKS 클러스터에서 보안 부팅을 사용하지 않도록 설정하려면 다음 명령을 실행합니다.

az aks nodepool update --cluster-name myCluster --resource-group myResourceGroup --name mynodepool --disable-secure-boot 

참고 항목

업데이트는 자동으로 노드 이미지로 다시 설치를 시작하며 이 작업은 노드당 몇 분 정도 걸릴 수 있습니다.

vTPM 사용 안 함

AKS 클러스터에서 vTPM을 사용하지 않도록 설정하려면 다음 명령을 실행합니다.

az aks nodepool update --cluster-name myCluster --resource-group myResourceGroup --name mynodepool --disable-vtpm

다음 단계

이 문서에서는 신뢰할 수 있는 시작을 사용하도록 설정하는 방법을 알아보았습니다. 신뢰할 수 있는 시작에 관한 자세히 알아보기