Mantener roles personalizados con Deployment Manager

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.

    Enable the 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 fase BETA 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:

    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.

    Go to project selector

    Verify that billing is enabled for your Google Cloud project.

    Enable the Deployment Manager and IAM APIs.

    Enable the APIs

    In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

    Verify that billing is enabled for your Google Cloud project.

    Enable the Deployment Manager and IAM APIs.

    Enable the 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.

    1. En la consola, ve a la página IAM. Google Cloud

      Ir a la página de gestión de identidades y accesos

    2. En la lista de principales, busca el principal con el nombre Google APIs service agent.

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

    4. Haz clic en Guardar para aplicar el rol.

    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:

    1. Descarga el contenido de este repositorio de GitHub en tu máquina local.
    2. 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.
    3. 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
    4. 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.
      
    5. 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  []
      

    Ver el rol personalizado implementado

    Para ver tu rol personalizado en Deployment Manager, sigue estos pasos:

    1. En una ventana de terminal, ejecuta el siguiente comando:

      gcloud deployment-manager deployments describe your-deployment-name
    2. 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
      
    3. 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 de manifest. Copia este ID, incluido el prefijo manifest-, 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
    4. 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
      ...
      

    Para ver tu rol personalizado en la consola Google Cloud , sigue estos pasos:

    1. En la consola, ve a la página IAM. Google Cloud

      Ir a la página de gestión de identidades y accesos

    2. Selecciona un proyecto y haz clic en Abrir.

    3. En el menú de la izquierda, haz clic en Roles.

    4. 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: