Approvare o negare le concessioni con Privileged Access Manager

Dopo aver creato un diritto, alcuni Principi possono richiedere una concessione per quel diritto. Se per il diritto è specificato un flusso di lavoro di approvazione, alcuni principi configurati come approvatori possono approvare o negare le richieste di concessione per quel diritto.

Tieni presente quanto segue quando approvi o rifiuti una richiesta di concessione per un diritto:

  • Non puoi approvare la tua richiesta.

  • Se una richiesta non viene approvata o rifiutata entro 24 ore, lo stato della concessione viene modificato in expired. Dopodiché, un principale deve effettuare una nuova richiesta di concessione se è ancora necessaria l'elevazione dei privilegi.

Approvare o negare le concessioni utilizzando la console Google Cloud

Per approvare o rifiutare una richiesta di concessione presentata in base a un diritto, segui le istruzioni riportate di seguito:

  1. Vai alla pagina Privileged Access Manager.

    Vai a Privileged Access Manager

  2. Fai clic sulla scheda Approva sovvenzioni, quindi sulla scheda In attesa di approvazione.

  3. Nella riga relativa alla richiesta che vuoi approvare o rifiutare, fai clic su Approva/Rifiuta.

  4. Se è richiesta una motivazione, inseriscila nel campo Commento.

  5. Fai clic su Approva o Nega.

Puoi visualizzare la cronologia delle approvazioni nella scheda La mia cronologia di approvazioni. La cronologia delle approvazioni è disponibile per 30 giorni dopo l'adozione di un'azione di approvazione.

Approvare o rifiutare le concessioni in modo programmatico

Per approvare o negare le concessioni, devi completare le seguenti azioni:

  1. Cerca i diritti per i quali disponi dell'approvazione.

  2. Con l'ID diritto pertinente, cerca le richieste di concessione che puoi approvare o rifiutare.

  3. Approvare o rifiutare le richieste di concessione.

Cercare i diritti per i quali sei un approvatore

gcloud

Il gcloud beta pam entitlements search comando con il tipo di accesso chiamantegrant-approver cerca i diritti per i quali sei un approvatore.

Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:

  • RESOURCE_TYPE: facoltativo. Il tipo di risorsa a cui appartiene il diritto. Utilizza il valore organization, folder o project.
  • RESOURCE_ID: utilizzato con RESOURCE_TYPE. L'ID del progetto, della cartella o dell'organizzazione Google Cloud per cui vuoi gestire i diritti. Gli ID progetto sono stringhe alfanumeriche, ad esempio my-project. Gli ID cartella e organizzazione sono numerici, ad esempio 123456789012.

Esegui il seguente comando:

Linux, macOS o 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

Dovresti ricevere una risposta simile alla seguente:

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

Il metodo searchEntitlements dell'API Privileged Access Manager con il tipo di accesso chiamante GRANT_APPROVER cerca i diritti per i quali sei un approvatore.

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • SCOPE: l'organizzazione, la cartella o il progetto in cui si trova il diritto, nel formato organizations/ORGANIZATION_ID, folders/FOLDER_ID o projects/PROJECT_ID. Gli ID progetto sono stringhe alfanumeriche, ad esempio my-project. Gli ID cartella e dell'organizzazione sono numerici, ad esempio 123456789012.
  • FILTER: facoltativo. Restituisce i diritti i cui valori dei campi corrispondono a un' espressione AIP-160.
  • PAGE_SIZE: facoltativo. Il numero di elementi da restituire in una risposta.
  • PAGE_TOKEN: facoltativo. La pagina da cui iniziare la risposta utilizzando un token di pagina restituito in una risposta precedente.

Metodo HTTP e URL:

GET https://privilegedaccessmanager.googleapis.com/v1beta/SCOPE/locations/global/entitlements:search?callerAccessType=GRANT_APPROVER&filter=FILTER&pageSize=PAGE_SIZE&pageToken=PAGE_TOKEN

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

[
  {
    "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="
  }
]

Cerca le richieste di concessione che puoi approvare o rifiutare

gcloud

Il comando gcloud beta pam grants search cerca una concessione che puoi approvare o rifiutare oppure che hai già approvato o rifiutato. Questo metodo non richiede autorizzazioni specifiche di Privileged Access Manager per l'utilizzo.

Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:

  • ENTITLEMENT_ID: l'ID del diritto a cui appartiene la concessione. Puoi recuperare l'ID cercando i diritti per i quali disponi dell'approvazione.
  • CALLER_RELATIONSHIP_TYPE: utilizza uno dei seguenti valori:

    • had-approved: restituisce le autorizzazioni approvate o rifiutate dall'utente che ha effettuato la chiamata.
    • can-approve: i resi possono essere approvati o rifiutati dal chiamante.
  • RESOURCE_TYPE: facoltativo. Il tipo di risorsa a cui appartiene il diritto. Utilizza il valore organization, folder o project.
  • RESOURCE_ID: utilizzato con RESOURCE_TYPE. L'ID del progetto, della cartella o dell'organizzazione Google Cloud per cui vuoi gestire i diritti. Gli ID progetto sono stringhe alfanumeriche, ad esempio my-project. Gli ID cartella e organizzazione sono numerici, ad esempio 123456789012.

Esegui il seguente comando:

Linux, macOS o 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

Dovresti ricevere una risposta simile alla seguente:

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'

REST

Il metodo searchGrants dell'API Privileged Access Manager cerca una concessione che puoi approvare o rifiutare oppure che hai già approvato o rifiutato. Questo metodo non richiede autorizzazioni specifiche di Privileged Access Manager per l'utilizzo.

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • SCOPE: l'organizzazione, la cartella o il progetto in cui si trova il diritto, nel formato organizations/ORGANIZATION_ID, folders/FOLDER_ID o projects/PROJECT_ID. Gli ID progetto sono stringhe alfanumeriche, ad esempio my-project. Gli ID cartella e dell'organizzazione sono numerici, ad esempio 123456789012.
  • ENTITLEMENT_ID: l'ID del diritto a cui appartiene la concessione. Puoi recuperare l'ID cercando i diritti per i quali disponi dell'approvazione.
  • RELATIONSHIP_TYPE: i valori validi sono:
    • HAD_APPROVED: restituisce le autorizzazioni che l'utente che chiama ha precedentemente approvato o rifiutato.
    • CAN_APPROVE: i resi possono essere approvati o rifiutati dal chiamante.
  • FILTER: facoltativo. Restituisce i contributi i cui valori dei campi corrispondenti a un' espressione AIP-160.
  • PAGE_SIZE: facoltativo. Il numero di elementi da restituire in una risposta.
  • PAGE_TOKEN: facoltativo. La pagina da cui iniziare la risposta utilizzando un token di pagina restituito in una risposta precedente.

Metodo HTTP e 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

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "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"
      ]
    }
  ]
}

Approvare le concessioni in modo programmatico

gcloud

Il comando gcloud beta pam grants describe approva una richiesta di sovvenzione specifica.

Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:

  • GRANT_ID: l'ID della sovvenzione che stai approvando. Puoi recuperare l'ID cercando le richieste di concessione che puoi approvare o rifiutare.
  • ENTITLEMENT_ID: l'ID del diritto a cui appartiene la concessione.
  • APPROVAL_REASON: il motivo per cui la sovvenzione è stata approvata.
  • RESOURCE_TYPE: facoltativo. Il tipo di risorsa a cui appartiene il diritto. Utilizza il valore organization, folder o project.
  • RESOURCE_ID: utilizzato con RESOURCE_TYPE. L'ID del progetto, della cartella o dell'organizzazione Google Cloud per cui vuoi gestire i diritti. Gli ID progetto sono stringhe alfanumeriche, ad esempio my-project. Gli ID cartella e organizzazione sono numerici, ad esempio 123456789012.

Esegui il seguente comando:

Linux, macOS o 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

Dovresti ricevere una risposta simile alla seguente:

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

Il metodo approveGrant dell'API Privileged Access Manager approva una richiesta di concessione specifica.

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • SCOPE: l'organizzazione, la cartella o il progetto in cui si trova il diritto, nel formato organizations/ORGANIZATION_ID, folders/FOLDER_ID o projects/PROJECT_ID. Gli ID progetto sono stringhe alfanumeriche, ad esempio my-project. Gli ID cartella e dell'organizzazione sono numerici, ad esempio 123456789012.
  • ENTITLEMENT_ID: l'ID del diritto a cui appartiene la concessione.
  • GRANT_ID: l'ID della sovvenzione che stai approvando. Puoi recuperare l'ID cercando le richieste di concessione che puoi approvare o rifiutare.
  • REASON: il motivo per cui la richiesta di sovvenzione è stata approvata.

Metodo HTTP e URL:

POST https://privilegedaccessmanager.googleapis.com/v1beta/SCOPE/locations/global/entitlements/ENTITLEMENT_ID/grants/GRANT_ID:approve

Corpo JSON della richiesta:

{
    "reason": "REASON"
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "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"
  ]
}

Rifiutare le concessioni in modo programmatico

gcloud

Il comando gcloud beta pam grants describe nega una richiesta di sovvenzione specifica.

Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:

  • GRANT_ID: l'ID della concessione che stai rifiutando. Puoi recuperare l'ID tramite una ricerca dei contributi che puoi approvare o rifiutare.
  • ENTITLEMENT_ID: l'ID del diritto a cui appartiene la concessione.
  • DENIAL_REASON: il motivo per cui la concessione è stata rifiutata.
  • RESOURCE_TYPE: facoltativo. Il tipo di risorsa a cui appartiene il diritto. Utilizza il valore organization, folder o project.
  • RESOURCE_ID: utilizzato con RESOURCE_TYPE. L'ID del progetto, della cartella o dell'organizzazione Google Cloud per cui vuoi gestire i diritti. Gli ID progetto sono stringhe alfanumeriche, ad esempio my-project. Gli ID cartella e organizzazione sono numerici, ad esempio 123456789012.

Esegui il seguente comando:

Linux, macOS o 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

Dovresti ricevere una risposta simile alla seguente:

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

Il metodo denyGrant dell'API Privileged Access Manager nega una richiesta di concessione specifica.

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • SCOPE: l'organizzazione, la cartella o il progetto in cui si trova il diritto, nel formato organizations/ORGANIZATION_ID, folders/FOLDER_ID o projects/PROJECT_ID. Gli ID progetto sono stringhe alfanumeriche, ad esempio my-project. Gli ID cartella e dell'organizzazione sono numerici, ad esempio 123456789012.
  • ENTITLEMENT_ID: l'ID del diritto a cui appartiene la concessione.
  • GRANT_ID: l'ID della concessione che stai rifiutando. Puoi recuperare l'ID cercando i contributi che puoi approvare o rifiutare.
  • REASON: il motivo per cui la richiesta di concessione è stata rifiutata.

Metodo HTTP e URL:

POST https://privilegedaccessmanager.googleapis.com/v1beta/SCOPE/locations/global/entitlements/ENTITLEMENT_ID/grants/GRANT_ID:deny

Corpo JSON della richiesta:

{
    "reason": "REASON"
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "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"
  ]
}