Fondo
Los roles personalizados de gestión de identidades y accesos te permiten conceder permisos granulares a cuentas de usuario y cuentas de servicio. A diferencia de los roles predefinidos, que mantiene Google y se actualizan en consecuencia, los roles personalizados los mantiene tu organización a medida que se van añadiendo nuevos permisos.
Cloud Deployment Manager puede facilitar la configuración y el mantenimiento de tus roles personalizados. Puedes usar Deployment Manager para describir roles con archivos de configuración, que se pueden registrar en el sistema de control de versiones que elijas. Deployment Manager y el control de versiones pueden facilitar la implementación de la configuración como código en los siguientes casos:
- Hacer un seguimiento de los roles personalizados a medida que cambian con el tiempo
- Promocionar roles personalizados a través de fases de lanzamiento a medida que se prueban y validan
- Automatizar la forma en que se implementan los roles en toda la organización
Antes de empezar
-
Enable the IAM and Cloud Deployment Manager APIs.
Situaciones para mantener roles personalizados con Deployment Manager
A continuación, se muestran algunos ejemplos que ilustran las ventajas de usar Deployment Manager para mantener roles personalizados:
- Controlar el acceso a los nuevos permisos: tienes un rol personalizado que contiene permisos para un servicio de Google Cloud . El servicio añade nuevas funciones beta y expone nuevos permisos. Tu rol personalizado no heredará automáticamente estos nuevos permisos, sino que tendrás que añadirlos manualmente. Hasta que se añadan los nuevos permisos a tu rol personalizado, los usuarios de tu organización no tendrán acceso a las funciones beta. Puedes usar los archivos de configuración y el control de versiones de Deployment Manager para auditar los permisos, actualizar los roles personalizados según sea necesario y mantener un historial de revisiones.
- Gestión del ciclo de vida de los roles: tienes un nuevo rol personalizado al que has asignado la fase de lanzamiento
ALPHA
. Una vez que se haya probado y validado el rol personalizado, puedes usar Deployment Manager para actualizar la configuración del rol personalizado y pasar a la faseBETA
sin usar la consolaGoogle Cloud . - Conocer la adopción de roles personalizados: si tienes más definiciones de roles personalizados de tu organización en el control de versiones, será más fácil compartir, aprender de los patrones de uso y aplicar controles de acceso en varios proyectos.
Información sobre los archivos de configuración de Deployment Manager
Deployment Manager usa tres tipos de archivos diferentes para describir una implementación. A continuación se describe cada tipo:
- Las configuraciones son archivos YAML que describen los recursos y sus propiedades. En el caso de los roles personalizados de gestión de identidades y accesos (IAM), cada archivo YAML especifica todas las propiedades de uno o varios roles personalizados, como su nombre, descripción y permisos.
- Los esquemas especifican todas las propiedades posibles de un recurso determinado y sus valores predeterminados. En el caso de los roles personalizados de gestión de identidades y accesos, hay esquemas para los roles personalizados a nivel de proyecto y de organización.
- Plantillas: archivos Jinja o Python que mejoran las configuraciones al permitirte dividir una configuración en partes reutilizables. En el caso de los roles personalizados de gestión de identidades y accesos, hay dos plantillas: una para los roles personalizados a nivel de proyecto y otra para los roles personalizados a nivel de organización.
Para obtener más información sobre estos tipos, consulta Fundamentos de Deployment Manager.
Antes de empezar
Si no conoces Deployment Manager, primero completa la guía de inicio rápido. A continuación, sigue estos pasos:En la consola, ve a la página IAM. Google Cloud
En la lista de principales, busca el principal con el nombre Google APIs service agent.
Para editar los roles de la cuenta de servicio, haz clic en el botón Editar
y, a continuación, añade el rol Roles > Administrador de roles.Haz clic en Guardar para aplicar el rol.
- Descarga el contenido de este repositorio de GitHub en tu máquina local.
- En una ventana de terminal, ve al directorio
examples/v2/iam_custom_role/jinja
del repositorio descargado. Contiene el archivo project_custom_role.yaml y los archivos Jinja asociados. Ejecuta el siguiente comando para implementar el rol personalizado de ejemplo y sustituye el valor del marcador de posición your-deployment-name por el nombre de implementación que quieras:
gcloud deployment-manager deployments create \ your-deployment-name --config project_custom_role.yaml
Espera a que termine la operación. Se muestran la huella digital de la implementación y un indicador de progreso:
The fingerprint of the deployment is PUo2fmKdoFdJqiLViHjT3Q== Waiting for create [operation-1513228867042-560460d157ad1-b4ababb8-c6a7dddc]...done.
Si la operación se ha completado correctamente, verás el siguiente mensaje 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 []
En una ventana de terminal, ejecuta el siguiente comando:
gcloud deployment-manager deployments describe your-deployment-name
Verá una descripción de la implementación, incluida información detallada sobre su estado, los errores y más.
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
También puede ver información detallada sobre la configuración del rol personalizado recuperando el manifiesto de la implementación. En el resultado del comando
describe
del paso 2 anterior, anota el ID demanifest
. Copia este ID, incluido el prefijomanifest-
, y úsalo para sustituir el valor del marcador de posición que se indica a continuación:gcloud deployment-manager manifests describe your-manifest-id \ --deployment your-deployment-name
El manifiesto contiene información exhaustiva sobre la implementación del rol personalizado, incluido el contenido sin procesar de los archivos de origen project_custom_role.yaml y project_custom_role.jinja. En concreto, fíjate en el bloque
resources
cerca de la parte inferior del manifiesto, que resume los detalles del rol 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 ...
En la consola, ve a la página IAM. Google Cloud
Selecciona un proyecto y haz clic en Abrir.
En el menú de la izquierda, haz clic en Roles.
En la lista, haz clic en el nombre del rol personalizado que acabas de crear. Debería ser similar a la captura de pantalla que se muestra a continuación:
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.
Una vez que hayas completado estos pasos, podrás empezar a usar Deployment Manager con IAM para mantener tus roles personalizados.
Conceder permisos a la cuenta de servicio de las APIs de Google
Para mantener los roles personalizados con Deployment Manager, primero debes conceder los permisos adecuados a la cuenta de servicio de las APIs de Google. Esta cuenta se crea de forma predeterminada para cada organización y proyecto.
Ahora que se ha concedido a la cuenta de servicio de las APIs de Google el permiso para mantener roles personalizados, puedes implementar un rol personalizado de ejemplo con Deployment Manager.
Desplegar roles personalizados en tu proyecto
Como se describe en la sección anterior, Deployment Manager usa una combinación de archivos de configuración para describir una implementación. En cuanto a la gestión de identidades y accesos, consulta los dos archivos de ejemplo siguientes para los roles personalizados de un proyecto:
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 archivo YAML especifica las propiedades de un rol personalizado llamado custom-role
,
que concede permisos a iam.roles.get
y iam.roles.list
.
Ten en cuenta que hace referencia dos veces a un archivo .jinja. Estas referencias usan los valores proporcionados por la plantilla Jinja, tal como se describe a continuación.
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 archivo Jinja proporciona una plantilla para un rol personalizado que minimiza la duplicación de las mismas propiedades en muchos roles. Los valores predeterminados se insertan desde un archivo .schema si el archivo YAML correspondiente no especifica valores para cada propiedad.
Para desplegar este rol personalizado con Deployment Manager, sigue estos pasos:
Ver el rol personalizado implementado
Para ver tu rol personalizado en Deployment Manager, sigue estos pasos:
Para ver tu rol personalizado en la consola Google Cloud , sigue estos pasos: