Criar direitos de acesso no Privileged Access Manager

É possível criar direitos para permitir a elevação temporária de privilégios para um conjunto selecionado de principais. Considere o seguinte ao criar direitos:

  • Os direitos podem ser criados no nível da organização, da pasta ou do projeto. Os papéis concedidos por um direito de acesso em cada nível seguem a hierarquia de recursos do Google Cloud. Por exemplo, os papéis concedidos por um direito de acesso no nível da organização são herdados nos níveis de pasta e projeto.

  • Se você adicionar um grupo como solicitante a um direito de acesso, todas as contas individuais nesse grupo poderão solicitar o acesso a ele. No entanto, apenas a conta individual que solicitar o acesso pode receber privilégios elevados.

  • Se você adicionar um grupo como aprovador a um direito de acesso, todas as contas individuais nesse grupo poderão aprovar ou negar uma solicitação de concessão.

  • Não há suporte para papéis básicos.

Antes de começar

Verifique se você ativou o Privileged Access Manager e configurou as permissões dele.

Criar direitos de acesso usando o console do Google Cloud

Para criar 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 aplicar o direito de acesso.

  3. Clique na guia Direitos de acesso.

  4. Clique em Criar.

  5. Adicione os seguintes detalhes de direito de acesso:

    • Um nome de direito de acesso.

    • Até 30 papéis a serem concedidos na organização, na pasta ou no projeto. É possível aplicar condições do IAM a esses papéis, desde que eles não correspondam a tags de recursos.

    • Por quanto tempo as concessões podem durar em relação ao direito de acesso.

  6. Clique em Próxima.

  7. Pesquise e adicione até 20 solicitantes principais válidos para o direito de acesso. Todos os tipos de principais são aceitos, exceto allUsers e allAuthenticatedUsers. É possível adicionar mais de 20 identidades adicionando-as a um grupo e listando o grupo no direito de acesso.

  8. Escolha se os administradores principais precisam justificar a solicitação de concessão.

  9. Clique em Próxima.

  10. Permita a concessão de papéis sem aprovação ou pesquise e adicione os administradores principais válidos que podem aprovar a solicitação. Os tipos de administradores principais válidos são os seguintes:

    • Contas do Google

    • Grupos do Google

    • Domínios do Google Workspace

    • Identificadores do pool de funcionários

    Se escolher ter aprovadores, também escolha se eles precisam justificar a aprovação da solicitação de concessão. É possível adicionar até 20 pessoas autorizadas por direito de acesso. É possível adicionar mais de 20 identidades adicionando-as a um grupo e listando o grupo no direito de acesso.

  11. Clique em Próxima.

  12. Opcional: adicione os endereços de e-mail das pessoas que vão receber notificações quando o direito de acesso estiver disponível para solicitação, quando uma concessão estiver pendente de aprovação e quando um solicitante receber acesso. As identidades do Google associadas ao direito de acesso, como aprovadores e solicitantes, 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.

  13. Clique em Criar direito de acesso.

Criar direitos de acesso de maneira programática

gcloud

O comando gcloud beta pam entitlements create cria um direito de acesso no nível da organização, da pasta ou do projeto.

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

  • ENTITLEMENT_ID: o ID do direito de acesso a ser criado. Um ID precisa ter de 4 a 63 caracteres e usar os seguintes caracteres: [a-z0-9-]. O primeiro caractere precisa ser uma letra.
  • 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 da organização, da pasta ou do projeto 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.
  • SCOPE: a organização, a pasta ou o projeto em que o direito de acesso será criado, 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.
  • RESOURCE_MANAGER_RESOURCE_TYPE: Organization, Folder ou Project, dependendo do escopo.
  • ROLE: os papéis a serem atribuídos quando um direito de acesso for concedido.
  • TIME_IN_SECONDS: a duração máxima de uma concessão, em segundos.
  • REQUESTING_MEMBER: principais que podem solicitar que o direito seja concedido. Todos os tipos de principais são compatíveis, exceto allUsers e allAuthenticatedUsers.

  • APPROVING_EMAIL: opcional. Outros endereços de e-mail para receber notificações quando uma concessão for solicitada. As identidades do Google associadas aos aprovadores de concessão 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.
  • APPROVING_MEMBER: principais que podem aprovar a solicitação de direito de acesso. Os tipos de principais válidos são os seguintes:

    • Usuário
    • Grupo
    • Domínio
    • Identificadores do pool de funcionários
  • ADMIN_EMAIL_ADDRESS: opcional. Outros endereços de e-mail para receber notificações quando um requerente receber acesso. As identidades do Google associadas aos aprovadores de concessão 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.
  • REQUESTER_EMAIL_ADDRESS: opcional. Outros endereços de e-mail para receber notificações quando este direito de acesso estiver disponível para solicitação. As identidades do Google associadas aos solicitantes da concessão 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.

Salve o conteúdo a seguir em um arquivo chamado 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

Execute o seguinte comando:

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

Você receberá uma resposta semelhante a esta:

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

O método createEntitlement da API Privileged Access Manager cria um direito no nível da organização, da pasta ou do projeto.

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 será criado, 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 ser criado. Um ID precisa ter de 4 a 63 caracteres e usar os seguintes caracteres: [a-z0-9-]. O primeiro caractere precisa ser uma letra.
  • 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.
  • RESOURCE_MANAGER_RESOURCE_TYPE: Organization, Folder ou Project, dependendo do escopo.
  • ROLE: os papéis a serem atribuídos quando um direito de acesso for concedido.
  • TIME_IN_SECONDS: a duração máxima de uma concessão, em segundos.
  • REQUESTING_MEMBER: principais que podem solicitar que o direito seja concedido. Todos os tipos de principais são compatíveis, exceto allUsers e allAuthenticatedUsers.

  • APPROVING_MEMBER: principais que podem aprovar a solicitação de direito de acesso. Os tipos de principais válidos são os seguintes:

    • Usuário
    • Grupo
    • Domínio
    • Identificadores do pool de funcionários
  • APPROVING_EMAIL: opcional. Outros endereços de e-mail para receber notificações quando uma concessão for solicitada. As identidades do Google associadas aos aprovadores de concessão 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.
  • ADMIN_EMAIL_ADDRESS: opcional. Outros endereços de e-mail para receber notificações quando um requerente receber acesso. As identidades do Google associadas aos aprovadores de concessão 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.
  • REQUESTER_EMAIL_ADDRESS: opcional. Outros endereços de e-mail para receber notificações quando este direito de acesso estiver disponível para solicitação. As identidades do Google associadas aos solicitantes da concessão 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?entitlementId=ENTITLEMENT_ID&requestId=REQUEST_ID

Corpo JSON da solicitação:

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

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

Você receberá uma resposta JSON semelhante a esta:

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

Para verificar o progresso de uma operação de criação, envie uma solicitação GET para o seguinte endpoint:

https://privilegedaccessmanager.googleapis.com/v1beta/SCOPE/locations/global/operations/OPERATION_ID

Envie uma solicitação GET para o endpoint a seguir e liste todas as operações:

https://privilegedaccessmanager.googleapis.com/v1beta/SCOPE/locations/global/operations

Terraform

Use o Terraform para criar direitos de acesso. Para mais informações, consulte google_privileged_access_manager_entitlement na documentação do Terraform.

A seguir