Como definir o controle de acesso em uma configuração

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

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.

  1. Acesse a página do IAM no console do Google Cloud do projeto.

    Acessar a página do IAM

  2. Caso solicitado, selecione o projeto na lista.
  3. 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
    
  4. Conceda à conta de serviço das APIs os papéis roles/owner:

    Console

    1. Ainda no console do Google Cloud, expanda o menu suspenso Papéis para a conta de serviço das APIs do Google e selecione Projeto > proprietário.
    2. 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:

  1. 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.

  2. 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
  • my-other-app@appspot.gserviceaccount.com
  • jane@example.com
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.