Permisos y funciones de IAM

En esta página, se describen las cuentas de servicio, las funciones y los permisos de Cloud Deploy.

El acceso en Cloud Deploy se controla con Identity and Access Management (IAM). IAM te permite crear y administrar permisos para los recursos de Google Cloud. Cloud Deploy proporciona un conjunto específico de funciones de IAM predefinidas en el que cada función contiene un conjunto de permisos. Puedes usar estos roles para otorgar un acceso más detallado a recursos específicos de Google Cloud y evitar el acceso no deseado a otros recursos. IAM te permite adoptar el principio de seguridad de menor privilegio, de manera que puedes otorgar solo el acceso necesario a tus recursos.

Consulta Usa IAM para restringir el acceso a Cloud Deploy para obtener información sobre las funciones avanzadas de seguridad de control de acceso.

Cuentas de servicio en Cloud Deploy

De forma predeterminada, Cloud Deploy se ejecuta con la cuenta de servicio predeterminada de Compute Engine. Esa cuenta de servicio tiene permisos suficientes para renderizar manifiestos y realizar implementaciones en tus destinos.

Obtén más información sobre cómo Cloud Deploy usa cuentas de servicio.

Roles predefinidos de Cloud Deploy

Con la IAM, cada método de API en la API de Cloud Deploy requiere que la identidad que realiza la solicitud a la API tenga los permisos adecuados para usar el recurso. Los permisos se asignan mediante la configuración de políticas que otorgan roles a un miembro (usuario, grupo o cuenta de servicio) del proyecto. Puedes otorgar varios roles a una principal en el mismo recurso.

En la documentación de IAM, se incluye una referencia que se puede buscar de todas las funciones predefinidas.

En la siguiente tabla, se enumeran las funciones de IAM de Cloud Deploy y los permisos que incluyen:

Permisos

(roles/clouddeploy.admin)

Tiene control completo sobre los recursos de Cloud Deploy.

clouddeploy.*

resourcemanager.projects.get

resourcemanager.projects.list

(roles/clouddeploy.approver)

Tiene permiso para aprobar o rechazar lanzamientos.

clouddeploy.config.get

clouddeploy.jobRuns.get

clouddeploy.jobRuns.list

clouddeploy.locations.*

clouddeploy.operations.*

clouddeploy.rollouts.approve

clouddeploy.rollouts.get

clouddeploy.rollouts.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/clouddeploy.customTargetTypeAdmin)

Permiso para administrar los recursos de CustomTargetType

clouddeploy.config.get

clouddeploy.customTargetTypes.*

resourcemanager.projects.get

resourcemanager.projects.list

(roles/clouddeploy.developer)

Tiene permiso para administrar la configuración de implementación sin permiso de acceso a los recursos operativos, como los objetivos.

clouddeploy.automationRuns.get

clouddeploy.automationRuns.list

clouddeploy.automations.get

clouddeploy.automations.list

clouddeploy.config.get

clouddeploy.deliveryPipelines.create

clouddeploy.deliveryPipelines.createTagBinding

clouddeploy.deliveryPipelines.delete

clouddeploy.deliveryPipelines.deleteTagBinding

clouddeploy.deliveryPipelines.get

clouddeploy.deliveryPipelines.getIamPolicy

clouddeploy.deliveryPipelines.list

clouddeploy.deliveryPipelines.listEffectiveTags

clouddeploy.deliveryPipelines.listTagBindings

clouddeploy.deliveryPipelines.update

clouddeploy.jobRuns.get

clouddeploy.jobRuns.list

clouddeploy.locations.*

clouddeploy.operations.*

clouddeploy.releases.*

clouddeploy.rollouts.get

clouddeploy.rollouts.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/clouddeploy.jobRunner)

Permiso para ejecutar el trabajo de Cloud Deploy sin permiso para entregarlo a un destino.

clouddeploy.config.get

logging.logEntries.create

storage.objects.create

storage.objects.get

storage.objects.list

(roles/clouddeploy.operator)

Tiene permiso para administrar la configuración de implementación.

clouddeploy.automationRuns.*

clouddeploy.automations.*

clouddeploy.config.get

clouddeploy.customTargetTypes.get

clouddeploy.customTargetTypes.getIamPolicy

clouddeploy.customTargetTypes.list

clouddeploy.deliveryPipelines.create

clouddeploy.deliveryPipelines.createTagBinding

clouddeploy.deliveryPipelines.delete

clouddeploy.deliveryPipelines.deleteTagBinding

clouddeploy.deliveryPipelines.get

clouddeploy.deliveryPipelines.getIamPolicy

clouddeploy.deliveryPipelines.list

clouddeploy.deliveryPipelines.listEffectiveTags

clouddeploy.deliveryPipelines.listTagBindings

clouddeploy.deliveryPipelines.update

clouddeploy.jobRuns.*

clouddeploy.locations.*

clouddeploy.operations.*

clouddeploy.releases.*

clouddeploy.rollouts.advance

clouddeploy.rollouts.cancel

clouddeploy.rollouts.create

clouddeploy.rollouts.get

clouddeploy.rollouts.ignoreJob

clouddeploy.rollouts.list

clouddeploy.rollouts.retryJob

clouddeploy.rollouts.rollback

clouddeploy.targets.create

clouddeploy.targets.createTagBinding

clouddeploy.targets.delete

clouddeploy.targets.deleteTagBinding

clouddeploy.targets.get

clouddeploy.targets.getIamPolicy

clouddeploy.targets.list

clouddeploy.targets.listEffectiveTags

clouddeploy.targets.listTagBindings

clouddeploy.targets.update

resourcemanager.projects.get

resourcemanager.projects.list

(roles/clouddeploy.releaser)

Tiene permiso para crear versiones y lanzamientos de Cloud Deploy.

clouddeploy.config.get

clouddeploy.customTargetTypes.get

clouddeploy.deliveryPipelines.get

clouddeploy.jobRuns.get

clouddeploy.jobRuns.list

clouddeploy.locations.*

clouddeploy.operations.*

clouddeploy.releases.create

clouddeploy.releases.get

clouddeploy.releases.list

clouddeploy.rollouts.advance

clouddeploy.rollouts.cancel

clouddeploy.rollouts.create

clouddeploy.rollouts.get

clouddeploy.rollouts.list

clouddeploy.rollouts.rollback

clouddeploy.targets.get

resourcemanager.projects.get

resourcemanager.projects.list

(roles/clouddeploy.viewer)

Puede ver recursos de Cloud Deploy.

clouddeploy.automationRuns.get

clouddeploy.automationRuns.list

clouddeploy.automations.get

clouddeploy.automations.list

clouddeploy.config.get

clouddeploy.customTargetTypes.get

clouddeploy.customTargetTypes.getIamPolicy

clouddeploy.customTargetTypes.list

clouddeploy.deliveryPipelines.get

clouddeploy.deliveryPipelines.getIamPolicy

clouddeploy.deliveryPipelines.list

clouddeploy.deliveryPipelines.listEffectiveTags

clouddeploy.deliveryPipelines.listTagBindings

clouddeploy.jobRuns.get

clouddeploy.jobRuns.list

clouddeploy.locations.*

clouddeploy.operations.get

clouddeploy.operations.list

clouddeploy.releases.get

clouddeploy.releases.list

clouddeploy.rollouts.get

clouddeploy.rollouts.list

clouddeploy.targets.get

clouddeploy.targets.getIamPolicy

clouddeploy.targets.list

clouddeploy.targets.listEffectiveTags

clouddeploy.targets.listTagBindings

resourcemanager.projects.get

resourcemanager.projects.list

Además de las funciones predefinidas de Cloud Deploy, las funciones básicas de visualizador, editor y propietario también incluyen permisos relacionados con Cloud Deploy. Sin embargo, te recomendamos otorgar roles predefinidos siempre que sea posible para cumplir con el principio de privilegio mínimo de seguridad.

Permisos

En la tabla siguiente, se enumeran los permisos que deben tener el emisor para llamar a cada método:

Método de API Permiso necesario Descripción
automations.create() clouddeploy.automations.create Crea un nuevo recurso de automatización.
automations.delete() clouddeploy.automations.delete Borra un recurso de automatización existente.
automations.get() clouddeploy.automations.get Recuperar detalles de un recurso de automatización individual
automations.list() clouddeploy.automations.list Enumera los recursos de automatización y sus metadatos.
automations.update() clouddeploy.automations.update Actualizar un recurso de automatización existente
automationRuns.cancel() clouddeploy.automationRuns.cancel Cancela una automatización en ejecución.
automationRuns.get() clouddeploy.automationRuns.get Recupera los detalles de una ejecución de automatización individual.
automationRuns.list() clouddeploy.automationRuns.list Enumera las ejecuciones de automatización y sus metadatos.
customTargetTypes.create() clouddeploy.customTargetType.create Crea un recurso de tipo de destino personalizado.
customTargetTypes.delete() clouddeploy.customTargetType.delete Borra un recurso de tipo de destino personalizado.
customTargetTypes.get() clouddeploy.customTargetType.get Recupera detalles para un tipo de destino personalizado.
customTargetTypes.getIamPolicy() clouddeploy.customTargetType.getIamPolicy Obtén la política de IAM para un recurso de tipo de destino personalizado.
customTargetTypes.list() clouddeploy.customTargetType.list Enumera los tipos de destinos personalizados disponibles y sus metadatos.
customTargetTypes.patch() clouddeploy.customTargetType.patch Actualiza un tipo de destino personalizado existente.
customTargetTypes.setIamPolicy() clouddeploy.customTargetType.setIamPolicy Establece la política de IAM para un recurso de tipo de destino personalizado.
deliveryPipelines.create() clouddeploy.deliveryPipelines.create Crea un nuevo recurso de canalización de entrega.
deliveryPipelines.delete() clouddeploy.deliveryPipelines.delete Borra un recurso de canalización de entrega existente.
deliveryPipelines.get() clouddeploy.deliveryPipelines.get Recupera los detalles de una canalización de entrega individual.
deliveryPipelines.getIamPolicy() clouddeploy.deliveryPipelines.getIamPolicy Obtén la política de IAM para un recurso de canalización de entrega.
deliveryPipelines.list() clouddeploy.deliveryPipelines.list Enumera las canalizaciones de entrega y sus metadatos.
deliveryPipelines.rollbackTarget() clouddeploy.rollouts.rollback Revierte un objetivo.
deliveryPipelines.setIamPolicy() clouddeploy.deliveryPipelines.setIamPolicy Establece la política de IAM para un recurso de canalización de entrega.
deliveryPipelines.update() clouddeploy.deliveryPipelines.update Actualiza un recurso de canalización de entrega existente.
jobRuns.get() clouddeploy.jobRuns.get Recupera un recurso JobRuns.
jobRuns.list() clouddeploy.jobRuns.list Enumera los recursos JobRuns y sus metadatos.
jobRuns.terminate() clouddeploy.jobRuns.terminate Finaliza la ejecución de un trabajo en curso.
operations.cancel() clouddeploy.operations.cancel Cancela una operación de larga duración.
operation.delete() clouddeploy.operations.delete Borra una operación de larga duración.
operations.get() clouddeploy.operations.get Obtén una operación específica de larga duración (por ejemplo, para mostrar el estado de la creación de una versión).
operations.list() clouddeploy.operations.list Muestra las operaciones de larga duración.
releases.abandon() clouddeploy.releases.abandon Abandonar una versión y evitar futuros lanzamientos
releases.create() clouddeploy.releases.create Crea un nuevo recurso de lanzamiento. El llamador también requiere el permiso iam.serviceAccounts.actAs en la cuenta de servicio que se usa para renderizar el manifiesto.
releases.get() clouddeploy.releases.get Recupera detalles de versiones individuales.
releases.list() clouddeploy.releases.list Enumera lanzamientos y metadatos.
releases.promote() clouddeploy.rollouts.create Promover la versión al siguiente destino
rollouts.advance() clouddeploy.rollouts.advance Avanzar un lanzamiento a la siguiente fase
rollouts.approve() clouddeploy.rollouts.approve Aprueba o rechaza un lanzamiento con el estado de aprobación required.
rollouts.cancel() clouddeploy.rollouts.cancel Cancela un lanzamiento.
rollouts.create() clouddeploy.rollouts.create Crea un nuevo recurso de lanzamiento. El llamador también requiere el permiso iam.serviceAccounts.actAs en el proyecto o la cuenta de servicio que se usó para realizar la implementación.
rollouts.get() clouddeploy.rollouts.get Recupera detalles de lanzamientos individuales.
rollouts.ignoreJob() clouddeploy.rollouts.ignoreJob Ignorar un trabajo con errores
rollouts.list() clouddeploy.rollouts.list Enumera lanzamientos y metadatos.
rollouts.retryJob() clouddeploy.rollouts.retryJob Vuelve a intentar un trabajo con errores.
targets.create() clouddeploy.targets.create Crea un nuevo recurso de destino.
targets.delete() clouddeploy.targets.delete Borra un recurso de destino existente.
targets.get() clouddeploy.targets.get Recupera detalles de un destino individual.
targets.getIamPolicy() clouddeploy.targets.getIamPolicy Obtiene la política de IAM para un recurso de destino.
targets.list() clouddeploy.targets.list Enumera destinos y sus metadatos.
targets.setIamPolicy() clouddeploy.targets.setIamPolicy Establece la política de IAM para un recurso de destino.
targets.update() clouddeploy.targets.update Actualiza un recurso de destino existente.

Usa IAM para restringir acciones en los recursos de Cloud Deploy

Puedes proteger tus recursos de Cloud Deploy mediante la IAM de las siguientes maneras:

  • API de meta de IAM

    Usa setIamPolicy en los recursos de Cloud Deploy para restringir acciones en esos recursos.

  • IAM condicional

    Aplica de manera programática políticas de acceso, incluidas las conditions en las que se puede otorgar o denegar el acceso.

Puedes usar estas políticas y condiciones para restringir las siguientes acciones en tus recursos de Cloud Deploy:

  • Crea una canalización de entrega o un destino

    Puedes otorgar este acceso a usuarios o grupos específicos.

  • Actualiza o borra una canalización de entrega específica

    Puedes otorgar este acceso a usuarios o grupos específicos.

  • Crea una versión para una canalización de entrega específica

    Puedes otorgar este acceso a usuarios o grupos específicos.

  • Actualiza o borra un destino específico

    Puedes otorgar este acceso a usuarios o grupos específicos.

  • Crea o aprueba un lanzamiento, o promociona una versión

    Puedes otorgar este acceso a usuarios o grupos específicos para un destino o una canalización de entrega específicos.

    También puedes establecer una condición que limite este acceso durante un período específico.

¿Qué sigue?