Para usar Infrastructure Manager y crear, actualizar o eliminar una implementación, debes usar una cuenta de servicio. Infra Manager ejecuta Terraform con la identidad de esta cuenta de servicio.
No necesitas una cuenta de servicio para ver información sobre las implementaciones de Infra Manager.
En esta página se explica cómo configurar una cuenta de servicio para poder implementar recursos con Infrastructure Manager.
Antes de empezar
- Habilita el servicio Infra Manager.
- Crea una cuenta de servicio o identifica una cuenta de servicio que ya tengas para usarla con Infra Manager.
Conceder acceso a la cuenta de servicio
Para usar Infrastructure Manager y crear, actualizar o eliminar una implementación, un usuario individual necesita acceso a la cuenta de servicio.
Asigna al usuario el rol de IAM Usuario de cuenta de servicio (roles/iam.serviceAccountUser
) en la cuenta de servicio.
Conceder permisos de Infra Manager
Para trabajar con Infra Manager, la cuenta de servicio necesita el rol Agente de Infra Manager (roles/config.agent
).
Concede permisos a Infra Manager para crear, actualizar y eliminar recursos:
gcloud projects add-iam-policy-binding INFRA_MANAGER_PROJECT_ID \
--member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
--role="roles/config.agent"
Sustituye:
INFRA_MANAGER_PROJECT_ID: el ID del proyecto en el que vas a crear las implementaciones.
SERVICE_ACCOUNT_EMAIL: el correo de la cuenta de servicio.
Para obtener más información sobre cómo conceder permisos a cuentas de servicio, consulta el artículo Gestionar el acceso a cuentas de servicio.
Concede permiso de lectura para el segmento de almacenamiento
Puedes usar un segmento de almacenamiento para almacenar las configuraciones de Terraform que implementa Infra Manager.
Si usas un segmento de almacenamiento para las configuraciones y este segmento está en un proyecto diferente del proyecto en el que ejecutas Infra Manager, debes asegurarte de que la cuenta de servicio que usas para llamar a Infra Manager tenga permiso de lectura en el segmento. Para obtener más información sobre los permisos de Cloud Storage, consulta Permisos de gestión de identidades y accesos para Cloud Storage.
Si el segmento de almacenamiento está en el mismo proyecto que Infra Manager y has concedido roles/config.agent
a la cuenta de servicio, el permiso de lectura del segmento ya está habilitado.
Para obtener información sobre cómo subir una configuración a un contenedor de almacenamiento, consulta Subir una configuración de Terraform.
Conceder permisos para los recursos definidos en la configuración
Para crear y gestionar Google Cloud recursos definidos en la configuración de Terraform, la cuenta de servicio necesita permisos específicos para esos recursos.
Permisos específicos de los recursos de Google Cloud definidos en la configuración de Terraform que vas a implementar. Por ejemplo, el permiso para crear una instancia de VM de Compute Engine es
compute.instances.create
.Permisos específicos de los Google Cloud recursos definidos en la configuración de Terraform de la implementación que estás actualizando.
Por ejemplo, supongamos que tu despliegue aprovisiona una VM de Compute Engine y, a continuación, actualizas el despliegue con una configuración que no incluye una VM de Compute Engine. En ese caso, cuando actualices la revisión, la cuenta de servicio necesitará lo siguiente:
Permisos de los recursos definidos en la nueva configuración.
Permisos de los recursos que se van a eliminar, como la VM de Compute Engine de este ejemplo.
Para obtener ayuda a la hora de identificar los permisos necesarios para los recursos de las configuraciones de Terraform, consulta Elegir roles predefinidos.
Para obtener más información sobre cómo conceder permisos a cuentas de servicio, consulta el artículo Gestionar el acceso a cuentas de servicio.
Conceder acceso a varios proyectos
Se necesitan permisos adicionales si la cuenta de servicio proporcionada está en un proyecto diferente al proyecto en el que se ejecuta el servicio Infra Manager.
Para conceder estos permisos adicionales, sigue estos pasos:
Asegúrate de que la cuenta de servicio tenga el rol Agente de Infra Manager (
roles/config.agent
) en el proyecto que ejecuta Infra Manager. Consulta las instrucciones para conceder permisos de Infra Manager.En el proyecto que tiene la cuenta de servicio, asegúrate de que no se aplique la
iam.disableCrossProjectServiceAccountUsage
restricción de la política de organización. Esta restricción se aplica de forma predeterminada.Para inhabilitar esta restricción de política de organización, ejecuta el siguiente comando:
gcloud resource-manager org-policies disable-enforce iam.disableCrossProjectServiceAccountUsage --project=SERVICE_ACCOUNT_PROJECT_ID
Sustituye SERVICE_ACCOUNT_PROJECT_ID por el ID del proyecto que contiene la cuenta de servicio.
En el proyecto que tiene la cuenta de servicio, asigna el rol
roles/iam.serviceAccountUser
al agente de servicio de Infra Manager del proyecto en el que vas a crear las implementaciones:gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member="serviceAccount:service-INFRA_MANAGER_PROJECT_NUMBER@gcp-sa-config.iam.gserviceaccount.com" \ --role="roles/iam.serviceAccountUser"
Sustituye:
- SERVICE_ACCOUNT_PROJECT_ID: ID del proyecto que contiene la cuenta de servicio.
- INFRA_MANAGER_PROJECT_NUMBER: el número del proyecto en el que vas a crear las implementaciones. De esta forma se crea el ID de correo del agente de servicio:
service-INFRA_MANAGER_PROJECT_NUMBER@gcp-sa-config.iam.gserviceaccount.com
Asigna el rol Creador de tokens de cuenta de servicio (
roles/iam.serviceAccountTokenCreator
) al agente de servicio de Cloud Build en el proyecto en el que vas a crear despliegues. Para permitir que Infra Manager ejecute Terraform con Cloud Build, el agente de servicio de Cloud Build del proyecto que contiene la cuenta de servicio necesita permisos adicionales como parte de la configuración entre proyectos:gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member="serviceAccount:service-INFRA_MANAGER_PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com" \ --role="roles/iam.serviceAccountTokenCreator"
Siguientes pasos
- Consulta información sobre IAM.
- Consulta más información sobre Terraform con Google Cloud.
- Despliega la infraestructura con Infra Manager.
- Actualiza un despliegue.
- Consulta el estado de un despliegue.