Como restringir identidades por domínio

O compartilhamento restrito de domínio permite limitar o compartilhamento de recursos com base em um recurso de domínio ou da organização. Quando o compartilhamento restrito de domínio está ativo, apenas os principais que pertencem a domínios ou organizações permitidos podem receber papéis do IAM na Google Cloud organização.

Há três tipos de políticas da organização que podem ser usadas para restringir identidades por domínio:

  • Políticas personalizadas da organização que fazem referência ao recurso iam.googleapis.com/AllowPolicy
  • A restrição gerenciada iam.managed.allowedPolicyMembers
  • A restrição predefinida iam.allowedPolicyMemberDomains

Antes de começar

Escolha o método que você vai usar para implementar o compartilhamento restrito de domínio. Para saber mais sobre os benefícios e as desvantagens de cada método, consulte Métodos para restringir o compartilhamento por domínio.

Funções exigidas

Para receber as permissões necessárias a fim de aplicar o compartilhamento restrito de domínio, peça ao administrador para conceder a você o papel do IAM de Administrador de políticas da organização (roles/orgpolicy.policyAdmin) na organização. Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.

Usar políticas da organização personalizadas para implementar o compartilhamento restrito ao domínio

  1. Crie uma restrição personalizada que restrinja quais principais podem receber funções na sua organização:

    1. Use a função CEL memberInPrincipalSet com o principal da organização definido para restringir as concessões de função aos membros da organização. Para saber como encontrar o ID da sua organização, consulte Como recuperar o ID do recurso de uma organização.

      Por exemplo, a restrição a seguir limita as concessões de função a membros da sua organização:

      name: organizations/ORG_ID/customConstraints/custom.allowInternaldentitiesOnly
      methodTypes:
        - CREATE
        - UPDATE
      condition:
        "resource.bindings.all(
          binding,
          binding.members.all(member,
            MemberInPrincipalSet(member, ['//cloudresourcemanager.googleapis.com/organizations/ORG_ID'])
          )
        )"
      actionType: ALLOW
      displayName: Only allow organization members to be granted roles
      
    2. Opcionalmente, refine a restrição adicionando outras funções CEL, unidas a operadores lógicos (&&, || ou !). É possível adicionar qualquer uma das seguintes funções:

      Por exemplo, a restrição a seguir limita as concessões de função a membros da sua organização e a admin@example.com:

      name: organizations/ORG_ID/customConstraints/custom.allowInternaldentitiesOnly
      methodTypes:
        - CREATE
        - UPDATE
      condition:
        "resource.bindings.all(
          binding,
          binding.members.all(member,
            (
              MemberInPrincipalSet(member, ['//cloudresourcemanager.googleapis.com/organizations/ORG_ID'])
              ||
              MemberSubjectMatches(member, ['user:admin@example.com'])
            )
          )
        )"
      actionType: ALLOW
      displayName: Only allow organization members and service agents to be granted roles
      
  2. Configure a restrição personalizada:

    Depois de criar o arquivo YAML para uma nova restrição personalizada, configure-a para disponibilizá-la para as políticas da organização. Para configurar uma restrição personalizada, use o comando gcloud org-policies set-custom-constraint:
    gcloud org-policies set-custom-constraint CONSTRAINT_PATH
    Substitua CONSTRAINT_PATH pelo caminho completo do arquivo da restrição personalizada. Por exemplo, /home/user/customconstraint.yaml. Após a conclusão, as restrições personalizadas vão estar disponíveis como políticas da organização na sua lista de Google Cloud políticas da organização. Para verificar se a restrição personalizada existe, use o comando gcloud org-policies list-custom-constraints:
    gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
    Substitua ORGANIZATION_ID pelo ID do recurso da organização. Para mais informações, consulte Como visualizar as políticas da organização.
  3. Aplique a política personalizada da organização:

    Para aplicar uma restrição booleana, crie uma política da organização com referência a ela e aplique essa política da organização a um recurso Google Cloud .

    Console

    1. No console do Google Cloud, acesse a página Políticas da organização.

      Acessar as políticas da organização

    2. No seletor de projetos, selecione o projeto em que você quer definir a política da organização.
    3. Na lista da página Políticas da organização, selecione a restrição para acessar a página Detalhes da política dela.
    4. Para personalizar a política da organização nesse recurso, clique em Gerenciar política.
    5. Na página Editar política, selecione Substituir a política do editor principal.
    6. Clique em Adicionar uma regra.
    7. Na seção Aplicação, selecione se a aplicação dessa política da organização está ativada ou desativada.
    8. Opcional: para tornar a política da organização condicional em uma tag, clique em Adicionar condição. Se você adicionar uma regra condicional a uma política da organização, inclua pelo menos uma regra não condicional. Caso contrário, não será possível salvar a política. Para mais informações, consulte Como configurar uma política da organização com tags.
    9. Se essa for uma restrição personalizada, clique em Testar alterações para simular o efeito da política da organização. Para mais informações, consulte Testar alterações na política da organização com o Simulador de política.
    10. Para concluir e aplicar a política da organização, clique em Definir política. A política levará até 15 minutos para entrar em vigor.

    gcloud

    Para criar uma política da organização que aplica uma restrição booleana, crie um arquivo YAML da política com referência à restrição:

          name: projects/PROJECT_ID/policies/CONSTRAINT_NAME
          spec:
            rules:
            - enforce: true
        

    Substitua:

    • PROJECT_ID: o projeto em que você quer aplicar a restrição.
    • CONSTRAINT_NAME: o nome da restrição que você quer aplicar. Por exemplo, compute.disableAllIpv6.

    Para aplicar a política da organização que contém a restrição, execute o seguinte comando:

        gcloud org-policies set-policy POLICY_PATH
        

    Substitua POLICY_PATH pelo caminho completo do arquivo YAML da política da organização. A política leva até 15 minutos para entrar em vigor.

Usar a restrição iam.managed.allowedPolicyMembers para implementar o compartilhamento restrito de domínio

Console

  1. No console do Google Cloud, acesse a página Políticas da organização.

    Acessar as políticas da organização

  2. No seletor de projetos, selecione o projeto, a pasta ou a organização em que você quer editar a política da organização. A página Políticas da organização exibe uma lista filtrável das restrições de políticas da organização disponíveis para esse recurso.

  3. Na lista, selecione a restrição gerenciada Restringir membros de políticas permitidas nas políticas de permissão do IAM.

  4. Na página Detalhes da política, clique em Gerenciar política.

  5. Na página Editar política, selecione Substituir a política do editor principal.

  6. Selecione Adicionar uma regra e atualize a regra da política da organização:

  7. Em Aplicação, selecione Ativada.

  8. Para tornar a política da organização condicional em uma tag, clique em Adicionar condição. Se você adicionar uma regra condicional a uma política da organização, inclua pelo menos uma regra não condicional. Caso contrário, não será possível salvar a política. Para mais detalhes, consulte Como definir uma política da organização com tags.

  9. Na seção Parâmetros, configure os membros e conjuntos principais que podem receber funções na sua organização e clique em Salvar.

  10. Se quiser conferir o efeito da mudança na política da organização antes de ela ser aplicada, clique em Testar alterações. Para mais informações sobre como testar mudanças na política da organização, consulte Testar mudanças na política da organização com o Simulador de política.

  11. Para aplicar a política da organização no modo de simulação, clique em Definir política de simulação. Para mais informações, consulte Criar uma política da organização no modo de simulação.

  12. Depois de verificar se a política da organização no modo de simulação funciona corretamente, clique em Definir política para ativar a política.

gcloud

  1. Crie um arquivo YAML para definir a política da organização:

    name: organizations/ORG_ID/policies/CONSTRAINT_NAME
    spec:
    rules:
     - enforce: true
     - parameters:
       allowedMemberSubjects:
         - ALLOWED_MEMBER_1
         - ALLOWED_MEMBER_2
       allowedPrincipalSets:
         - ALLOWED_PRINCIPAL_SET_1
         - ALLOWED_PRINCIPAL_SET_2
    

    Substitua:

    • ORG_ID: o ID numérico da Google Cloud organização.

    • CONSTRAINT_NAME: o nome da restrição que você quer definir.

    • ALLOWED_MEMBER_1, ALLOWED_MEMBER_2: os membros que podem receber funções na sua organização. Por exemplo, user:example-user@example.com.

    • ALLOWED_PRINCIPAL_SET_1, ALLOWED_PRINCIPAL_SET_2: os conjuntos de participantes que podem receber papéis na sua organização. Por exemplo, //cloudresourcemanager.googleapis.com/organizations/0123456789012.

    Se quiser, adicione um bloco condition à rules para tornar a política da organização condicional em uma tag. Se você adicionar uma regra condicional a uma política da organização, inclua pelo menos uma regra não condicional. Caso contrário, não será possível salvar a política. Para mais detalhes, consulte Como definir uma política da organização com tags.

  2. Defina a política com o comando org-policies set-policy e a flag spec:

    gcloud org-policies set-policy POLICY_PATH \
      --update-mask=spec
    

    Substitua POLICY_PATH pelo caminho completo do arquivo YAML da política da organização.

Para saber como testar a política no modo de simulação antes de aplicá-la, consulte Criar uma política da organização no modo de simulação.

Para saber como simular a política antes de a aplicar, consulte Testar alterações na política da organização com o Simulador de política.

REST

Para definir a política da organização, use o método organizations.policies.create.

POST https://orgpolicy.googleapis.com/v2/{parent=organizations/ORGANIZATION_ID}/policies

O corpo JSON da solicitação contém a definição de uma política da organização. Se essa restrição não oferecer suporte a parâmetros, omita o bloco parameters em rules.

{
  "name": "organizations/ORG_ID/policies/CONSTRAINT_NAME",
  "spec": {
    "rules": [
      {
        "enforce": true,
        "parameters": {
          "allowedMemberSubjects": [
            "ALLOWED_MEMBER_1",
            "ALLOWED_MEMBER_2"
          ],
          "allowedPrincipalSets": [
            "ALLOWED_PRINCIPAL_SET_1",
            "ALLOWED_PRINCIPAL_SET_2"
          ]
        }
      }
    ]
  }
}

Substitua:

  • ORG_ID: o ID numérico da Google Cloud organização.

  • CONSTRAINT_NAME: o nome da restrição que você quer definir.

  • ALLOWED_MEMBER_1, ALLOWED_MEMBER_2: os membros que podem receber funções na sua organização. Por exemplo, user:example-user@example.com.

  • ALLOWED_PRINCIPAL_SET_1, ALLOWED_PRINCIPAL_SET_2: os conjuntos de participantes que podem receber papéis na sua organização. Por exemplo, //cloudresourcemanager.googleapis.com/organizations/0123456789012.

Se quiser, adicione um bloco condition à rules para tornar a política da organização condicional em uma tag. Se você adicionar uma regra condicional a uma política da organização, inclua pelo menos uma regra não condicional. Caso contrário, não será possível salvar a política. Para mais detalhes, consulte Como definir uma política da organização com tags.

Para saber como testar a política no modo de simulação antes de aplicá-la, consulte Criar uma política da organização no modo de simulação.

Para saber como simular a política antes de a aplicar, consulte Testar alterações na política da organização com o Simulador de política.

Usar a restrição iam.allowedPolicyMemberDomains para implementar o compartilhamento restrito de domínio

A restrição de domínio é um tipo de restrição de lista. Os IDs de cliente do Google Workspace e os IDs de recurso da organização Google Cloud podem ser adicionados e removidos da lista allowed_values de uma restrição de domínio. A restrição de domínio não oferece suporte a valores negados, e uma política da organização não pode ser salva com IDs na lista denied_values.

Todos os domínios associados a uma conta do Google Workspace ou a um recurso da organização listados no allowed_values serão permitidos pela política da organização. Todos os outros domínios serão negados pela política da organização.

É possível criar uma política da organização que aplique a restrição de restrição de domínio a qualquer recurso incluído na lista de recursos com suporte. Por exemplo, buckets do Cloud Storage, conjuntos de dados do BigQuery ou VMs do Compute Engine.

Console

Para definir uma política da organização que inclua uma restrição de domínio, faça o seguinte:

  1. No console do Google Cloud, acesse a página Políticas da organização.

    Acessar as políticas da organização

  2. No seletor de projetos, selecione o recurso da organização em que você quer definir a política.

  3. Na página Políticas da organização, selecione Compartilhamento restrito do domínio na lista de restrições.

  4. Na página Detalhes da política, clique em Gerenciar política.

  5. Em Aplicável a, selecione Substituir política do editor principal.

  6. Clique em Adicionar uma regra.

  7. Em Valores da política, selecione "Personalizado".

  8. Em Tipo de política, selecione Permitir.

  9. Em Valores personalizados, insira um ID de recurso da organização ou ID de cliente do Google Workspace no campo.

    Ao inserir o ID do recurso da organização, os seguintes agentes podem receber papéis na sua organização:

    • Todos os pools de identidade de força de trabalho na sua organização
    • Todas as contas de serviço e pools de identidade de carga de trabalho em qualquer projeto na organização
    • Todos os agentes de serviço associados a recursos na organização.

    Ao inserir o ID de cliente do Google Workspace, os seguintes princípios podem receber papéis na sua organização:

    • Todas as identidades em todos os domínios associados ao seu ID de cliente do Google Workspace
    • Todos os pools de identidade de força de trabalho na sua organização
    • Todas as contas de serviço e pools de identidade de carga de trabalho em qualquer projeto na organização
    • Todos os agentes de serviço associados a recursos na organização.
  10. Se você quiser adicionar vários IDs, clique em Novo valor da política para criar outro campo.

  11. Clique em Concluído.

  12. Se quiser, para tornar a restrição de restrição de domínio condicional em uma tag, clique em Adicionar condição.

    1. No campo Título, insira um nome para a condição.

    2. No campo Descrição, defina uma descrição para a condição. A descrição oferece contexto sobre as tags necessárias e como elas afetam os recursos.

    3. Você pode usar o Criador de condições para criar uma condição que exija uma tag específica para que a restrição entre em vigor.

      1. No menu Tipo de condição da guia Criador de condições, selecione Tag.

      2. Selecione o Operador para sua condição. Para corresponder a uma tag inteira, use o operador matches. Para combinar uma chave de tag e um valor de tag, use o operador match ID.

      3. Se você selecionou o operador corresponde, insira o nome do namespace de valor da tag. Se você selecionou o operador corresponde ao código, insira os códigos da chave e do valor.

      4. Para criar várias condições, clique em Adicionar. Se você adicionar outra condição, poderá definir a lógica condicional para exigir todas elas alternando E. É possível configurar a lógica condicional para exigir que apenas uma das condições seja verdadeira, alternando Or.

      5. É possível excluir uma expressão clicando no X grande à direita dos campos de condição.

      6. Quando terminar de editar as condições, clique em Salvar.

  13. Para aplicar a política, clique em Definir política.

gcloud

As políticas podem ser definidas pela CLI do Google Cloud. Para criar uma política que inclua a restrição de domínio, execute o seguinte comando:

Para definir uma política da organização que inclua a restrição de domínio, execute o seguinte comando:

gcloud org-policies set-policy POLICY_PATH

Em que POLICY_PATH é o caminho completo para o arquivo YAML da política da organização, que deve ser semelhante ao seguinte:

name: organizations/ORGANIZATION_ID/policies/iam.allowedPolicyMemberDomains
spec:
  rules:
  - condition: # This condition applies to the values block.
      expression: "resource.matchTag('ORGANIZATION_ID/environment', 'dev')"
    values:
      allowedValues:
      - PRINCIPAL_SET
  - values:
      allowedValues:
      - PRINCIPAL_SET

Substitua:

  • ORGANIZATION_ID com o ID do recurso da organização em que essa política será definida.
  • PRINCIPAL_SET para identificadores principais do Cloud Identity que você quer permitir, incluindo o ID do recurso da organização. Por exemplo, is:principalSet://iam.googleapis.com/organizations/01234567890123.

    Os IDs de cliente do Google Workspace precisam ser usados para todas as outras identidades que você quer permitir. Por exemplo, is:C03g5e3bc.

Somente as identidades pertencentes ao ID de recurso da organização ou ao domínio do Google Workspace na lista de allowed_values serão permitidas nas políticas do IAM depois que essa política da organização for aplicada. Os grupos e usuários humanos do Google Workspace precisam ser filhos desse recurso da organização ou fazer parte do domínio do Google Workspace, e as contas de serviço do IAM precisam ser filhas de um recurso da organização associado ao referido domínio do Google Workspace.

Por exemplo, se você criou uma política da organização apenas com o ID de cliente do Google Workspace da sua empresa, somente os membros desse domínio podem ser adicionados à política do IAM a partir desse momento.

Exemplo de mensagem de erro

Quando a restrição predefinida iam.allowedPolicyMemberDomains é violada ao tentar adicionar um principal que não está incluído na lista allowed_values, a operação falha e uma mensagem de erro é exibida.

Console

Captura de tela do console

gcloud

ERROR: (gcloud.projects.set-iam-policy) FAILED_PRECONDITION:
One or more users named in the policy do not belong to a permitted customer.

Como recuperar o ID de um recurso de organização

É possível conseguir o ID do recurso da organização usando o console do Google Cloud, a CLI gcloud ou a API Cloud Resource Manager.

Console

Para conferir o ID do recurso da sua organização usando o console do Google Cloud, faça o seguinte:

  1. Acesse o Console do Google Cloud:

    Acesse o console do Google Cloud

  2. No seletor de projetos na parte de cima da página, selecione o recurso da sua organização.
  3. No lado direito, clique em Mais e em Configurações.

A página Configurações mostra o ID do recurso da sua organização.

gcloud

Para encontrar o ID do recurso da organização, execute o seguinte comando:

gcloud organizations list

Esse comando lista todos os recursos da organização aos quais você pertence e os IDs correspondentes.

API

Para encontrar o ID do recurso da sua organização usando a API Cloud Resource Manager, use o método organizations.search(), incluindo uma consulta para seu domínio. Exemplo:

GET https://cloudresourcemanager.googleapis.com/v3/organizations:search{query=domain:altostrat.com}

A resposta contém os metadados do recurso da organização que pertence a altostrat.com, incluindo o ID do recurso da organização.

Depois de ter o ID do recurso da organização, use o identificador correto para o conjunto de participantes que pertencem a ele. Exemplo:

principalSet://iam.googleapis.com/organizations/01234567890123

Para mais informações sobre os identificadores principais do IAM, consulte Identificadores principais.

Como recuperar um ID de cliente do Google Workspace

O ID do cliente do Google Workspace usado pela restrição de domínio pode ser recuperado de duas maneiras:

gcloud

O comando gcloud organizations list pode ser usado para ver todas as organizações em que você tem a permissão resourcemanager.organizations.get:

gcloud organizations list

Esse comando retornará DISPLAY_NAME, ID (ID da organização) e DIRECTORY_CUSTOMER_ID. O ID de cliente do Google Workspace é o DIRECTORY_CUSTOMER_ID.

API

Use a API Directory do Google Workspace para recuperar um ID de cliente do Google Workspace.

Enquanto estiver conectado como administrador do Google Workspace, é possível acessar a documentação do método de API Clientes: get e clicar em Executar. Após a autorização, a resposta mostrará seu ID do cliente.

Como alternativa, use um cliente de API:

  1. Receba um token de acesso do OAuth para o escopo https://www.googleapis.com/auth/admin.directory.customer.readonly.
  2. Execute o seguinte comando para consultar a API do diretório do Google Workspace:

    curl -# -X GET "https://www.googleapis.com/admin/directory/v1/customers/customerKey" \
    -H "Authorization: Bearer $access_token" -H "Content-Type: application/json"
    

Esse comando retornará uma resposta JSON que inclui as informações do cliente. O ID de cliente do Google Workspace é o id.

Configurar exceções para o compartilhamento restrito de domínio

Alguns Google Cloud serviços usam contas de serviço, agentes de serviço e outras contas para realizar ações em seu nome. O compartilhamento restrito de domínio pode impedir que essas contas recebam automaticamente os papéis do IAM necessários, o que pode causar a falha de determinadas ações.

A tabela a seguir lista as ações em Google Cloud que podem ser afetadas pelo compartilhamento restrito de domínio. Ele também lista as contas que precisam receber papéis automaticamente para que essas ações sejam bem-sucedidas.

Se você usa políticas personalizadas da organização ou a restrição gerenciada iam.managed.allowedPolicyMembers para implementar o compartilhamento restrito de domínio, adicione essas contas como exceções à restrição de compartilhamento restrito de domínio. Se você usar a restrição predefinida iam.allowedPolicyMemberDomains para implementar o compartilhamento restrito de domínio, talvez seja necessário forçar o acesso à conta para que essas contas realizem as ações listadas.

Ação Conta
Vincular o Google Analytics 360 ao BigQuery analytics-processing-dev@system.gserviceaccount.com
Compartilhar dados publicamente allUsers e allAuthenticatedUsers
Ativar o coletor de registros do BigQuery para uma conta de faturamento bUNIQUE_ID@gcp-sa-loggingiam.gserviceaccount.com
Ativar a exportação de faturamento para um bucket 509219875288-kscf0cheafmf4f6tp1auij5me8qakbin@developer.gserviceaccount.com
Ativar o registro de acesso ao armazenamento cloud-storage-analytics@google.com
Ativar a API Firebase
  • service-PROJECT_NUMBER@gcp-sa-firebase.iam.gserviceaccount.com
  • firebase-service-account@firebase-sa-management.iam.gserviceaccount.com
Usar o Pub/Sub como um endpoint para um app do Google Chat chat-api-push@system.gserviceaccount.com

Como forçar o acesso à conta

Se você precisar forçar o acesso à conta de um projeto que viola as restrições do domínio, faça o seguinte:

  1. Remova a política da organização que contém a restrição de domínio.

  2. Permita que o projeto acesse a conta.

  3. Implemente a política da organização com a restrição de domínio novamente.

Como alternativa, você pode conceder acesso a um grupo do Google que contém as contas de serviço relevantes:

  1. Crie um grupo do Google no domínio permitido.

  2. Use o painel de administrador do Google Workspace e desative a restrição de domínio para esse grupo.

  3. Adicione a conta de serviço ao grupo.

  4. Conceda acesso ao grupo do Google na política de IAM.