説明
Compute Engine ディスクは、既定で Google 管理キーによって保存時に暗号化されます。顧客管理キーや顧客指定キーがないことは平文保存を意味しませんが、組織が求めるキー管理方式を満たすか確認する必要があります。
Cloud KMS の顧客管理キーと、直接指定する CSEK では管理責任が異なります。キーへのアクセスや CSEK を失うとデータを読み取れなくなる場合があり、暗号化はディスクへのアクセス権限の代わりにはなりません。
想定される影響
- キーの所有や監査に関する組織の要件を満たさない場合があります。
- キーの紛失や誤った権限変更によって、データアクセスやサービスが停止するおそれがあります。
対処方法
データの要件に応じて、既定の暗号化または顧客が管理するキーを選んでください。CSEK では、ランダムな 256 ビットのキーを Base64 でエンコードし、保護された入力から渡してコードやログに残さないでください。キー権限、安全な保管と復旧を試験し、既存ディスクのキー変更は対応するデータ移行手順で計画してください。
例
ディスク作成の抜粋です。プロジェクトとサービスアカウントの JSON ファイルへのパスを実際の値に置き換えてください。disk_csek_base64 には、ランダムな 32 バイトのキーを Base64 でエンコードした値を、保護された入力から渡してください。
変更前
yaml
- 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 ではなく、暗号化を無効にする方法でもありません。
変更後
yaml
- 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 でタスク出力からの漏えいを抑えます。既存ディスクのキーを置き換える例ではなく、安全なキーの保管は別途必要です。