Compartir tipos en todos los proyectos

En esta página se describe cómo compartir tipos y proveedores de tipos que pertenecen a tu proyecto con otros proyectos. Por ejemplo, supón que tienes un proyecto responsable de mantener a los proveedores de tipos preaprobados para tu empresa. Quieres poder compartir estos proveedores de tipos desde ese proyecto a otros, y utilizar el proyecto como el repositorio central de tipos. Además, también puedes utilizar este método para compartir tipos compuestos entre proyectos.

Para configurar el acceso, el propietario del proyecto que posee el tipo deberá otorgar el rol deploymentmanager.typeViewer (Beta) a la cuenta de servicio del proyecto que desea consumir los tipos. También debe otorgar la función a los usuarios que quiere visualizar y mostrar listas de los tipos de otro proyecto.

Antes de comenzar

Limitaciones

El uso de esta función tiene las siguientes restricciones:

  • Cuando se otorga la función deploymentmanager.typeViewer, se conceden permisos a todos los tipos en el proyecto específico. No se puede limitar el intercambio a los tipos individuales.
  • No es posible otorgar esta función a allAuthenticatedUsers o allUsers.

Otorga acceso a un proyecto para utilizar tipos

Para otorgar acceso a los tipos que pertenecen a otros proyectos, el propietario del proyecto que posee los tipos en cuestión debe otorgar el rol deploymentmanager.typeViewer a la cuenta de servicio de API de Google del proyecto que desea consumir los tipos.

  1. Ve a la página de IAM en Cloud Console del proyecto que usará los tipos.

    Ir a la página IAM

  2. Si se te solicita, selecciona tu proyecto de la lista.
  3. Busca la cuenta de servicio de las API de Google, que tiene la dirección de correo electrónico con el siguiente formato:

    [PROJECT_NUMBER]@cloudservices.gserviceaccount.com
    
  4. Toma nota de la dirección de correo electrónico anterior. A continuación el propietario del proyecto en el que se encuentran los tipos deseados puede otorgarle a la cuenta de servicio de las API de Google la función roles/deploymentmanager.typeViewer.

    Console

    1. En Google Cloud Console, ve a la página de IAM del proyecto que contiene los tipos que deseas compartir.

      Ir a la página IAM

    2. Selecciona el proyecto de la lista de proyectos.
    3. Haz clic en el botón Agregar para agregar un miembro nuevo.
    4. En la casilla Miembros, ingresa la dirección de correo electrónico de la cuenta de servicio.
    5. Expande el menú desplegable Funciones y selecciona Otro > Visor de tipos de Deployment Manager (Beta).
    6. Haz clic en Agregar para agregar la cuenta.

    gcloud

    Con la herramienta de línea de comandos de gcloud, agrega una vinculación a la política de IAM para el proyecto:

    gcloud projects add-iam-policy-binding [PROJECT_ID] \
        --member serviceAccount:[SERVICE_ACCOUNT_EMAIL] --role roles/deploymentmanager.typeViewer

    Donde:

    • [PROJECT_ID] es el ID del proyecto que contiene las imágenes que deseas compartir.
    • [SERVICE_ACCOUNT_EMAIL] es el correo electrónico de la cuenta de servicio en el proyecto con el que deseas compartir los tipos.

    Por ejemplo:

    gcloud projects add-iam-policy-binding database-images \
        --member serviceAccount:123456789012@cloudservices.gserviceaccount.com  \
        --role roles/deploymentmanager.typeViewer

    API

    En la API, realiza una solicitud POST a la siguiente URL, en la que [PROJECT_ID] es el ID del proyecto que contiene los tipos que deseas compartir.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/$[PROJECT_ID]:setIamPolicy
    

    El cuerpo de la solicitud debe contener la lista de vínculos que deseas aplicar al proyecto. La función roles/deploymentmanager.typeViewer debe ser parte de la vinculación. Por ejemplo:

    {
       "policy": {
           "version": "0",
           "bindings": [
           {
               "role": "roles/owner",
               "members": [
                   "user:example@gmail.com"
               ]
           },
           {
               "role": "roles/deploymentmanager.typeViewer",
               "members": [
                   "serviceAccount:123456789012@cloudservices.gserviceaccount.com"
               ]
           }
           ]
       }
    

    }

Utiliza tipos de otros proyectos en tu configuración

Una vez que tengas acceso a tus tipos, podrás especificar el tipo en la configuración mediante la sintaxis. Para tipos compuestos, haz lo siguiente:

type: [PROJECT_ID]/composite:[TYPE]

Para proveedores de tipos, haz lo siguiente:

type: [PROJECT_ID]/[TYPE]:[COLLECTION]

Aquí:

  • [PROJECT_ID] es el ID del proyecto que posee el tipo.
  • [TYPE] es el nombre del proveedor de tipos o el tipo compuesto.
  • [COLLECTION] es el recurso específico que estás creando. Esto solo se aplica para tipos de base. A fin de obtener más información sobre cómo especificar tipos de base, consulta Llama a un proveedor de tipos en una configuración.

Por ejemplo, si el ID del proyecto es my-type-repository, puedes proporcionar la siguiente especificación de tipo:

resources:
- name: a-special-vm
  type: my-type-repository/composite:autoscaled-igm
  properties:
    ...

Otorga a usuarios la capacidad de mostrar listas y visualizar tipos

Si otorgas a la cuenta de servicio del proyecto la función deploymentmanager.typeViewer, permites al proyecto implementar esos tipos en tu configuración, pero no le permites a los usuarios ver o mostrar listas de esos tipos. Si deseas otorgar a usuarios individuales la capacidad de ver tipos, debes otorgar la función deploymentmanager.typeViewer a cada usuario.

Por ejemplo, para que Jane ejecute el comando gcloud beta deployment-manager types list --project another-project de un proyecto que no le pertenece, el propietario de another-project debe otorgar a Jane la función deploymentmanager.typeViewer.

Mediante la herramienta de gcloud, puedes otorgarle a Jane la función de esta forma:

 gcloud projects add-iam-policy-binding another-project \
        --member user:jane@gmail.com --role deploymentmanager.typeViewer

Si deseas consultar instrucciones completas sobre cómo agregar o quitarle funciones a los usuarios, consulta la documentación para otorgar, cambiar y revocar el acceso a los miembros de proyecto.

¿Qué sigue?