Solicitar o acesso temporário elevado com o Privileged Access Manager

Para aumentar temporariamente os privilégios, solicite uma concessão de um direito no Privileged Access Manager (PAM) por um período fixo.

Um direito de acesso contém papéis que são concedidos a você depois que o pedido de concessão é aprovado. Essas funções são removidas pelo Privileged Access Manager quando o acesso é encerrado.

Considere o seguinte ao solicitar uma concessão para um direito de acesso:

  • Só é possível solicitar permissões para direitos de acesso a que você foi adicionado. Para ser adicionado a um direito de acesso, entre em contato com o principal que administra o direito.

  • Dependendo da configuração, uma solicitação de concessão pode exigir aprovação para ser concedida.

  • Se uma solicitação de concessão exigir aprovação e não for aprovada ou negada em 24 horas, o status da concessão será alterado para Expired. Depois disso, será necessário fazer uma nova solicitação de concessão se o privilégio ainda for necessário.

  • As solicitações de concessão bem-sucedidas podem levar alguns minutos para entrar em vigor.

Solicitar um benefício usando o console do Google Cloud

Para solicitar uma concessão de um direito, siga estas instruções:

  1. Acesse a página Privileged Access Manager.

    Acessar o Privileged Access Manager

  2. Selecione a organização, a pasta ou o projeto em que você quer solicitar uma concessão.

  3. Na guia Meus direitos, encontre o direito a ser solicitado e clique em Solicitar concessão na mesma linha.

  4. Forneça os seguintes detalhes:

    • A duração necessária para a concessão, até a duração máxima definida no direito.

    • Se necessário, uma justificativa para a concessão.

    • Opcional: quais endereços de e-mail receberão a solicitação de concessão. As identidades do Google associadas aos aprovadores são notificadas automaticamente. No entanto, você pode notificar um conjunto diferente de endereços de e-mail, especialmente se estiver usando a federação de identidade de colaboradores.

  5. Clique em Solicitar concessão.

  6. Para conferir o histórico de concessões, incluindo os status de aprovação, clique na guia Concessões e, em seguida, em Minhas concessões.

Solicitar um benefício de maneira programática

Para solicitar uma concessão de um direito, siga estas etapas:

  1. Pesquise IDs de direito disponíveis para os quais você pode solicitar concessões.

  2. Solicite a concessão.

verifique depois o status da concessão para saber se ela está ativa, ou seja, se você recebeu a elevação temporária.

Pesquisar direitos disponíveis

gcloud

O comando gcloud beta pam entitlements search com o tipo de acesso de autor da chamada grant-requester procura direitos que podem receber uma concessão.

Antes de usar os dados do comando abaixo, faça estas substituições:

  • RESOURCE_TYPE: opcional. O tipo de recurso ao qual o direito de acesso pertence. Use o valor organization, folder ou project.
  • RESOURCE_ID: usada com RESOURCE_TYPE. O ID do projeto, da pasta ou da organização do Google Cloud que você quer gerenciar os direitos de acesso. Os IDs do projeto são strings alfanuméricas, como my-project. Os códigos de pastas e organizações são numéricos, como 123456789012.

Execute o seguinte comando:

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

Você receberá uma resposta semelhante a esta:

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

O método searchEntitlements da API Privileged Access Manager com o tipo de acesso do autor da chamada GRANT_REQUESTER procura direitos que podem ser usados para solicitar uma concessão.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • SCOPE: a organização, a pasta ou o projeto em que o direito de acesso está, no formato de organizations/ORGANIZATION_ID, folders/FOLDER_ID ou projects/PROJECT_ID. Os IDs do projeto são strings alfanuméricas, como my-project. Os códigos de pastas e organizações são numéricos, como 123456789012.
  • FILTER: opcional. Retorna os direitos de acesso cujos valores de campo correspondem a uma expressão AIP-160.
  • PAGE_SIZE: opcional. O número de itens a serem retornados em uma resposta.
  • PAGE_TOKEN: opcional. A página em que a resposta vai começar, usando um token de página retornado em uma resposta anterior.

Método HTTP e URL:

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

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

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

Solicitar um benefício de direito

gcloud

O comando gcloud beta pam grants create solicita uma concessão.

Antes de usar os dados do comando abaixo, faça estas substituições:

  • ENTITLEMENT_ID: o ID do direito a que o acesso será concedido.
  • GRANT_DURATION: a duração solicitada da concessão, em segundos.
  • JUSTIFICATION: a justificativa para solicitar a concessão.
  • EMAIL_ADDRESS: opcional. Outros endereços de e-mail para receber a solicitação de concessão. As identidades do Google associadas aos aprovadores são notificadas automaticamente. No entanto, você pode notificar um conjunto diferente de endereços de e-mail, especialmente se estiver usando a federação de identidade de colaboradores.
  • RESOURCE_TYPE: opcional. O tipo de recurso ao qual o direito de acesso pertence. Use o valor organization, folder ou project.
  • RESOURCE_ID: usada com RESOURCE_TYPE. O ID do projeto, da pasta ou da organização do Google Cloud que você quer gerenciar os direitos de acesso. Os IDs do projeto são strings alfanuméricas, como my-project. Os códigos de pastas e organizações são numéricos, como 123456789012.

Execute o seguinte comando:

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

Você receberá uma resposta semelhante a esta:

Created [GRANT_ID].

REST

O método createGrant da API do Privileged Access Manager solicita uma concessão.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • SCOPE: a organização, a pasta ou o projeto em que o direito de acesso está, no formato de organizations/ORGANIZATION_ID, folders/FOLDER_ID ou projects/PROJECT_ID. Os IDs do projeto são strings alfanuméricas, como my-project. Os códigos de pastas e organizações são numéricos, como 123456789012.
  • ENTITLEMENT_ID: o ID do direito a que o acesso será concedido.
  • REQUEST_ID: opcional. Precisa ser um UUID diferente de zero. Se o servidor receber uma solicitação com um ID, ele vai verificar se outra solicitação com esse ID já foi concluída nos últimos 60 minutos. Nesse caso, a nova solicitação será ignorada.
  • GRANT_DURATION: a duração solicitada da concessão, em segundos.
  • JUSTIFICATION: a justificativa para solicitar a concessão.
  • EMAIL_ADDRESS: opcional. Outros endereços de e-mail para receber a solicitação de concessão. As identidades do Google associadas aos aprovadores são notificadas automaticamente. No entanto, você pode notificar um conjunto diferente de endereços de e-mail, especialmente se estiver usando a federação de identidade de colaboradores.

Método HTTP e URL:

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

Corpo JSON da solicitação:

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

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

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

Verificar o status da solicitação de concessão

gcloud

O comando gcloud beta pam grants search usado com a relação de chamador had-created procura as permissões que você criou. Para verificar o status, procure o campo state na resposta.

Antes de usar os dados do comando abaixo, faça estas substituições:

  • ENTITLEMENT_ID: o ID do direito de acesso a que o acesso pertence.
  • RESOURCE_TYPE: opcional. O tipo de recurso ao qual o direito de acesso pertence. Use o valor organization, folder ou project.
  • RESOURCE_ID: usada com RESOURCE_TYPE. O ID do projeto, da pasta ou da organização do Google Cloud que você quer gerenciar os direitos de acesso. Os IDs do projeto são strings alfanuméricas, como my-project. Os códigos de pastas e organizações são numéricos, como 123456789012.

Execute o seguinte comando:

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

Você receberá uma resposta semelhante a esta:

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'

As doações podem ter os seguintes status:

Status Descrição
ACTIVATING A concessão está sendo ativada.
ACTIVATION_FAILED O Privileged Access Manager não concedeu as funções devido a um erro não recuperável.
ACTIVE A concessão está ativa e o principal tem acesso aos recursos permitidos pelos papéis.
APPROVAL_AWAITED A solicitação de concessão está aguardando uma decisão de um aprovador.
DENIED A solicitação de concessão foi negada por um aprovador.
ENDED A concessão foi encerrada e as funções foram removidas do principal.
EXPIRED O pedido de concessão expirou porque a aprovação não foi concedida em 24 horas.
REVOKED A concessão é revogada, e o participante não tem mais acesso aos recursos permitidos pelas funções.
REVOKING A concessão está em processo de revogação.

REST

O método searchGrants da API Privileged Access Manager usado com a relação de autor da chamada HAD_CREATED procura permissões que você criou. Para verificar o status, procure o campo state na resposta.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • SCOPE: a organização, a pasta ou o projeto em que o direito de acesso está, no formato de organizations/ORGANIZATION_ID, folders/FOLDER_ID ou projects/PROJECT_ID. Os IDs do projeto são strings alfanuméricas, como my-project. Os códigos de pastas e organizações são numéricos, como 123456789012.
  • ENTITLEMENT_ID: o ID do direito de acesso a que o acesso pertence.
  • FILTER: opcional. Retorna as concessões cujos valores de campo correspondem a uma expressão AIP-160.
  • PAGE_SIZE: opcional. O número de itens a serem retornados em uma resposta.
  • PAGE_TOKEN: opcional. A página em que a resposta vai começar, usando um token de página retornado em uma resposta anterior.

Método HTTP e 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

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

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

Os status de concessão estão detalhados na tabela a seguir.

Status Descrição
ACTIVATING A concessão está sendo ativada.
ACTIVATION_FAILED O Privileged Access Manager não concedeu as funções devido a um erro não recuperável.
ACTIVE A concessão está ativa e o principal tem acesso aos recursos permitidos pelos papéis.
APPROVAL_AWAITED A solicitação de concessão está aguardando uma decisão de um aprovador.
DENIED A solicitação de concessão foi negada por um aprovador.
ENDED A concessão foi encerrada e as funções foram removidas do principal.
EXPIRED O pedido de concessão expirou porque a aprovação não foi concedida em 24 horas.
REVOKED A concessão é revogada, e o participante não tem mais acesso aos recursos permitidos pelas funções.
REVOKING A concessão está em processo de revogação.