説明
メタデータベースの SSH を使う VM でプロジェクト共通鍵を許可すると、利用者はその VM に個別の鍵を登録しなくても、プロジェクトの鍵でログインできます。すべての VM を必要としない利用者にまでアクセス権を広げないようにしてください。OS Login が有効な VM は、プロジェクトやインスタンスのメタデータにある SSH 鍵をログインに使わないため、まず認証方式を確認してください。
想定される影響
- プロジェクト共通鍵が漏えいしたり不要なまま残ったりすると、その鍵を受け入れる複数の VM にアクセスされる可能性があります。
- VM の用途と利用者の役割を区別しない鍵の共有は、侵害の影響を広げ、権限の取り消しを難しくするおそれがあります。
対処方法
- メタデータベースの SSH が必要な VM では、
block-project-ssh-keysを文字列のTRUEに設定し、必要なインスタンスごとの鍵だけを管理してください。対応する環境では、OS Login と最小権限の IAM も検討してください。 - プロジェクト共通鍵を遮断する前に、運用者と自動化処理の代替認証経路を用意し、実際の接続をテストしてください。インスタンスごとの鍵や他のログイン経路は別途確認してください。
google.cloud1.14.0 のgcp_compute_instanceは既存 VM のメタデータを更新しません。既存 VM には対応する Console、gcloud、API のメタデータ変更を使用し、結果を確認してください。
例
新規 VM のメタデータ設定だけを抜粋しています。名前、プロジェクト、マシン、ディスク、認証情報など、その他の入力は省略しています。
変更前
yaml
- name: ssh_keys_unblocked
google.cloud.gcp_compute_instance:
metadata:
block-project-ssh-keys: "FALSE"
zone: us-central1-a
auth_kind: serviceaccount
- name: no_metadata
google.cloud.gcp_compute_instance:
zone: us-central1-a
auth_kind: serviceaccount
プロジェクト共通鍵を明示的に許可するか、遮断設定を省略した構成です。実際のアクセスは OS Login の使用状況、鍵、ネットワーク設定によって異なります。
変更後
yaml
- name: ssh_keys_blocked
google.cloud.gcp_compute_instance:
metadata:
block-project-ssh-keys: "TRUE"
zone: us-central1-a
auth_kind: serviceaccount
メタデータベースの SSH で、この VM がプロジェクト共通鍵を使わないようにします。プロジェクトの鍵自体を削除したり、インスタンスごとの鍵まで遮断したりするものではありません。既存 VM には別途メタデータの更新が必要です。