Contexto
Os papéis personalizados do Gerenciamento de identidade e acesso permitem que você conceda permissões granulares a contas de usuário e contas de serviço. Ao contrário dos papéis predefinidos, que são mantidos pelo Google e atualizados em conformidade, os personalizados são mantidos pela organização à medida que as novas permissões se tornam disponíveis.
O Deployment Manager pode facilitar a configuração e a manutenção dos papéis personalizados. Use-o para descrever papéis em arquivos de configuração que podem ser incluídos no sistema de controle de origem escolhido. Juntos, o Deployment Manager e o controle de origem podem facilitar a criação de "configuração como código" para:
- rastrear papéis personalizados à medida que mudam ao longo do tempo;
- promover papéis personalizados por meio de etapas de inicialização à medida que são testados e validados;
- automatizar como os papéis são implantados em toda a organização.
Antes de começar
-
Enable the IAM and Cloud Deployment Manager APIs.
Cenários para manter papéis personalizados usando o Deployment Manager
Considere os seguintes cenários, que demonstram os benefícios de usar o Deployment Manager para manter os papéis personalizados:
- Controle do acesso a novas permissões: você tem um papel personalizado que contém permissões para um serviço do Google Cloud. O serviço adiciona novos recursos Beta e expõe novas permissões. O papel personalizado não herdará essas novas permissões automaticamente. Elas precisam ser adicionadas manualmente. Até novas permissões serem adicionadas ao papel personalizado, os usuários da organização não terão acesso aos recursos Beta. Use os arquivos de configuração do Deployment Manager e o controle de origem para ajudar a auditar permissões atuais, atualizar os papéis personalizados conforme necessário e manter um histórico de revisões.
- Gerenciamento do ciclo de vida do papel: você tem um novo papel personalizado a que atribuiu
uma etapa de lançamento
ALPHA
. Depois que o papel personalizado for testado e validado, use o Deployment Manager para atualizar a configuração do papel personalizado e enviá-la para o estágioBETA
sem usar o Console do Google Cloud. - Noções básicas sobre a adoção de papéis personalizados: ao ter mais definições dos papéis personalizados de sua organização no controle de origem, fica mais fácil compartilhar, aprender com padrões de uso e aplicar controles de acesso em vários projetos.
Noções básicas sobre os arquivos de configuração do Deployment Manager
O Deployment Manager usa três tipos de arquivos diferentes para descrever uma implantação. Cada tipo está descrito abaixo:
- As configurações são arquivos YAML que descrevem os recursos e as propriedades deles. Para papéis personalizados do Gerenciamento de identidade e acesso (IAM, na sigla em inglês), cada arquivo YAML especifica todas as propriedades de um ou mais papéis personalizados, como nome, descrição e permissões.
- Os esquemas especificam todas as propriedades possíveis para um determinado recurso e os valores padrão deles. Para papéis personalizados do IAM, há esquemas para papéis personalizados no nível do projeto e da organização.
- Modelos, que são arquivos Jinja ou Python para o aprimoramento de configurações com a possibilidade de dividir uma configuração em partes reutilizáveis. Para papéis personalizados do IAM, há dois modelos fornecidos: um para papéis personalizados no nível do projeto e outro para papéis personalizados no nível da organização.
Para mais informações sobre esses tipos, consulte Fundamentos do Deployment Manager.
Antes de começar
Se você não estiver familiarizado com o Deployment Manager, primeiro complete o Guia de início rápido. Depois, siga as etapas a seguir:- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Deployment Manager and IAM APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Deployment Manager and IAM APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
Após a conclusão dessas etapas de pré-requisito, é possível começar a usar o Deployment Manager com o IAM para manter os papéis personalizados.
Conceder permissões à conta de serviço das APIs do Google
Para manter papéis personalizados usando o Deployment Manager, primeiro você precisa conceder as permissões apropriadas à conta de serviço das APIs do Google. Essa conta é criada por padrão para cada organização e projeto.
No console do Google Cloud, abra a página IAM.
Na lista de principais, localize o principal com o nome Agente de serviço das APIs do Google.
Para editar os papéis da conta de serviço, clique no botão Editar
e, depois, adicione o papel Papéis > Administrador de papéis.Clique em Salvar para aplicar o papel.
Agora que a conta de serviço das APIs do Google recebeu permissão para manter os papéis personalizados, você pode implantar um papel personalizado de exemplo usando o Deployment Manager.
Implantar papéis personalizados no projeto
Conforme descrito na seção acima, o Deployment Manager usa uma combinação de arquivos de configuração para descrever uma implantação. Para o IAM, considere os dois arquivos de exemplo a seguir para os papéis personalizados de um projeto:
project_custom_role.yaml
imports: - path: project_custom_role.jinja resources: - name: custom-role type: project_custom_role.jinja properties: roleId: myCustomRole title: My Title description: My description. includedPermissions: - iam.roles.get - iam.roles.list
Esse arquivo YAML especifica as propriedades de um papel personalizado chamado custom-role
, que concede permissões a iam.roles.get
e iam.roles.list
.
Observe que ele se refere a um arquivo .jinja duas vezes. Essas referências usam os valores contidos no modelo Jinja conforme descrito abaixo.
project_custom_role.jinja
# Copyright 2017 Google LLC. All rights reserved. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # http://www.apache.org/licenses/LICENSE-2.0 # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. resources: - name: custom-role type: gcp-types/iam-v1:projects.roles properties: parent: projects/{{ env["project"] }} roleId: {{ properties["roleId"] }} role: title: {{ properties["title"] }} description: {{ properties["description"] }} stage: {{ properties["stage"] }} includedPermissions: {{ properties["includedPermissions"] }}
Este arquivo Jinja fornece um modelo para um papel personalizado para minimizar a duplicação das mesmas propriedades em muitos papéis. Os valores padrão serão inseridos do arquivo .schema se o arquivo YAML correspondente não especificar valores para cada propriedade.
Para implantar esse papel personalizado com o Deployment Manager:
- Faça o download do conteúdo deste repositório GitHub na máquina local.
- Em uma janela de terminal, navegue até o diretório
examples/v2/iam_custom_role/jinja
no repositório de download. Ele contém o arquivo project_custom_role.yaml e os arquivos Jinja associados. Execute o seguinte comando para implantar o papel personalizado de exemplo, substituindo o valor de marcador your-deployment-name por um nome de implantação de sua escolha:
gcloud deployment-manager deployments create \ your-deployment-name --config project_custom_role.yaml
Aguarde a conclusão da operação. A impressão digital da implantação e um indicador de progresso são exibidos:
The fingerprint of the deployment is PUo2fmKdoFdJqiLViHjT3Q== Waiting for create [operation-1513228867042-560460d157ad1-b4ababb8-c6a7dddc]...done.
Se a operação tiver sido bem-sucedida, você verá a seguinte mensagem de status:
Create operation operation-1513228867042-560460d157ad1-b4ababb8-c6a7dddc completed successfully. NAME TYPE STATE ERRORS INTENT custom-role gcp-types/iam-v1:projects.roles COMPLETED []
Consultar o papel personalizado implantado
Para ver o papel personalizado no Deployment Manager:
Em uma janela de terminal, execute o seguinte comando:
gcloud deployment-manager deployments describe your-deployment-name
Você verá uma descrição da implantação com informações abrangentes sobre o status, possíveis erros e muito mais.
fingerprint: oaJoGesEFYvsAldP2bm5jQ== id: '3222872306422524501' insertTime: '2018-01-29T13:40:10.822-08:00' manifest: manifest-1517262010855 name: your-deployment-name operation: endTime: '2018-01-29T13:40:26.500-08:00' name: operation-1517262010573-563f1172be0c9-ce5f0242-239fe1af operationType: insert progress: 100 startTime: '2018-01-29T13:40:11.535-08:00' status: DONE user: id-7201362145@my-example-project.iam.gserviceaccount.com NAME TYPE STATE INTENT custom-role gcp-types/iam-v1:projects.roles COMPLETED
Você também pode ver as informações detalhadas sobre a configuração do papel personalizado recuperando o manifesto da implantação. Na saída do comando
describe
na etapa 2 acima, anote o ID demanifest
. Copie esse ID, incluindo o prefixomanifest-
, e use-o para substituir o valor do marcador abaixo:gcloud deployment-manager manifests describe your-manifest-id \ --deployment your-deployment-name
O manifesto contém informações completas sobre a implantação do papel personalizado, o que inclui o conteúdo bruto dos arquivos project_custom_role.yaml e project_custom_role.jinja de origem. Observe especificamente o bloco
resources
próximo à parte inferior do manifesto, que resume os detalhes sobre o papel personalizado:... resources: - name: custom-role properties: description: My description. includedPermissions: - iam.roles.get - iam.roles.list roleId: aCustomRole stage: ALPHA title: My Title resources: - name: custom-role type: gcp-types/iam-v1:projects.roles type: project_custom_role.jinja ...
Para ver o papel personalizado no console do Google Cloud:
No console do Google Cloud, abra a página IAM.
Selecione um projeto e clique em Abrir.
No menu à esquerda, clique em Papéis.
Clique no nome do papel personalizado recém-criado da lista. Ele será semelhante à captura de tela abaixo: