Para permitir que los usuarios creen, eliminen, usen o compartan tus imágenes personalizadas, debes concederles los roles de gestión de identidades y accesos (IAM) adecuados. En este documento se describen los permisos de IAM necesarios para crear y gestionar imágenes personalizadas, así como la forma de concedérselos a los usuarios.
Para obtener información general sobre cómo conceder acceso a los recursos de Compute Engine, consulta el artículo Gestionar el acceso a los recursos de Compute Engine. Para obtener información sobre IAM, consulta la documentación de IAM.
Antes de empezar
- Consulta la documentación de IAM.
- Consulta información sobre los roles de gestión de identidades y accesos de Compute Engine, en concreto, el rol de usuario de imagen de Compute (
roles/compute.imageUser
). -
Si aún no lo has hecho, configura la autenticación.
La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:
gcloud init
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
- Set a default region and zone.
REST
Para usar las muestras de la API REST de esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la CLI de gcloud.
Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:
gcloud init
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud .
Roles obligatorios
Para obtener los permisos que necesitas para gestionar el acceso a imágenes personalizadas, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos:
-
Administrador de gestión de identidades y accesos de proyectos (
roles/resourcemanager.projectIamAdmin
) en el proyecto -
Administrador de Compute (
roles/compute.admin
) en el proyecto
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
Estos roles predefinidos contienen los permisos necesarios para gestionar el acceso a imágenes personalizadas. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:
Permisos obligatorios
Para gestionar el acceso a imágenes personalizadas, se necesitan los siguientes permisos:
-
Para dar a los usuarios o a las cuentas de servicio los permisos necesarios para crear y compartir imágenes personalizadas, sigue estos pasos:
-
resourcemanager.projects.getIamPolicy
en el proyecto -
resourcemanager.projects.setIamPolicy
en el proyecto
-
-
Para dar a los usuarios o a las cuentas de servicio los permisos necesarios para eliminar imágenes personalizadas, sigue estos pasos:
-
resourcemanager.projects.getIamPolicy
en el proyecto -
resourcemanager.projects.setIamPolicy
en el proyecto -
compute.images.getIamPolicy
en la imagen -
compute.images.setIamPolicy
en la imagen
-
-
Para revocar el acceso de un usuario o una cuenta de servicio a imágenes personalizadas, sigue estos pasos:
-
resourcemanager.projects.getIamPolicy
en el proyecto -
resourcemanager.projects.setIamPolicy
en el proyecto
-
-
Para crear una instancia con una imagen compartida, sigue estos pasos:
compute.instances.create
en el proyecto- Para usar una imagen personalizada para crear la VM, haz clic en
compute.images.useReadOnly
en la imagen. - Para usar una captura para crear la VM,
compute.snapshots.useReadOnly
en la captura - Para usar una plantilla de instancia para crear la VM, haz clic en
compute.instanceTemplates.useReadOnly
en la plantilla de instancia. - Para asignar una red antigua a la VM, haz lo siguiente:
compute.networks.use
en el proyecto - Para especificar una dirección IP estática para la máquina virtual,
compute.addresses.use
en el proyecto - Para asignar una dirección IP externa a la VM cuando se usa una red antigua, haz lo siguiente:
compute.networks.useExternalIp
en el proyecto - Para especificar una subred para la VM,
compute.subnetworks.use
en el proyecto o en la subred elegida. - Para asignar una dirección IP externa a la VM cuando se usa una red de VPC,
compute.subnetworks.useExternalIp
en el proyecto o en la subred elegida. - Para definir los metadatos de la instancia de VM de la VM:
compute.instances.setMetadata
en el proyecto, - Para definir etiquetas en la máquina virtual,
compute.instances.setTags
en la máquina virtual - Para definir etiquetas de la VM,
compute.instances.setLabels
en la VM - Para definir una cuenta de servicio que use la VM, haz lo siguiente en la VM:
compute.instances.setServiceAccount
- Para crear un disco para la VM
compute.disks.create
del proyecto, sigue estos pasos: - Para adjuntar un disco en modo de solo lectura o de lectura y escritura, haz lo siguiente:
compute.disks.use
en el disco - Para adjuntar un disco en modo de solo lectura,
compute.disks.useReadOnly
en el disco.
También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.
Limitaciones
En las imágenes, no puedes asignar roles al tipo de miembro especial
allUsers
.Conceder permiso para crear imágenes personalizadas
Puedes dar a los usuarios la posibilidad de crear imágenes personalizadas en tu organización o proyecto.
Compute Engine ofrece el rol Administrador de almacenamiento de Compute (
roles/compute.storageAdmin
) predefinido que puedes asignar a los usuarios para que puedan crear, eliminar y gestionar recursos relacionados con el almacenamiento, como imágenes, discos y capturas. Si necesitas un rol que solo permita crear imágenes, debes crear un rol personalizado. En tu rol personalizado, incluye los siguientes permisos:compute.images.create
para crear imágenes nuevascompute.images.list
para mostrar las imágenes del proyectocompute.disks.use
si la imagen se crea a partir de un discocompute.disks.list
si los usuarios necesitan enumerar todos los discos de un proyecto
Si das a un usuario la posibilidad de crear imágenes personalizadas a nivel de organización, podrá crear imágenes personalizadas para cualquier proyecto de la organización.
Consola
En la Google Cloud consola, ve a la página Gestión de identidades y accesos del proyecto o la organización.
Para añadir un miembro, haz clic en
Dar acceso.En el campo Nuevos principales, introduce la dirección de correo de la identidad a la que quieras conceder acceso.
Por ejemplo:
- Correo de la cuenta de Google:
test-user@gmail.com
- Grupo de Google:
admins@googlegroups.com
- Identidad de un proveedor de identidades externo:
principal://iam.googleapis.com/locations/global/workforcePools/altostrat-contractors/subject/raha@altostrat.com
- Cuenta de servicio:
server@example.gserviceaccount.com
- Dominio de Google Workspace:
example.com
- Correo de la cuenta de Google:
En la lista Seleccionar un rol, selecciona Compute Engine > Administrador de almacenamiento de Compute o un rol personalizado si has creado alguno.
Opcional: Para controlar aún más el acceso de los usuarios a los Google Cloud recursos, añade una vinculación de rol condicional.
Guarda los cambios.
gcloud
Para asignar el rol
roles/compute.storageAdmin
a nivel de organización, usa el comandogcloud organizations add-iam-policy-binding
:gcloud organizations add-iam-policy-binding ORGANIZATION_ID \ --member='MEMBER' \ --role='roles/compute.storageAdmin'
Para asignar el rol
roles/compute.storageAdmin
a nivel de proyecto, usa el comandogcloud projects add-iam-policy-binding
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='MEMBER' \ --role='roles/compute.storageAdmin'
Haz los cambios siguientes:
ORGANIZATION_ID
oPROJECT_ID
: el ID de la organización o el ID del proyecto. Por ejemplo,my-organization-1
omy-project-1
.MEMBER
: una identidad válida a la que quieras conceder el rolPor ejemplo:
- Correo de la cuenta de Google:
user:user@gmail.com
- Grupo de Google:
group:admins@googlegroups.com
- Identidad de un proveedor de identidades externo:
principal://iam.googleapis.com/locations/global/workforcePools/altostrat-contractors/subject/raha@altostrat.com
- Cuenta de servicio:
serviceAccount:server@example.gserviceaccount.com
- Dominio de Google Workspace:
domain:example.com
- Correo de la cuenta de Google:
REST
Lee la política actual con el método
getIamPolicy
del recurso. En el caso de los proyectos, utiliza el métodoprojects.getIamPolicy
.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
Sustituye
PROJECT_ID
por el ID del proyecto (por ejemplo,my-project-1
).En el caso de las organizaciones, utiliza el método
organizations.getIamPolicy
.POST https://cloudresourcemanager.googleapis.com/v1/organizations/ORGANIZATION_ID:getIamPolicy
Sustituye
ORGANIZATION_ID
por el ID de la organización. Por ejemplo,123456578920
.Compute Engine devuelve la política actual en la respuesta.
Para añadir o quitar miembros y sus roles asociados, edita la política con un editor de texto. Utiliza el siguiente formato para añadir miembros:
user:test-user@gmail.com
group:admins@example.com
serviceAccount:test123@example.domain.com
domain:example.domain.com
Por ejemplo, para asignar el rol
roles/compute.storageAdmin
agroup:admins@example.com
, añade la siguiente vinculación a la política:{ "members": [ "group:admins@example.com" ], "role":"roles/compute.storageAdmin" }
Escribe la política actualizada con el método
setIamPolicy
.Por ejemplo, para definir una política a nivel de proyecto, usa el método
project.setIamPolicy
. En el cuerpo de la solicitud, proporciona la política de gestión de identidades y accesos actualizada del paso anterior.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
Sustituye
PROJECT_ID
por el ID del proyecto.
Conceder permisos para eliminar imágenes personalizadas
En función de tus necesidades, puedes dar permiso a los usuarios para que hagan lo siguiente:
- Eliminar una imagen específica
- Eliminar imágenes propiedad de un proyecto específico
- Eliminar imágenes de cualquier proyecto de una organización
Si se conceden permisos a nivel de proyecto, los usuarios podrán eliminar todas las imágenes que pertenezcan a ese proyecto. Si se concede permiso a nivel de organización, el usuario podrá eliminar cualquier imagen que pertenezca a esa organización, independientemente del proyecto.
Compute Engine ofrece el rol predefinido Administrador de almacenamiento de Compute (
roles/compute.storageAdmin
) que puedes asignar a los usuarios para que puedan crear, eliminar y gestionar recursos relacionados con el almacenamiento, como imágenes, discos y capturas. Si necesitas un rol que solo permita eliminar imágenes, debes crear un rol personalizado. En tu rol personalizado, incluye los siguientes permisos:compute.images.delete
para eliminar imágenescompute.images.list
si los usuarios necesitan enumerar imágenes en el proyecto o en la organizacióncompute.images.get
para obtener las imágenes
Consola
Para dar permiso para eliminar imágenes específicas, sigue estos pasos:
En la Google Cloud consola, ve a la página Imágenes.
Selecciona las imágenes a las que quieras dar permisos.
Para desplegar la columna de permisos, haz clic en Mostrar panel de información.
Para añadir uno o varios miembros, haz clic en Añadir principal.
En el campo Nuevos principales, introduce la dirección de correo de la identidad con la que quieras compartir la imagen.
Por ejemplo:
- Correo de la cuenta de Google:
test-user@gmail.com
- Grupo de Google:
admins@googlegroups.com
- Identidad de un proveedor de identidades externo:
principal://iam.googleapis.com/locations/global/workforcePools/altostrat-contractors/subject/raha@altostrat.com
- Cuenta de servicio:
server@example.gserviceaccount.com
- Dominio de Google Workspace:
example.com
- Correo de la cuenta de Google:
En la lista Rol, coloca el puntero sobre Compute Engine y selecciona Administrador de almacenamiento o un rol personalizado de la lista Personalizado.
Opcional: Para controlar aún más el acceso de los usuarios a los Google Cloud recursos, añade una vinculación de rol condicional.
Guarda los cambios.
Para dar permiso para eliminar imágenes de un proyecto o una organización, sigue estos pasos:
Ve a la página Gestión de identidades y accesos del proyecto o la organización.
Haz clic en
Conceder acceso.En el campo Nuevos principales, introduce la dirección de correo de la identidad a la que quieras conceder acceso. Por ejemplo:
- Correo de la cuenta de Google:
test-user@gmail.com
- Grupo de Google:
admins@googlegroups.com
- Identidad de un proveedor de identidades externo:
principal://iam.googleapis.com/locations/global/workforcePools/altostrat-contractors/subject/raha@altostrat.com
- Cuenta de servicio:
server@example.gserviceaccount.com
- Dominio de Google Workspace:
example.com
- Correo de la cuenta de Google:
En la lista Rol, coloca el puntero sobre Compute Engine y selecciona Administrador de almacenamiento o un rol personalizado de la lista Personalizado.
Opcional: Para controlar aún más el acceso de los usuarios a los Google Cloud recursos, añade una vinculación de rol condicional.
Guarda los cambios.
gcloud
Para conceder permisos para eliminar imágenes a nivel de organización, usa el
gcloud organizations add-iam-policy-binding
comando:gcloud organizations add-iam-policy-binding ORGANIZATION_ID \ --member='MEMBER' \ --role='ROLE'
Para conceder permisos para eliminar imágenes a nivel de proyecto, usa el
gcloud projects add-iam-policy-binding
comando:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='MEMBER' \ --role='ROLE'
Para dar permisos para eliminar una imagen específica, usa el
gcloud compute images add-iam-policy-binding
comando:gcloud compute images add-iam-policy-binding IMAGE_NAME \ --member='MEMBER' \ --role='ROLE'
Haz los cambios siguientes:
ORGANIZATION_ID
oPROJECT_ID
oIMAGE_NAME
: el ID de organización numérico de 12 dígitos, el ID de proyecto o el nombre de la imagen. Por ejemplo,123456578920
,my-project-1
omy-custom-image
.MEMBER
: una identidad válida a la que quieras conceder el rolPor ejemplo:
- Correo de la cuenta de Google:
user:user@gmail.com
- Grupo de Google:
group:admins@googlegroups.com
- Identidad de un proveedor de identidades externo:
principal://iam.googleapis.com/locations/global/workforcePools/altostrat-contractors/subject/raha@altostrat.com
- Cuenta de servicio:
serviceAccount:server@example.gserviceaccount.com
- Dominio de Google Workspace:
domain:example.com
- Correo de la cuenta de Google:
ROLE
: el rol que se asignará a esta identidad (por ejemplo, el rolroles/compute.storageAdmin
o un rol personalizado comoroles/customImageDeletionRole
).
REST
Lee la política actual con el método
getIamPolicy
correspondiente del recurso. En el caso de los proyectos, usa el métodoprojects.getIamPolicy
:POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
Sustituye
PROJECT_ID
por el ID del proyecto.En el caso de las organizaciones, utiliza el método
organizations.getIamPolicy
:POST https://cloudresourcemanager.googleapis.com/v1/organizations/ORGANIZATION_ID:getIamPolicy
Sustituye
ORGANIZATION_ID
por el ID de organización numérico de 12 dígitos.Para una imagen específica, usa el método
images.getIamPolicy
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:getIamPolicy
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyectoIMAGE_NAME
: el nombre de la imagen
Compute Engine devuelve la política actual en la respuesta.
Para añadir o quitar miembros y sus roles asociados, puedes editar la política con un editor de texto. Utiliza el siguiente formato para añadir miembros:
user:test-user@gmail.com
group:admins@example.com
serviceAccount:test123@example.domain.com
domain:example.domain.com
Por ejemplo, para asignar el rol
roles/compute.storageAdmin
auser:test-email@example.com
, añade la siguiente vinculación a la política:{ "members": [ "user:test-email@example.com" ], "role":"roles/compute.storageAdmin" }
Escribe la política actualizada con el método
setIamPolicy
.Por ejemplo, para definir una política a nivel de proyecto, usa el método
project.setIamPolicy
. En el cuerpo de la solicitud, proporciona la política de gestión de identidades y accesos actualizada del paso anterior.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
Sustituye
PROJECT_ID
por el ID del proyecto.
Conceder permisos para compartir imágenes personalizadas en una organización
Si tu proyecto pertenece a una organización, esta puede tener varios proyectos con diferentes niveles de acceso a otros proyectos. Cuando creas imágenes personalizadas, puedes compartirlas con otros usuarios de otros proyectos de la organización.
Compute Engine ofrece los siguientes roles de gestión de identidades y accesos predefinidos que puedes usar para gestionar imágenes:
- Usuario de imágenes de Compute (
roles/compute.imageUser
): permiso para enumerar, leer y usar imágenes en tus solicitudes, sin tener otros permisos en la imagen - Administrador de Compute Storage (
roles/compute.storageAdmin
): permisos para crear, modificar y eliminar discos, imágenes e instantáneas
También puedes crear tu propio rol de gestión de identidades y accesos personalizado.
Como práctica recomendada, te sugerimos que guardes todas tus imágenes personalizadas en un único proyecto dedicado a alojarlas. De esta forma, se mejora la gestión de esas imágenes y se puede conceder acceso a equipos específicos solo a las imágenes que necesiten. También puedes conceder acceso a todo el proyecto de imagen a los equipos, pero no lo recomendamos porque infringe el principio de mínimos accesos.
En el ejemplo siguiente se muestra cómo añadir un grupo para que los usuarios de ese grupo tengan acceso a la imagen.
Consola
En la Google Cloud consola, ve a la página Imágenes.
Selecciona la imagen que quieras compartir con otros usuarios.
Para desplegar la columna de permisos, haz clic en Mostrar panel de información.
Para añadir uno o varios miembros, haz clic en Añadir principal.
En el campo Nuevos principales, introduce la dirección de correo de la identidad con la que quieras compartir la imagen.
Por ejemplo:
- Correo de la cuenta de Google:
test-user@gmail.com
- Grupo de Google:
admins@googlegroups.com
- Identidad de un proveedor de identidades externo:
principal://iam.googleapis.com/locations/global/workforcePools/altostrat-contractors/subject/raha@altostrat.com
- Cuenta de servicio:
server@example.gserviceaccount.com
- Dominio de Google Workspace:
example.com
- Correo de la cuenta de Google:
En la lista Rol, coloca el puntero sobre Compute Engine y selecciona Usuario de imagen o Administrador de almacenamiento, o bien selecciona un rol personalizado.
Opcional: Para controlar aún más el acceso de los usuarios a los recursos de Google Cloud, añade una vinculación de rol condicional.
Guarda los cambios.
Para permitir que los usuarios lancen imágenes personalizadas compartidas desde la consola Google Cloud , asigna a los usuarios el rol de lector de gestión de identidades y accesos (
roles/viewer
) del proyecto de imagen. Si asignas este rol, te aseguras de que las imágenes compartidas aparezcan en la lista de selección de imágenes.En la consola, ve a la página Gestión de identidades y accesos. Google Cloud
Haz clic en
Conceder acceso.En el campo Nuevos principales, introduce la dirección de correo de la identidad con la que quieras compartir la imagen. Por ejemplo:
- Correo de la cuenta de Google:
test-user@gmail.com
- Grupo de Google:
admins@googlegroups.com
- Identidad de un proveedor de identidades externo:
principal://iam.googleapis.com/locations/global/workforcePools/altostrat-contractors/subject/raha@altostrat.com
- Cuenta de servicio:
server@example.gserviceaccount.com
- Dominio de Google Workspace:
example.com
- Correo de la cuenta de Google:
En la lista Rol, coloca el puntero sobre Proyecto y selecciona Lector.
Opcional: Para controlar aún más el acceso de los usuarios a los recursos de Google Cloud, añade una vinculación de rol condicional.
Guarda los cambios.
gcloud
Para actualizar la política de gestión de identidades y accesos de una imagen específica, usa el comando
gcloud compute images add-iam-policy-binding
:gcloud compute images add-iam-policy-binding IMAGE_NAME \ --member='MEMBER' \ --role='ROLE'
Haz los cambios siguientes:
IMAGE_NAME
: el nombre de la imagen (por ejemplo,custom-centos-8
)MEMBER
: una identidad válida a la que quieras asignar el rolPor ejemplo:
user:test-user@gmail.com
group:admins@example.com
serviceAccount:test123@example.domain.com
domain:example.domain.com
ROLE
: el rol que se va a asignar a esta identidad, comoroles/compute.imageUser
oroles/compute.storageAdmin
, o un rol personalizado
Opcionalmente, para que los usuarios puedan ver estas imágenes compartidas en sus
images.list
solicitudes, concédeles el rol de gestión de identidades y accesos de lector (roles/viewer
) para el proyecto de imagen mediante el comandogcloud projects add-iam-policy-binding
. Si no quieres que tus usuarios puedan ver la lista de imágenes compartidas, puedes saltarte este paso.gcloud projects add-iam-policy-binding PROJECT_ID \ --member='MEMBER' \ --role='roles/viewer'
REST
Lee la política actual con el método
getIamPolicy
del recurso. Por ejemplo, para obtener la política de una imagen específica, usa el métodoimages.getIamPolicy
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:getIamPolicy
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto al que pertenece esta imagenIMAGE_NAME
: el nombre de la imagen
Compute Engine devuelve la política actual en la respuesta.
Para añadir o quitar miembros y sus roles asociados, edita la política con un editor de texto. Utiliza el siguiente formato para añadir miembros:
user:test-user@gmail.com
group:admins@example.com
serviceAccount:test123@example.domain.com
domain:example.domain.com
Por ejemplo, para conceder
roles/compute.imageUser
atest-email@example.com
, añade el siguiente enlace a la política:{ "members": [ "user:test-email@example.com" ], "role":"roles/compute.imageUser" }
Escribe la política actualizada con el método
setIamPolicy
. Por ejemplo, para definir una política en una imagen específica, usa el métodoproject.setIamPolicy
. En el cuerpo de la solicitud, proporciona la política de gestión de identidades y accesos actualizada del paso anterior.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:setIamPolicy
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto al que pertenece esta imagenIMAGE_NAME
: el nombre de la imagen
Si quieres que los usuarios vean estas imágenes compartidas en sus
images.list
solicitudes, puedes asignarles el rol de gestión de identidades y accesos Lector (roles/viewer
) en el proyecto de imagen mediante el métodoprojects.setIamPolicy
. Si no necesitas que tus usuarios puedan ver la lista de imágenes compartidas, puedes saltarte este paso.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
Conceder permisos para compartir imágenes personalizadas entre organizaciones
Crear un catálogo de imágenes personalizadas puede ser útil para compartir imágenes con partners, usuarios o contratistas ajenos a tu organización. Para compartir tus imágenes con usuarios ajenos a la organización, añádelos como usuarios de imágenes a tu proyecto:
Consola
En la Google Cloud consola, ve a la página Imágenes.
Selecciona la imagen que quieras compartir con otros usuarios.
Para desplegar la columna de permisos, haz clic en Mostrar panel de información.
Para añadir uno o varios miembros, haz clic en Añadir principal.
En el campo Nuevos principales, introduce la dirección de correo del grupo con el que quieras compartir la imagen. Por ejemplo,
admins@example.com
.En la lista Rol, coloca el puntero sobre Compute Engine y selecciona Usuario de imagen de Compute.
Opcional: Para controlar aún más el acceso de los usuarios a los recursos de Google Cloud, añade una vinculación de rol condicional.
Guarda los cambios.
Para permitir que los usuarios lancen imágenes personalizadas compartidas desde la consola Google Cloud , asigna a los usuarios el rol de lector de gestión de identidades y accesos (
roles/viewer
) del proyecto de imagen. Al conceder este rol, te aseguras de que las imágenes compartidas aparezcan en la lista de selección de imágenes.En la consola, ve a la página Gestión de identidades y accesos. Google Cloud
Haz clic en
Conceder acceso.En el campo Nuevos principales, introduce la dirección de correo de la identidad con la que quieras compartir la imagen. Por ejemplo,
admins@example.com
.En la lista Rol, coloca el puntero sobre Proyecto y selecciona Lector.
Opcional: Para controlar aún más el acceso de los usuarios a los recursos de Google Cloud, añade una vinculación de rol condicional.
Guarda los cambios.
gcloud
Para asignar el rol
roles/compute.imageUser
a los usuarios, usa el comandogcloud compute images add-iam-policy-binding
:gcloud compute images add-iam-policy-binding IMAGE_NAME \ --member='MEMBER' \ --role='roles/compute.imageUser'
Haz los cambios siguientes:
IMAGE_NAME
: el nombre de la imagen (por ejemplo,custom-centos-8
)MEMBER
: una identidad válida a la que quieras asignar el rol (por ejemplo,group:admins@example.com
).
Opcionalmente, para que los usuarios puedan ver estas imágenes compartidas en sus
images.list
solicitudes, concédeles el rol de gestión de identidades y accesos de lector (roles/viewer
) para el proyecto de imagen mediante el comandogcloud projects add-iam-policy-binding
. Si no necesitas que tus usuarios puedan ver la lista de imágenes compartidas, puedes saltarte este paso.gcloud projects add-iam-policy-binding PROJECT_ID \ --member='MEMBER' \ --role='roles/viewer'
REST
Lee la política actual con el método
getIamPolicy
del recurso. Por ejemplo, para obtener la política de una imagen específica, usa el métodoimages.getIamPolicy
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:getIamPolicy
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto al que pertenece esta imagenIMAGE_NAME
: el nombre de la imagen
Compute Engine devuelve la política actual en la respuesta.
Para añadir o quitar miembros y sus roles asociados, puedes editar la política con un editor de texto. Utiliza el siguiente formato para añadir miembros:
user:test-user@gmail.com
group:admins@example.com
serviceAccount:test123@example.domain.com
domain:example.domain.com
Por ejemplo, para conceder
roles/compute.imageUser
atest-user@example.com
, añade el siguiente enlace a la política:{ "members": [ "user:test-user@example.com" ], "role":"roles/compute.imageUser" }
Escribe la política actualizada con el método
setIamPolicy
. Por ejemplo, para definir una política en una imagen específica, usa el métodoimages.setIamPolicy
. En el cuerpo de la solicitud, proporciona la política de gestión de identidades y accesos actualizada del paso anterior.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:setIamPolicy
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto al que pertenece esta imagenIMAGE_NAME
: el nombre de la imagen
Opcionalmente, para que los usuarios puedan ver estas imágenes compartidas en sus
images.list
solicitudes, concédeles el rol de gestión de identidades y accesos de lector (roles/viewer
) del proyecto de imagen mediante el métodoprojects.setIamPolicy
. Si no necesitas que tus usuarios puedan ver la lista de imágenes compartidas, puedes saltarte este paso.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
Conceder permisos para compartir imágenes personalizadas públicamente
Puedes compartir tus imágenes personalizadas con todos los usuarios autenticados de Compute Engine, independientemente de si forman parte de tu organización o proyecto.
Solo puedes compartir recursos, como imágenes, con todos los usuarios autenticados. No puedes compartir proyectos ni organizaciones con todos los usuarios autenticados. Esta restricción, junto con la jerarquía de recursos, ayuda a evitar que una organización comparta por error todo su proyecto con todos los usuarios autenticados de Compute Engine.
En el siguiente ejemplo se muestra cómo asignar el rol Usuario de imagen de Compute (
roles/compute.imageUser
) a una imagen personalizada para todos los usuarios autenticados de Compute Engine.gcloud
Para hacer públicas las imágenes, usa el comando
gcloud compute images add-iam-policy-binding
:gcloud compute images add-iam-policy-binding IMAGE_NAME \ --member='allAuthenticatedUsers' \ --role='roles/compute.imageUser'
Sustituye
IMAGE_NAME
por el nombre del recurso (por ejemplo,my_image
).REST
Lee la política actual con el método
getIamPolicy
. Por ejemplo, para obtener la política de una imagen específica, usa el métodoimages.getIamPolicy
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:getIamPolicy
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto al que pertenece esta imagenIMAGE_NAME
: el nombre de la imagen
Compute Engine devuelve la política actual en la respuesta.
Para añadir o quitar miembros y sus roles asociados, edita la política con un editor de texto:
{ "members": [ "allAuthenticatedUsers" ], "role":"roles/compute.imageUser" }
Escribe la política actualizada con el método
setIamPolicy
. Por ejemplo, para definir una política en una imagen específica, usa el métodoimages.setIamPolicy
. En el cuerpo de la solicitud, proporciona la política de gestión de identidades y accesos actualizada del paso anterior.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:setIamPolicy
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto al que pertenece esta imagenIMAGE_NAME
: el nombre de la imagen
Conceder acceso a imágenes a un grupo de instancias gestionado
Compute Engine te permite crear grupos de instancias, ya sean gestionados o sin gestionar. Si creas un grupo de instancias gestionado (MIG), Compute Engine usa el agente de servicio de las APIs de Google para llamar a la API de Compute Engine y realizar acciones relacionadas con el grupo, como recrear instancias incorrectas y actualizar instancias.
Si quieres crear un MIG con una imagen de otro proyecto, otorga el rol Usuario de imagen de Compute (
roles/compute.imageUser
) a la cuenta de servicio de las APIs del proyecto que crea el MIG. Por ejemplo:- El proyecto A quiere crear un MIG con imágenes propiedad del proyecto B.
- El proyecto B concede a la cuenta de servicio del proyecto A el rol Usuario de imagen de Compute.
- El proyecto A ahora puede usar imágenes del proyecto B para crear MIGs.
Después de conceder el rol Usuario de imagen de Compute, puedes acceder a la imagen desde los otros proyectos mediante la consola o la URL de la imagen al crear la plantilla de instancia del grupo gestionado.
Obtener la dirección de correo de la cuenta de servicio
En la Google Cloud consola, ve a la página Gestión de identidades y accesos del proyecto cuya cuenta de servicio quieres que tenga acceso.
Si se te solicita, selecciona tu proyecto en la lista.
Busca el agente de servicio de las APIs de Google, que tiene la dirección de correo en el siguiente formato:
PROJECT_NUMBER@cloudservices.gserviceaccount.com
Una vez que hayas obtenido la dirección de correo de la cuenta de servicio, puedes ir a una de las siguientes secciones:
- Dar acceso a un MIG a todas las imágenes de un proyecto
- Dar acceso a un MIG a imágenes específicas de un proyecto
Conceder a un MIG acceso a todas las imágenes de un proyecto
Ahora que tienes la dirección de correo de una cuenta de servicio, puedes añadirla a otro proyecto y concederle el rol Usuario de imagen de Compute (
roles/compute.imageUser
).Consola
En la Google Cloud consola, ve a la página Gestión de identidades y accesos del proyecto de imagen.
Para añadir un miembro, haz clic en
Dar acceso.En el campo Nuevos principales, añade la dirección de correo de la cuenta de servicio.
En la lista Rol, coloca el cursor sobre Compute y selecciona Usuario de imagen de Compute.
Opcional: Para controlar aún más el acceso de los usuarios a los recursos de Google Cloud, añade una vinculación de rol condicional.
Haz clic en Guardar.
Vuelve al proyecto de la cuenta de servicio.
Ahora puedes crear una plantilla de instancia a partir de una imagen del proyecto de imagen y crear un MIG a partir de la plantilla de instancia.
gcloud
Añade una cuenta de servicio del proyecto de imagen con el comando
gcloud projects add-iam-policy-binding
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:SERVICE_ACCOUNT_EMAIL' --role='roles/compute.imageUser'
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto que contiene las imágenes que quieres compartirSERVICE_ACCOUNT_EMAIL
: el correo de la cuenta de servicio
Ahora puedes crear una plantilla de instancia a partir de una imagen del proyecto de imagen y crear un MIG a partir de la plantilla de instancia.
REST
Obtén la política de gestión de identidades y accesos del proyecto de imagen con el método
projects.getIamPolicy
:POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
Sustituye
PROJECT_ID
por el ID del proyecto de la imagen.Para asignar el rol
roles/compute.imageUser
a la cuenta de servicio, edita la política con un editor de texto:{ "bindings": [ { "role": "roles/compute.imageUser", "members": [ "serviceAccount:SERVICE_ACCOUNT_EMAIL" ] } ] }
Sustituye
SERVICE_ACCOUNT_EMAIL
por el correo de la cuenta de servicio.Escribe la política actualizada con el
projects.setIamPolicy
. En el cuerpo de la solicitud, proporciona la política de gestión de identidades y accesos actualizada del paso anterior.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
Sustituye
PROJECT_ID
por el ID de producto del proyecto de imagen.Ahora puedes crear una plantilla de instancia a partir de una imagen del proyecto de imagen y crear un MIG a partir de la plantilla de instancia.
Conceder a un MIG acceso a imágenes específicas de un proyecto
Ahora que tienes la dirección de correo de una cuenta de servicio, puedes añadirla a otro proyecto y concederle el rol de usuario de imagen de Compute (
roles/compute.imageUser
) para determinadas imágenes.Consola
En la Google Cloud consola, ve a la página Imágenes del proyecto de imagen.
Seleccione las casillas situadas junto a las imágenes que quiera compartir.
Para desplegar la columna de permisos, haz clic en Mostrar panel de información.
En el panel Permisos, haz clic en Añadir principal.
En el campo Nuevos principales, introduce la dirección de correo de la cuenta de servicio con la que quieras compartir la imagen. Por ejemplo,
test123@example.domain.com
.En la lista Rol, elige Compute y selecciona Usuario de imagen de Compute.
Opcional: Para controlar aún más el acceso de los usuarios a los Google Cloud recursos, añade una vinculación de rol condicional.
Haz clic en Guardar.
Vuelve al proyecto de la cuenta de servicio.
Ahora puedes crear una plantilla de instancia a partir de una imagen del proyecto de imagen y crear un MIG a partir de la plantilla de instancia.
gcloud
Para conceder acceso a una imagen específica a una cuenta de servicio, usa el comando
gcloud compute images add-iam-policy-binding
:gcloud compute images add-iam-policy-binding IMAGE_NAME \ --member='serviceAccount:SERVICE_ACCOUNT_EMAIL' \ --role='roles/compute.imageUser'
Haz los cambios siguientes:
IMAGE_NAME
: el nombre de la imagen que quieras compartirSERVICE_ACCOUNT_EMAIL
: el correo de la cuenta de servicio
Ahora puedes crear una plantilla de instancia a partir de una imagen del proyecto de imagen y crear un MIG a partir de la plantilla de instancia.
REST
Para obtener la política de gestión de identidades y accesos de una imagen, usa el método
images.getIamPolicy
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:getIamPolicy
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto de la imagenIMAGE_NAME
: el nombre de la imagen que quieres compartir
Para asignar el rol
roles/compute.imageUser
a la cuenta de servicio, edita la política con un editor de texto:{ "bindings": [ { "role": "roles/compute.imageUser", "members": [ "serviceAccount:SERVICE_ACCOUNT_EMAIL" ] } ] }
Sustituye
SERVICE_ACCOUNT_EMAIL
por el correo de la cuenta de servicio.Escribe la política actualizada con el método
images.setIamPolicy
. En el cuerpo de la solicitud, proporciona la política de gestión de identidades y accesos actualizada del paso anterior.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:setIamPolicy
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto de la imagenIMAGE_NAME
: el nombre de la imagen que quieres compartir
Ahora puedes crear una plantilla de instancia a partir de una imagen del proyecto de imagen y crear un MIG a partir de la plantilla de instancia.
Controlar el uso de tus imágenes y capturas compartidas
Después de compartir tus imágenes con otros usuarios, puedes controlar dónde emplean esos recursos en tu organización. Define la restricción
constraints/compute.storageResourceUseRestrictions
para especificar los proyectos en los que los usuarios pueden usar tus recursos de almacenamiento.Para definir estas restricciones, debes tener permiso para modificar las políticas de tu organización. Por ejemplo, el
resourcemanager.organizationAdmin
rol tiene permiso para definir estas restricciones.Para encontrar el ID de tu organización, usa el comando
gcloud organization list
:gcloud organizations list
Para obtener los ajustes de políticas de tu organización, usa el comando
gcloud resource-manager org-policies describe
:gcloud resource-manager org-policies describe \ compute.storageResourceUseRestrictions \ --organization ORGANIZATION_ID > org-policy.yaml
Sustituye ORGANIZATION_ID por tu ID de organización numérico de 12 dígitos.
Abre el archivo
org-policy.yaml
en un editor de texto y modifica la restriccióncompute.storageResourceUseRestrictions
. Añade las restricciones que necesites o elimina las que ya no quieras. Cuando termines de editar el archivo, guarda los cambios. Por ejemplo, puede definir la siguiente entrada de restricción en su archivo de política:constraint: compute.storageResourceUseRestrictions listPolicy: allowedValues: - under:organization/organization-id
Aplica el archivo
org-policy.yaml
a tu organización con el comandogcloud resource-manager org-policies set-policy
:gcloud resource-manager org-policies set-policy \ --organization=ORGANIZATION_ID org-policy.yaml
Sustituye ORGANIZATION_ID por tu ID de organización numérico de 12 dígitos.
Cuando termines de configurar las restricciones en tu política de organización, pruébalas para asegurarte de que crean las restricciones que quieres.
Usar imágenes de otro proyecto
Si alguien te da acceso a una o varias imágenes de otro proyecto, puedes acceder a ellas en el proyecto especificando el proyecto de la imagen en tus solicitudes.
Por ejemplo, para crear una instancia con una imagen compartida de otro proyecto, sigue los pasos que se indican en Crear una instancia a partir de una imagen compartida.
También puedes crear volúmenes de disco de arranque a partir de imágenes de otro proyecto. Para obtener información sobre cómo crear un disco de arranque a partir de una imagen, consulta Crear un disco persistente de arranque independiente.
Revocar el acceso a imágenes compartidas
Cuando un usuario ya no necesite acceder a tus recursos de Compute Engine, revoca su acceso mediante la Google Cloud consola, la CLI de Google Cloud o REST.
Consola
En la Google Cloud consola, ve a la página Imágenes del proyecto de imagen.
Seleccione las casillas situadas junto a las imágenes que quiera actualizar.
Para desplegar la columna de permisos, haz clic en Mostrar panel de información.
Despliega el rol del que quieras quitar usuarios.
Para quitar un usuario de ese rol, haz clic en
Eliminar.
gcloud
Para quitar un usuario de un rol en una imagen, usa el
gcloud compute images remove-iam-policy-binding
comando con las marcas--member
y--role
:gcloud compute images remove-iam-policy-binding IMAGE_NAME \ --member='MEMBER' \ --role='ROLE'
Haz los cambios siguientes:
IMAGE_NAME
: el nombre de la imagen (por ejemplo,my_image
)MEMBER
: la identidad que quieras eliminarDebe tener el formato
user|group|serviceAccount:email
odomain:domain
. Por ejemplo:user:test-user@gmail.com
group:admins@example.com
serviceAccount:test123@example.domain.com
domain:example.domain.com
ROLE
: el rol del que quieres quitar la identidad
Si vas a revocar el acceso a un recurso que está en fase beta, usa el comando
gcloud beta compute
.REST
Lee la política actual con el método
images.getIamPolicy
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:getIamPolicy
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto al que pertenece esta imagenIMAGE_NAME
: el nombre de la imagen
Compute Engine devuelve la política actual en la respuesta.
Para eliminar miembros y sus roles asociados, edita la política con un editor de texto.
Escribe la política actualizada con el método
images.setIamPolicy
. En el cuerpo de la solicitud, proporciona la política de gestión de identidades y accesos actualizada del paso anterior.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/global/images/IMAGE_NAME:setIamPolicy
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto al que pertenece esta imagenIMAGE_NAME
: el nombre de la imagen
Siguientes pasos
- Consulta información sobre gestión de identidades y accesos.
- Consulta una lista de roles de gestión de identidades y accesos de Compute Engine.
- Consulta información sobre las imágenes.
- Consulta cómo crear una instancia con una imagen compartida.
- Consulta cómo crear un disco persistente de arranque independiente.
- Consulta cómo usar este rol con tus despliegues de Deployment Manager.
- Aplica el principio de mínimos accesos concediendo acceso a recursos específicos de Compute Engine en lugar de a todo un proyecto.
A menos que se indique lo contrario, el contenido de esta página está sujeto a la licencia Reconocimiento 4.0 de Creative Commons y las muestras de código están sujetas a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio web de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2025-09-12 (UTC).
-