Definir o controlo de acesso numa configuração

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

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.

  1. Aceda à página IAM na Google Cloud consola do seu projeto.

    Aceda à página IAM

  2. Se lhe for pedido, selecione o seu projeto na lista.
  3. Procure a conta de serviço das APIs Google, que tem o endereço de email no seguinte formato:

    [PROJECT_NUMBER]@cloudservices.gserviceaccount.com
    
  4. Conceda à conta de serviço das APIs as roles/ownerfunções:

    Consola

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

  1. Adicione a secção accessControl à configuração de nível superior para cada recurso ao qual quer aplicar políticas de controlo de acesso.

  2. 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
  • 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 as políticas de IAM, leia a documentação do IAM.