VM の Cloud API スコープと IAM 権限の確認

VM の OAuth スコープとサービスアカウントの IAM ロールを合わせて確認します。

説明

cloud-platform は多くの Google Cloud API で使用できる OAuth トークンのスコープであり、それ自体がすべてのリソースへの権限を与えるわけではありません。実行できる操作はサービスアカウントの IAM ロールで制限されます。

想定される影響

サービスアカウントの IAM ロールが過剰だと、侵害された VM からその権限を悪用されるおそれがあります。スコープを削除するだけでは権限の整理は完了しません。

対処方法

専用サービスアカウントの IAM ロールを、ワークロードに必要なものに限定してください。Google は、cloud-platform スコープを使い、IAM でアクセスを制御する構成を推奨しています。

例

変更後は、権限を別途制限した専用アカウントを明示しています。スコープを残しているのは意図的です。VM の作成設定だけでは IAM ロールは削除されません。

変更前

yaml
- name: create a instance
  google.cloud.gcp_compute_instance:
    name: test-object
    zone: us-central1-a
    project: "{{ gcp_project_id }}"
    auth_kind: serviceaccount
    service_accounts:
      - email: "{{ vm_service_account_email }}"
        scopes:
          - https://www.googleapis.com/auth/cloud-platform
    state: present

変更後

yaml
- name: create a instance
  google.cloud.gcp_compute_instance:
    name: test-object
    zone: us-central1-a
    project: "{{ gcp_project_id }}"
    auth_kind: serviceaccount
    service_accounts:
      - email: "{{ dedicated_service_account_email }}"
        scopes:
          - https://www.googleapis.com/auth/cloud-platform
    state: present

参考資料