説明
複数の VM が Compute Engine のデフォルトサービスアカウントを共有すると、権限の分離や取り消しが難しくなる場合があります。デフォルトアカウントに常に全権限があるわけではないため、実際の IAM ロールを確認してください。
想定される影響
広い権限のロールが付いていると、侵害されたワークロードがその権限で他のリソースにもアクセスするおそれがあります。
対処方法
用途別のサービスアカウントに必要な IAM ロールだけを付与し、service_accounts の email で VM に関連付けてください。Ansible の実行用認証情報と、VM に関連付けるアカウントは別々に管理してください。
例
変更後は、準備済みの vm_service_account_email を指定しています。この例は IAM ロールを付与しません。既存 VM では対応する変更手順を使い、実際に関連付けられたアカウントを確認してください。
変更前
yaml
- name: create a instance1
google.cloud.gcp_compute_instance:
name: test-object1
machine_type: n1-standard-1
zone: us-central1-a
project: "{{ gcp_project_id }}"
auth_kind: serviceaccount
state: present
- name: create a instance4
google.cloud.gcp_compute_instance:
name: test-object4
machine_type: n1-standard-1
zone: us-central1-a
project: "{{ gcp_project_id }}"
auth_kind: serviceaccount
service_accounts:
- email: "{{ project_number }}-compute@developer.gserviceaccount.com"
state: present
変更後
yaml
- name: create a instance
google.cloud.gcp_compute_instance:
name: test-object
machine_type: n1-standard-1
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