特定のプリンシパル セットに一時的な権限昇格を許可する利用資格を作成できます。利用資格を作成する際は、次の点に注意してください。
利用資格は、組織、フォルダ、プロジェクトのいずれのレベルでも作成できます。各レベルで利用資格によって付与されるロールは、Google Cloud のリソース階層に従います。たとえば、組織レベルで利用資格によって付与されたロールは、フォルダレベルとプロジェクト レベルで継承されます。
グループを利用資格のリクエスト元として追加すると、そのグループ内のすべての個々のアカウントがその利用資格の権限付与をリクエストできます。ただし、昇格した権限を受け取ることができるのは、権限付与をリクエストした個々のアカウントのみです。
グループを利用資格の承認者として追加すると、そのグループ内のすべてのアカウントが権限付与リクエストを承認または拒否できるようになります。
基本ロールはサポートされていません。
始める前に
Privileged Access Manager を有効にして、権限を設定していることを確認します。
Google Cloud コンソールを使用して利用資格を作成する
利用資格を作成するには、次の手順を完了します。
[Privileged Access Manager] ページに移動します。
利用資格を適用する組織、フォルダ、またはプロジェクトを選択します。
[利用資格] タブをクリックします。
[作成] をクリックします。
次の利用資格の詳細を追加します。
[次へ] をクリックします。
利用資格の有効なリクエスト元プリンシパルを検索します。最大 20 個まで追加できます。
allUsers
とallAuthenticatedUsers
を除くすべてのプリンシパル タイプがサポートされています。20 を超える ID を追加するには、ID をグループに追加し、そのグループを利用資格に追加します。プリンシパルが権限付与リクエストの理由を示す必要があるかどうかを選択します。
[次へ] をクリックします。
承認なしでのロールの付与を許可するか、リクエストを承認できる有効なプリンシパルを検索して追加します。有効なプリンシパル タイプは次のとおりです。
Google アカウント
Google グループ
Google Workspace のドメイン
Workforce プール ID
承認者を指定する場合、承認者が権限付与リクエストの承認理由を示す必要があるかどうかも選択します。利用資格ごとに最大 20 人の承認者を追加できます。20 を超える ID を追加するには、ID をグループに追加し、そのグループを利用資格に追加します。
[次へ] をクリックします。
省略可: 利用資格がリクエスト可能になったとき、権限付与が承認待ちのとき、リクエスト元にアクセス権が付与されたときに通知するユーザーのメールアドレスを追加します。利用資格に関連付けられている Google ID(承認者やリクエスト送信者など)には自動的に通知されます。ただし、特に Workforce Identity 連携を使用している場合は、別のメールアドレスのセットに通知することもできます。
[利用資格を作成] をクリックします。
プログラムで利用資格を作成する
gcloud
gcloud beta pam entitlements create
コマンドは、組織、フォルダ、プロジェクト レベルで利用資格を作成します。
後述のコマンドデータを使用する前に、次のように置き換えます。
ENTITLEMENT_ID
: 作成する利用資格 ID。ID は 4~63 文字で、[a-z0-9-]
という文字を使用する必要があります。最初の文字は英字にする必要があります。RESOURCE_TYPE
: 省略可。利用資格が属するリソースタイプ。値organization
、folder
、またはproject
を使用します。RESOURCE_ID
:RESOURCE_TYPE
とともに使用します。利用資格を管理する Google Cloud 組織、フォルダ、またはプロジェクトの ID。プロジェクト ID は英数字からなる文字列です(例:my-project
)。フォルダ ID と組織 ID は数値です(例:123456789012
)。SCOPE
: 利用資格を作成する組織、フォルダ、またはプロジェクト。organizations/ORGANIZATION_ID
、folders/FOLDER_ID
、projects/PROJECT_ID
の形式で指定します。プロジェクト ID は英数字からなる文字列です(例:my-project
)。フォルダ ID と組織 ID は数値です(例:123456789012
)。RESOURCE_MANAGER_RESOURCE_TYPE
: スコープに応じてOrganization
、Folder
、Project
のいずれか。ROLE
: 利用資格が付与されたときに割り当てるロール。TIME_IN_SECONDS
: 権限付与の最大期間(秒)。-
REQUESTING_MEMBER
: 利用資格の付与をリクエストできるプリンシパル。allUsers
とallAuthenticatedUsers
を除くすべてのプリンシパル タイプがサポートされています。 APPROVING_EMAIL
: 省略可。権限付与がリクエストされたときに通知する追加のメールアドレス。権限付与の承認者に関連付けられている Google ID には自動的に通知が送信されます。ただし、特に Workforce Identity 連携を使用している場合は、別のメールアドレスのセットに通知することもできます。-
APPROVING_MEMBER
: 利用資格リクエストを承認できるプリンシパル。有効なプリンシパル タイプは次のとおりです。- ユーザー
- グループ
- ドメイン
- Workforce プール ID
ADMIN_EMAIL_ADDRESS
: 省略可。リクエスト元にアクセス権が付与されたときに通知する追加のメールアドレス。権限付与の承認者に関連付けられている Google ID には自動的に通知が送信されます。ただし、特に Workforce Identity 連携を使用している場合は、別のメールアドレスのセットに通知することもできます。REQUESTER_EMAIL_ADDRESS
: 省略可。この利用資格をリクエストできるようになったときに通知する追加のメールアドレス。権限付与リクエスト元の Google ID には自動的に通知されます。ただし、特に Workforce Identity 連携を使用している場合は、別のメールアドレスのセットに通知することもできます。
次の内容を entitlement.yaml
という名前のファイルに保存します。
privilegedAccess: gcpIamAccess: resourceType: cloudresourcemanager.googleapis.com/RESOURCE_MANAGER_RESOURCE_TYPE resource: //cloudresourcemanager.googleapis.com/SCOPE roleBindings: - role: ROLE_1 - role: ROLE_2 maxRequestDuration: TIME_IN_SECONDSs eligibleUsers: - principals: - REQUESTING_MEMBER_1 - REQUESTING_MEMBER_2 approvalWorkflow: manualApprovals: requireApproverJustification: true steps: - approvalsNeeded: 1 approverEmailRecipients: - APPROVING_EMAIL_1 - APPROVING_EMAIL_2 approvers: - principals: - APPROVING_MEMBER_1 - APPROVING_MEMBER_2 requesterJustificationConfig: unstructured: {} additionalNotificationTargets: adminEmailRecipients: - ADMIN_EMAIL_ADDRESS_1 - ADMIN_EMAIL_ADDRESS_2 requesterEmailRecipients: - REQUESTER_EMAIL_ADDRESS_1 - REQUESTER_EMAIL_ADDRESS_2
次のコマンドを実行します。
Linux、macOS、Cloud Shell
gcloud beta pam entitlements create \ ENTITLEMENT_ID \ --entitlement-file=entitlement.yaml \ --location=global \ --RESOURCE_TYPE=RESOURCE_ID
Windows(PowerShell)
gcloud beta pam entitlements create ` ENTITLEMENT_ID ` --entitlement-file=entitlement.yaml ` --location=global ` --RESOURCE_TYPE=RESOURCE_ID
Windows(cmd.exe)
gcloud beta pam entitlements create ^ ENTITLEMENT_ID ^ --entitlement-file=entitlement.yaml ^ --location=global ^ --RESOURCE_TYPE=RESOURCE_ID
次のようなレスポンスが返されます。
Create request issued for: [ENTITLEMENT_ID] Waiting for operation [projects/my-project/locations/global/operations/OPERATION_ID] to complete...done. Created entitlement [ENTITLEMENT_ID]. additionalNotificationTargets: {} approvalWorkflow: manualApprovals: requireApproverJustification: true steps: - approvalsNeeded: 1 approvers: - principals: - user:alex@example.com createTime: '2024-04-09T02:39:37.011866832Z' eligibleUsers: - principals: - user:bola@example.com etag: 00000000000000000000000000000000000000000000000000000000000= maxRequestDuration: 7200s name: projects/my-project/locations/global/entitlements/ENTITLEMENT_ID privilegedAccess: gcpIamAccess: resource: //cloudresourcemanager.googleapis.com/projects/my-project resourceType: cloudresourcemanager.googleapis.com/Project roleBindings: - role: roles/storage.admin requesterJustificationConfig: unstructured: {} state: AVAILABLE updateTime: '2024-04-09T02:39:40.066770306Z'
REST
Privileged Access Manager API の createEntitlement
メソッドは、組織、フォルダ、プロジェクト レベルで利用資格を作成します。
リクエストのデータを使用する前に、次のように置き換えます。
SCOPE
: 利用資格を作成する組織、フォルダ、またはプロジェクト。organizations/ORGANIZATION_ID
、folders/FOLDER_ID
、projects/PROJECT_ID
の形式で指定します。プロジェクト ID は英数字からなる文字列です(例:my-project
)。フォルダ ID と組織 ID は数値です(例:123456789012
)。ENTITLEMENT_ID
: 作成する利用資格 ID。ID は 4~63 文字で、[a-z0-9-]
という文字を使用する必要があります。最初の文字は英字にする必要があります。REQUEST_ID
: 省略可。ゼロ以外の UUID である必要があります。サーバーがリクエスト ID を含むリクエストを受信すると、その ID を含む別のリクエストが過去 60 分以内に完了しているかどうかを確認します。その場合、新しいリクエストは無視されます。RESOURCE_MANAGER_RESOURCE_TYPE
: スコープに応じてOrganization
、Folder
、Project
のいずれか。ROLE
: 利用資格が付与されたときに割り当てるロール。TIME_IN_SECONDS
: 権限付与の最大期間(秒)。-
REQUESTING_MEMBER
: 利用資格の付与をリクエストできるプリンシパル。allUsers
とallAuthenticatedUsers
を除くすべてのプリンシパル タイプがサポートされています。 -
APPROVING_MEMBER
: 利用資格リクエストを承認できるプリンシパル。有効なプリンシパル タイプは次のとおりです。- ユーザー
- グループ
- ドメイン
- Workforce プール ID
APPROVING_EMAIL
: 省略可。権限付与がリクエストされたときに通知する追加のメールアドレス。権限付与の承認者に関連付けられている Google ID には自動的に通知が送信されます。ただし、特に Workforce Identity 連携を使用している場合は、別のメールアドレスのセットに通知することもできます。ADMIN_EMAIL_ADDRESS
: 省略可。リクエスト元にアクセス権が付与されたときに通知する追加のメールアドレス。権限付与の承認者に関連付けられている Google ID には自動的に通知が送信されます。ただし、特に Workforce Identity 連携を使用している場合は、別のメールアドレスのセットに通知することもできます。REQUESTER_EMAIL_ADDRESS
: 省略可。この利用資格をリクエストできるようになったときに通知する追加のメールアドレス。権限付与リクエスト元の Google ID には自動的に通知されます。ただし、特に Workforce Identity 連携を使用している場合は、別のメールアドレスのセットに通知することもできます。
HTTP メソッドと URL:
POST https://privilegedaccessmanager.googleapis.com/v1beta/SCOPE/locations/global/entitlements?entitlementId=ENTITLEMENT_ID&requestId=REQUEST_ID
リクエストの本文(JSON):
{ "privilegedAccess": { "gcpIamAccess": { "resourceType": "cloudresourcemanager.googleapis.com/RESOURCE_MANAGER_RESOURCE_TYPE", "resource": "//cloudresourcemanager.googleapis.com/SCOPE", "roleBindings": [ { "role": "ROLE_1" }, { "role": "ROLE_2" } ] } }, "maxRequestDuration": "TIME_IN_SECONDSs", "eligibleUsers": [ { "principals": [ "REQUESTING_MEMBER_1", "REQUESTING_MEMBER_2", ... ] } ], "approvalWorkflow": { "manualApprovals": { "requireApproverJustification": true, "steps": [ { "approvers": [ { "principals": [ "APPROVING_MEMBER_1", "APPROVING_MEMBER_2", ... ] } ], "approvalsNeeded": 1, "approverEmailRecipients": [ "APPROVING_EMAIL_1", "APPROVING_EMAIL_2", ... ] } ] } }, "requesterJustificationConfig": { "unstructured": { } }, "additionalNotificationTargets": { "adminEmailRecipients": [ "ADMIN_EMAIL_ADDRESS_1", "ADMIN_EMAIL_ADDRESS_2", ... ], "requesterEmailRecipients": [ "REQUESTER_EMAIL_ADDRESS_1", "REQUESTER_EMAIL_ADDRESS_2", ... ] } }
リクエストを送信するには、次のいずれかのオプションを開きます。
次のような JSON レスポンスが返されます。
{ "name": "projects/my-project/locations/global/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.privilegedaccessmanager.v1beta.OperationMetadata", "createTime": "2024-03-05T03:35:14.596739353Z", "target": "projects/my-project/locations/global/entitlements/ENTITLEMENT_ID", "verb": "create", "requestedCancellation": false, "apiVersion": "v1beta" }, "done": false }
作成オペレーションの進行状況を確認するには、次のエンドポイントに GET
リクエストを送信します。
https://privilegedaccessmanager.googleapis.com/v1beta/SCOPE/locations/global/operations/OPERATION_ID
次のエンドポイントに GET
リクエストを送信して、すべてのオペレーションのリストを取得します。
https://privilegedaccessmanager.googleapis.com/v1beta/SCOPE/locations/global/operations