Compute Engine ディスクの暗号化キー管理の確認

既定の暗号化を確認し、顧客による管理が必要な場合はキー権限と復旧手順を構成してください。

説明

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 でタスク出力からの漏えいを抑えます。既存ディスクのキーを置き換える例ではなく、安全なキーの保管は別途必要です。

参考資料