利用資格に承認ワークフローがある場合、承認者として指定されたプリンシパルは、その利用資格の権限付与リクエストを承認または拒否できます。
Security Command Center Premium ティアまたは Enterprise ティアが組織レベルで有効になっている場合、承認ワークフローには 2 つのレベルの承認を設定できます。承認者は 1 つまたは両方の承認レベルに属することができますが、承認できるのは 1 回のみです。必要な数の第 1 レベルの承認が届くと、第 2 レベルの承認者にメール通知が送信されます。必要な数の第 2 レベルの承認が届くと、権限付与は active 状態に移行します。承認者が権限付与を拒否すると、権限付与は denied 状態に移行し、追加の承認者に送信されません。この機能はプレビュー版でご利用いただけます。
利用資格に対する権限付与リクエストを承認または拒否する際は、次の点に注意してください。
自分のリクエストを承認することはできません。
リクエストが 24 時間以内に承認または拒否されなかった場合、権限付与ステータスは
expiredに変更されます。その後、権限の昇格がまだ必要な場合は、プリンシパルが新しい権限付与リクエストを行う必要があります。
Google Cloud コンソールを使用して権限付与を承認または拒否する
利用資格に対して行われた権限付与リクエストを承認または拒否するには、次の操作を行います。
[Privileged Access Manager] ページに移動します。
[権限付与を承認] タブ、[承認待ち] タブの順にクリックします。
承認または拒否するリクエストに関連する行で、[承認 / 拒否] をクリックします。
理由が必要な場合は、[コメント] フィールドに入力します。権限付与の履歴は、[履歴] タブで確認できます。
[承認] または [拒否] をクリックします。
承認履歴は [承認履歴] タブで確認できます。承認履歴は、承認アクションが行われた後 30 日間利用できます。親リソースから継承された利用資格で作成された権限付与は、親リソースの承認履歴に表示されます。
プログラムで権限付与を承認または拒否する
権限付与の承認または拒否を行うには、次の操作を行う必要があります。
自分が承認者になっている利用資格を検索します。
関連する利用資格 ID を使用して、承認または拒否できる権限付与リクエストを検索します。
権限付与リクエストを承認または拒否します。
自身が承認者である利用資格を検索する
gcloud
grant-approver 呼び出し元のアクセスタイプを指定した gcloud 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 pam entitlements search \ --caller-access-type=grant-approver \ --location=global \ --RESOURCE_TYPE=RESOURCE_ID
Windows(PowerShell)
gcloud pam entitlements search ` --caller-access-type=grant-approver ` --location=global ` --RESOURCE_TYPE=RESOURCE_ID
Windows(cmd.exe)
gcloud 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'
REST
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/v1/SCOPE/locations/global/entitlements:search?callerAccessType=GRANT_APPROVER&filter=FILTER&pageSize=PAGE_SIZE&pageToken=PAGE_TOKEN
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような 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
gcloud alpha 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 alpha pam grants search \ --entitlement=ENTITLEMENT_ID \ --caller-relationship=CALLER_RELATIONSHIP_TYPE \ --location=global \ --RESOURCE_TYPE=RESOURCE_ID
Windows(PowerShell)
gcloud alpha pam grants search ` --entitlement=ENTITLEMENT_ID ` --caller-relationship=CALLER_RELATIONSHIP_TYPE ` --location=global ` --RESOURCE_TYPE=RESOURCE_ID
Windows(cmd.exe)
gcloud alpha 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/PROJECT_ID/locations/global/entitlements/ENTITLEMENT_ID/grants/GRANT_ID
privilegedAccess:
gcpIamAccess:
resource: //cloudresourcemanager.googleapis.com/projects/PROJECT_ID
resourceType: cloudresourcemanager.googleapis.com/Project
roleBindings:
- role: roles/storage.admin
id: hwqrt_1
requestedDuration: 3600s
requestedPrivilegedAccess:
gcpIamAccess:
resource: //cloudresourcemanager.googleapis.com/projects/PROJECT_ID
resourceType: cloudresourcemanager.googleapis.com/Project
roleBindings:
- role: roles/storage.admin
entitlementRoleBindingId: hwqrt_1
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'
REST
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
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{
"grants": [
{
"name": "projects/PROJECT_ID/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/PROJECT_ID",
"roleBindings": [
{
"role": "roles/storage.admin"
"id": "hwqrt_1"
}
]
}
},
"requestedPrivilegedAccess": {
"gcpIamAccess": {
"resourceType": "cloudresourcemanager.googleapis.com/Project",
"resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
"roleBindings": [
{
"role": "roles/storage.admin",
"entitlementRoleBindingId": "hwqrt_1"
}
]
}
},
"additionalEmailRecipients": [
"bola@google.com"
]
}
]
}
プログラムで権限付与を承認する
gcloud
gcloud 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 pam grants approve \ GRANT_ID \ --entitlement=ENTITLEMENT_ID \ --reason="APPROVAL_REASON" \ --location=global \ --RESOURCE_TYPE=RESOURCE_ID
Windows(PowerShell)
gcloud pam grants approve ` GRANT_ID ` --entitlement=ENTITLEMENT_ID ` --reason="APPROVAL_REASON" ` --location=global ` --RESOURCE_TYPE=RESOURCE_ID
Windows(cmd.exe)
gcloud 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'
REST
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/v1/SCOPE/locations/global/entitlements/ENTITLEMENT_ID/grants/GRANT_ID:approve
リクエストの本文(JSON):
{
"reason": "REASON"
}
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような 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
gcloud 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 pam grants deny \ GRANT_ID \ --entitlement=ENTITLEMENT_ID \ --reason="DENIAL_REASON" \ --location=global \ --RESOURCE_TYPE=RESOURCE_ID
Windows(PowerShell)
gcloud pam grants deny ` GRANT_ID ` --entitlement=ENTITLEMENT_ID ` --reason="DENIAL_REASON" ` --location=global ` --RESOURCE_TYPE=RESOURCE_ID
Windows(cmd.exe)
gcloud 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'
REST
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/v1/SCOPE/locations/global/entitlements/ENTITLEMENT_ID/grants/GRANT_ID:deny
リクエストの本文(JSON):
{
"reason": "REASON"
}
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような 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"
]
}