Para controlar o acesso aos recursos no Google Cloud, você usa o gerenciamento de identidade e acesso (IAM, na sigla em inglês). Com o IAM, você define permissões que especificam quem tem que tipo de acesso a quais recursos do projeto. Para uma introdução ao IAM, consulte a Visão geral do IAM.
Ao implantar recursos, você também pode controlar quem tem acesso a esses recursos definindo uma política do IAM de maneira preemptiva. Por exemplo, se você pretende criar tópicos do Pub/Sub que podem ser gerenciados por usuários específicos, poderá expressar isso para o Deployment Manager especificando uma política de IAM na configuração. Quando você cria ou atualiza a implantação, o Deployment Manager chama a API do IAM para definir as permissões apropriadas no recurso.
Antes de começar
- Para usar os exemplos de linha de comando deste guia, instale a ferramenta de linha de comando "gcloud".
- Para usar os exemplos de API deste guia, configure o acesso de API.
Como usar políticas de IAM no Deployment Manager
Uma política de IAM é uma coleção de usuários e respectivos papéis. Você define uma política de IAM no nível do projeto usando papéis básicos ou predefinidos. Alguns serviços, como o Cloud Pub/Sub, também aceitam a configuração de políticas de IAM no nível do recurso.
Se um serviço não for compatível com a configuração de políticas de IAM no nível do recurso, o Deployment Manager retornará um erro NO_METHOD_TO_UPDATE_ACCESS_CONTROL
.
Para uma lista de papéis e os recursos em que você pode aplicá-los, consulte Como entender os papéis.
Como conceder ao Deployment Manager permissão para definir políticas de IAM
O Deployment Manager usa a conta de serviço de APIs do Google para chamar outras APIs do Google e gerenciar recursos do Google Cloud em seu nome. Atribua à conta de serviço das APIs do Google do projeto o papel básico roles/owner
para que ela possa aplicar as políticas de IAM definidas nas suas configurações.
- Acesse a página do IAM no console do Google Cloud do projeto.
- Caso solicitado, selecione o projeto na lista.
Procure a conta de serviço das APIs do Google, que tem o endereço de e-mail no formato a seguir:
[PROJECT_NUMBER]@cloudservices.gserviceaccount.com
Conceda à conta de serviço das APIs os papéis
roles/owner
:Console
- Ainda no console do Google Cloud, abra o menu suspenso Papéis da conta de serviço das APIs do Google e selecione Projeto > Proprietário.
- Clique em Salvar.
gcloud
Com a Google Cloud CLI, adicione uma vinculação à política do IAM para o projeto:
gcloud projects add-iam-policy-binding [PROJECT_ID] \ --member serviceAccount:[SERVICE_ACCOUNT_EMAIL] --role roles/owner
em que:
[PROJECT_ID]
é o código do projeto.[SERVICE_ACCOUNT_EMAIL]
é o e-mail 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 uma solicitação
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 da solicitação precisa conter a lista de vinculações que você quer aplicar a esse projeto. É preciso que o papel
roles/owner
faça parte da vinculação. Exemplo:{ "policy": { "version": "0", "bindings": [ { "role": "roles/owner", "members": [ "user:example@gmail.com", "serviceAccount:123456789012@cloudservices.gserviceaccount.com" ] } ] } }
Definição de uma política do IAM na configuração
Em seguida, na configuração ou no modelo, defina uma política de IAM seguindo estas instruções:
Adicione a seção
accessControl
à configuração de nível superior de cada recurso em que você quiser aplicar políticas de controle de acesso.Especifique o
gcpIamPolicy
pretendido para o recurso. Cada política do IAM pode conter uma lista de vinculações. Cada vinculação associa uma lista de membros a um papel.Se você estiver usando
accessControl
para gerenciar contas de serviço, saiba mais sobre como gerenciar contas de serviço.
Por exemplo, a seção accessControl
a seguir adiciona vinculações que fazem a concessão destes papéis aos usuários:
User | Papel |
---|---|
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 políticas de IAM, leia a documentação do IAM.