Privileged Access Manager で利用資格を作成する

特定のプリンシパル セットに一時的な権限昇格を許可する利用資格を作成できます。利用資格を作成する際は、次の点に注意してください。

  • 利用資格は、組織、フォルダ、プロジェクトのいずれのレベルでも作成できます。各レベルで利用資格によって付与されるロールは、Google Cloud のリソース階層に従います。たとえば、組織レベルで利用資格によって付与されたロールは、フォルダレベルとプロジェクト レベルで継承されます。

  • グループを利用資格のリクエスト元として追加すると、そのグループ内のすべての個々のアカウントがその利用資格の権限付与をリクエストできます。ただし、昇格した権限を受け取ることができるのは、権限付与をリクエストした個々のアカウントのみです。

  • グループを利用資格の承認者として追加すると、そのグループ内のすべてのアカウントが権限付与リクエストを承認または拒否できるようになります。

  • 基本ロールはサポートされていません。

始める前に

Privileged Access Manager を有効にして、権限を設定していることを確認します。

Google Cloud コンソールを使用して利用資格を作成する

利用資格を作成するには、次の手順を完了します。

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

    Privileged Access Manager に移動

  2. 利用資格を適用する組織、フォルダ、またはプロジェクトを選択します。

  3. [利用資格] タブをクリックします。

  4. [作成] をクリックします。

  5. 次の利用資格の詳細を追加します。

    • 利用資格の名前。

    • 組織、フォルダ、プロジェクトに付与するロール(最大 30 個)。これらのロールは、リソースタグと一致しない限り、IAM 条件を適用できます。

    • 利用資格に対して権限付与が有効な期間。

  6. [次へ] をクリックします。

  7. 利用資格の有効なリクエスト元プリンシパルを検索します。最大 20 個まで追加できます。allUsersallAuthenticatedUsers を除くすべてのプリンシパル タイプがサポートされています。20 を超える ID を追加するには、ID をグループに追加し、そのグループを利用資格に追加します。

  8. プリンシパルが権限付与リクエストの理由を示す必要があるかどうかを選択します。

  9. [次へ] をクリックします。

  10. 承認なしでのロールの付与を許可するか、リクエストを承認できる有効なプリンシパルを検索して追加します。有効なプリンシパル タイプは次のとおりです。

    • Google アカウント

    • Google グループ

    • Google Workspace のドメイン

    • Workforce プール ID

    承認者を指定する場合、承認者が権限付与リクエストの承認理由を示す必要があるかどうかも選択します。利用資格ごとに最大 20 人の承認者を追加できます。20 を超える ID を追加するには、ID をグループに追加し、そのグループを利用資格に追加します。

  11. [次へ] をクリックします。

  12. 省略可: 利用資格がリクエスト可能になったとき、権限付与が承認待ちのとき、リクエスト元にアクセス権が付与されたときに通知するユーザーのメールアドレスを追加します。利用資格に関連付けられている Google ID(承認者やリクエスト送信者など)には自動的に通知されます。ただし、特に Workforce Identity 連携を使用している場合は、別のメールアドレスのセットに通知することもできます。

  13. [利用資格を作成] をクリックします。

プログラムで利用資格を作成する

gcloud

gcloud beta pam entitlements create コマンドは、組織、フォルダ、プロジェクト レベルで利用資格を作成します。

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

  • ENTITLEMENT_ID: 作成する利用資格 ID。ID は 4~63 文字で、[a-z0-9-] という文字を使用する必要があります。最初の文字は英字にする必要があります。
  • RESOURCE_TYPE: 省略可。利用資格が属するリソースタイプ。値 organizationfolder、または project を使用します。
  • RESOURCE_ID: RESOURCE_TYPE とともに使用します。利用資格を管理する Google Cloud 組織、フォルダ、またはプロジェクトの ID。プロジェクト ID は英数字からなる文字列です(例: my-project)。フォルダ ID と組織 ID は数値です(例: 123456789012)。
  • SCOPE: 利用資格を作成する組織、フォルダ、またはプロジェクト。organizations/ORGANIZATION_IDfolders/FOLDER_IDprojects/PROJECT_ID の形式で指定します。プロジェクト ID は英数字からなる文字列です(例: my-project)。フォルダ ID と組織 ID は数値です(例: 123456789012)。
  • RESOURCE_MANAGER_RESOURCE_TYPE: スコープに応じて OrganizationFolderProject のいずれか。
  • ROLE: 利用資格が付与されたときに割り当てるロール
  • TIME_IN_SECONDS: 権限付与の最大期間(秒)。
  • REQUESTING_MEMBER: 利用資格の付与をリクエストできるプリンシパル。allUsersallAuthenticatedUsers を除くすべてのプリンシパル タイプがサポートされています。

  • 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_IDfolders/FOLDER_IDprojects/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: スコープに応じて OrganizationFolderProject のいずれか。
  • ROLE: 利用資格が付与されたときに割り当てるロール
  • TIME_IN_SECONDS: 権限付与の最大期間(秒)。
  • REQUESTING_MEMBER: 利用資格の付与をリクエストできるプリンシパル。allUsersallAuthenticatedUsers を除くすべてのプリンシパル タイプがサポートされています。

  • 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

Terraform

Terraform を使用して利用資格を作成できます。詳細については、Terraform ドキュメントの google_privileged_access_manager_entitlement をご覧ください。

次のステップ