Mantenimiento de las funciones personalizadas con Deployment Manager

Contexto

Las funciones personalizadas de Cloud Identity and Access Management te permiten otorgar permisos detallados a cuentas de usuario y de servicio. A diferencia de las funciones predefinidas, que son mantenidas por Google y actualizadas en consecuencia, tu organización mantiene las funciones personalizadas a medida que los nuevos permisos están disponibles.

Cloud Deployment Manager puede facilitar la configuración y el mantenimiento de tus funciones personalizadas. Puedes usar Cloud Deployment Manager para describir funciones mediante el uso de archivos de configuración que, luego, se pueden registrar en el sistema de control de origen de tu elección. Juntos, Cloud Deployment Manager y el control de origen pueden facilitar la configuración como código para lo siguiente:

  • Hacer un seguimiento de funciones personalizadas a medida que cambian con el tiempo
  • Promover funciones personalizadas a través de etapas de lanzamiento a medida que se prueban y validan
  • Automatizar cómo se implementan las funciones en toda tu organización

Situaciones para mantener funciones personalizadas con Deployment Manager

Considera las siguientes situaciones que demuestran los beneficios de usar Cloud Deployment Manager para mantener funciones personalizadas:

  • Cómo controlar el acceso a nuevos permisos: Tienes una función personalizada que contiene permisos para un servicio de Google Cloud Platform. El servicio agrega nuevas características Beta y expone nuevos permisos. Tu función personalizada no heredará automáticamente estos nuevos permisos; deben agregarse manualmente. Hasta que los nuevos permisos se agreguen a tu función personalizada, los usuarios de tu organización no tendrán acceso a las características Beta. Puedes usar los archivos de configuración y el control de origen de Cloud Deployment Manager para ayudar a auditar los permisos existentes, actualizar tus funciones personalizadas según sea necesario y mantener un historial de revisión.
  • Administración del ciclo de vida de la función: Tienes una nueva función personalizada a la que has asignado una etapa de lanzamiento ALPHA. Después de que la función personalizada haya sido probada y validada, puedes usar Cloud Deployment Manager para actualizar la configuración de la función personalizada y avanzar a la etapa BETA sin utilizar Google Cloud Platform Console.
  • Cómo comprender la adopción de funciones personalizadas: Cuando tienes más de las definiciones de funciones personalizadas de tu organización en el control de origen, facilita compartir, aprender de los patrones de uso y aplicar restricciones en múltiples proyectos.

Cómo comprender los archivos de configuración de Deployment Manager

Cloud Deployment Manager usa tres tipos de archivos diferentes para describir una implementación. Cada tipo se describe a continuación:

  • Las configuraciones son archivos YAML que describen los recursos y sus propiedades. Para las funciones personalizadas de Cloud IAM, cada archivo YAML especifica todas las propiedades para una o más funciones personalizadas, como su nombre, descripción y permisos.
  • Los esquemas especifican todas las propiedades posibles para un recurso dado y sus valores predeterminados. Para las funciones personalizadas de Cloud IAM, hay esquemas para las funciones personalizadas a nivel de proyecto y de la organización.
  • Las plantillas, que son archivos Jinja o Python que mejoran las configuraciones cuando se te permite dividir una configuración en partes reutilizables. Para las funciones personalizadas de Cloud IAM, existen dos plantillas proporcionadas: una para funciones personalizadas a nivel de proyecto y otra para funciones personalizadas a nivel de la organización.

Para obtener más información sobre estos tipos, consulta Fundamentos de Cloud Deployment Manager.

Antes de comenzar

Si no estás familiarizado con Cloud Deployment Manager, primero completa la Guía de inicio rápido. Luego sigue los pasos a continuación:

  1. Accede a tu Cuenta de Google.

    Si todavía no tienes una cuenta, regístrate para obtener una nueva.

  2. Selecciona o crea un proyecto de GCP.

    Ir a la página Administrar recursos

  3. Asegúrate de tener habilitada la facturación para tu proyecto.

    Aprende a habilitar la facturación

  4. Habilita las Deployment Manager y Cloud IAM API necesarias.

    Habilita las API

  5. Descarga y autentica gcloud.

Una vez que se hayan completado estos pasos de requisitos previos, puedes comenzar a usar Cloud Deployment Manager con Cloud IAM para mantener tus funciones personalizadas.

Otorga permisos a la cuenta de servicio de las API de Google

Para mantener las funciones personalizadas con Cloud Deployment Manager, primero debes otorgar los permisos adecuados a la cuenta de servicio de las API de Google. Esta cuenta se crea de forma predeterminada para cada organización y proyecto.

  1. Abre la página IAM en Google Cloud Platform Console.
    Abrir la página IAM.
  2. Haz clic en Seleccionar un proyecto.
  3. Selecciona un proyecto y haz clic en Abrir.
  4. En la lista de miembros, busca el miembro titulado Cuenta de servicio de API de Google.
  5. Haz clic en el menú desplegable ** Función(es) ** para la cuenta de servicio de las API de Google y, luego, haz clic en la función Funciones > Administrador de funciones.
  6. Haz clic en Guardar para aplicar la función.

Ahora que a la cuenta de servicio de las API de Google se le ha otorgado el permiso para mantener funciones personalizadas, puedes implementar una función personalizada de muestra con Cloud Deployment Manager.

Implementa funciones personalizadas en tu proyecto

Como se describe en la sección anterior, Cloud Deployment Manager usa una combinación de archivos de configuración para describir una implementación. Para Cloud IAM, considera los siguientes dos archivos de ejemplo para las funciones personalizadas 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 una función personalizada denominada custom-role, que otorga permisos para iam.roles.get y iam.roles.list. Ten en cuenta que hace referencia a un archivo .jinja dos veces; estas referencias utilizan los valores proporcionados por la plantilla de Jinja como se describe a continuación.

project_custom_role.jinja

{#
Copyright 2017 Google Inc. 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 una función personalizada a fin de minimizar la duplicación de las mismas propiedades en muchas funciones. Los valores predeterminados se insertan desde un archivo .schema si el archivo YAML correspondiente no especifica valores para cada propiedad.

  1. Descarga los contenidos de este repositorio de GitHub en tu máquina local.
  2. En una ventana de terminal, navega al directorio de examples/v2/iam_custom_role/jinja en el repositorio descargado. Contiene el archivo project_custom_role.yaml y los archivos Jinja asociados.
  3. Ejecuta el siguiente comando para implementar el ejemplo de función personalizada, reemplazando el valor del marcador de posición [YOUR-DEPLOYMENT-NAME] por el tuyo:

    gcloud deployment-manager deployments create \
       [YOUR-DEPLOYMENT-NAME] --config project_custom_role.yaml
    
  4. Espera a que se complete 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 fue exitosa, 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  []
    

Visualiza tu función personalizada implementada

Para ver tu función personalizada en Cloud Deployment Manager:

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

    gcloud deployment-manager deployments describe [YOUR-DEPLOYMENT-NAME]
    
  2. Verás una descripción de la implementación, que incluye información completa sobre su estado, cualquier error 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 puedes ver la información detallada sobre la configuración de la función personalizada recuperando el manifiesto de la implementación. En el resultado del comando de describe en el paso 2 anterior, anota el ID de manifest. Copia este ID, que incluye el prefijo manifest- y úsalo para reemplazar el valor del marcador de posición a continuación:

    gcloud deployment-manager manifests describe [YOUR-MANIFEST-ID] \
        --deployment [YOUR-DEPLOYMENT-NAME]
    
  4. El manifiesto contiene información completa sobre la implementación de la función personalizada, que incluye los contenidos sin procesar de los archivos de origen project_custom_role.yaml y project_custom_role.jinja. En particular, ten en cuenta el bloque de resources cerca de la parte inferior del manifiesto, que resume los detalles sobre la función 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 ...

Para ver tu función personalizada en Google Cloud Platform Console:

  1. Abre la página IAM en Google Cloud Platform Console.
    Abrir la página IAM.
  2. Haz clic en Seleccionar un proyecto.
  3. Selecciona un proyecto y haz clic en Abrir.
  4. En el menú izquierdo, haz clic en Funciones.
  5. Haz clic en el nombre de la nueva función personalizada creada en la lista. Debería verse similar a la captura de pantalla a continuación:
¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

Documentación de Cloud Identity and Access Management