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
- Si quieres usar los ejemplos de línea de comandos de esta guía, instala la herramienta de línea de comandos`gcloud`.
- Si quieres usar los ejemplos de API de esta guía, configura el acceso a la API.
- Consulta información sobre las configuraciones de Deployment Manager.
- Consulta la sección Tipos.
- Lee la documentación sobre gestión de identidades y accesos (IAM).
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 aallUsers
.
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.
- 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.
- Si se te solicita, selecciona tu proyecto en la lista.
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
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
- 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.
- Selecciona el proyecto en la lista de proyectos.
- Haga clic en el botón Añadir para añadir un nuevo miembro.
- En el cuadro Miembros, introduce la dirección de correo de la cuenta de servicio.
- Despliega el menú Roles y selecciona Otro > Lector de tipos de Deployment Manager (beta).
- 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
- Consulta otros roles de gestión de identidades y accesos que puedes conceder.
- Más información sobre las cuentas de servicio