Confidential Google Kubernetes Engine Node에서 실행하는 워크로드는 가상 신뢰 플랫폼 모듈 (vTPM) 및 컨피덴셜 컴퓨팅 증명 보고서와 같은 플랫폼 무결성 및 보안 기능에 액세스하고 이를 사용할 수 있습니다. 이 문서에서는 보안 엔지니어가 원격 증명, 보안 비밀 실링, 난수 생성과 같은 작업을 수행하기 위해 GKE 워크로드에 vTPM 및 하드웨어 기반 기기를 표시하는 방법을 보여줍니다.
다음 리소스에 이미 익숙해야 합니다.
사용하는 특정 컨피덴셜 컴퓨팅 기술은 조직의 위협 모델 및 보안 요구사항에 따라 다릅니다. 자세한 내용은 컨피덴셜 컴퓨팅 기술을 참조하세요.
컨피덴셜 컴퓨팅 작업
Confidential GKE Node에서 실행되는 포드에서 vTPM 및 하드웨어 모듈에 액세스할 수 있습니다. 이러한 모듈을 사용하여 보안 비밀 실링과 같은 암호화 작업을 수행하거나 원격 증명을 수행할 수 있습니다. 이러한 작업에 사용되는 특정 모듈은 노드에서 사용하는 컨피덴셜 컴퓨팅 기술에 따라 다음과 같이 다릅니다.
- 보안 비밀 실링: 모든 컨피덴셜 컴퓨팅 기술에서 워크로드는 보안 VM vTPM을 보안 비밀 실링의 신뢰할 수 있는 루트로 사용할 수 있습니다.
원격 증명: 워크로드는 원격 증명을 위해 다음 모듈 중 하나를 사용할 수 있습니다.
- AMD SEV: 보안 VM vTPM.
- AMD SEV-SNP: 하드웨어 기반 AMD 보안 프로세서.
- Intel TDX: 하드웨어 기반 Intel TDX 모듈.
이러한 각 컨피덴셜 컴퓨팅 기술에서 원격 증명이 작동하는 방식에 대한 자세한 내용은 증명자 아키텍처 및 증거를 참조하세요.
시작하기 전에
시작하기 전에 다음 태스크를 수행했는지 확인합니다.
- Google Kubernetes Engine API를 사용 설정합니다. Google Kubernetes Engine API 사용 설정
- 이 태스크에 Google Cloud CLI를 사용하려면
설치한 후
초기화합니다.
gcloud CLI를 이전에 gcloud CLI를 설치했으면 최신
버전을
gcloud components update명령어를 실행하여 가져옵니다. 이전 gcloud CLI 버전에서는 이 문서의 명령어를 실행하지 못할 수 있습니다.
- 요구사항 섹션의 모든 조건을 충족하는 클러스터 또는 노드 풀에서 Confidential GKE Node를 사용 설정합니다. 자세한 내용은 클러스터 수준에서 Confidential GKE Node 구성 또는 노드 풀 수준에서 Confidential GKE Node 구성을 참조하세요.
요구사항
다음 조건에서 Confidential GKE Node를 사용할 수 있습니다.
액세스하려는 컨피덴셜 컴퓨팅 모듈에 따라 클러스터 및 노드 풀이 다음 버전 중 하나를 실행해야 합니다.
- vTPMs: 모든 GKE 버전.
- AMD SEV-SNP 하드웨어 기반 기기: GKE 버전 1.33.5-gke.1350000 이상 또는 버전 1.34.1-gke.2037000 이상.
- Intel TDX 하드웨어 기반 기기: GKE 버전 1.33.5-gke.1697000 이상 또는 버전 1.34.1-gke.2909000 이상.
노드 풀은 해당 머신 유형이 있는 Compute Engine 위치에 있어야 합니다. 리전별 사용 가능 여부에 대한 자세한 내용은 머신 유형, CPU, 영역을 참조하세요.
노드는 Container-Optimized OS 노드 이미지를 사용해야 합니다.
기기 플러그인 설치
무결성 및 보안 정보를 GKE 포드에 표시하려면 기기 플러그인을 설치합니다. DaemonSet를 사용하여 플러그인을 설치하려면 다음 단계를 따르세요.
클러스터에 연결합니다.
gcloud container clusters get-credentials CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION다음을 바꿉니다.
CLUSTER_NAME: 클러스터 이름입니다.CONTROL_PLANE_LOCATION: 클러스터 컨트롤 플레인의 리전 또는 영역(예:us-central1또는us-central1-a)입니다.
cc-device-pluginDaemonSet를 만듭니다.kubectl create -f https://raw.githubusercontent.com/google/cc-device-plugin/main/manifests/cc-device-plugin.yaml
DaemonSet를 만든 후 Confidential GKE Node의 모든 컨피덴셜 컴퓨팅 기기가 해당 노드에서 실행되는 포드에 표시됩니다.
포드에서 컨피덴셜 컴퓨팅 기기에 액세스
기기 플러그인을 설치하기 위해 DaemonSet를 만든 후에는 Kubernetes에서 다른 확장 리소스를 요청하는 방식과 마찬가지로 포드에서 vTPM 및 하드웨어 기반 기기에 액세스할 수 있습니다. 다음 섹션에서는 모든 포드에서 vTPM에 액세스하는 방법과 AMD SEV-SNP 및 Intel TDX 노드에서 하드웨어 기반 모듈에 액세스하는 방법을 보여줍니다.
포드에서 vTPM에 액세스
Confidential GKE Node에서 실행되는 모든 포드에서 보안 VM vTPM에 액세스하려면 컨테이너 리소스 한도에 google.com/cc 기기를 추가합니다. 다음 단계에서는 포드 예시에서 vTPM에 대한 액세스를 요청합니다.
다음 포드 매니페스트를
example-vtpm-pod.yaml로 저장합니다.apiVersion: v1 kind: Pod metadata: name: my-vtpm-pod spec: containers: - name: test-vtpm image: ubuntu command: ["/bin/sh", "-c", "ls -l /dev/tpmrm0; sleep 3600"] ports: - containerPort: 8080 name: http resources: limits: google.com/cc: 1포드를 만듭니다.
kubectl apply -f example-vtpm-pod.yaml포드는
/dev/tpmrm0기기에 액세스합니다.포드가 vTPM에 액세스할 수 있는지 확인하려면 포드 로그를 확인합니다.
kubectl logs my-vtpm-pod출력에 파일 정보가 포함되어 있으면 포드가 기기에 액세스할 수 있습니다.
애플리케이션 코드에서 기기와 상호작용할 수 있습니다. 예를 들어 Go-TPM 라이브러리를 사용하여 vTPM과 통신하고 실링과 같은 작업을 수행할 수 있습니다. AMD SEV를 사용하는 경우 vTPM을 사용하여 컨피덴셜 VM 인스턴스의 원격 증명을 수행할 수도 있습니다.
포드에서 하드웨어 기반 모듈에 액세스
AMD SEV-SNP 또는 Intel TDX를 사용하는 경우 컨테이너 리소스 한도에서 해당 선택기를 지정하여 포드에서 해당 하드웨어 기반 모듈에 액세스할 수도 있습니다. vTPM은 이러한 기술에서 측정의 신뢰할 수 있는 루트가 아니므로 이러한 모듈을 사용하여 AMD SEV-SNP 및 Intel TDX를 사용하는 노드의 원격 증명을 수행해야 합니다.
다음 단계에서는 AMD 보안 프로세서 또는 Intel TDX 모듈에 대한 액세스를 요청하는 방법을 보여줍니다.
다음 포드 예시 중 하나를 저장합니다.
AMD SEV-SNP 기기 요청:
Intel TDX 기기 요청:
포드를 만듭니다.
kubectl create -f PATH_TO_POD_MANIFESTPATH_TO_POD_MANIFEST를 저장한 포드 매니페스트 파일의 경로로 바꿉니다.포드는 다음 기기 중 하나에 액세스합니다.
- AMD SEV-SNP의 경우
/dev/sev-guest. - Intel TDX의 경우
/dev/tdx_guest.
- AMD SEV-SNP의 경우
포드가 기기에 액세스할 수 있는지 확인하려면 포드 로그를 확인합니다.
kubectl logs POD_NAMEPOD_NAME을 이전 단계에서 배포한 포드 예시의 이름으로 바꿉니다.출력에 파일 정보가 포함되어 있으면 포드가 기기에 액세스할 수 있습니다.