Compartir tipos entre proyectos

En esta página se describe cómo compartir tipos y proveedores de tipos que pertenezcan a tu proyecto con otros proyectos. Por ejemplo, supongamos que tienes un proyecto que se encarga de mantener proveedores de tipos preaprobados para tu empresa. Quieres poder compartir estos proveedores de tipos desde ese proyecto con otros proyectos y usar el proyecto como repositorio central de tipos. Del mismo modo, también puedes usar este método para compartir tipos compuestos entre proyectos.

Para configurar el acceso, un propietario del proyecto que posea el tipo deberá conceder el rol deploymentmanager.typeViewer (beta) a la cuenta de servicio del proyecto que quiera consumir los tipos. También deben conceder el rol a los usuarios que quieran ver y enumerar tipos de otro proyecto.

Antes de empezar

Limitaciones

Estas son las restricciones para usar esta función:

  • Si se asigna el rol deploymentmanager.typeViewer, se conceden permisos para todos los tipos del proyecto específico. No es posible limitar el uso compartido a tipos concretos.
  • No se puede asignar este rol a allAuthenticatedUsers ni a allUsers.

Conceder acceso a un proyecto para usar tipos

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

  1. Ve a la página de gestión de identidades y accesos en la Google Cloud consola del proyecto que va a usar los tipos.

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

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

    [PROJECT_NUMBER]@cloudservices.gserviceaccount.com
    
  4. Anota la dirección de correo que aparece arriba. A continuación, un propietario del proyecto en el que se encuentran los tipos deseados puede conceder el rol roles/deploymentmanager.typeViewer a la cuenta de servicio de las APIs de Google.

    Consola

    1. En la Google Cloud consola, ve a la página Gestión de identidades y accesos del proyecto que contenga los tipos que quieras compartir.

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

    2. Selecciona el proyecto en la lista de proyectos.
    3. Haga clic en el botón Añadir para añadir un nuevo miembro.
    4. En el cuadro Miembros, introduce la dirección de correo de la cuenta de servicio.
    5. Despliega el menú Roles y selecciona Otro > Lector de tipos de Deployment Manager (beta).
    6. Haz clic en Añadir para añadir la cuenta.

    gcloud

    Con la CLI de Google Cloud, añade un enlace a la política de gestión de identidades y accesos del 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 quieres compartir.
    • [SERVICE_ACCOUNT_EMAIL] es el correo de la cuenta de servicio del proyecto con el que quieres compartir 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, haz una solicitud POST a la siguiente URL, donde [PROJECT_ID] es el ID del proyecto que contiene los tipos que quieres compartir.

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

    El cuerpo de la solicitud debe contener la lista de enlaces que quieras aplicar a este proyecto. El rol roles/deploymentmanager.typeViewer debe formar 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"
               ]
           }
           ]
       }
    

    }

Usar tipos de otros proyectos en tu configuración

Una vez que tengas acceso a tus tipos, puedes especificar el tipo en las configuraciones mediante la sintaxis. En el caso de los tipos compuestos:

type: [PROJECT_ID]/composite:[TYPE]

Para proveedores de tipos:

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

Donde:

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

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

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

Permitir que los usuarios puedan enumerar y ver tipos

Si le asignas el rol deploymentmanager.typeViewer a la cuenta de servicio del proyecto, este podrá implementar estos tipos en tus configuraciones, pero los usuarios no podrán verlos ni enumerarlos. Si quiere conceder a usuarios concretos la capacidad de ver tipos, debe asignar el rol deploymentmanager.typeViewer a cada usuario.

Por ejemplo, para que Ana pueda ejecutar el comando gcloud beta deployment-manager types list --project another-project en un proyecto que no le pertenece, el propietario de another-project debe asignarle el rol deploymentmanager.typeViewer.

Con la gcloud CLI, puedes concederle el rol a Jane de la siguiente manera:

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

Para obtener instrucciones completas sobre cómo añadir y quitar roles de usuarios, consulta la documentación sobre cómo conceder, cambiar y revocar el acceso de los miembros del proyecto.

Siguientes pasos