Crie e aplique políticas de limite de acesso principal

As políticas de limite de acesso principal (PAB) permitem limitar os recursos aos quais um conjunto de principais é elegível para aceder. Esta página explica como criar e aplicar políticas de limites de acesso de entidades principais.

Antes de começar

Funções necessárias para criar políticas de limite de acesso principal

Para receber a autorização de que precisa para criar políticas de limites de acesso principais, peça ao seu administrador para lhe conceder a função do IAM de administrador de limites de acesso principais (roles/iam.principalAccessBoundaryAdmin) na sua organização. Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Esta função predefinida contém a autorização iam.principalaccessboundarypolicies.create , que é necessária para criar políticas de limite de acesso principal.

Também pode receber esta autorização com funções personalizadas ou outras funções predefinidas.

Funções necessárias para aplicar políticas de limite de acesso principal

As autorizações de que precisa para aplicar uma política de limite de acesso principal dependem do conjunto principal ao qual quer aplicar a política.

Para receber as autorizações de que precisa para aplicar políticas de limite de acesso principal, peça ao seu administrador para lhe conceder as seguintes funções do IAM:

  • Utilizador do limite de acesso principal (roles/iam.principalAccessBoundaryUser) na organização
  • Aplique políticas de limite de acesso principal a grupos do Workforce Identity: Administrador do grupo do Workforce da IAM (roles/iam.workforcePoolAdmin) no grupo do Workforce Identity de destino
  • Aplique políticas de limite de acesso principal a Workload Identity Pools: Administrador do Workload Identity Pool da IAM (roles/iam.workloadIdentityPoolAdmin) no projeto proprietário do Workload Identity Pool de destino
  • Obtenha o estado de uma operação de longa duração para aplicar uma política de limite de acesso principal a um Workload Identity Pool: Visualizador de operações da IAM (roles/iam.operationViewer) no projeto proprietário do Workload Identity Pool de destino
  • Aplique políticas de limite de acesso principal a um domínio do Google Workspace: Administrador do IAM do conjunto do Workspace (roles/iam.workspacePoolAdmin) na organização
  • Aplique políticas de limite de acesso principal ao conjunto principal de um projeto: Administrador do IAM do projeto (roles/resourcemanager.projectIamAdmin) no projeto
  • Obtenha o estado de uma operação de execução longa para aplicar uma política de limite de acesso principal ao conjunto principal de um projeto: Visualizador de operações IAM (roles/iam.operationViewer) no projeto
  • Aplique políticas de limite de acesso principal ao conjunto principal de uma pasta: Administrador da IAM da pasta (roles/resourcemanager.folderIamAdmin) na pasta
  • Aplicar políticas de limite de acesso principal ao conjunto de principais de uma organização: Administrador da organização (roles/resourcemanager.organizationAdmin) na organização

Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Estas funções predefinidas contêm as autorizações necessárias para aplicar políticas de limite de acesso principal. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:

Autorizações necessárias

São necessárias as seguintes autorizações para aplicar políticas de limite de acesso principal:

  • iam.principalaccessboundarypolicies.bind na organização
  • Aplique políticas de limite de acesso principal a grupos da federação de identidade da força de trabalho: iam.workforcePools.createPolicyBinding no grupo da federação de identidade da força de trabalho de destino
  • Aplique políticas de limite de acesso principal a Workload Identity Federation pools: iam.workloadIdentityPools.createPolicyBinding no projeto que detém o Workload Identity Federation pool de destino
  • Obtenha o estado de uma operação de longa duração para aplicar uma política de limite de acesso principal a um Workload Identity Pool: iam.operations.get no projeto proprietário do Workload Identity Pool de destino
  • Aplique políticas de limite de acesso principal a um domínio do Google Workspace: iam.workspacePools.createPolicyBinding na organização
  • Aplique políticas de limite de acesso principal ao conjunto principal de um projeto: resourcemanager.projects.createPolicyBinding no projeto
  • Obtenha o estado de uma operação de longa duração para aplicar uma política de limite de acesso principal ao conjunto principal de um projeto: iam.operations.get no projeto
  • Aplique políticas de limite de acesso principal ao conjunto principal de uma pasta: resourcemanager.folders.createPolicyBinding na pasta
  • Aplique políticas de limite de acesso principal ao conjunto de principais de uma organização: resourcemanager.organizations.createPolicyBinding na organização

Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.

Crie uma política de limite de acesso principal

Pode criar uma política de limite de acesso principal através da Trusted Cloud consola, da CLI gcloud ou da API REST do IAM.

Consola

  1. Na Trusted Cloud consola, aceda à página Políticas de limites de acesso principal.

    Aceda às políticas de limite de acesso principal

  2. Selecione a organização para a qual quer criar políticas de limite de acesso principal.

  3. Clique em Criar política.

  4. Adicione regras de limite de acesso principal à política:

    1. Clique em Adicionar regra de limite.
    2. No campo Descrição, adicione uma descrição da regra da política de limite de acesso principal. A descrição pode ter um máximo de 256 carateres.
    3. Na secção Recursos, introduza todos os recursos do Resource Manager (projetos, pastas e organizações) para os quais quer que os principais sejam elegíveis para acesso. Qualquer principal sujeito a esta política é elegível para aceder a estes recursos.

      Cada política de limite de acesso principal pode referenciar um máximo de 500 recursos em todas as regras na política.

    4. Clique em Concluído.

    5. Para adicionar regras de políticas adicionais, repita estes passos. Cada política de limite de acesso principal pode ter até 500 regras.

  5. Na secção Nome da política, introduza um nome para a política. O nome pode ter um máximo de 63 carateres.

  6. Na lista Versão de aplicação, selecione a versão de aplicação da política. A versão da política de limite de acesso principal determina as autorizações para as quais o IAM aplica a política de limite de acesso principal.

    Para mais informações acerca das versões de aplicação, consulte o artigo Versões de aplicação do limite de acesso principal.

  7. Clique em Criar.

gcloud

O comando gcloud iam principal-access-boundary-policies create cria uma política de limite de acesso principal.

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

  • ORG_ID: o ID da organização na qual quer criar a política de limite de acesso principal. Os IDs das organizações são numéricos, como 123456789012.
  • PAB_POLICY_ID: um ID exclusivo para a política de limite de acesso principal, por exemplo, example-policy. :
  • DISPLAY_NAME: opcional. Uma descrição legível por humanos da política de limite de acesso principal, por exemplo, Example policy. O nome a apresentar pode ter um máximo de 63 carateres.
  • FILE_PATH: O caminho para um ficheiro JSON que contém os detalhes da regra da política de limite de acesso principal. Este ficheiro deve ter o seguinte formato:

    {
      "description": DESCRIPTION,
      "resources": [
        RESOURCES
      ],
      "effect": ALLOW
    }
        

    Substitua os seguintes valores:

    • DESCRIPTION: opcional. A descrição da regra da política de limite de acesso principal. A descrição pode ter um máximo de 256 carateres.
    • RESOURCES: uma lista de recursos do Resource Manager (projetos, pastas e organizações) aos quais quer que os principais sejam elegíveis para aceder. Qualquer principal que esteja sujeita a esta política é elegível para aceder a estes recursos.

      Cada política de limite de acesso principal pode fazer referência a um máximo de 500 recursos em todas as regras na política.

  • ENFORCEMENT_VERSION: a versão das políticas de limite de acesso principal que o IAM usa quando aplica a política. A versão de aplicação determina as autorizações que o IAM aplica à política de limite de acesso principal.

    Os valores aceites são 1, 2, 3 e latest.

    Para mais informações sobre as versões de aplicação, consulte o artigo Versões de aplicação do limite de acesso principal.

Execute o seguinte comando:

Linux, macOS ou Cloud Shell

gcloud iam principal-access-boundary-policies create PAB_POLICY_ID \
    --organization=ORG_ID --location=global \
    --display-name=DISPLAY_NAME --details-rules=FILE_PATH.json \
    --details-enforcement-version=ENFORCEMENT_VERSION

Windows (PowerShell)

gcloud iam principal-access-boundary-policies create PAB_POLICY_ID `
    --organization=ORG_ID --location=global `
    --display-name=DISPLAY_NAME --details-rules=FILE_PATH.json `
    --details-enforcement-version=ENFORCEMENT_VERSION

Windows (cmd.exe)

gcloud iam principal-access-boundary-policies create PAB_POLICY_ID ^
    --organization=ORG_ID --location=global ^
    --display-name=DISPLAY_NAME --details-rules=FILE_PATH.json ^
    --details-enforcement-version=ENFORCEMENT_VERSION

A resposta contém uma operação de longa duração que representa o seu pedido. Para saber como obter o estado de uma operação de longa duração, consulte a secção Verifique o estado de uma operação de longa duração nesta página.

Create request issued for: [example-policy]
Waiting for operation [organizations/123456789012/locations/global/operations/operation-1715373988044-6181fa136df85-3b06a30a-4816d25b] to complete...done.
Created principalAccessBoundaryPolicy [example-policy].

REST

O método principalAccessBoundaryPolicies.create cria uma política de limite de acesso principal.

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

  • ORG_ID: o ID da organização na qual quer criar a política de limite de acesso principal. Os IDs das organizações são numéricos, como 123456789012.
  • PAB_POLICY_ID: um ID exclusivo para a política de limite de acesso principal, por exemplo, example-policy.
  • DISPLAY_NAME: opcional. Uma descrição legível por humanos da política de limite de acesso principal, por exemplo, Example policy. O nome a apresentar pode ter um máximo de 63 carateres.
  • PAB_RULES: Uma lista de regras de limite de acesso principal, que definem os recursos aos quais os principais afetados são elegíveis para aceder. Uma política de limite de acesso principal pode ter até 500 regras. Cada regra tem o seguinte formato:

    {
    "description": "DESCRIPTION",
    "resources": [
      RESOURCES
    ],
    "effect": ALLOW
    }

    Substitua os seguintes valores:

    • DESCRIPTION: opcional. A descrição da regra da política de limite de acesso principal. A descrição pode ter um máximo de 256 carateres.
    • RESOURCES: Uma lista de recursos do Resource Manager (projetos, pastas e organizações) aos quais quer que os principais sejam elegíveis para aceder. Qualquer principal sujeito a esta política é elegível para aceder a estes recursos.

      Cada política de limite de acesso principal pode fazer referência a um máximo de 500 recursos em todas as regras na política.

  • ENFORCEMENT_VERSION: a versão das políticas de limite de acesso principal que o IAM usa quando aplica a política. A versão de aplicação determina as autorizações que o IAM aplica à política de limite de acesso principal.

    Os valores aceites são 1, 2, 3 e latest.

    Para mais informações sobre as versões de aplicação, consulte o artigo Versões de aplicação do limite de acesso principal.

Método HTTP e URL:

POST https://iam.googleapis.com/v3/organizations/ORG_ID/locations/global?principalAccessBoundaryPolicyId=PAB_POLICY_ID

Corpo JSON do pedido:

{
  "displayName": DISPLAY_NAME,
  "details": {
    "rules": [
      PAB_RULES
    ],
    "effect": ALLOW
    }
  ],
  "enforcementVersion": "ENFORCEMENT_VERSION"
}

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

A resposta contém uma operação de longa duração que representa o seu pedido. Para saber como obter o estado de uma operação de longa duração, consulte a secção Verifique o estado de uma operação de longa duração nesta página.

{
  "name": "organizations/123456789012/locations/global/operations/operation-1715373120647-6181f6d8371d2-83309b71-2b8a7532",
  "metadata": {
    "@type": "type.googleapis.com/google.iam.v3.OperationMetadata",
    "createTime": "2024-05-10T20:32:00.898809495Z",
    "target": "organizations/123456789012/locations/global/policyBindings/example-policy",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v3"
  },
  "done": false
}

Aplique uma política de limite de acesso principal a um conjunto de principais

Para aplicar uma política de limite de acesso principal a um conjunto de principais, crie um recurso de associação de políticas que associe a política ao conjunto de principais. Depois de criar uma associação de políticas, a política de limite de acesso principal na associação é aplicada aos principais na associação.

Pode criar uma associação de políticas através da Trusted Cloud consola, da CLI gcloud ou da API REST do IAM.

Consola

  1. Na Trusted Cloud consola, aceda à página Políticas de limites de acesso principal.

    Aceda às políticas de limite de acesso principal

  2. Selecione a organização proprietária da política de limite de acesso principal para a qual quer criar uma associação.

  3. Clique no ID da política de limite de acesso principal para a qual quer criar uma associação.

  4. Clique no separador Associações e, de seguida, clique em Adicionar associação.

  5. Introduza os detalhes da associação:

    1. Opcional: no campo Nome a apresentar, introduza um nome a apresentar para a associação. O nome a apresentar pode ter um máximo de 63 carateres.
    2. No campo ID da associação, introduza um nome exclusivo para a associação, por exemplo, example-binding.
    3. Na secção Conjunto de principais de destino, introduza o tipo e o ID do conjunto de principais ao qual quer associar a política. Não é possível alterar este valor após criar a associação de políticas.

      Para saber mais sobre os principais incluídos em cada conjunto de principais, consulte o artigo Conjuntos de principais suportados.

  6. Opcional: para especificar para que principais no conjunto de principais a política de limite de acesso do principal é aplicada, adicione uma condição à associação:

    1. Clique em Adicionar condição.
    2. No campo Título, introduza um breve resumo da finalidade da condição.
    3. Opcional: no campo Descrição, introduza uma descrição mais longa da condição.
    4. No campo Expressão, introduza a expressão de condição que usa a sintaxe do Idioma de expressão comum (IEC). A expressão tem de fazer referência aos atributos principal.type ou principal.subject. Outros atributos não são suportados.
    5. Clique em Guardar.
  7. Opcional: para testar as alterações à política de limite de acesso principal com o Simulador de políticas, clique em Testar alterações. Reveja os resultados da simulação e, se necessário, atualize a política.

    Para saber como testar políticas de limites de acesso de entidades principais com o Simulador de políticas, consulte o artigo Simulador de políticas para políticas de limites de acesso de entidades principais.

  8. Para criar a associação, clique em Adicionar.

gcloud

O comando gcloud iam policy-bindings create cria uma associação de políticas.

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

  • BINDING_ID: um nome exclusivo para a associação de políticas, por exemplo, example-binding.
  • RESOURCE_TYPE: o tipo de recurso do Resource Manager (projeto, pasta ou organização) do qual a associação de políticas é filho. Use o valor project, folder ou organization

    O tipo de recurso depende do principal definido na associação de políticas. Para ver que tipo de recurso usar, consulte os tipos de principais compatíveis.

  • RESOURCE_ID: o ID do projeto, da pasta ou da organização de que a associação de políticas é filha. 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.
  • ORG_ID: o ID da organização proprietária da política de limite de acesso principal que quer associar ao conjunto de principais. Os IDs das organizações são numéricos, como 123456789012.
  • PAB_POLICY_ID: o ID da política de limite de acesso principal que quer associar ao conjunto principal, por exemplo, example-pab-policy. Não pode alterar este valor depois de criar a associação de políticas.
  • PRINCIPAL_SET: o conjunto de principais ao qual quer associar a política. Para ver uma lista dos tipos de principais válidos, consulte o artigo Conjuntos de principais suportados. Não pode alterar este valor depois de criar a associação de políticas.
  • DISPLAY_NAME: opcional. Uma descrição legível da associação, por exemplo, Example binding. O nome a apresentar pode ter um máximo de 63 carateres.
  • CONDITION_DETAILS: opcional. Uma expressão de condição que especifica para que responsáveis no conjunto de responsáveis a política de limite de acesso de responsáveis é aplicada. Contém os seguintes campos:

    • expression: uma expressão de condição que usa a sintaxe do Idioma de expressão comum (IEC). A expressão tem de fazer referência aos atributos principal.type ou principal.subject. Outros atributos não são suportados.

      A expressão pode conter até 10 operadores lógicos (&&, ||, !) e ter um comprimento máximo de 250 carateres.

    • title: opcional. Um breve resumo da finalidade da condição.
    • description: opcional. Uma descrição mais longa da condição.

Execute o seguinte comando:

Linux, macOS ou Cloud Shell

gcloud iam policy-bindings create BINDING_ID \
    --RESOURCE_TYPE=RESOURCE_ID --location=global \
    --policy="organizations/ORG_ID/locations/global/principalAccessBoundaryPolicies/PAB_POLICY_ID" \
    --target-principal-set=PRINCIPAL_SET_ID \
    --display-name=DISPLAY_NAME \
    CONDITION_DETAILS

Windows (PowerShell)

gcloud iam policy-bindings create BINDING_ID `
    --RESOURCE_TYPE=RESOURCE_ID --location=global `
    --policy="organizations/ORG_ID/locations/global/principalAccessBoundaryPolicies/PAB_POLICY_ID" `
    --target-principal-set=PRINCIPAL_SET_ID `
    --display-name=DISPLAY_NAME `
    CONDITION_DETAILS

Windows (cmd.exe)

gcloud iam policy-bindings create BINDING_ID ^
    --RESOURCE_TYPE=RESOURCE_ID --location=global ^
    --policy="organizations/ORG_ID/locations/global/principalAccessBoundaryPolicies/PAB_POLICY_ID" ^
    --target-principal-set=PRINCIPAL_SET_ID ^
    --display-name=DISPLAY_NAME ^
    CONDITION_DETAILS

A resposta contém uma operação de longa duração que representa o seu pedido. Para saber como obter o estado de uma operação de longa duração, consulte a secção Verifique o estado de uma operação de longa duração nesta página.

Create request issued for: [example-binding]
Waiting for operation [organizations/123456789012/locations/global/operations/operation-1715374545618-6181fc272c6f9-55ff07f4-97d0ac76] to complete...done.
Created policyBinding [example-binding].

REST

O método policyBindings.create cria uma associação de políticas.

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

  • RESOURCE_TYPE: o tipo de recurso do Resource Manager (projeto, pasta ou organização) do qual a associação de políticas é filho. Use o valor projects, folders ou organizations

    O tipo de recurso depende do principal definido na associação de políticas. Para ver que tipo de recurso usar, consulte os tipos de principais compatíveis.

  • RESOURCE_ID: o ID do projeto, da pasta ou da organização de que a associação de políticas é filha. 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.
  • BINDING_ID: um nome exclusivo para a associação de políticas, por exemplo, example-binding.
  • DISPLAY_NAME: opcional. Uma descrição legível da associação, por exemplo, Example binding. O nome a apresentar pode ter um máximo de 63 carateres.
  • PRINCIPAL_SET: o conjunto de principais ao qual quer associar a política. Para ver uma lista dos tipos de principais válidos, consulte o artigo Conjuntos de principais suportados. Não pode alterar este valor depois de criar a associação de políticas.
  • ORG_ID: o ID da organização proprietária da política de limite de acesso principal que quer associar ao conjunto de principais. Os IDs das organizações são numéricos, como 123456789012.
  • PAB_POLICY_ID: o ID da política de limite de acesso principal que quer associar ao conjunto principal, por exemplo, example-pab-policy. Não pode alterar este valor depois de criar a associação de políticas.
  • CONDITION_DETAILS: opcional. Uma expressão de condição que especifica para que responsáveis no conjunto de responsáveis a política de limite de acesso de responsáveis é aplicada. Contém os seguintes campos:

    • expression: uma expressão de condição que usa a sintaxe do Idioma de expressão comum (IEC). A expressão tem de fazer referência aos atributos principal.type ou principal.subject. Outros atributos não são suportados.

      A expressão pode conter até 10 operadores lógicos (&&, ||, !) e ter um comprimento máximo de 250 carateres.

    • title: opcional. Um breve resumo da finalidade da condição.
    • description: opcional. Uma descrição mais longa da condição.

Método HTTP e URL:

POST https://iam.googleapis.com/v3/RESOURCE_TYPE/RESOURCE_ID/locations/global/policyBindings?policyBindingId=BINDING_ID

Corpo JSON do pedido:

{
  "displayName": DISPLAY_NAME,
  "target": {
    "principalSet": PRINCIPAL_SET
  },
  "policyKind": "PRINCIPAL_ACCESS_BOUNDARY",
  "policy": "organizations/ORG_ID/locations/global/principalAccessBoundaryPolicies/PAB_POLICY_ID",
  "condition": {
    CONDITION_DETAILS
  }
}

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

A resposta contém uma operação de longa duração que representa o seu pedido. Para saber como obter o estado de uma operação de longa duração, consulte a secção Verifique o estado de uma operação de longa duração nesta página.

{
  "name": "organizations/123456789012/locations/global/operations/operation-1715373120647-6181f6d8371d2-83309b71-2b8a7532",
  "metadata": {
    "@type": "type.googleapis.com/google.iam.v3.OperationMetadata",
    "createTime": "2024-05-10T20:32:00.898809495Z",
    "target": "organizations/123456789012/locations/global/policyBindings/example-binding",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v3"
  },
  "done": false
}

Verifique o estado de uma operação de longa duração

Quando usa a API REST ou as bibliotecas cliente, qualquer método que altere uma política ou uma associação de limites de acesso principais devolve uma operação de longa duração (LRO). A operação de longa duração monitoriza o estado do pedido e indica se a alteração à política ou à associação está concluída.

REST

O método operations.get devolve o estado de uma operação de longa duração.

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

  • OPERATION_NAME: o nome completo da operação. Recebe este nome na resposta ao seu pedido original.

    O nome da operação tem o seguinte formato:

          RESOURCE_TYPE/RESOURCE_ID/locations/global/operations/OPERATION_ID
        

Método HTTP e URL:

GET https://iam.googleapis.com/v3/OPERATION_NAME

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

Deve receber uma resposta JSON semelhante à seguinte:

{
  "name": "organizations/314340013352/locations/global/operations/operation-1732752311821-627edd607a3df-9a62cdea-2a7d9f07",
  "metadata": {
    "@type": "type.googleapis.com/google.iam.v3.OperationMetadata",
    "createTime": "2024-11-28T00:05:12.006289686Z",
    "endTime": "2024-11-28T00:05:12.192141801Z",
    "target": "organizations/314340013352/locations/global/principalAccessBoundaryPolicies/example-policy",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v3"
  },
  "done": true,
  "response": {
    PAB_POLICY
  }
}

Se o campo done da operação não estiver presente, continue a monitorizar o respetivo estado através da obtenção repetida da operação. Use a retirada exponencial truncada para introduzir um atraso entre cada pedido. Quando o campo done está definido como true, a operação está concluída e pode parar de receber a operação.

O que se segue?