Aprove ou recuse concessões com o Gestor de acesso privilegiado

Depois de criar uma concessão de direitos, os principais selecionados podem pedir uma subvenção contra essa concessão de direitos. Se essa autorização tiver um fluxo de trabalho de aprovação especificado, os responsáveis configurados como aprovadores podem aprovar ou recusar pedidos de concessão para essa autorização.

Tenha em atenção o seguinte quando aprovar ou recusar um pedido de concessão relativamente a um direito:

  • Não pode aprovar o seu próprio pedido.

  • Se um pedido não for aprovado nem recusado no prazo de 24 horas, o estado da concessão é alterado para expired. Após isto, um principal tem de fazer um novo pedido de concessão se a elevação de privilégios ainda for necessária.

Aprove ou recuse concessões através da Trusted Cloud consola

Para aprovar ou recusar uma solicitação de concessão feita contra uma autorização, siga estas instruções:

  1. Aceda à página Gestor de acesso privilegiado.

    Aceda ao Gestor de acesso privilegiado

  2. Clique no separador Aprovar concessões e, de seguida, no separador Aprovação pendente.

  3. Na linha relacionada com o pedido que quer aprovar ou recusar, clique em Aprovar/recusar.

  4. Se for necessária uma justificação, introduza-a no campo Comentário.

  5. Clique em Aprovar ou Recusar.

Pode ver o seu histórico de aprovações no separador O meu histórico de aprovações. O histórico de aprovações está disponível durante 30 dias após a realização de uma ação de aprovação.

Aprove ou recuse concessões por programação

Para aprovar ou recusar concessões, tem de concluir as seguintes ações:

  1. Pesquise autorizações para as quais é aprovador.

  2. Com o ID de concessão relevante, pesquise pedidos de concessão que pode aprovar ou recusar.

  3. Aprovar ou recusar os pedidos de concessão.

Pesquise autorizações para as quais é um aprovador

gcloud

O comando gcloud pam entitlements search com o tipo de acesso do autor da chamada grant-approver pesquisa autorizações para as quais é um aprovador.

Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:

  • RESOURCE_TYPE: opcional. O tipo de recurso ao qual a concessão pertence. Use o valor organization, folder ou project.
  • RESOURCE_ID: usado com RESOURCE_TYPE. O ID do projeto, da pasta ou da organização para os quais quer gerir autorizações. Trusted CloudOs IDs dos projetos são strings alfanuméricas, como my-project. Os IDs das pastas e das organizações são numéricos, como 123456789012.

Execute o seguinte comando:

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

Deve receber uma resposta semelhante à seguinte:

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

O método searchEntitlements da API Privileged Access Manager com o tipo de acesso do autor da chamada GRANT_APPROVER pesquisa autorizações para as quais é um aprovador.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • SCOPE: a organização, a pasta ou o projeto em que a concessão se encontra, no formato de organizations/ORGANIZATION_ID, folders/FOLDER_ID ou projects/PROJECT_ID. Os IDs dos projetos são strings alfanuméricas, como my-project. Os IDs das pastas e das organizações são numéricos, como 123456789012.
  • FILTER: opcional. Devolve autorizações cujos valores de campo correspondem a uma expressão AIP-160.
  • PAGE_SIZE: opcional. O número de itens a devolver numa resposta.
  • PAGE_TOKEN: opcional. A partir de que página deve começar a resposta, usando um token de página devolvido numa resposta anterior.

Método HTTP e URL:

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

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

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

Pesquise pedidos de concessão que pode aprovar ou recusar

gcloud

O comando gcloud pam grants search pesquisa uma concessão que pode aprovar ou recusar, ou que já aprovou ou recusou. Este método não requer autorizações específicas do Privileged Access Manager para utilização.

Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:

  • ENTITLEMENT_ID: o ID da concessão de direitos a que a concessão pertence. Pode obter o ID pesquisando autorizações para as quais tem aprovação.
  • CALLER_RELATIONSHIP_TYPE: use um dos seguintes valores:

    • had-approved: devolve as concessões que o autor da chamada aprovou ou recusou.
    • can-approve: devolve concessões que o autor da chamada pode aprovar ou recusar.
  • RESOURCE_TYPE: opcional. O tipo de recurso ao qual a concessão pertence. Use o valor organization, folder ou project.
  • RESOURCE_ID: usado com RESOURCE_TYPE. O ID do projeto, da pasta ou da organização para os quais quer gerir autorizações. Trusted CloudOs IDs dos projetos são strings alfanuméricas, como my-project. Os IDs das pastas e das organizações são numéricos, como 123456789012.

Execute o seguinte comando:

Linux, macOS ou Cloud Shell

gcloud pam grants search \
    --entitlement=ENTITLEMENT_ID \
    --caller-relationship=CALLER_RELATIONSHIP_TYPE \
    --location=global \
    --RESOURCE_TYPE=RESOURCE_ID

Windows (PowerShell)

gcloud pam grants search `
    --entitlement=ENTITLEMENT_ID `
    --caller-relationship=CALLER_RELATIONSHIP_TYPE `
    --location=global `
    --RESOURCE_TYPE=RESOURCE_ID

Windows (cmd.exe)

gcloud pam grants search ^
    --entitlement=ENTITLEMENT_ID ^
    --caller-relationship=CALLER_RELATIONSHIP_TYPE ^
    --location=global ^
    --RESOURCE_TYPE=RESOURCE_ID

Deve receber uma resposta semelhante à seguinte:

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

O método searchGrants da API Privileged Access Manager pesquisa uma concessão que pode aprovar ou recusar, ou que já aprovou ou recusou. Este método não requer autorizações específicas do Privileged Access Manager para utilização.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • SCOPE: a organização, a pasta ou o projeto em que a concessão se encontra, no formato de organizations/ORGANIZATION_ID, folders/FOLDER_ID ou projects/PROJECT_ID. Os IDs dos projetos são strings alfanuméricas, como my-project. Os IDs das pastas e das organizações são numéricos, como 123456789012.
  • ENTITLEMENT_ID: o ID da concessão de direitos a que a concessão pertence. Pode obter o ID pesquisando autorizações para as quais tem aprovação.
  • RELATIONSHIP_TYPE: os valores válidos são:
    • HAD_APPROVED: devolve as concessões que o autor da chamada aprovou ou recusou anteriormente.
    • CAN_APPROVE: devolve concessões que o autor da chamada pode aprovar ou recusar.
  • FILTER: opcional. Devolve concessões cujos valores de campo correspondem a uma expressão AIP-160.
  • PAGE_SIZE: opcional. O número de itens a devolver numa resposta.
  • PAGE_TOKEN: opcional. A partir de que página deve começar a resposta, usando um token de página devolvido numa resposta anterior.

Método HTTP e URL:

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

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

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

Aprove subvenções de forma programática

gcloud

O comando gcloud pam grants describe aprova um pedido de concessão específico.

Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:

  • GRANT_ID: o ID da concessão que está a aprovar. Pode obter o ID pesquisando pedidos de concessão que pode aprovar ou recusar.
  • ENTITLEMENT_ID: o ID da concessão a que a autorização pertence.
  • APPROVAL_REASON: por que motivo a subvenção foi aprovada.
  • RESOURCE_TYPE: opcional. O tipo de recurso ao qual a concessão pertence. Use o valor organization, folder ou project.
  • RESOURCE_ID: usado com RESOURCE_TYPE. O ID do projeto, da pasta ou da organização para os quais quer gerir autorizações. Trusted CloudOs IDs dos projetos são strings alfanuméricas, como my-project. Os IDs das pastas e das organizações são numéricos, como 123456789012.

Execute o seguinte comando:

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

Deve receber uma resposta semelhante à seguinte:

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

O método approveGrant da API Privileged Access Manager aprova um pedido de concessão específico.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • SCOPE: a organização, a pasta ou o projeto em que a concessão se encontra, no formato de organizations/ORGANIZATION_ID, folders/FOLDER_ID ou projects/PROJECT_ID. Os IDs dos projetos são strings alfanuméricas, como my-project. Os IDs das pastas e das organizações são numéricos, como 123456789012.
  • ENTITLEMENT_ID: o ID da concessão a que a autorização pertence.
  • GRANT_ID: o ID da concessão que está a aprovar. Pode obter o ID pesquisando pedidos de concessão que pode aprovar ou recusar.
  • REASON: O motivo pelo qual o pedido de concessão foi aprovado.

Método HTTP e URL:

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

Corpo JSON do pedido:

{
    "reason": "REASON"
}

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

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

Negue concessões de forma programática

gcloud

O comando gcloud pam grants describe recusa um pedido de concessão específico.

Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:

  • GRANT_ID: o ID da concessão que está a recusar. Pode encontrar o ID pesquisando concessões que pode aprovar ou recusar.
  • ENTITLEMENT_ID: o ID da concessão a que a autorização pertence.
  • DENIAL_REASON: Por que motivo a subvenção foi recusada.
  • RESOURCE_TYPE: opcional. O tipo de recurso ao qual a concessão pertence. Use o valor organization, folder ou project.
  • RESOURCE_ID: usado com RESOURCE_TYPE. O ID do projeto, da pasta ou da organização para os quais quer gerir autorizações. Trusted CloudOs IDs dos projetos são strings alfanuméricas, como my-project. Os IDs das pastas e das organizações são numéricos, como 123456789012.

Execute o seguinte comando:

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

Deve receber uma resposta semelhante à seguinte:

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

O método denyGrant da API Privileged Access Manager nega um pedido de concessão específico.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • SCOPE: a organização, a pasta ou o projeto em que a concessão se encontra, no formato de organizations/ORGANIZATION_ID, folders/FOLDER_ID ou projects/PROJECT_ID. Os IDs dos projetos são strings alfanuméricas, como my-project. Os IDs das pastas e das organizações são numéricos, como 123456789012.
  • ENTITLEMENT_ID: o ID da concessão a que a autorização pertence.
  • GRANT_ID: o ID da concessão que está a recusar. Pode obter o ID pesquisando concessões que pode aprovar ou recusar.
  • REASON: o motivo pelo qual o pedido de concessão foi recusado.

Método HTTP e URL:

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

Corpo JSON do pedido:

{
    "reason": "REASON"
}

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

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