Para controlar o acesso aos seus recursos no Google Cloud, usa o Identity and Access Management (IAM). Com o IAM, define autorizações que especificam quem tem que tipo de acesso a que recursos no seu projeto. Para uma introdução ao IAM, consulte a vista geral do IAM.
Quando implementa recursos, também pode controlar quem tem acesso a estes recursos definindo uma política de IAM preventivamente na sua configuração. Por exemplo, se planear criar tópicos do Pub/Sub que possam ser geridos por utilizadores específicos, pode expressar isto ao Deployment Manager especificando uma política do IAM na sua configuração. Quando cria ou atualiza a sua implementação, o Deployment Manager chama a API IAM para definir as autorizações adequadas no recurso.
Antes de começar
- Se quiser usar os exemplos de linhas de comando neste guia, instale a ferramenta de linhas de comando`gcloud`.
- Se quiser usar os exemplos de API neste guia, configure o acesso à API.
Usar políticas de IAM no Deployment Manager
Uma política de IAM é uma coleção de utilizadores e as respetivas funções. Define uma política de IAM ao nível do projeto, usando funções básicas ou predefinidas. Alguns serviços, como o Cloud Pub/Sub, também suportam a definição de políticas de IAM ao nível do recurso.
Se um serviço não suportar a definição de políticas de IAM ao nível do recurso, o Deployment Manager devolve um erro NO_METHOD_TO_UPDATE_ACCESS_CONTROL
.
Para ver uma lista de funções e os recursos aos quais as pode aplicar, consulte o artigo Compreender as funções.
Conceder autorização do Deployment Manager para definir políticas IAM
O Deployment Manager usa a
conta de serviço das APIs Google
para chamar outras APIs Google e gerir Google Cloud recursos em seu
nome. Tem de conceder à conta de serviço das APIs Google do seu projeto a função básica roles/owner
para que possa aplicar as políticas de IAM que define nas suas configurações.
- Aceda à página IAM na Google Cloud consola do seu projeto.
- Se lhe for pedido, selecione o seu projeto na lista.
Procure a conta de serviço das APIs Google, que tem o endereço de email no seguinte formato:
[PROJECT_NUMBER]@cloudservices.gserviceaccount.com
Conceda à conta de serviço das APIs as
roles/owner
funções:Consola
- Ainda na Google Cloud consola, expanda o menu pendente Funções para a conta de serviço das APIs Google e selecione Projeto > Proprietário.
- Clique em Guardar para guardar as alterações.
gcloud
Com a CLI do Google Cloud, adicione uma associação à política do IAM para o projeto:
gcloud projects add-iam-policy-binding [PROJECT_ID] \ --member serviceAccount:[SERVICE_ACCOUNT_EMAIL] --role roles/owner
where:
[PROJECT_ID]
é o ID do projeto.[SERVICE_ACCOUNT_EMAIL]
é o email da conta de serviço.
Por exemplo:
gcloud projects add-iam-policy-binding database-images \ --member serviceAccount:123456789012@cloudservices.gserviceaccount.com \ --role roles/owner
API
Na API, faça um pedido
POST
para o seguinte URL, em que[PROJECT_ID]
é o ID do projeto:POST https://cloudresourcemanager.googleapis.com/v1/projects/$[PROJECT_ID]:setIamPolicy
O corpo do pedido deve conter a lista de associações que quer aplicar a este projeto. A função
roles/owner
deve fazer parte da associação. Por exemplo:{ "policy": { "version": "0", "bindings": [ { "role": "roles/owner", "members": [ "user:example@gmail.com", "serviceAccount:123456789012@cloudservices.gserviceaccount.com" ] } ] } }
Definir uma Política IAM na sua configuração
Em seguida, na configuração ou no modelo, pode definir uma política de IAM seguindo estas instruções:
Adicione a secção
accessControl
à configuração de nível superior para cada recurso ao qual quer aplicar políticas de controlo de acesso.Especifique o
gcpIamPolicy
pretendido para o recurso. Cada política IAM pode conter uma lista de associações. Cada associação associa uma lista de membros a uma função.Se estiver a usar o
accessControl
para gerir contas de serviço, saiba mais acerca da gestão de contas de serviço.
Por exemplo, a secção accessControl
seguinte adiciona associações que concedem estas funções aos utilizadores:
Utilizador | Função |
---|---|
alice@example.com |
roles/pubsub.editor |
|
roles/pubsub.publisher |
resources:
- name: a-new-pubsub-topic
type: pubsub.v1.topic
properties:
...
accessControl:
gcpIamPolicy:
bindings:
- role: roles/pubsub.editor
members:
- "user:alice@example.com"
- role: roles/pubsub.publisher
members:
- "user:jane@example.com"
- "serviceAccount:my-other-app@appspot.gserviceaccount.com"
Para mais informações sobre as políticas de IAM, leia a documentação do IAM.