Contexto
As funções personalizadas da gestão de identidade e acesso permitem-lhe conceder autorizações detalhadas a contas de utilizador e contas de serviço. Ao contrário das funções predefinidas, que são mantidas pela Google e atualizadas em conformidade, as funções personalizadas são mantidas pela sua organização à medida que novas autorizações ficam disponíveis.
O Cloud Deployment Manager pode facilitar a configuração e a manutenção das suas funções personalizadas. Pode usar o Deployment Manager para descrever funções com ficheiros de configuração, que podem ser registados no seu sistema de controlo de origem preferencial. Em conjunto, o Deployment Manager e o controlo de origem podem facilitar a criação de "config-as-code" para:
- Acompanhar as funções personalizadas à medida que mudam ao longo do tempo
- Promover funções personalizadas através de fases de lançamento à medida que são testadas e validadas
- Automatizar a forma como as funções são implementadas em toda a sua organização
Antes de começar
-
Enable the IAM and Cloud Deployment Manager APIs.
Cenários para manter funções personalizadas através do Deployment Manager
Considere os seguintes cenários que demonstram as vantagens de usar o Deployment Manager para manter funções personalizadas:
- Controlar o acesso a novas autorizações: tem uma função personalizada que contém autorizações para um serviço Google Cloud . O serviço adiciona novas funcionalidades beta e expõe novas autorizações. A sua função personalizada não herda automaticamente estas novas autorizações. Tem de as adicionar manualmente. Até que as novas autorizações sejam adicionadas à sua função personalizada, os utilizadores da sua organização não têm acesso às funcionalidades beta. Pode usar os ficheiros de configuração e o controlo de origem do Deployment Manager para ajudar a auditar as autorizações existentes, atualizar as suas funções personalizadas conforme necessário e manter um histórico de revisões.
- Gestão do ciclo de vida das funções: tem uma nova função personalizada à qual atribuiu uma
ALPHA
fase de lançamento. Depois de o papel personalizado ter sido testado e validado, pode usar o Deployment Manager para atualizar a configuração do papel personalizado e avançá-lo para a faseBETA
sem usar a consolaGoogle Cloud . - Compreender a adoção de funções personalizadas: ao ter mais definições de funções personalizadas da sua organização no controlo de origem, torna-se mais fácil partilhar, aprender com padrões de utilização e aplicar controlos de acesso em vários projetos.
Compreender os ficheiros de configuração do Deployment Manager
O Deployment Manager usa três tipos de ficheiros diferentes para descrever uma implementação. Cada tipo é descrito abaixo:
- As configurações são ficheiros YAML que descrevem os recursos e as respetivas propriedades. Para funções personalizadas de gestão de identidades e acessos (IAM), cada ficheiro YAML especifica todas as propriedades de uma ou mais funções personalizadas, como o nome, a descrição e as autorizações.
- Os esquemas especificam todas as propriedades possíveis para um determinado recurso e os respetivos valores predefinidos. Para funções personalizadas de IAM, existem esquemas para funções personalizadas ao nível do projeto e da organização.
- Modelos, que são ficheiros Jinja ou Python que melhoram as configurações ao permitir-lhe dividir uma configuração em partes reutilizáveis. Para as funções personalizadas do IAM, existem dois modelos fornecidos: um para funções personalizadas ao nível do projeto e outro para funções personalizadas ao nível da organização.
Para mais informações sobre estes tipos, consulte o artigo Fundamentos do Deployment Manager.
Antes de começar
Se não tiver experiência no Deployment Manager, conclua primeiro o início rápido. Em seguida, siga os passos abaixo:Na Google Cloud consola, aceda à página IAM.
Na lista de principais, localize o principal com o nome Agente do serviço de APIs Google.
Para editar as funções da conta de serviço, clique no botão Editar
e, de seguida, adicione a função Funções > Administrador de funções.Clique em Guardar para aplicar a função.
- Transfira o conteúdo deste repositório do GitHub para o seu computador local.
- Numa janela do terminal, navegue para o diretório
examples/v2/iam_custom_role/jinja
no repositório transferido. Contém o ficheiro project_custom_role.yaml e os ficheiros Jinja associados. Execute o seguinte comando para implementar a função personalizada de exemplo, substituindo o valor do marcador de posição your-deployment-name pelo nome de implementação à sua escolha:
gcloud deployment-manager deployments create \ your-deployment-name --config project_custom_role.yaml
Aguarde pela conclusão da operação. A impressão digital da implementação e um indicador de progresso são apresentados:
The fingerprint of the deployment is PUo2fmKdoFdJqiLViHjT3Q== Waiting for create [operation-1513228867042-560460d157ad1-b4ababb8-c6a7dddc]...done.
Se a operação tiver sido bem-sucedida, é apresentada a seguinte mensagem de estado:
Create operation operation-1513228867042-560460d157ad1-b4ababb8-c6a7dddc completed successfully. NAME TYPE STATE ERRORS INTENT custom-role gcp-types/iam-v1:projects.roles COMPLETED []
Numa janela de terminal, execute o seguinte comando:
gcloud deployment-manager deployments describe your-deployment-name
É apresentada uma descrição da implementação, incluindo informações abrangentes sobre o respetivo estado, 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
Também pode ver as informações detalhadas sobre a configuração da função personalizada acedendo ao manifesto da implementação. No resultado do comando
describe
no passo 2 acima, tome nota do IDmanifest
. Copie este ID, incluindo o prefixomanifest-
, e use-o para substituir o valor do marcador de posição abaixo:gcloud deployment-manager manifests describe your-manifest-id \ --deployment your-deployment-name
O manifesto contém informações exaustivas sobre a implementação da função personalizada, incluindo o conteúdo não processado dos ficheiros project_custom_role.yaml e project_custom_role.jinja. Em particular, repare no bloco
resources
perto da parte inferior do manifesto, que resume os detalhes sobre a função personalizada:... 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 ...
Na Google Cloud consola, aceda à página IAM.
Selecione um projeto e clique em Abrir.
No menu do lado esquerdo, clique em Funções.
Clique no nome da função personalizada recém-criada na lista. Deve ter um aspeto semelhante ao da captura de ecrã abaixo:
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Verify that billing is enabled for your Google Cloud project.
Enable the Deployment Manager and IAM APIs.
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Verify that billing is enabled for your Google Cloud project.
Enable the Deployment Manager and IAM APIs.
Depois de concluir estes passos pré-requisitos, pode começar a usar o Deployment Manager com a IAM para manter as suas funções personalizadas.
Conceda autorizações à conta de serviço das APIs Google
Para manter as funções personalizadas através do Deployment Manager, tem de conceder primeiro as autorizações adequadas à conta de serviço das APIs Google. Esta conta é criada por predefinição para cada organização e projeto.
Agora que a conta de serviço das APIs Google tem autorização para manter funções personalizadas, pode implementar uma função personalizada de exemplo através do Deployment Manager.
Implemente funções personalizadas no seu projeto
Conforme descrito na secção acima, o Deployment Manager usa uma combinação de ficheiros de configuração para descrever uma implementação. Para o IAM, considere os dois ficheiros de exemplo seguintes para as funções personalizadas 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
Este ficheiro YAML especifica as propriedades acerca de uma função personalizada denominada custom-role
, que concede autorizações a iam.roles.get
e iam.roles.list
.
Tenha em atenção que faz referência a um ficheiro .jinja duas vezes. Estas referências usam os valores
fornecidos pelo 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 ficheiro Jinja fornece um modelo para uma função personalizada para minimizar a duplicação das mesmas propriedades em várias funções. Os valores predefinidos são inseridos a partir de um ficheiro .schema se o ficheiro YAML correspondente não especificar valores para cada propriedade.
Para implementar esta função personalizada com o Deployment Manager:
Veja a sua função personalizada implementada
Para ver a sua função personalizada no Deployment Manager:
Para ver a sua função personalizada na Google Cloud consola: