Como restringir identidades por domínio

O Resource Manager fornece uma restrição que pode ser usada nas políticas da organização para limitar o compartilhamento de recursos com base no domínio. Essa restrição limita o conjunto de identidades que podem ser utilizadas nas políticas de gerenciamento de identidade e acesso.

As políticas da organização podem aplicar essa restrição para limitar o compartilhamento de recursos a um conjunto específico de um ou mais domínios do Google Workspace, e as exceções podem ser concedidas por pasta ou por projeto. Para mais informações sobre como adicionar exceções, consulte Modificar a política da organização para um projeto.

A restrição de domínio não é retroativa. Depois que ela for definida, essa limitação será aplicada às alterações de política do IAM feitas a partir de então, e não a mudanças anteriores. A restrição de domínio será aplicada a todas as alterações na política do IAM, incluindo as alterações feitas por um agente de serviços em resposta a outra ação. Por exemplo, se você tiver um serviço automatizado que importa conjuntos de dados do BigQuery, um agente de serviço do BigQuery fará alterações na política do IAM no conjunto de dados recém-criado. Essa ação será restrita à restrição de domínio e bloqueada.

Por exemplo, considere duas organizações relacionadas: examplepetstore.com e altostrat.com. Você concedeu à identidade do examplepetstore.com um papel do IAM em altostrat.com. Depois, decidiu restringir as identidades por domínio e implementou uma política da organização com a restrição de domínio em altostrat.com. Nesse caso, as identidades existentes de examplepetstore.com não perderão o acesso em altostrat.com. A partir disso, só será possível conceder papéis do Cloud IAM às identidades do domínio altostrat.com.

A restrição de domínio é baseada na limitação da lista iam.allowedPolicyMemberDomains.

Quando a restrição é definida em um domínio do Google Workspace, ela afeta todas as identidades que estão nesse domínio. Isso inclui contas de usuário gerenciadas no console do Google Workspace, e não no Console do Google Cloud.

Como definir a política da organização

A restrição de domínio é um tipo de restrição de lista. Os IDs de cliente do Google Workspace podem ser adicionados e removidos da lista allowed_values de uma restrição de domínio. A restrição de domínio não aceita valores de negação, 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 listada em 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.

Você precisa ter permissão para modificar as políticas da organização para definir essa restrição. Por exemplo, o papel orgpolicy.policyAdmin tem permissão para definir restrições da política da organização. O papel resourcemanager.organizationAdmin tem permissão para adicionar um usuário como administrador da Política da Organização. Consulte a página Como usar restrições para saber como gerenciar políticas no nível da organização.

Console

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

  1. Acesse a página "Políticas da organização" no Console do Google Cloud.
    Acessar a página Políticas da organização
  2. Selecione o Seletor de projetos na parte superior da página.
  3. No Seletor de projetos, selecione a organização em que você quer definir a política.
  4. Em Políticas da organização, selecione Compartilhamento restrito de domínio na lista de restrições.
  5. Clique em Editar.
  6. Em É aplicável a, selecione Personalizar.
  7. Clique em Adicionar regra.
  8. Em Valores de política, selecione se esta política da organização deve permitir todos os valores ou especifique um conjunto personalizado de valores. A restrição de domínio não é compatível com Negar tudo.
  9. Em Tipo de política, selecione Permitir. A restrição de domínio não aceita valores Negar.
  10. Em Valores personalizados, insira um ID de cliente do Google Workspace na caixa de texto. Se você quiser adicionar vários IDs, clique em Novo valor da política para criar uma caixa de texto adicional.
  11. Clique em Concluído.
  12. Clique em Save. Será exibida uma notificação confirmando que a política foi atualizada.

gcloud

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

gcloud resource-manager org-policies allow \
    --organization 'ORGANIZATION_ID' \
    iam.allowedPolicyMemberDomains 'DOMAIN_ID_1' \
    'DOMAIN_ID_2'

Em que:

Para saber mais sobre o uso de restrições nas políticas da organização, consulte Usando restrições.

Exemplo de política da organização

O snippet de código a seguir mostra uma política da organização que inclui a restrição de domínio:

resource: "organizations/842463781240"
policy {
  constraint: "constraints/iam.allowedPolicyMemberDomains"
  etag: "\a\005L\252\122\321\946\334"
  list_policy {
  allowed_values: "is:C03xgje4y"
  allowed_values: "is:C03g5e3bc"
  allowed_values: "is:C03t213bc"
  }
}

Os allowed_values são IDs de cliente do Google Workspace, como C03xgje4y. Somente as identidades pertencentes a um 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 fazer parte desse domínio, 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

Se você violar a restrição da organização de restrição de domínio ao tentar adicionar um membro que não esteja na lista allowed_values, a operação falhará e uma mensagem de erro será exibida.

gcloud

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

Console

Captura de tela do console

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.

Como restringir subdomínios

A restrição de domínio funciona limitando o acesso a todos os domínios associados a um determinado ID de cliente do Google Workspace. Toda conta do Google Workspace tem um domínio principal e zero ou mais domínios secundários. Todos os domínios associados ao ID de cliente do Google Workspace estarão sujeitos à restrição.

Aplicar a restrição de domínio a um recurso controla o domínio principal e todos os domínios secundários que podem acessar esse recurso e os descendentes dele na hierarquia de recursos.

Para ver exemplos de combinações comuns de domínio e subdomínio do Google Workspace, consulte a tabela abaixo:

Domínio principal Subdomínio Restrição de domínio O user@sub.domain.com é permitido?
domain.com nenhum Permitir: domain.com Não
domain.com sub.domain.com Permitir: domain.com Sim
domain.com sub.domain.com Permitir: sub.domain.com Sim
sub.domain.com domain.com Permitir: sub.domain.com Sim
sub.domain.com nenhum Permitir: sub.domain.com Sim

Para diferenciar o acesso à restrição de domínio entre dois domínios, cada domínio precisa estar associado a uma conta do Google Workspace diferente. Cada conta do Google Workspace está associada a um nó da organização e pode ter suas próprias políticas aplicadas. Isso permite que você associe domain.com a uma conta do Google Workspace e sub.domain.com a outra para um controle de acesso mais granular. Para mais informações, consulte Como gerenciar múltiplas organizações.

Solução de problemas conhecidos

As políticas da organização não são retroativas. Se for necessário forçar uma alteração na hierarquia de recursos que viole uma restrição aplicada, você poderá desativar a política, fazer a alteração e depois ativá-la novamente.

Nas seções a seguir, descrevemos problemas conhecidos que podem ocorrer com os serviços quando essa restrição é aplicada.

Compartilhamento de dados públicos

Alguns produtos do Google Cloud, como BigQuery, Cloud Functions, Cloud Run, Cloud Storage e Pub/Sub, aceitam o compartilhamento de dados públicos. Aplicar a restrição de compartilhamento restrito de domínio em uma política da organização impedirá que dados públicos sejam compartilhados.

Para compartilhar dados publicamente, desative a restrição de compartilhamento de domínio temporariamente para o recurso do projeto onde as informações a serem compartilhadas estão armazenadas. Depois de compartilhar o recurso, será possível reativar a restrição de compartilhamento restrito de domínio.

Coletor de registros do BigQuery para uma conta de faturamento

A conta de serviço usada pelo coletor de registros do BigQuery para contas de faturamento (formato: b*@*.iam.gserviceaccount.com) é tratada como externa e bloqueada pela restrição de compartilhamento restrito de domínio em uma política da organização. Para conceder a essa conta de serviço um papel em um conjunto de dados do BigQuery em um projeto que tenha a restrição de domínio aplicada:

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

    1. Se a restrição for aplicada em uma política da organização, nesta organização e no projeto, defina a política da organização que contém a restrição de domínio no projeto para permitir todos os valores.

    2. Se essa restrição for aplicada em uma política da organização na organização pai e herdada do projeto, adicione a política da organização que contém a restrição de domínio ao projeto, com todos os valores permitidos.

  2. Conceda à conta de serviço correspondente (formato: b*@*.iam.gserviceaccount.com) o papel do BigQuery indicado durante o processo de criação do coletor.

  3. Inverta as alterações feitas na política da organização com a restrição de domínio no projeto.

Conta de serviço de exportação do Cloud Billing

Ativar a exportação do faturamento para um bucket com essa restrição ativada provavelmente causará uma falha. Não utilize essa restrição em buckets usados para exportação de faturamento.

O endereço de e-mail da conta de serviço de exportação do Cloud Billing é: 509219875288-kscf0cheafmf4f6tp1auij5me8qakbin@developer.gserviceaccount.com

Ativar o registro de acesso ao armazenamento

Se ativada, a restrição de domínio bloqueará qualquer domínio que não seja especificamente permitido pela política da organização. Isso impedirá que você conceda acesso às contas de serviço do Google. Para configurar a geração de registros de acesso ao armazenamento em um bucket do Cloud Storage com a restrição de domínio aplicada, faça o seguinte:

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

  2. Conceda a cloud-storage-analytics@google.com acesso WRITE a esse bucket.

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

Ativar a API Firebase

Se ativada, a restrição de domínio bloqueará as contas de serviço que não são permitidas na política da organização. Isso impossibilita a ativação da API Firebase, que requer contas de serviço externas durante o processo de ativação da API. Depois que a API for ativada, será possível aplicar com segurança a restrição de domínio sem interferir na função da API Firebase. Para ativar a API Firebase:

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

  2. Ative a API Firebase Management.

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

Grupos do Google

Os grupos do Google criados em um domínio permitido sempre podem receber papéis na política do IAM quando a restrição de domínio é aplicada, mesmo que o grupo contenha membros de fora desse domínio.

Para garantir que os administradores do projeto não possam ignorar a restrição de domínio, o administrador do Google Workspace precisa garantir que os proprietários do grupo não possam permitir participantes de fora do domínio na painel do administrador do Google Workspace.

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.

Use o Pub/Sub como um endpoint para um app do Google Chat.

Se você estiver tentando conceder direitos de publicação no seu tópico à conta de serviço da API Google Chat, talvez seja bloqueado se a restrição de compartilhamento de domínio restrito estiver ativada. Siga o processo para forçar o acesso à conta.