利用資格が作成されたら、特定のプリンシパルは、その利用資格に対して権限付与をリクエストできます。その利用資格に承認ワークフローが指定されている場合、承認者として設定されたプリンシパルは、その利用資格の権限付与リクエストを承認または拒否できます。
利用資格に対する権限付与リクエストを承認または拒否する際は、次の点に注意してください。
自分のリクエストを承認することはできません。
リクエストが 24 時間以内に承認または拒否されなかった場合、権限付与ステータスは
expired
に変更されます。その後、権限の昇格がまだ必要な場合は、プリンシパルが新しい権限付与リクエストを行う必要があります。
Google Cloud コンソールを使用して付与を承認または拒否する
利用資格に対して行われた権限付与リクエストを承認または拒否するには、次の操作を行います。
[Privileged Access Manager] ページに移動します。
[権限付与を承認] タブ、[承認待ち] タブの順にクリックします。
承認または拒否するリクエストに関連する行で、[承認 / 拒否] をクリックします。
理由が必要な場合は、[コメント] フィールドに入力します。
[承認] または [拒否] をクリックします。
承認履歴は [承認履歴] タブで確認できます。承認履歴は、承認アクションが行われた後 30 日間利用できます。
プログラムで権限付与を承認または拒否する
権限付与の承認または拒否を行うには、次の操作を行う必要があります。
自分が承認者になっている利用資格を検索します。
関連する利用資格 ID を使用して、承認または拒否できる権限付与リクエストを検索します。
権限付与リクエストを承認または拒否します。
自身が承認者である利用資格を検索する
grant-approver
呼び出し元のアクセスタイプを指定した gcloud beta pam entitlements search
コマンドは、自身が承認者である利用資格を検索します。
後述のコマンドデータを使用する前に、次のように置き換えます。
RESOURCE_TYPE
: 省略可。利用資格が属するリソースタイプ。値organization
、folder
、またはproject
を使用します。RESOURCE_ID
:RESOURCE_TYPE
とともに使用します。利用資格を管理する Google Cloud プロジェクト、フォルダ、または組織の ID。プロジェクト ID は英数字からなる文字列です(例:my-project
)。フォルダ ID と組織 ID は数値です(例:123456789012
)。
次のコマンドを実行します。
Linux、macOS、Cloud Shell
gcloud beta pam entitlements search \ --caller-access-type=grant-approver \ --location=global \ --RESOURCE_TYPE =RESOURCE_ID
Windows(PowerShell)
gcloud beta pam entitlements search ` --caller-access-type=grant-approver ` --location=global ` --RESOURCE_TYPE =RESOURCE_ID
Windows(cmd.exe)
gcloud beta pam entitlements search ^ --caller-access-type=grant-approver ^ --location=global ^ --RESOURCE_TYPE =RESOURCE_ID
次のようなレスポンスが返されます。
additionalNotificationTargets: {} approvalWorkflow: manualApprovals: requireApproverJustification: true steps: - approvalsNeeded: 1 approvers: - principals: - user:alex@example.com createTime: '22024-03-26T11:07:37.009498890Z' etag: 00000000000000000000000000000000000000000000000000000000000= maxRequestDuration: 3600s 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: notMandatory: {} state: AVAILABLE updateTime: '2024-03-26T11:07:40.056780645Z'
GRANT_APPROVER
呼び出し元のアクセスタイプを指定した Privileged Access Manager API の searchEntitlements
メソッドは、自身が承認者になっている利用資格を検索します。
リクエストのデータを使用する前に、次のように置き換えます。
SCOPE
: 利用資格が含まれる組織、フォルダ、またはプロジェクト。organizations/ORGANIZATION_ID
、folders/FOLDER_ID
、またはprojects/PROJECT_ID
の形式です。プロジェクト ID は英数字からなる文字列です(例:my-project
)。フォルダ ID と組織 ID は数値です(例:123456789012
)。FILTER
: 省略可。フィールド値が AIP-160 式と一致する利用資格を返します。PAGE_SIZE
: 省略可。レスポンスで返すアイテムの数。PAGE_TOKEN
: 省略可。前のレスポンスで返されたページトークンを使用して、レスポンスの開始ページを指定します。
HTTP メソッドと URL:
GET https://privilegedaccessmanager.googleapis.com/v1beta/SCOPE /locations/global/entitlements:search?callerAccessType=GRANT_APPROVER&filter=FILTER &pageSize=PAGE_SIZE &pageToken=PAGE_TOKEN
リクエストを送信するには、次のいずれかのオプションを開きます。
curl(Linux、macOS、Cloud Shell)
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://privilegedaccessmanager.googleapis.com/v1beta/SCOPE /locations/global/entitlements:search?callerAccessType=GRANT_APPROVER&filter=FILTER &pageSize=PAGE_SIZE &pageToken=PAGE_TOKEN "
PowerShell(Windows)
次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://privilegedaccessmanager.googleapis.com/v1beta/SCOPE /locations/global/entitlements:search?callerAccessType=GRANT_APPROVER&filter=FILTER &pageSize=PAGE_SIZE &pageToken=PAGE_TOKEN " | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
[ { "name": "projects/my-project/locations/global/entitlements/ENTITLEMENT_ID ", "createTime": "2023-11-21T17:28:39.962144708Z", "updateTime": "2023-11-21T17:28:43.160309410Z", "eligibleUsers": [ { "principals": [ "user:alex@example.com" ] } ], "approvalWorkflow": { "manualApprovals": { "steps": [ { "approvers": [ { "principals": [ "user:bola@example.com" ] } ], "approvalsNeeded": 1 } ] } }, "privilegedAccess": { "gcpIamAccess": { "resourceType": "cloudresourcemanager.googleapis.com/Project", "resource": "//cloudresourcemanager.googleapis.com/projects/my-project", "roleBindings": [ { "role": "roles/storage.admin" } ] } }, "maxRequestDuration": "14400s", "state": "AVAILABLE", "requesterJustificationConfig": { "unstructured": {} }, "additionalNotificationTargets": { "adminEmailRecipients": [ "alex@example.com" ] }, "etag": "00000000000000000000000000000000000000000000000000000000000=" } ]
承認または拒否できる権限付与リクエストを検索する
gcloud beta pam grants search
コマンドは、承認または拒否できる、またはすでに承認または拒否した権限付与を検索します。この方法では、Privileged Access Manager の特定の権限は必要ありません。
後述のコマンドデータを使用する前に、次のように置き換えます。
ENTITLEMENT_ID
: 権限付与の利用資格の ID。ID は、自分が承認者である利用資格を検索することで取得できます。-
CALLER_RELATIONSHIP_TYPE
: 次のいずれかの値を使用できます。had-approved
: 呼び出し元が承認または拒否した権限を返します。can-approve
: 呼び出し元が承認または拒否できる権限を返します。
RESOURCE_TYPE
: 省略可。利用資格が属するリソースタイプ。値organization
、folder
、またはproject
を使用します。RESOURCE_ID
:RESOURCE_TYPE
とともに使用します。利用資格を管理する Google Cloud プロジェクト、フォルダ、または組織の ID。プロジェクト ID は英数字からなる文字列です(例:my-project
)。フォルダ ID と組織 ID は数値です(例:123456789012
)。
次のコマンドを実行します。
Linux、macOS、Cloud Shell
gcloud beta pam grants search \ --entitlement=ENTITLEMENT_ID \ --caller-relationship=CALLER_RELATIONSHIP_TYPE \ --location=global \ --RESOURCE_TYPE =RESOURCE_ID
Windows(PowerShell)
gcloud beta pam grants search ` --entitlement=ENTITLEMENT_ID ` --caller-relationship=CALLER_RELATIONSHIP_TYPE ` --location=global ` --RESOURCE_TYPE =RESOURCE_ID
Windows(cmd.exe)
gcloud beta pam grants search ^ --entitlement=ENTITLEMENT_ID ^ --caller-relationship=CALLER_RELATIONSHIP_TYPE ^ --location=global ^ --RESOURCE_TYPE =RESOURCE_ID
次のようなレスポンスが返されます。
additionalEmailRecipients: - bola@example.com createTime: '2024-03-07T00:34:32.557017289Z' justification: unstructuredJustification: Renaming a file to mitigate issue #312 name: projects/my-project/locations/global/entitlements/ENTITLEMENT_ID /grants/GRANT_ID privilegedAccess: gcpIamAccess: resource: //cloudresourcemanager.googleapis.com/projects/my-project resourceType: cloudresourcemanager.googleapis.com/Project roleBindings: - role: roles/storage.admin requestedDuration: 3600s requester: cruz@example.com state: DENIED timeline: events: - eventTime: '2024-03-07T00:34:32.793769042Z' requested: expireTime: '2024-03-08T00:34:32.793769042Z' - denied: actor: alex@example.com reason: Issue has already been resolved eventTime: '2024-03-07T00:36:08.309116203Z' updateTime: '2024-03-07T00:34:32.926967128Z'
Privileged Access Manager API の searchGrants
メソッドは、承認または拒否できる権限付与と、すでに承認または拒否した権限付与を検索します。この方法では、Privileged Access Manager の特定の権限は必要ありません。
リクエストのデータを使用する前に、次のように置き換えます。
SCOPE
: 利用資格が含まれる組織、フォルダ、またはプロジェクト。organizations/ORGANIZATION_ID
、folders/FOLDER_ID
、またはprojects/PROJECT_ID
の形式です。プロジェクト ID は英数字からなる文字列です(例:my-project
)。フォルダ ID と組織 ID は数値です(例:123456789012
)。ENTITLEMENT_ID
: 権限付与の利用資格の ID。ID は、自分が承認者である利用資格を検索することで取得できます。RELATIONSHIP_TYPE
: 有効な値は次のとおりです。HAD_APPROVED
: 呼び出し元が以前に承認または拒否した権限を返します。CAN_APPROVE
: 呼び出し元が承認または拒否できる権限を返します。
FILTER
: 省略可。フィールド値が AIP-160 式と一致する権限付与を返します。PAGE_SIZE
: 省略可。レスポンスで返すアイテムの数。PAGE_TOKEN
: 省略可。前のレスポンスで返されたページトークンを使用して、レスポンスの開始ページを指定します。
HTTP メソッドと URL:
GET https://privilegedaccessmanager.googleapis.com/v1beta/SCOPE /locations/global/entitlements/ENTITLEMENT_ID /grants:search?callerRelationship=RELATIONSHIP_TYPE &filter=FILTER &pageSize=PAGE_SIZE &pageToken=PAGE_TOKEN
リクエストを送信するには、次のいずれかのオプションを開きます。
curl(Linux、macOS、Cloud Shell)
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://privilegedaccessmanager.googleapis.com/v1beta/SCOPE /locations/global/entitlements/ENTITLEMENT_ID /grants:search?callerRelationship=RELATIONSHIP_TYPE &filter=FILTER &pageSize=PAGE_SIZE &pageToken=PAGE_TOKEN "
PowerShell(Windows)
次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://privilegedaccessmanager.googleapis.com/v1beta/SCOPE /locations/global/entitlements/ENTITLEMENT_ID /grants:search?callerRelationship=RELATIONSHIP_TYPE &filter=FILTER &pageSize=PAGE_SIZE &pageToken=PAGE_TOKEN " | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{ "grants": [ { "name": "projects/my-project/locations/global/entitlements/ENTITLEMENT_ID /grants/GRANT_ID ", "createTime": "2024-03-06T03:08:49.330577625Z", "updateTime": "2024-03-06T03:08:49.625874598Z", "requester": "alex@example.com", "requestedDuration": "3600s", "justification": { "unstructuredJustification": "Emergency service for outage" }, "state": "APPROVAL_AWAITED", "timeline": { "events": [ { "eventTime": "2024-03-06T03:08:49.462765846Z", "requested": { "expireTime": "2024-03-07T03:08:49.462765846Z" } } ] }, "privilegedAccess": { "gcpIamAccess": { "resourceType": "cloudresourcemanager.googleapis.com/Project", "resource": "//cloudresourcemanager.googleapis.com/projects/my-project", "roleBindings": [ { "role": "roles/storage.admin" } ] } }, "additionalEmailRecipients": [ "bola@google.com" ] } ] }
プログラムで権限付与を承認する
gcloud beta pam grants describe
コマンドは、特定の権限付与リクエストを承認します。
後述のコマンドデータを使用する前に、次のように置き換えます。
GRANT_ID
: 承認する権限付与の ID。ID は、承認または拒否できる権限付与リクエストを検索することで取得できます。ENTITLEMENT_ID
: 権限付与の利用資格の ID。APPROVAL_REASON
: 権限付与が承認された理由。RESOURCE_TYPE
: 省略可。利用資格が属するリソースタイプ。値organization
、folder
、またはproject
を使用します。RESOURCE_ID
:RESOURCE_TYPE
とともに使用します。利用資格を管理する Google Cloud プロジェクト、フォルダ、または組織の ID。プロジェクト ID は英数字からなる文字列です(例:my-project
)。フォルダ ID と組織 ID は数値です(例:123456789012
)。
次のコマンドを実行します。
Linux、macOS、Cloud Shell
gcloud beta pam grants approve \GRANT_ID \ --entitlement=ENTITLEMENT_ID \ --reason="APPROVAL_REASON " \ --location=global \ --RESOURCE_TYPE =RESOURCE_ID
Windows(PowerShell)
gcloud beta pam grants approve `GRANT_ID ` --entitlement=ENTITLEMENT_ID ` --reason="APPROVAL_REASON " ` --location=global ` --RESOURCE_TYPE =RESOURCE_ID
Windows(cmd.exe)
gcloud beta pam grants approve ^GRANT_ID ^ --entitlement=ENTITLEMENT_ID ^ --reason="APPROVAL_REASON " ^ --location=global ^ --RESOURCE_TYPE =RESOURCE_ID
次のようなレスポンスが返されます。
createTime: '2024-04-05T01:17:04.596455403Z' justification: unstructuredJustification: Renaming a file to mitigate issue #312 name: projects/my-project/locations/global/entitlements/ENTITLEMENT_ID /grants/GRANT_ID privilegedAccess: gcpIamAccess: resource: //cloudresourcemanager.googleapis.com/projects/my-project resourceType: cloudresourcemanager.googleapis.com/Project roleBindings: - role: roles/storage.admin requestedDuration: 2700s requester: cruz@example.com state: SCHEDULED timeline: events: - eventTime: '2024-04-05T01:17:04.732226659Z' requested: expireTime: '2024-04-06T01:17:04.732226659Z' - approved: actor: alex@example.com reason: Access allowed under existing policy eventTime: '2024-04-05T01:21:49.139539732Z' - eventTime: '2024-04-05T01:21:49.139463954Z' scheduled: scheduledActivationTime: '2024-04-05T01:21:49.139463954Z' updateTime: '2024-04-05T01:21:49.139463954Z'
Privileged Access Manager API の approveGrant
メソッドは、特定の権限付与リクエストを承認します。
リクエストのデータを使用する前に、次のように置き換えます。
SCOPE
: 利用資格が含まれる組織、フォルダ、またはプロジェクト。organizations/ORGANIZATION_ID
、folders/FOLDER_ID
、またはprojects/PROJECT_ID
の形式です。プロジェクト ID は英数字からなる文字列です(例:my-project
)。フォルダ ID と組織 ID は数値です(例:123456789012
)。ENTITLEMENT_ID
: 権限付与の利用資格の ID。GRANT_ID
: 承認する権限付与の ID。ID は、承認または拒否できる権限付与リクエストを検索することで取得できます。REASON
: 権限付与リクエストが承認された理由。
HTTP メソッドと URL:
POST https://privilegedaccessmanager.googleapis.com/v1beta/SCOPE /locations/global/entitlements/ENTITLEMENT_ID /grants/GRANT_ID :approve
リクエストの本文(JSON):
{ "reason": "REASON " }
リクエストを送信するには、次のいずれかのオプションを開きます。
curl(Linux、macOS、Cloud Shell)
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://privilegedaccessmanager.googleapis.com/v1beta/SCOPE /locations/global/entitlements/ENTITLEMENT_ID /grants/GRANT_ID :approve"
PowerShell(Windows)
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://privilegedaccessmanager.googleapis.com/v1beta/SCOPE /locations/global/entitlements/ENTITLEMENT_ID /grants/GRANT_ID :approve" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{ "name": "projects/my-project/locations/global/entitlements/ENTITLEMENT_ID /grants/GRANT_ID ", "createTime": "2024-03-06T03:08:49.330577625Z", "updateTime": "2024-03-06T23:01:13.964619844Z", "requester": "alex@example.com", "requestedDuration": "3600s", "justification": { "unstructuredJustification": "Emergency service for outage" }, "state": "SCHEDULED", "timeline": { "events": [ { "eventTime": "2024-03-06T03:08:49.462765846Z", "requested": { "expireTime": "2024-03-07T03:08:49.462765846Z" } }, { "eventTime": "2024-03-06T23:01:13.964685709Z", "approved": { "reason": "Approved escalation", "actor": "cruz@example.com" } }, { "eventTime": "2024-03-06T23:01:13.964619844Z", "scheduled": { "scheduledActivationTime": "2024-03-06T23:01:13.964619844Z" } } ] }, "privilegedAccess": { "gcpIamAccess": { "resourceType": "cloudresourcemanager.googleapis.com/Project", "resource": "//cloudresourcemanager.googleapis.com/projects/my-project", "roleBindings": [ { "role": "roles/storage.admin" } ] } }, "additionalEmailRecipients": [ "bola@example.com.com" ] }
プログラムで権限付与を拒否する
gcloud beta pam grants describe
コマンドは、特定の権限付与リクエストを拒否します。
後述のコマンドデータを使用する前に、次のように置き換えます。
GRANT_ID
: 拒否する権限付与の ID。ID は、承認または拒否できる権限付与を検索することで取得できます。ENTITLEMENT_ID
: 権限付与の利用資格の ID。DENIAL_REASON
: 権限付与が拒否された理由。RESOURCE_TYPE
: 省略可。利用資格が属するリソースタイプ。値organization
、folder
、またはproject
を使用します。RESOURCE_ID
:RESOURCE_TYPE
とともに使用します。利用資格を管理する Google Cloud プロジェクト、フォルダ、または組織の ID。プロジェクト ID は英数字からなる文字列です(例:my-project
)。フォルダ ID と組織 ID は数値です(例:123456789012
)。
次のコマンドを実行します。
Linux、macOS、Cloud Shell
gcloud beta pam grants deny \GRANT_ID \ --entitlement=ENTITLEMENT_ID \ --reason="DENIAL_REASON " \ --location=global \ --RESOURCE_TYPE =RESOURCE_ID
Windows(PowerShell)
gcloud beta pam grants deny `GRANT_ID ` --entitlement=ENTITLEMENT_ID ` --reason="DENIAL_REASON " ` --location=global ` --RESOURCE_TYPE =RESOURCE_ID
Windows(cmd.exe)
gcloud beta pam grants deny ^GRANT_ID ^ --entitlement=ENTITLEMENT_ID ^ --reason="DENIAL_REASON " ^ --location=global ^ --RESOURCE_TYPE =RESOURCE_ID
次のようなレスポンスが返されます。
createTime: '2024-04-05T01:29:13.129192816Z' justification: unstructuredJustification: Renaming a file to mitigate issue #312 name: projects/my-project/locations/global/entitlements/ENTITLEMENT_ID /grants/GRANT_ID privilegedAccess: gcpIamAccess: resource: //cloudresourcemanager.googleapis.com/projects/my-project resourceType: cloudresourcemanager.googleapis.com/Project roleBindings: - role: roles/storage.admin requestedDuration: 2700s requester: cruz@example.com state: DENIED timeline: events: - eventTime: '2024-04-05T01:29:13.267878626Z' requested: expireTime: '2024-04-06T01:29:13.267878626Z' - denied: actor: alex@example.com reason: Access denied under existing policy eventTime: '2024-04-05T01:29:49.492161363Z' updateTime: '2024-04-05T01:29:49.492097724Z'
Privileged Access Manager API の denyGrant
メソッドが特定の権限付与リクエストを拒否します。
リクエストのデータを使用する前に、次のように置き換えます。
SCOPE
: 利用資格が含まれる組織、フォルダ、またはプロジェクト。organizations/ORGANIZATION_ID
、folders/FOLDER_ID
、またはprojects/PROJECT_ID
の形式です。プロジェクト ID は英数字からなる文字列です(例:my-project
)。フォルダ ID と組織 ID は数値です(例:123456789012
)。ENTITLEMENT_ID
: 権限付与の利用資格の ID。GRANT_ID
: 拒否する権限付与の ID。ID は、承認または拒否できる権限付与を検索することで取得できます。REASON
: 権限付与リクエストが拒否された理由。
HTTP メソッドと URL:
POST https://privilegedaccessmanager.googleapis.com/v1beta/SCOPE /locations/global/entitlements/ENTITLEMENT_ID /grants/GRANT_ID :deny
リクエストの本文(JSON):
{ "reason": "REASON " }
リクエストを送信するには、次のいずれかのオプションを開きます。
curl(Linux、macOS、Cloud Shell)
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://privilegedaccessmanager.googleapis.com/v1beta/SCOPE /locations/global/entitlements/ENTITLEMENT_ID /grants/GRANT_ID :deny"
PowerShell(Windows)
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://privilegedaccessmanager.googleapis.com/v1beta/SCOPE /locations/global/entitlements/ENTITLEMENT_ID /grants/GRANT_ID :deny" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{ "name": "projects/my-project/locations/global/entitlements/ENTITLEMENT_ID /grants/GRANT_ID ", "createTime": "2024-03-07T00:34:32.557017289Z", "updateTime": "2024-03-07T00:36:08.309046580Z", "requester": "alex@example.com", "requestedDuration": "3600s", "justification": { "unstructuredJustification": "Emergency service for outage" }, "state": "DENIED", "timeline": { "events": [ { "eventTime": "2024-03-07T00:34:32.793769042Z", "requested": { "expireTime": "2024-03-08T00:34:32.793769042Z" } }, { "eventTime": "2024-03-07T00:36:08.309116203Z", "denied": { "reason": "Outage already resolved", "actor": "cruz@example.com" } } ] }, "privilegedAccess": { "gcpIamAccess": { "resourceType": "cloudresourcemanager.googleapis.com/Project", "resource": "//cloudresourcemanager.googleapis.com/projects/my-project", "roleBindings": [ { "role": "roles/storage.admin" } ] } }, "additionalEmailRecipients": [ "bola@example.com" ] }