Configura la cuenta de servicio

Para usar el Administrador de infraestructura y crear, actualizar o borrar 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 que puedas implementar recursos con el Administrador de infraestructura.

Antes de comenzar

  1. Habilita el servicio de Infra Manager.
  2. Crea una cuenta de servicio o identifica una cuenta de servicio existente para usarla con Infra Manager.

Otorga acceso a la cuenta de servicio

Para usar el Administrador de infraestructura y crear, actualizar o borrar una implementación, un usuario individual necesita acceso a la cuenta de servicio.

Otorga al usuario el rol de IAM de Usuario de cuenta de servicio (roles/iam.serviceAccountUser) para la cuenta de servicio.

Otorga permisos para Infra Manager

Para trabajar con Infra Manager, la cuenta de servicio necesita el rol de agente de Infra Manager (roles/config.agent). Esto otorga permisos a Infra Manager para crear, actualizar y borrar recursos.

Para obtener detalles sobre cómo otorgar permisos a las cuentas de servicio, consulta Administra el acceso a las cuentas de servicio.

Otorga permiso de lectura para el bucket de almacenamiento

Puedes usar un bucket de almacenamiento para almacenar las configuraciones de Terraform que implementa Infra Manager.

Si usas un bucket de almacenamiento para las configuraciones y este bucket de almacenamiento 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 para el bucket. Si quieres obtener detalles sobre los permisos de Cloud Storage, consulta Permisos de IAM para Cloud Storage.

Si el bucket de almacenamiento está en el mismo proyecto que Infra Manager y le otorgaste roles/config.agent a la cuenta de servicio, el permiso de lectura al bucket ya está habilitado.

Para obtener detalles sobre cómo subir una configuración a un bucket de almacenamiento, consulta Cómo subir una configuración de Terraform.

Otorga permisos para los recursos definidos en la configuración

Para crear y administrar los recursos de Google Cloud que se definen en la configuración de Terraform, la cuenta de servicio necesita permisos específicos para estos recursos.

  • Permisos específicos para los recursos de Google Cloud que se definen en la configuración de Terraform que implementas. Por ejemplo, el permiso para crear una instancia de VM de Compute Engine es compute.instances.create.

  • Permisos específicos para los recursos de Google Cloud que se definen en la configuración de Terraform de la implementación que actualizas.

    Por ejemplo, supongamos que tu implementación aprovisiona una VM de Compute Engine y, luego, actualizas la implementación con una configuración que no incluye una VM de Compute Engine. En este caso, cuando actualices la revisión, la cuenta de servicio necesitará lo siguiente:

    • Permisos para los recursos definidos en la nueva configuración

    • Los permisos de los recursos que se borrarán, como la VM de Compute Engine en este ejemplo

Si necesitas ayuda para identificar los permisos necesarios para los recursos en las configuraciones de Terraform, consulta Elige roles predefinidos.

Para obtener detalles sobre cómo otorgar permisos a las cuentas de servicio, consulta Administra el acceso a las cuentas de servicio.

Otorga acceso a los proyectos

Se requieren permisos adicionales si la cuenta de servicio está en un proyecto diferente al proyecto en el que se ejecuta el servicio de Infra Manager.

Para otorgar estos permisos adicionales, sigue estos pasos:

  1. En el proyecto que tiene la cuenta de servicio, asegúrate de que no se aplique la restricción de la política de la organización iam.disableCrossProjectServiceAccountUsage. Esta restricción se aplica de forma predeterminada.

    Para inhabilitar esta restricción de política de la organización, ejecuta el siguiente comando:

       gcloud resource-manager org-policies disable-enforce iam.disableCrossProjectServiceAccountUsage
           --project=SERVICE_ACCOUNT_PROJECT_ID
    

    Reemplaza SERVICE_ACCOUNT_PROJECT_ID por el ID del proyecto que contiene la cuenta de servicio.

  2. En el proyecto que tiene la cuenta de servicio, otorga el rol roles/iam.serviceAccountUser al agente de servicio de Infra Manager del proyecto en el que creas 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"
    

    Reemplaza los valores de marcador de posición en el comando anterior por los siguientes:

    • SERVICE_ACCOUNT_PROJECT_ID: Es el ID del proyecto que contiene la cuenta de servicio.
    • INFRA_MANAGER_PROJECT_NUMBER: Es el número del proyecto en el que crearás las implementaciones. Esto forma el ID de correo electrónico del agente de servicio: service-INFRA_MANAGER_PROJECT_NUMBER@gcp-sa-config.iam.gserviceaccount.com
  3. Para permitir que Infra Manager cree trabajos de Cloud Build en nombre de la cuenta de servicio, otorga a la cuenta de servicio el rol roles/iam.serviceAccountTokenCreator. Este rol es para el agente de servicio de Infra Manager del proyecto en el que creas implementaciones:

    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"
    

¿Qué sigue?