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
Crie uma restrição personalizada que restrinja quais principais podem receber funções na sua organização:
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
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
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 comandogcloud org-policies set-custom-constraint
: Substituagcloud org-policies set-custom-constraint CONSTRAINT_PATH
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 comandogcloud org-policies list-custom-constraints
: Substituagcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
ORGANIZATION_ID
pelo ID do recurso da organização. Para mais informações, consulte Como visualizar as políticas da organização.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
- No console do Google Cloud, acesse a página Políticas da organização.
- No seletor de projetos, selecione o projeto em que você quer definir a política da organização.
- Na lista da página Políticas da organização, selecione a restrição para acessar a página Detalhes da política dela.
- Para personalizar a política da organização nesse recurso, clique em Gerenciar política.
- Na página Editar política, selecione Substituir a política do editor principal.
- Clique em Adicionar uma regra.
- Na seção Aplicação, selecione se a aplicação dessa política da organização está ativada ou desativada.
- 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.
- 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.
- 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
No console do Google Cloud, acesse a página Políticas da organização.
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.
Na lista, selecione a restrição gerenciada Restringir membros de políticas permitidas nas políticas de permissão do IAM.
Na página Detalhes da política, clique em Gerenciar política.
Na página Editar política, selecione Substituir a política do editor principal.
Selecione Adicionar uma regra e atualize a regra da política da organização:
Em Aplicação, selecione Ativada.
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.
Na seção Parâmetros, configure os membros e conjuntos principais que podem receber funções na sua organização e clique em Salvar.
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.
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.
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
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.Defina a política com o comando
org-policies set-policy
e a flagspec
: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:
No console do Google Cloud, acesse a página Políticas da organização.
No seletor de projetos, selecione o recurso da organização em que você quer definir a política.
Na página Políticas da organização, selecione Compartilhamento restrito do domínio na lista de restrições.
Na página Detalhes da política, clique em Gerenciar política.
Em Aplicável a, selecione Substituir política do editor principal.
Clique em Adicionar uma regra.
Em Valores da política, selecione "Personalizado".
Em Tipo de política, selecione Permitir.
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.
Se você quiser adicionar vários IDs, clique em Novo valor da política para criar outro campo.
Clique em Concluído.
Se quiser, para tornar a restrição de restrição de domínio condicional em uma tag, clique em Adicionar condição.
No campo Título, insira um nome para a condição.
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.
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.
No menu Tipo de condição da guia Criador de condições, selecione Tag.
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.
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.
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.
É possível excluir uma expressão clicando no X grande à direita dos campos de condição.
Quando terminar de editar as condições, clique em Salvar.
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
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:
- Acesse o Console do Google Cloud:
- No seletor de projetos na parte de cima da página, selecione o recurso da sua organização.
- 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:
- Receba um token de acesso do OAuth para o escopo
https://www.googleapis.com/auth/admin.directory.customer.readonly
. 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 |
|
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:
Remova a política da organização que contém a restrição de domínio.
Permita que o projeto acesse a conta.
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:
Crie um grupo do Google no domínio permitido.
Use o painel de administrador do Google Workspace e desative a restrição de domínio para esse grupo.
Adicione a conta de serviço ao grupo.
Conceda acesso ao grupo do Google na política de IAM.