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
- Si deseas usar los ejemplos de línea de comandos de esta guía, instala la herramienta de línea de comandos de gcloud.
- Si deseas usar los ejemplos de la API en esta guía, configura el acceso a la API.
- Lee acerca de la configuración de Deployment Manager.
- Lee acerca de Tipos.
- Lee la documentación de Administración de identidades y accesos (IAM).
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
oallUsers
.
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.
- Ve a la página de IAM en la consola de Google Cloud del proyecto que consumiendo los tipos.
- Si se te solicita, selecciona tu proyecto de la lista.
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
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
- En Google Cloud Console, ve a la página de IAM del proyecto que contiene los tipos que deseas compartir.
- Selecciona el proyecto de la lista de proyectos.
- Haz clic en el botón Agregar para agregar un miembro nuevo.
- En la casilla Miembros, ingresa la dirección de correo electrónico de la cuenta de servicio.
- Expande el menú desplegable Funciones y selecciona Otro > Visor de tipos de Deployment Manager (Beta).
- Haz clic en Agregar para agregar la cuenta.
gcloud
Con la CLI de Google Cloud, agrega una vinculación a la política de IAM 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 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" ] } ] }
}
Utilizar 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:
type: [PROJECT_ID]/composite:[TYPE]
Para proveedores de tipos:
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
.
Con gcloud CLI, puedes otorgarle a Jane el rol 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.
Pasos siguientes
- Lee sobre otras Funciones IAM que puedes otorgar.
- Obtén más información sobre las cuentas de servicio.