Restringir identidades com compartilhamento restrito de domínio

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

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

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

Antes de começar

Escolha o método que você vai usar para implementar o compartilhamento restrito ao 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 para aplicar o compartilhamento restrito por 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 usando papéis personalizados ou outros papéis predefinidos.

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 a página 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 que aparece exibe uma lista filtrável de 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ítica permitidos em 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 recurso pai.

  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 Definir o escopo das políticas da organização com tags.

  9. Na seção Parâmetros, configure os membros e os conjuntos de principais a que você quer conceder papéis na organização e clique em Salvar.

  10. Se quiser, para visualizar o efeito da mudança na política da organização antes que ela seja aplicada, clique em Testar mudanças. 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 Testar políticas da organização.

  12. Depois de verificar se a política da organização no modo de teste funciona como esperado, defina a política ativa clicando em Definir política.

gcloud

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

    name: organizations/ORG_ID/policies/iam.managed.allowedPolicyMembers
    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 sua organização do Google Cloud.

    • ALLOWED_MEMBER_1, ALLOWED_MEMBER_2: os membros a quem você quer conceder papéis na organização, por exemplo, user:example-user@example.com.

    • ALLOWED_PRINCIPAL_SET_1, ALLOWED_PRINCIPAL_SET_2: os conjuntos de principais a que você quer conceder papéis na sua organização. Por exemplo, //cloudresourcemanager.googleapis.com/organizations/0123456789012.

    Se quiser, para tornar a política da organização condicional em uma tag, adicione um bloco condition ao rules. 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 Definir o escopo das políticas 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 para o arquivo YAML da política da organização.

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

Para saber como simular a política antes de aplicá-la, consulte Testar mudanças 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 for compatível com 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 sua organização do Google Cloud.

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

  • ALLOWED_MEMBER_1, ALLOWED_MEMBER_2: os membros a quem você quer conceder papéis na organização, por exemplo, user:example-user@example.com.

  • ALLOWED_PRINCIPAL_SET_1, ALLOWED_PRINCIPAL_SET_2: os conjuntos de principais a que você quer conceder papéis na sua organização. Por exemplo, //cloudresourcemanager.googleapis.com/organizations/0123456789012.

Se quiser, para tornar a política da organização condicional em uma tag, adicione um bloco condition ao rules. 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 Definir o escopo das políticas da organização com tags.

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

Para saber como simular a política antes de aplicá-la, consulte Testar mudanças na política da organização com o Simulador de política.

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

  1. Crie uma restrição personalizada que limite quais principais podem receber papéis na sua organização:

    1. Use a função CEL memberInPrincipalSet com o conjunto de principais da organização para restringir as concessões de papéis aos membros da organização. Para saber como encontrar o ID da organização, consulte Como recuperar um conjunto de principais da organização.

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

      name: organizations/ORG_ID/customConstraints/custom.allowInternalIdentitiesOnly
      resourceTypes: iam.googleapis.com/AllowPolicy
      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. Se quiser, 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 papéis a membros da sua organização e a admin@example.com:

      name: organizations/ORG_ID/customConstraints/custom.allowInternalIdentitiesOnly
      resourceTypes: iam.googleapis.com/AllowPolicy
      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:

    Console

    Para criar uma restrição personalizada, faça o seguinte:

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

      Acessar a página 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. Clique em Restrição personalizada.
    4. Na caixa Nome de exibição, insira um nome legível por humanos para a restrição. Esse nome é usado em mensagens de erro e pode ser usado para identificação e depuração. Não use informações de identificação pessoal (PII) ou dados sensíveis em nomes de exibição, porque esse nome pode ser exposto em mensagens de erro. Esse campo pode conter até 200 caracteres.
    5. Na caixa ID da restrição, insira o ID que você quer para a nova restrição personalizada. Uma restrição personalizada só pode conter letras (incluindo maiúsculas e minúsculas) ou números, por exemplo, custom.allowInternalIdentitiesOnly. Esse campo pode ter até 70 caracteres, sem contar o prefixo (custom.), por exemplo, organizations/123456789/customConstraints/custom. Não inclua PII ou dados sensíveis no ID da restrição. Eles podem ser expostos em mensagens de erro.
    6. Na caixa Descrição, insira uma descrição legível por humanos da restrição. Essa descrição é usada como uma mensagem de erro quando a política é violada. Inclua detalhes sobre por que a violação da política ocorreu e como resolvê-la. Não inclua PII ou dados sensíveis na descrição, porque eles podem ser expostos em mensagens de erro. Esse campo pode conter até 2.000 caracteres.
    7. Na caixa Tipo de recurso, selecione o nome do recurso REST do Google Cloud que contém o objeto e o campo que você quer restringir. Por exemplo, container.googleapis.com/Cluster. A maioria dos tipos de recursos aceita até 20 restrições personalizadas. Se você tentar criar mais restrições personalizadas, a operação vai falhar.
    8. Essa restrição só pode ser aplicada no método REST CREATE.
    9. Para ver os métodos compatíveis para cada serviço, encontre o serviço em Serviços que aceitam restrições personalizadas.

    10. Para definir uma condição, clique em Editar condição.
      1. No painel Adicionar condição, crie uma condição de CEL que se refira a um recurso de serviço compatível, por exemplo, resource.management.autoUpgrade == false. Esse campo pode conter até 1.000 caracteres. Para detalhes sobre o uso da CEL, consulte Common Expression Language. Para mais informações sobre os recursos de serviço que você pode usar nas restrições personalizadas, consulte Serviços compatíveis com restrição personalizada.
      2. Clique em Salvar.
    11. Em Ação, selecione se você quer permitir ou negar o método avaliado quando a condição é atendida.
    12. A ação de negação significa que a operação para criar ou atualizar o recurso será bloqueada se a condição for avaliada como verdadeira.

      A ação de permissão significa que a operação para criar ou atualizar o recurso só é permitida se a condição for avaliada como verdadeira. Todos os outros casos, exceto os listados explicitamente na condição, estão bloqueados.

    13. Clique em Criar restrição.
    14. Quando você digita um valor em cada campo, a configuração YAML equivalente à restrição personalizada é exibida à direita.

    gcloud

    1. Para criar uma restrição personalizada, crie um arquivo YAML com o seguinte formato:
    2. name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
      resourceTypes: RESOURCE_NAME
      methodTypes:
        - CREATE
      condition: "CONDITION"
      actionType: ACTION
      displayName: DISPLAY_NAME
      description: DESCRIPTION

      Substitua:

      • ORGANIZATION_ID: o ID da organização, como 123456789.
      • CONSTRAINT_NAME: o nome da nova restrição personalizada. Uma restrição personalizada só pode conter letras (incluindo maiúsculas e minúsculas) ou números, por exemplo, custom.allowInternalIdentitiesOnly. Esse campo pode ter até 70 caracteres, sem contar o prefixo (custom.), por exemplo, organizations/123456789/customConstraints/custom. Não inclua PII ou dados sensíveis no ID da restrição, porque eles podem ser expostos em mensagens de erro.
      • RESOURCE_NAME: o nome totalmente qualificado do recurso do Google Cloud que contém o objeto e o campo que você quer restringir. Por exemplo, iam.googleapis.com/AllowPolicy. A maioria dos tipos de recursos aceita até 20 restrições personalizadas. Se você tentar criar mais restrições personalizadas, a operação vai falhar.
      • methodTypes: os métodos REST em que a restrição é aplicada. Só pode ser CREATE.
      • Para ver os métodos compatíveis com cada serviço, encontre o serviço em Serviços que aceitam restrições personalizadas.

      • CONDITION: uma condição de CEL gravada em uma representação de um recurso de serviço compatível. Esse campo pode conter até 1.000 caracteres. Por exemplo, "resource.bindings.all( binding, binding.members.all(member, MemberInPrincipalSet(member, ['//cloudresourcemanager.googleapis.com/organizations/ORG_ID']) ) )".
      • Para mais informações sobre os recursos disponíveis para a gravação de condições, consulte Recursos compatíveis.

      • ACTION: a ação a ser realizada se o condition for atendido. Só pode ser ALLOW.
      • A ação de permissão significa que, se a condição for avaliada como verdadeira, a operação para criar ou atualizar o recurso será permitida. Isso também significa que todos os outros casos, exceto o listado explicitamente na condição, estão bloqueados.

      • DISPLAY_NAME: um nome legível por humanos para a restrição. Esse nome é usado em mensagens de erro e pode ser usado para identificação e depuração. Não use PII ou dados sensíveis em nomes de exibição, porque esse nome pode ser exposto em mensagens de erro. Esse campo pode conter até 200 caracteres.
      • DESCRIPTION: uma descrição legível da restrição a ser exibida como uma mensagem de erro quando a política for violada. Esse campo pode conter até 2.000 caracteres.
    3. Depois de criar o arquivo YAML para uma nova restrição personalizada, faça a configuração necessária 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:
    4. 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 dessa operação, as restrições personalizadas vão estar disponíveis como políticas da organização na lista de políticas da organização do Google Cloud .

    5. Para verificar se a restrição personalizada existe, use o comando gcloud org-policies list-custom-constraints:
    6. 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, crie uma política da organização que faça referência a ela e aplique essa política a um recurso do Google Cloud .

    Console

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

      Acessar a página 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 uma restrição para acessar a página Detalhes da política associada.
    4. Para configurar 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 recurso pai.
    6. Clique em Adicionar regra.
    7. Na seção Aplicação, selecione se essa política da organização é aplicada ou não.
    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 para que a política seja salva. Para mais informações, consulte Definir o escopo das políticas da organização com tags.
    9. Clique em Testar mudanças 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 aplicar a política da organização no modo de teste, clique em Definir política de simulação. Para mais informações, consulte Testar políticas da organização.
    11. Depois de verificar se a política da organização no modo de teste funciona como esperado, defina a política ativa clicando em Definir política.

    gcloud

    1. Para criar uma política da organização com regras booleanas, crie um arquivo YAML para a política que faça referência à restrição:
    2. name: projects/PROJECT_ID/policies/CONSTRAINT_NAME
      spec:
        rules:
        - enforce: true
      
      dryRunSpec:
        rules:
        - enforce: true

      Substitua:

      • PROJECT_ID: o projeto em que você quer aplicar a restrição.
      • CONSTRAINT_NAME: o nome definido para a restrição personalizada. Por exemplo, custom.allowInternalIdentitiesOnly.
    3. Para aplicar a política da organização no modo de teste, execute o seguinte comando com a flag dryRunSpec:
    4. gcloud org-policies set-policy POLICY_PATH --update-mask=dryRunSpec

      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.

    5. Depois de verificar se a política da organização no modo de teste funciona como esperado, defina a política ativa com o comando org-policies set-policy e a flag spec:
    6. 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. A política leva até 15 minutos para entrar em vigor.

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

A restrição de domínio é uma restrição gerenciada legada com a lista constraint_type. É possível especificar um conjunto de principais da organização ou um ID de cliente do Google Workspace na lista allowed_values de uma restrição de domínio. Para mais informações, consulte Conjunto de principais da organização x ID de cliente do Google Workspace.

O conjunto de principais da organização e o ID do Google Workspace não são permitidos automaticamente. Para permitir que os principais da sua organização acessem recursos nela, o conjunto de principais da organização ou o ID do Google Workspace precisa ser incluído como um conjunto de principais permitido.

A restrição de domínio não aceita a negação de valores, e uma política da organização não pode ser salva com IDs na lista denied_values.

É possível criar uma política da organização que aplique a restrição de domínio condicional a qualquer recurso incluído na lista de recursos compatíveis. 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 a página Políticas da organização

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

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

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

  5. Em Aplica-se a, selecione Substituir política do recurso pai.

  6. Clique em Adicionar regra.

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

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

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

  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. Para tornar a restrição de domínio condicional a 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 na 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 Google Cloud CLI. 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:

Somente as identidades especificadas na lista de allowed_values serão permitidas em políticas de permissão após a aplicação dessa política da organização. Para serem permitidos, os principais precisam estar no conjunto de principais da organização especificado ou fazer parte de um domínio especificado do Google Workspace.

Por exemplo, se você criou uma política da organização que permitia apenas o ID de cliente do domínio do Google Workspace da sua empresa, somente os principais associados a esse domínio poderiam ser adicionados à política de permissão a partir desse momento.

Exemplo de mensagem de erro

Quando a restrição gerenciada legada 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 um conjunto de principais da 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 conseguir o ID do recurso da 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 organização.
  3. No lado direito, clique em Mais e em Configurações.

A página Configurações exibe o ID do recurso da 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 a que você pertence e os IDs correspondentes.

API

Para encontrar o ID do recurso da 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, que inclui 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 principais que pertencem a ele. Exemplo:

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

Inserir o conjunto de principais da organização permite que os seguintes principais recebam papéis na sua organização:

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

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

Como recuperar um ID de cliente do Google Workspace

Ao inserir o ID de cliente do Google Workspace, os seguintes principais 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 colaboradores na sua organização
  • Todas as contas de serviço e pools de Identidade da carga de trabalho em qualquer projeto da organização
  • Todos os agentes de serviço associados a recursos na sua organização.

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 serviços do Google Cloud usam contas de serviço, agentes de serviço e outras contas para realizar ações em seu nome. O compartilhamento com restrição de domínio pode impedir que essas contas recebam automaticamente os papéis do IAM necessários, o que pode causar falhas em determinadas ações.

A tabela a seguir lista as ações no Google Cloud que podem ser afetadas pelo compartilhamento restrito ao 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. Para adicionar uma conta como exceção, adicione o identificador principal da conta à lista de membros permitidos.

Se você usar a restrição gerenciada legada 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 Identificador do principal
Ativar o coletor de registros do BigQuery para uma conta de faturamento serviceAccount:bUNIQUE_ID@gcp-sa-logging.iam.gserviceaccount.com
Ativar o registro de acesso ao armazenamento serviceAccount:cloud-storage-analytics@google.com
Usar o Pub/Sub como um endpoint para um app do Google Chat serviceAccount:chat-api-push@system.gserviceaccount.com
Usar o Pub/Sub para receber notificações do desenvolvedor em tempo real do Google Play serviceAccount:google-play-developer-notifications@system.gserviceaccount.com
Usar o Pub/Sub para receber alertas de orçamento do Cloud Billing serviceAccount:billing-budget-alert@system.gserviceaccount.com
Usar o Pub/Sub para receber alertas de anomalia de custo do Cloud Billing serviceAccount:cloud-billing-finops-alert@system.gserviceaccount.com
Usar um URL assinado com o Cloud CDN serviceAccount:service-PROJECT_NUMBER@cloud-cdn-fill.iam.gserviceaccount.com
Autenticação de origem particular com o Cloud CDN serviceAccount:service-PROJECT_NUMBER@https-lb.iam.gserviceaccount.com

Serviços públicos do Cloud Run

O Cloud Run permite tornar os serviços públicos. No entanto, se você implementar o compartilhamento restrito de domínio, os usuários de fora da sua organização não poderão acessar os serviços públicos do Cloud Run.

Para permitir que os usuários acessem serviços públicos do Cloud Run, é necessário desativar a verificação do IAM do invocador do Cloud Run para serviços do Cloud Run. Para mais informações, consulte Desativar o invocador do Cloud Run para serviços.

Compartilhar outros dados publicamente

Se você usa políticas personalizadas da organização para implementar o compartilhamento restrito por domínio, adicione uma exceção à política da organização para permitir o compartilhamento de dados públicos.

O compartilhamento público de dados envolve os principais especiais allUsers e allAuthenticatedUsers. Se você precisar compartilhar dados publicamente ao usar o compartilhamento restrito de domínio, adicione uma exceção para esses principais. Só é possível adicionar exceções se você estiver usando políticas personalizadas da organização para implementar o compartilhamento restrito de domínio.

Para adicionar uma exceção para allUsers e allAuthenticatedUsers, crie uma política da organização personalizada condicional com base em tags de recurso.

  1. Crie uma chave de tag no recurso da organização.

    gcloud resource-manager tags keys create allUsersIngress \
      --parent=organizations/ORGANIZATION_ID
    

    Substitua ORGANIZATION_ID pelo ID da organização.

  2. Crie um valor de tag para a chave de tag que você criou.

    gcloud resource-manager tags values create True \
    --parent=ORGANIZATION_ID/allUsersIngress \
    --description="Allow allUsers to access internal Cloud Run services"
    
  3. Anexe a tag aos recursos que você quer compartilhar publicamente.

  4. Crie uma restrição personalizada usando a função CEL memberSubjectMatches na expressão de condição da restrição.

    Por exemplo, a expressão de condição a seguir restringe as concessões de papéis a membros na sua organização, allUsers e allAuthenticatedUsers:

    name: organizations/ORGANIZATION_ID/customConstraints/custom.allowInternalAndSpecialIdentitiesOnly
    resourceTypes: iam.googleapis.com/AllowPolicy
    methodTypes:
      - CREATE
      - UPDATE
    condition:
      "resource.bindings.all(
        binding,
        binding.members.all(member,
          (
            MemberInPrincipalSet(member, ['//cloudresourcemanager.googleapis.com/organizations/ORG_ID'])
            ||
            MemberSubjectMatches(member, ['allUsers', 'allAuthenticatedUsers'])
          )
        )
      )"
    actionType: ALLOW
    displayName: Only allow organization members, allusers, and allAuthenticatedUsers to be granted roles
    
  5. Crie uma política da organização que aplique a restrição personalizada.

    name: organizations/ORGANIZATION_ID/policies/iam.allowedPolicyMemberDomains
    spec:
      rules:
      - allowAll: true
        condition:
          expression: resource.matchTag("ORGANIZATION_ID/allUsersIngress", "True")
          title: allowAllUsersIngress
    
  6. Aplique a política da organização.

    gcloud org-policies set-policy POLICY_PATH
    

    Substitua POLICY_PATH pelo caminho e nome de arquivo da política da organização.

A política da organização condicional permite conceder permissões à identidade allUsers em recursos marcados com allUsersIngress: true.

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 permissão.