##はじめに
GCEインスタンスからGCPサービスを操作するための権限設定方法について書きたいと思います。
##権限設定の方法
GCEインスタンスからGCPサービスを操作するための権限設定は、サービスアカウントをGCEインスタンスに付与することで設定します。AWSで言うところのEC2にIAMロールを付与するようなイメージです。
サービスアカウントに、ロールを付与して、ロールに各GCPのAPIを実行できるパーミッションが付与される形になります。
GCPコンソールで、GCEを作成する画面にサービスアカウントの設定の下にAccess Scopeというものが表示されています。
Access Scopeは、デフォルトで作成されるGCE用のサービスアカウントで使用できるものです。
デフォルトで作成されているGCE用のサービスアカウント(Compute Engine default service account)は、レガシーなPrivilege RoleであるEditorロールが付与されており、強い権限を持っています。
注: roles/editor の役割には、ほとんどの GCP サービスでリソースを作成および削除する権限が含まれますが、一部のサービス(Cloud Source Repositories や Stackdriver など)ではそれらの権限が含まれません。
https://cloud.google.com/iam/docs/understanding-roles#role_types
そのため、Compute Engine default service accountの権限を制限するためにAccess Scopeが使用できます。カスタムサービスアカウントでは、Access Scopeの設定はできません。Privilege Roleとアクセススコープを使った権限設定は、レガシーな方法であり推奨されていません。
デフォルトで作成されているGCE用のサービスアカウント(Compute Engine default service account)は、Access Scopeが選択できる。
自身で作成したサービスアカウントは、Access Scopeが選択できない。
アクセススコープは、以下の3つから選択できます。
https://cloud.google.com/compute/docs/access/service-accounts?hl=ja#accesscopesiam
- Allow default access
- デフォルト値: Storage および Service Management に対する読み取り専用アクセス権、Stackdriver Logging および Monitoring に対する書き込みアクセス権、Service Control に対する読み取り / 書き込みアクセス権
- Allow full access to all Cloud APIs
- GCEインスタンスから、プロジェクト内のリソースに対してすべてのAPIが実行可能になります
- Set access for each API
- 任意のAPIに対して許可設定します
- IAM Permissionほど細かい制御はできません
##サービスアカウントの作り方
IAM & admin>Service accounts>Create service accounts
サービスアカウントに名前を記載する。(メールアドレスが作成される)
作成するサービスアカウントの所有権とアクセス権限を付与したいユーザグループを指定する※オプション
https://cloud.google.com/iam/docs/granting-roles-to-service-accounts?&_ga=2.216597334.-1303976701.1565066087#granting_access_to_a_user_for_a_service_account
##その他
注意点は、サービスアカウント、アクセススコープの変更は、インスタンスを停止しないとできない。
##投稿内容は私個人の意見であり、所属企業・部門見解を代表するものではありません。