Privileged Access Manager を使用して一時的に昇格された権限をリクエストする

権限を一時的に昇格するには、Privileged Access Manager(PAM)で、一定期間の利用資格に対する権限付与をリクエストします。

利用資格には、権限付与リクエストが成功した後に付与されるロールが含まれます。これらのロールは、権限付与が終了すると Privileged Access Manager によって削除されます。

利用資格に対して権限付与をリクエストする場合は、次の点に注意してください。

  • リクエストできるのは、自身が追加されている利用資格に対する権限付与のみです。利用資格を追加する場合は、利用資格を管理しているプリンシパルに連絡してください。

  • 設定によっては、権限付与リクエストに承認が必要になる場合があります。

  • 権限付与リクエストが承認を必要とし、24 時間以内に承認または不承認にならない場合、権限付与のステータスは Expired に変更されます。その後、権限の昇格がまだ必要な場合は、新しい権限付与リクエストを行う必要があります。

  • 許可リクエストが成功しても、有効になるまでに数分かかることがあります。

Google Cloud コンソールで権限付与をリクエストする

利用資格に対する付与をリクエストするには、次の操作を行います。

  1. [Privileged Access Manager] ページに移動します。

    Privileged Access Manager に移動

  2. 権限付与をリクエストする組織、フォルダ、またはプロジェクトを選択します。

  3. [利用資格] タブで、リクエストする利用資格を見つけて、同じ行の [権限付与をリクエスト] をクリックします。

  4. 以下の詳細を入力します。

    • 権限付与に必要な期間(利用資格に設定されている最大期間まで)。

    • 必要な場合、権限付与の正当性。

    • 省略可: 権限付与リクエストを通知するメールアドレス。承認者に関連付けられている Google ID に自動的に通知されます。ただし、特に Workforce Identity 連携を使用している場合は、別のメールアドレスのセットに通知することもできます。

  5. [権限付与をリクエスト] をクリックします。

  6. 承認ステータスを含む権限付与の履歴を表示するには、[権限付与] タブ、[自分の権限付与] タブの順にクリックします。

プログラムで権限付与をリクエストする

利用資格に対する権限付与をリクエストするには、次の手順を完了する必要があります。

  1. 権限付与をリクエストできる利用資格の ID を検索します。

  2. 権限付与をリクエストします。

権限付与のステータスを確認して、有効かどうか(つまり、一時的な昇格を受け取ったかどうか)を確認できます。

利用可能な利用資格を検索する

gcloud

grant-requester 呼び出し元のアクセスタイプを指定して gcloud beta pam entitlements search コマンドを実行すると、権限付与をリクエストできる利用資格を検索できます。

後述のコマンドデータを使用する前に、次のように置き換えます。

  • RESOURCE_TYPE: 省略可。利用資格が属するリソースタイプ。値 organizationfolder、または 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-requester \
    --location=global \
    --RESOURCE_TYPE=RESOURCE_ID

Windows(PowerShell)

gcloud beta pam entitlements search `
    --caller-access-type=grant-requester `
    --location=global `
    --RESOURCE_TYPE=RESOURCE_ID

Windows(cmd.exe)

gcloud beta pam entitlements search ^
    --caller-access-type=grant-requester ^
    --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: ETAG
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

Privileged Access Manager API の searchEntitlements メソッドは、GRANT_REQUESTER 呼び出し元のアクセスタイプを使用して、権限付与をリクエストできる利用資格を検索します。

リクエストのデータを使用する前に、次のように置き換えます。

  • SCOPE: 利用資格が含まれる組織、フォルダ、またはプロジェクト。organizations/ORGANIZATION_IDfolders/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_REQUESTER&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": "ETAG"
  }
]

利用資格に対する権限付与をリクエストする

gcloud

gcloud beta pam grants create コマンドは、権限付与をリクエストします。

後述のコマンドデータを使用する前に、次のように置き換えます。

  • ENTITLEMENT_ID: 権限付与を作成する利用資格 ID。
  • GRANT_DURATION: リクエストされた権限付与の期間(秒単位)。
  • JUSTIFICATION: 権限付与をリクエストする理由。
  • EMAIL_ADDRESS: 省略可。権限付与リクエストを通知する追加のメールアドレス。承認者に関連付けられている Google ID には自動的に通知されます。ただし、特に Workforce Identity 連携を使用している場合は、別のメールアドレスのセットに通知することもできます。
  • RESOURCE_TYPE: 省略可。利用資格が属するリソースタイプ。値 organizationfolder、または project を使用します。
  • RESOURCE_ID: RESOURCE_TYPE とともに使用します。利用資格を管理する Google Cloud プロジェクト、フォルダ、または組織の ID。プロジェクト ID は英数字からなる文字列です(例: my-project)。フォルダ ID と組織 ID は数値です(例: 123456789012)。

次のコマンドを実行します。

Linux、macOS、Cloud Shell

gcloud beta pam grants create \
    --entitlement=ENTITLEMENT_ID \
    --requested-duration="GRANT_DURATIONs" \
    --justification="JUSTIFICATION" \
    --location=global \
    [--additional-email-recipients=EMAIL_ADDRESS_1, EMAIL_ADDRESS_2] \
    --RESOURCE_TYPE=RESOURCE_ID

Windows(PowerShell)

gcloud beta pam grants create `
    --entitlement=ENTITLEMENT_ID `
    --requested-duration="GRANT_DURATIONs" `
    --justification="JUSTIFICATION" `
    --location=global `
    [--additional-email-recipients=EMAIL_ADDRESS_1, EMAIL_ADDRESS_2] `
    --RESOURCE_TYPE=RESOURCE_ID

Windows(cmd.exe)

gcloud beta pam grants create ^
    --entitlement=ENTITLEMENT_ID ^
    --requested-duration="GRANT_DURATIONs" ^
    --justification="JUSTIFICATION" ^
    --location=global ^
    [--additional-email-recipients=EMAIL_ADDRESS_1, EMAIL_ADDRESS_2] ^
    --RESOURCE_TYPE=RESOURCE_ID

次のようなレスポンスが返されます。

Created [GRANT_ID].

REST

Privileged Access Manager API の createGrant メソッドは、権限付与をリクエストします。

リクエストのデータを使用する前に、次のように置き換えます。

  • SCOPE: 利用資格が含まれる組織、フォルダ、またはプロジェクト。organizations/ORGANIZATION_IDfolders/FOLDER_ID、または projects/PROJECT_ID の形式です。プロジェクト ID は英数字からなる文字列です(例: my-project)。フォルダ ID と組織 ID は数値です(例: 123456789012)。
  • ENTITLEMENT_ID: 権限付与を作成する利用資格 ID。
  • REQUEST_ID: 省略可。ゼロ以外の UUID である必要があります。サーバーがリクエスト ID を含むリクエストを受信すると、その ID を含む別のリクエストが過去 60 分以内に完了しているかどうかを確認します。その場合、新しいリクエストは無視されます。
  • GRANT_DURATION: リクエストされた権限付与の期間(秒単位)。
  • JUSTIFICATION: 権限付与をリクエストする理由。
  • EMAIL_ADDRESS: 省略可。権限付与リクエストを通知する追加のメールアドレス。承認者に関連付けられている Google ID には自動的に通知されます。ただし、特に Workforce Identity 連携を使用している場合は、別のメールアドレスのセットに通知することもできます。

HTTP メソッドと URL:

POST https://privilegedaccessmanager.googleapis.com/v1beta/SCOPE/locations/global/entitlements/ENTITLEMENT_ID/grants?requestId=REQUEST_ID

リクエストの本文(JSON):

{
  "requestedDuration": "GRANT_DURATIONs",
  "justification": {
    "unstructuredJustification": "JUSTIFICATION"
  },
  "additionalEmailRecipients": [
    "EMAIL_ADDRESS_1",
    "EMAIL_ADDRESS_2",
    ...
  ]
}

リクエストを送信するには、次のいずれかのオプションを開きます。

次のような JSON レスポンスが返されます。

{
  "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.330577625Z",
  "requester": "bola@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": [
    "alex@example.com"
  ]
}

権限付与リクエストのステータスを確認する

gcloud

had-created 呼び出し元の関係で使用される gcloud beta pam grants search コマンドは、作成した権限付与を検索します。ステータスを確認するには、レスポンスで state フィールドを探します。

後述のコマンドデータを使用する前に、次のように置き換えます。

  • ENTITLEMENT_ID: 権限付与の利用資格の ID。
  • RESOURCE_TYPE: 省略可。利用資格が属するリソースタイプ。値 organizationfolder、または 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=had-created \
    --location=global \
    --RESOURCE_TYPE=RESOURCE_ID

Windows(PowerShell)

gcloud beta pam grants search `
    --entitlement=ENTITLEMENT_ID `
    --caller-relationship=had-created `
    --location=global `
    --RESOURCE_TYPE=RESOURCE_ID

Windows(cmd.exe)

gcloud beta pam grants search ^
    --entitlement=ENTITLEMENT_ID ^
    --caller-relationship=had-created ^
    --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'

権限付与のステータスは次のとおりです。

ステータス 説明
ACTIVATING 権限付与の有効化中です。
ACTIVATION_FAILED 再取得できないエラーのため、Privileged Access Manager がロールを付与できませんでした。
ACTIVE 権限付与が有効で、プリンシパルがロールで許可されているリソースにアクセスできます。
APPROVAL_AWAITED 権限付与リクエストは、承認者の決定を待機しています。
DENIED 承認者が権限付与リクエストを拒否しました。
ENDED 権限付与が終了し、プリンシパルからロールが削除されました。
EXPIRED 24 時間以内に承認されなかったため、権限付与リクエストが期限切れになりました。
REVOKED 権限付与が取り消され、プリンシパルはロールで許可されているリソースにアクセスできなくなります。
REVOKING 権限付与の取り消し中です。

REST

Privileged Access Manager API の searchGrants メソッドは、HAD_CREATED 呼び出し元の関係で使用され、作成した権限を検索します。ステータスを確認するには、レスポンスで state フィールドを探します。

リクエストのデータを使用する前に、次のように置き換えます。

  • SCOPE: 利用資格が含まれる組織、フォルダ、またはプロジェクト。organizations/ORGANIZATION_IDfolders/FOLDER_ID、または projects/PROJECT_ID の形式です。プロジェクト ID は英数字からなる文字列です(例: my-project)。フォルダ ID と組織 ID は数値です(例: 123456789012)。
  • ENTITLEMENT_ID: 権限付与の利用資格の ID。
  • FILTER: 省略可。フィールド値が AIP-160 式と一致する権限付与を返します。
  • PAGE_SIZE: 省略可。レスポンスで返すアイテムの数。
  • PAGE_TOKEN: 省略可。前のレスポンスで返されたページトークンを使用して、レスポンスの開始ページを指定します。

HTTP メソッドと URL:

GET https://privilegedaccessmanager.googleapis.com/v1beta/SCOPE/locations/global/entitlements/ENTITLEMENT_ID/grants:search?callerRelationship=HAD_CREATED&filter=FILTER&pageSize=PAGE_SIZE&pageToken=PAGE_TOKEN

リクエストを送信するには、次のいずれかのオプションを開きます。

次のような 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"
      ]
    }
  ]
}

権限付与ステータスの詳細は次の表をご覧ください。

ステータス 説明
ACTIVATING 権限付与の有効化中です。
ACTIVATION_FAILED 再取得できないエラーのため、Privileged Access Manager がロールを付与できませんでした。
ACTIVE 権限付与が有効で、プリンシパルがロールで許可されているリソースにアクセスできます。
APPROVAL_AWAITED 権限付与リクエストは、承認者の決定を待機しています。
DENIED 承認者が権限付与リクエストを拒否しました。
ENDED 権限付与が終了し、プリンシパルからロールが削除されました。
EXPIRED 24 時間以内に承認されなかったため、権限付与リクエストが期限切れになりました。
REVOKED 権限付与が取り消され、プリンシパルはロールで許可されているリソースにアクセスできなくなります。
REVOKING 権限付与の取り消し中です。