보안 부팅은 모든 부팅 구성요소의 디지털 서명을 확인하고 서명 확인에 실패할 경우 부팅 프로세스를 중지하여 시스템에서 신뢰할 수 있는 소프트웨어만 실행하도록 합니다.
Google Distributed Cloud (GDC) 에어 갭은 통합 확장 펌웨어 인터페이스(UEFI) 펌웨어를 사용하여 소프트웨어 서명에 사용되는 인증서와 키를 관리합니다.
UEFI 펌웨어는 소프트웨어 제조업체에서 시스템 펌웨어, 시스템 부트 로더, 로드하는 바이너리에 서명하는 데 사용하는 키를 포함하는 인증서를 안전하게 관리합니다. UEFI 문서를 보려면 https://uefi.org/sites/default/files/resources/UEFI_Secure_Boot_in_Modern_Computer_Security_Solutions_2013.pdf
를 참고하세요.
부팅할 때마다 UEFI 펌웨어는 승인된 키의 보안 저장소를 바탕으로 각 부팅 구성 요소의 디지털 서명을 확인합니다. 정상적으로 서명되지 않았거나 아예 서명이 없는 부팅 구성요소는 모두 실행이 허용되지 않습니다. 보안 부팅을 사용 설정하려면 VM의 bootloader
유형을 uefi
로 설정해야 합니다.
vTPM은 가상화된 신뢰 플랫폼 모듈입니다. vTPM에 관한 자세한 내용은 https://trustedcomputinggroup.org/trusted-platform-module-tpm-summary/를 참고하세요. 이 칩은 시스템에 대한 액세스를 인증하는 데 사용하는 객체(예: 키 및 인증서)를 보호하는 데 사용할 수 있는 특수한 컴퓨터 칩입니다. vTPM을 사용해 실딩 또는 실링으로 비밀번호를 보호할 수도 있습니다. 봉인된 스토리지에 관한 자세한 내용은 https://en.wikipedia.org/wiki/Trusted_Computing#SEALED-STORAGE를 참고하세요. vTPM을 이 같은 용도로 사용하는 방법을 보여주는 Go 언어의 예시는 GitHub의 Go-TPM 프로젝트(https://github.com/google/go-tpm)를 참고하세요.
시작하기 전에
gdcloud
명령줄 인터페이스 (CLI) 명령어를 사용하려면 gdcloud
CLI를 다운로드, 설치, 구성해야 합니다.
Distributed Cloud의 모든 명령어는 gdcloud
또는 kubectl
CLI를 사용하며 운영체제 (OS) 환경이 필요합니다.
kubeconfig 파일 경로 가져오기
관리 API 서버에 대해 명령어를 실행하려면 다음 리소스가 있어야 합니다.
관리 API 서버의 kubeconfig 파일이 없는 경우 로그인 및 생성합니다.
관리 API 서버의 kubeconfig 파일 경로를 사용하여 이 안내의
MANAGEMENT_API_SERVER
를 바꿉니다.
권한 및 액세스 요청
이 페이지에 나열된 작업을 수행하려면 프로젝트 VirtualMachine 관리자 역할이 있어야 합니다. 단계를 따라 VM이 있는 프로젝트의 네임스페이스에 프로젝트 VirtualMachine 관리자 (project-vm-admin
) 역할이 있는지 확인합니다.
보안 부트 사용 설정
VM에 보안 부팅을 사용 설정합니다. 프로젝트 네임스페이스(PROJECT_NAMESPACE
)에 있는 VM_NAME
이라는 VM에 다음 안내를 사용합니다.
보안 부팅을 사용 설정하도록 VM 커스텀 리소스 업데이트:
kubectl --kubeconfig MANAGEMENT_API_SERVER patch virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT_NAMESPACE --type merge --patch $' spec: shieldConfig: bootType: uefi enableSecureBoot: true '
VM이 실행 중인 경우 VM을 다시 시작하는 안내에 따라 다시 시작합니다.
보안 부팅을 사용 설정했는지 확인합니다. VM에 대한 SSH 연결을 설정하고 다음 명령어를 실행합니다.
mokutil --sb-state
보안 부팅을 사용 설정한 경우 명령어는
SecureBoot enabled
를 반환합니다.mokutil
도구에서 보안 부팅이 사용 설정되지 않았다고 보고하는 경우 보안 부팅 구성 문제 해결 섹션의 단계를 따르세요.
보안 부팅 구성 문제 해결
편집기에서 VM 커스텀 리소스를 엽니다.
kubectl --kubeconfig MANAGEMENT_API_SERVER edit virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT_NAMESPACE
'다음 명령어를 실행하세요'의
spec
필드에 표시된 대로 누락된 필드나 값을 찾습니다. 필수 항목입니다.누락된 필드가 있거나 잘못된 필드가 있으면
spec
을 수정하여 누락된 필드를 추가하고 잘못된 값을 수정합니다.파일을 저장합니다.
VM 다시 시작의 단계를 따릅니다.
이전 단계로 문제가 해결되지 않으면 VM의 운영체제 (OS)에 해당하는 문서를 확인하여 OS 버전이 보안 부팅을 지원하는지 확인하세요.
가상 신뢰 플랫폼 모듈 (vTPM) 사용 설정
VM에 vTPM을 사용 설정합니다. 프로젝트의 네임스페이스 (PROJECT_NAMESPACE
)에 있는 VM_NAME
라는 VM에 다음 안내를 사용하세요.
VM 커스텀 리소스를 업데이트하여 vTPM 사용 설정:
kubectl --kubeconfig MANAGEMENT_API_SERVER patch virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT_NAMESPACE --type merge --patch $' spec: shieldConfig: enableVtpm: true '
VM이 실행 중인 경우 VM을 다시 시작하는 안내에 따라 다시 시작합니다.
vTPM을 사용 설정했는지 확인합니다. VM에 SSH 연결을 설정하고 다음 명령어를 실행합니다.
dmesg | grep -i tpm
vTPM을 사용 설정한 경우 명령어가 ACPI 테이블의 일부로 TPM 모듈을 반환합니다. 결과는 다음과 유사합니다.
[ 7.620985] tpm_tis MSFT0101:00: 2.0 TPM (device-id 0x1, rev-id 1)
ACPI tables
에 TPM 모듈이 표시되지 않으면 vTPM 구성 문제 해결 섹션의 단계를 따르세요.
vTPM 구성 문제 해결
편집기에서 VM 커스텀 리소스를 엽니다.
kubectl --kubeconfig MANAGEMENT_API_SERVER edit virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT_NAMESPACE
다음 명령어 실행의
spec
필드에 표시된 대로 누락된 필드나 값을 찾습니다. 필수 항목입니다.누락된 필드가 있거나 잘못된 필드가 있으면
spec
을 수정하여 누락된 필드를 추가하고 잘못된 값을 수정합니다.파일을 저장합니다.
VM 다시 시작의 단계를 따릅니다.
이전 단계로 문제가 해결되지 않으면 VM의 운영체제 (OS)에 해당하는 문서를 확인하여 OS 버전이 vTPM을 지원하는지 확인하세요.