설명
Compute Engine 디스크는 기본적으로 Google 관리 키로 저장 시 암호화됩니다. 고객 관리 또는 고객 제공 키가 없다는 사실만으로 평문 저장을 의미하지는 않지만, 조직에서 요구하는 키 통제 방식을 충족하는지는 확인해야 합니다.
Cloud KMS의 고객 관리 키와 직접 제공하는 CSEK는 관리 책임이 다릅니다. 필요한 키에 접근할 수 없거나 CSEK를 잃으면 데이터를 읽지 못할 수 있으며, 암호화가 디스크 접근 권한을 대신하지는 않습니다.
잠재적 영향
- 조직의 키 소유권·감사 요구사항을 충족하지 못할 수 있습니다.
- 키 분실이나 잘못된 권한 변경으로 데이터 접근과 서비스가 중단될 수 있습니다.
해결 방법
데이터에 필요한 키 통제 방식을 정하고 기본 암호화 또는 고객 관리 키를 선택하세요. CSEK를 사용한다면 256비트 무작위 키를 Base64로 인코딩해 보호된 입력으로 제공하고 코드나 로그에 남기지 마세요. 키 접근 권한, 안전한 보관과 복구를 시험하고 기존 디스크의 키 변경은 지원되는 데이터 이전 절차로 계획하세요.
예시
디스크 생성 발췌입니다. 프로젝트와 서비스 계정 JSON 파일 경로를 실제 값으로 바꾸세요. disk_csek_base64에는 보호된 입력으로 전달한 32바이트 무작위 키의 Base64 값을 제공해야 합니다.
변경 전
- name: create a disk1
google.cloud.gcp_compute_disk:
name: test-disk1
size_gb: 50
zone: us-central1-a
project: test_project
auth_kind: serviceaccount
service_account_file: "/tmp/auth.pem"
state: present
- name: create a disk3
google.cloud.gcp_compute_disk:
name: test-disk3
size_gb: 50
disk_encryption_key:
raw_key:
zone: us-central1-a
project: test_project
auth_kind: serviceaccount
service_account_file: "/tmp/auth.pem"
state: present
첫 작업은 기본 암호화를 사용합니다. 두 번째 작업의 빈 raw_key는 유효한 CSEK가 아니며, 암호화를 끄는 방법도 아닙니다.
변경 후
- name: create a disk
google.cloud.gcp_compute_disk:
name: test-disk
size_gb: 50
disk_encryption_key:
raw_key: "{{ disk_csek_base64 }}"
zone: us-central1-a
project: test_project
auth_kind: serviceaccount
service_account_file: /tmp/auth.pem
state: present
no_log: true
외부에서 제공한 CSEK로 새 디스크를 생성하고 no_log로 작업 결과의 로그 노출을 줄입니다. 기존 디스크의 키를 그대로 교체하는 예시는 아니며, 키의 안전한 보관은 별도로 필요합니다.