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 클러스터를 배포하려면 다음 단계를 수행합니다.
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
다음 명령을 실행하여 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 가상 머신 내에서 보안 부팅 오류를 담당하는 부팅 구성 요소를 확인할 수 있습니다. 보안 부팅 실패 확인을 참조하세요.
다음 예에서는 myResourceGroup의 myAKSCluster에서 노드 풀 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
다음 단계
이 문서에서는 신뢰할 수 있는 시작을 사용하도록 설정하는 방법을 알아보았습니다. 신뢰할 수 있는 시작에 관한 자세히 알아보기
Azure Kubernetes Service