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 G Suite, 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.

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 G Suite, ela afeta todas as identidades que estão nesse domínio. Isso inclui contas de usuário gerenciadas no console do G Suite, mas 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 G Suite podem ser adicionados e removidos da lista allowed_values de uma restrição de domínio. Todos os domínios associados a essa conta do G Suite serão afetados 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 Cloud.
    Acessar a página Políticas da organização
  2. Clique em Selecionar.
  3. Selecione a organização para a qual você quer definir a política.
  4. Clique em Compartilhamento restrito de domínio.
  5. Clique no botão Editar.
  6. Em É aplicável a, selecione Personalizar.
  7. Em Valores da política, selecione Personalizado.
  8. Digite um ID de cliente do G Suite na caixa de texto Valor da política e pressione Enter. É possível inserir vários códigos usando esse passo a passo.
  9. Clique em Salvar. Será exibida uma notificação confirmando que a política foi atualizada.

gcloud

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

gcloud alpha 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: "C03xgje4y"
  allowed_values: "C03g5e3bc"
  allowed_values: "C03t213bc"
  }
}

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

Por exemplo, se você criou uma política da organização apenas com o ID do cliente do G Suite da sua empresa, somente os membros desse domínio poderiam ser adicionados à política do IAM.

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.

Console

Captura de tela do console

gcloud

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

Como recuperar um ID do cliente do G Suite

O ID do cliente do G Suite 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 alpha organizations list

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

API

A API Directory do G Suite pode ser usada para recuperar um ID de cliente do G Suite.

  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 Directory do G Suite:

    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 G Suite é 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 G Suite. Toda conta do G Suite tem um domínio principal e zero ou mais domínios secundários. Todos os domínios associados ao ID de cliente do G Suite estarão sujeitos à restrição.

A aplicação da 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 seus descendentes na hierarquia de recursos.

Para ver exemplos de combinações comuns de domínios e subdomínios do G Suite, 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 G Suite diferente. Cada conta do G Suite 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 G Suite 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.

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

Cloud Composer

No momento, o compartilhamento restrito de domínio do Cloud Composer está na versão Beta. Selecionar esse recurso durante a criação do ambiente ativará automaticamente a API Cloud Composer Beta.

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 o registro de acesso ao armazenamento em um bucket do Cloud Storage que tenha a restrição de domínio obrigatória, 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.

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 G Suite 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.