A partilha restrita ao domínio permite-lhe limitar a partilha de recursos com base num domínio ou num recurso da organização. Quando a partilha restrita ao domínio está ativa, só é possível conceder funções do IAM na sua Google Cloud organização a principais que pertencem a domínios ou organizações permitidos.
Existem três tipos de políticas da organização que pode usar para restringir identidades por domínio:
- A restrição gerida por
iam.managed.allowedPolicyMembers
- Políticas da organização personalizadas que fazem referência ao recurso
iam.googleapis.com/AllowPolicy
- A restrição gerida antiga
iam.allowedPolicyMemberDomains
Antes de começar
Escolha o método que vai usar para implementar a partilha restrita ao domínio. Para saber mais sobre as vantagens e as desvantagens de cada método, consulte o artigo Métodos para restringir a partilha por domínio.
Funções necessárias
Para obter as autorizações de que
precisa para aplicar a partilha restrita ao domínio,
peça ao seu administrador para lhe conceder a função de IAM de
administrador da política da organização (roles/orgpolicy.policyAdmin
)
na organização.
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
Use a restrição iam.managed.allowedPolicyMembers
para implementar a partilha restrita ao domínio
Consola
Na Google Cloud consola, aceda à página Políticas de organização.
No seletor de projetos, selecione o projeto, a pasta ou a organização para os quais quer editar a política de organização. A página Políticas da organização apresentada mostra uma lista filtrável de restrições da política da organização que estão disponíveis para este recurso.
Na lista, selecione a restrição gerida Restringir membros da política permitidos nas políticas de autorização do IAM.
Na página Detalhes da política, clique em Gerir política.
Na página Editar política, selecione Substituir política do elemento principal.
Selecione Adicionar uma regra e, em seguida, atualize a regra da política da organização:
Em Aplicação, selecione Ativar.
Opcionalmente, para tornar a política da organização condicional a uma etiqueta, clique em Adicionar condição. Se adicionar uma regra condicional a uma política da organização, tem de adicionar, pelo menos, uma regra incondicional ou não é possível guardar a política. Para mais detalhes, consulte o artigo Definir uma política da organização com etiquetas.
Na secção Parâmetros, configure os conjuntos de membros e principais que devem poder receber funções na sua organização e, de seguida, clique em Guardar.
Opcionalmente, para pré-visualizar o efeito da alteração da política da organização antes de ser aplicada, clique em Testar alterações. Para mais informações sobre como testar alterações à política de organização, consulte o artigo Teste alterações à política de organização com o simulador de políticas.
Para aplicar a política da organização no modo de execução de ensaio, clique em Definir política de execução de ensaio. Para mais informações, consulte o artigo Crie uma política de organização no modo de teste.
Depois de verificar se a política da organização no modo de teste funciona como pretendido, defina a política ativa clicando em Definir política.
gcloud
Crie um ficheiro 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 o seguinte:
ORG_ID
: o ID numérico da sua organização Google Cloud.CONSTRAINT_NAME
: o nome da restrição que quer definir.ALLOWED_MEMBER_1
,ALLOWED_MEMBER_2
: os membros aos quais devem ser atribuídos papéis na sua organização. Por exemplo,user:[email protected]
.ALLOWED_PRINCIPAL_SET_1
,ALLOWED_PRINCIPAL_SET_2
: Os conjuntos de principais que devem poder receber funções na sua organização. Por exemplo,//cloudresourcemanager.googleapis.com/organizations/0123456789012
.
Opcionalmente, para tornar a política da organização condicional a uma etiqueta, adicione um bloco
condition
aorules
. Se adicionar uma regra condicional a uma política da organização, tem de adicionar, pelo menos, uma regra incondicional. Caso contrário, não é possível guardar a política. Para mais detalhes, consulte o artigo Definir uma política da organização com etiquetas.Defina a política com o comando
org-policies set-policy
e o sinalizadorspec
:gcloud org-policies set-policy POLICY_PATH \ --update-mask=spec
Substitua
POLICY_PATH
pelo caminho completo para o ficheiro YAML da política da organização.
Para saber como testar a política no modo de teste antes de a aplicar, consulte o artigo Crie uma política de organização no modo de teste.
Para saber como simular a política antes de a aplicar, consulte o artigo Teste as alterações à política da organização com o simulador de políticas
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 do pedido contém a definição de uma política de organização.
Se esta restrição não suportar parâmetros, omita o bloco parameters
abaixo de 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 o seguinte:
ORG_ID
: o ID numérico da sua organização Google Cloud.CONSTRAINT_NAME
: o nome da restrição que quer definir.ALLOWED_MEMBER_1
,ALLOWED_MEMBER_2
: os membros aos quais devem ser atribuídos papéis na sua organização. Por exemplo,user:[email protected]
.ALLOWED_PRINCIPAL_SET_1
,ALLOWED_PRINCIPAL_SET_2
: Os conjuntos de principais que devem poder receber funções na sua organização. Por exemplo,//cloudresourcemanager.googleapis.com/organizations/0123456789012
.
Opcionalmente, para tornar a política da organização condicional a uma etiqueta, adicione um bloco condition
ao rules
. Se adicionar uma regra condicional a uma política da organização, tem de adicionar, pelo menos, uma regra incondicional. Caso contrário, não é possível guardar a política. Para mais detalhes, consulte o artigo
Definir uma política da organização com etiquetas.
Para saber como testar a política no modo de teste antes de a aplicar, consulte o artigo Crie uma política de organização no modo de teste.
Para saber como simular a política antes de a aplicar, consulte o artigo Teste as alterações à política da organização com o simulador de políticas
Use políticas da organização personalizadas para implementar a partilha restrita a domínios
Crie uma restrição personalizada que restrinja os responsáveis que podem receber funções na sua organização:
Use a função CEL
memberInPrincipalSet
com o principal da sua organização definido para restringir as concessões de funções a membros da sua organização. Para saber como encontrar o ID da sua organização, consulte o artigo Obter um ID do recurso de organização.Por exemplo, a seguinte restrição limita as concessões de funções a membros da sua organização:
name: organizations/ORG_ID/customConstraints/custom.allowInternalIdentitiesOnly 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 funções CEL adicionais, unidas com operadores lógicos (
&&
,||
ou!
). Pode adicionar qualquer uma das seguintes funções:Por exemplo, a seguinte restrição limita as concessões de funções aos membros da sua organização e a
[email protected]
:name: organizations/ORG_ID/customConstraints/custom.allowInternalIdentitiesOnly methodTypes: - CREATE - UPDATE condition: "resource.bindings.all( binding, binding.members.all(member, ( MemberInPrincipalSet(member, ['//cloudresourcemanager.googleapis.com/organizations/ORG_ID']) || MemberSubjectMatches(member, ['user:[email protected]']) ) ) )" actionType: ALLOW displayName: Only allow organization members and service agents to be granted roles
Configure a restrição personalizada:
Depois de criar o ficheiro YAML para uma nova restrição personalizada, tem de o configurar para o disponibilizar para as políticas da organização na sua 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 para o seu ficheiro de restrições personalizado. Por exemplo,/home/user/customconstraint.yaml
. Após a conclusão, as restrições personalizadas ficam 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 sua organização. Para mais informações, consulte o artigo Ver políticas da organização.Aplique a política da organização personalizada:
Pode aplicar uma restrição criando uma política da organização que a referencie e, em seguida, aplicando essa política da organização a um Google Cloud recurso.Consola
- Na Google Cloud consola, aceda à página Políticas de organização.
- No seletor de projetos, selecione o projeto para o qual quer definir a política de organização.
- Na lista da página Políticas da organização, selecione a restrição para ver a página Detalhes da política dessa restrição.
- Para configurar a política da organização para este recurso, clique em Gerir política.
- Na página Editar política, selecione Substituir política do elemento principal.
- Clique em Adicionar regra.
- Na secção Aplicação, selecione se a aplicação desta política organizacional está ativada ou desativada.
- Opcional: para tornar a política de organização condicional a uma etiqueta, clique em Adicionar condição. Tenha em atenção que, se adicionar uma regra condicional a uma política da organização, tem de adicionar, pelo menos, uma regra incondicional. Caso contrário, não é possível guardar a política. Para mais informações, consulte o artigo Definir uma política de organização com etiquetas.
- Clique em Testar alterações para simular o efeito da política da organização. A simulação de políticas não está disponível para restrições geridas antigas. Para mais informações, consulte o artigo Teste as alterações à política da organização com o simulador de políticas.
- Para concluir e aplicar a política da organização, clique em Definir política. A política demora até 15 minutos a entrar em vigor.
gcloud
Para criar uma política da organização com regras booleanas, crie um ficheiro YAML de política que faça referência à restrição:
name: projects/PROJECT_ID/policies/CONSTRAINT_NAME spec: rules: - enforce: true
Substitua o seguinte:
-
PROJECT_ID
: o projeto no qual quer aplicar a restrição. -
CONSTRAINT_NAME
: o nome da restrição que 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 para o ficheiro YAML da política da organização. A política demora até 15 minutos a entrar em vigor.
Use a restrição iam.allowedPolicyMemberDomains
para implementar a partilha restrita ao domínio
A restrição do domínio é uma restrição gerida antiga com a
lista constraint_type
.
Os IDs de cliente do Google Workspace e os IDs de recursos da organização podem ser adicionados e removidos da lista allowed_values
de uma restrição de domínio. Google Cloud A restrição de domínio não suporta a rejeição de valores e não é possível guardar uma política da organização com IDs na lista denied_values
.
Todos os domínios associados a uma conta do Google Workspace ou a um recurso da organização
indicados na allowed_values
são permitidos pela política da organização. Todos os outros domínios são recusados pela política da organização.
Pode tornar uma política da organização que aplique a restrição de domínios condicional a qualquer recurso incluído na lista de recursos suportados. Por exemplo, contentores do Cloud Storage, conjuntos de dados do BigQuery ou VMs do Compute Engine.
Consola
Para definir uma política da organização que inclua uma restrição de domínio, faça o seguinte:
Na Google Cloud consola, aceda à página Políticas de organização.
No seletor de projetos, selecione o recurso da organização no qual quer definir a política da organização.
Na página Políticas organizacionais, selecione Partilha restrita por domínio na lista de restrições.
Na página Detalhes da política, clique em Gerir política.
Em Aplica-se a, selecione Substituir política do elemento principal.
Clique em Adicionar regra.
Em Valores da política, selecione Personalizado.
Em Tipo de política, selecione Permitir.
Em Valores personalizados, introduza um ID do recurso da organização ou um ID de cliente do Google Workspace no campo.
A introdução do ID do recurso da organização permite que os seguintes principais recebam funções na sua organização:
- Todos os Workload Identity Pools na sua organização
- Todas as contas de serviço e Workload Identity Pools em qualquer projeto na organização
- Todos os agentes de serviço associados a recursos na sua organização.
A introdução do ID de cliente do Google Workspace permite que os seguintes diretores recebam funções na sua organização:
- Todas as identidades em todos os domínios associados ao seu ID de cliente do Google Workspace
- Todos os Workload Identity Pools na sua organização
- Todas as contas de serviço e Workload Identity Pools em qualquer projeto na organização
- Todos os agentes de serviço associados a recursos na sua organização.
Se quiser adicionar vários IDs, clique em Novo valor da política para criar um campo adicional.
Clique em Concluído.
Opcionalmente, para tornar a restrição de domínio condicional a uma etiqueta, clique em Adicionar condição.
No campo Título, introduza um nome para a condição.
No campo Descrição, atribua uma descrição à condição. A descrição fornece contexto sobre as etiquetas que são necessárias e como afetam os recursos.
Pode usar o Construtor de condições para criar uma condição que exija uma etiqueta específica para que a restrição entre em vigor.
No menu Tipo de condição no separador Criador de condições, selecione Etiqueta.
Selecione o Operador para a sua condição. Para corresponder a uma etiqueta inteira, use o operador matches. Para fazer corresponder uma chave de etiqueta e um valor de etiqueta, use o operador corresponde ao ID.
Se selecionou o operador corresponde a, introduza o nome com espaço de nomes da etiqueta. Se selecionou o operador corresponde ao ID, introduza os IDs da chave e do valor.
Pode criar várias condições clicando em Adicionar. Se adicionar outra condição, pode definir a lógica condicional para exigir todas as condições ativando/desativando E. Pode definir a lógica condicional para exigir que apenas uma das condições seja verdadeira ativando/desativando Ou.
Pode eliminar uma expressão clicando no X grande à direita dos campos de condição.
Quando terminar de editar as condições, clique em Guardar.
Para aplicar a política, clique em Definir política.
gcloud
As políticas podem ser definidas através da CLI do Google Cloud. Para criar uma política que inclua a restrição do domínio, execute o seguinte comando:
Para definir uma política da organização que inclua a restrição de domínios, execute o seguinte comando:
gcloud org-policies set-policy POLICY_PATH
Onde POLICY_PATH
é o caminho completo para o ficheiro YAML da política da organização, que deve ter o seguinte aspeto:
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 o seguinte:
- ORGANIZATION_ID com o ID do recurso da organização no qual definir esta política.
PRINCIPAL_SET para os identificadores principais do Cloud ID que 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 têm de ser usados para todas as outras identidades que quer permitir. Por exemplo,
is:C03g5e3bc
.
Só as identidades pertencentes ao ID do recurso da organização ou ao domínio do Google Workspace da lista de allowed_values
são permitidas nas políticas de permissão assim que esta política da organização for aplicada. Os utilizadores e os grupos humanos do Google Workspace têm de ser filhos desse recurso de organização ou fazer parte desse domínio do Google Workspace, e as contas de serviço da IAM têm de ser filhos de um recurso de organização associado ao domínio do Google Workspace especificado.
Por exemplo, se criou uma política de organização apenas com o ID de cliente do Google Workspace da sua empresa, só os diretores desse domínio poderiam ser adicionados à política de autorização a partir desse momento.
Exemplo de mensagem de erro
Quando a restrição gerida antiga iam.allowedPolicyMemberDomains
é violada ao tentar adicionar um principal que não está incluído na lista allowed_values
, a operação falha e, em seguida, é apresentada uma mensagem de erro.
Consola
gcloud
ERROR: (gcloud.projects.set-iam-policy) FAILED_PRECONDITION: One or more users named in the policy do not belong to a permitted customer.
Obter um ID do recurso de organização
Pode obter o ID do recurso da sua organização através da Google Cloud consola, da CLI gcloud ou da API Cloud Resource Manager.
consola
Para obter o ID do recurso da organização através da Google Cloud consola, faça o seguinte:
- Aceda à Google Cloud consola:
- No seletor de projetos na parte superior da página, selecione o recurso da sua organização.
- No lado direito, clique em Mais e, de seguida, em Definições.
A página Definições apresenta 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
Este comando apresenta todos os recursos da organização aos quais pertence e os respetivos IDs de recursos da organização.
API
Para encontrar o ID do recurso da sua organização através da API Cloud Resource Manager, use o método
organizations.search()
, incluindo uma consulta para o seu domínio. Por 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, tem de usar o identificador correto para o conjunto de diretores pertencentes à mesma. Por exemplo:
principalSet://iam.googleapis.com/organizations/01234567890123
Para mais informações sobre os identificadores de principais da IAM, consulte o artigo Identificadores de principais.
Obter um ID de cliente do Google Workspace
O ID de cliente do Google Workspace usado pela restrição de domínio pode ser obtido de duas formas:
gcloud
Pode usar o comando gcloud organizations list
para ver todas as organizações para as quais tem a autorização
resourcemanager.organizations.get
:
gcloud organizations list
Este comando devolve o DISPLAY_NAME
, o ID
(ID da organização) e o DIRECTORY_CUSTOMER_ID
. O ID de cliente do Google Workspace é DIRECTORY_CUSTOMER_ID
.
API
A API Google Workspace Directory pode ser usada para obter um ID de cliente do Google Workspace.
Enquanto tem sessão iniciada como administrador do Google Workspace, pode visitar a documentação do método da API Customers: get e clicar em Executar. Após a autorização, a resposta mostra o seu ID de cliente.
Em alternativa, pode usar um cliente API:
- Obtenha uma chave de acesso OAuth para o âmbito
https://www.googleapis.com/auth/admin.directory.customer.readonly
. Execute o seguinte comando para consultar a API Google Workspace Directory:
curl -# -X GET "https://www.googleapis.com/admin/directory/v1/customers/customerKey" \ -H "Authorization: Bearer $access_token" -H "Content-Type: application/json"
Este comando devolve uma resposta JSON que inclui as informações do cliente. O ID de cliente do Google Workspace é id
.
Configure exceções para a partilha restrita por 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. A partilha restrita por domínio pode impedir que estas contas recebam automaticamente as funções do IAM de que precisam, o que pode fazer com que determinadas ações falhem.
A tabela seguinte lista as ações no Google Cloud que podem ser afetadas pela partilha restrita ao domínio. Também indica as contas às quais é necessário conceder funções automaticamente para que estas ações sejam bem-sucedidas.
Se usar políticas organizacionais personalizadas ou a restrição gerida iam.managed.allowedPolicyMembers
para implementar a partilha restrita ao domínio, pondere adicionar estas contas como exceções à restrição de partilha restrita ao domínio. Para adicionar uma conta como exceção, adicione o identificador principal da conta à lista de membros permitidos.
Se usar a restrição gerida antiga para implementar a partilha restrita por domínio, pode ter de forçar o acesso à conta para que estas contas realizem as ações indicadas.iam.allowedPolicyMemberDomains
Ação | Identificador principal |
---|---|
Associe o Google Analytics 360 ao BigQuery | serviceAccount:[email protected] |
Ative o Log Sink do BigQuery para uma conta de faturação | serviceAccount:bUNIQUE_ID@gcp-sa-loggingiam.gserviceaccount.com |
Ative o registo de acesso ao armazenamento | serviceAccount:[email protected] |
Ative a API Firebase |
|
Use o Pub/Sub como um ponto final para uma app Google Chat | serviceAccount:[email protected] |
Use o Pub/Sub para receber notificações para programadores em tempo real do Google Play | serviceAccount:[email protected] |
Use um URL assinado com o Cloud CDN | serviceAccount:service-PROJECT_NUMBER@cloud-cdn-fill.iam.gserviceaccount.com |
Autenticação de origem privada 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 implementar a partilha restrita ao domínio, os utilizadores fora da sua organização não vão poder aceder aos serviços públicos do Cloud Run.
Para permitir que os utilizadores acedam a serviços públicos do Cloud Run, tem de desativar a verificação da IAM do invocador do Cloud Run para serviços do Cloud Run. Para mais informações, consulte o artigo Desative o invocador do Cloud Run para serviços.
Partilhe outros dados publicamente
Se usar políticas organizacionais personalizadas para implementar a partilha restrita por domínio, pode adicionar uma exceção à política da sua organização para permitir a partilha pública de dados.
A partilha de dados publicamente envolve os principais especiais allUsers
e allAuthenticatedUsers
. Se precisar de partilhar dados publicamente enquanto usa a partilha restrita por domínio, tem de adicionar uma exceção para estes principais.
Só é possível adicionar exceções se estiver a usar políticas da organização personalizadas para implementar a partilha restrita ao domínio.
Para adicionar uma exceção para allUsers
e allAuthenticatedUsers
, use a função memberSubjectMatches
do IEC na expressão de condição da restrição.
Por exemplo, a seguinte expressão de condição restringe as concessões de funções aos membros
na sua organização, allUsers
e allAuthenticatedUsers
:
name: organizations/ORG_ID/customConstraints/custom.allowInternalAndSpecialIdentitiesOnly
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
Forçar o acesso à conta
Se precisar de forçar o acesso à conta para um projeto em violação das restrições de domínio:
Remova a política da organização que contém a restrição de domínios.
Conceda acesso à conta ao projeto.
Implemente novamente a política da organização com a restrição do domínio.
Em alternativa, pode conceder acesso a um grupo Google que contenha as contas de serviço relevantes:
Crie um grupo Google no domínio permitido.
Use o painel de administração do Google Workspace para desativar a restrição de domínio para esse grupo.
Adicione a conta de serviço ao grupo.
Conceda acesso ao grupo Google na política de permissão.