Otorga roles a tu cuenta de servicio

Cuando los desarrolladores obtienen una vista previa de las aplicaciones y las implementan, pueden usar una cuenta de servicio existente, o bien el Centro de diseño de aplicaciones puede crear automáticamente una cuenta de servicio nueva. Si quieres que los desarrolladores usen tu cuenta de servicio, debes hacer lo siguiente:

  • Agrega vinculaciones de políticas de IAM a la cuenta de servicio y a la cuenta de usuario.
  • Otorga a la cuenta de servicio los roles necesarios para implementar cada recurso.
  • Agrega permisos a la cuenta de servicio para realizar implementaciones fuera del proyecto en el que se creó la cuenta de servicio.
  • Actualiza las políticas de la organización para permitir que se usen cuentas de servicio en todos los proyectos.

Para configurar tus cuentas de servicio, haz lo siguiente:

  1. Agrega una vinculación de política de IAM para el rol de roles/iam.serviceAccountUser del agente de servicio a tu cuenta de servicio:

    gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
        --member="serviceAccount:service-SERVICE_ACCOUNT_PROJECT_NUMBER@gcp-sa-designcenter.iam.gserviceaccount.com" \
        --role="roles/iam.serviceAccountUser"
    

    Reemplaza lo siguiente:

    • SERVICE_ACCOUNT_EMAIL: Es el correo electrónico de tu cuenta de servicio. Por ejemplo, my-service-account@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com
    • SERVICE_ACCOUNT_PROJECT_ID: Es el ID del proyecto que contiene tu cuenta de servicio.
    • SERVICE_ACCOUNT_PROJECT_NUMBER: Es el número del proyecto que contiene tu cuenta de servicio.
  2. Agrega una vinculación de política de IAM para el rol de roles/iam.serviceAccountUser para un usuario a tu cuenta de servicio:

    gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
        --member="user:USER_EMAIL" \
        --role="roles/iam.serviceAccountUser"
    

    Reemplaza lo siguiente:

    • SERVICE_ACCOUNT_EMAIL: Es el correo electrónico de tu cuenta de servicio. Por ejemplo, my-service-account@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com
    • USER_EMAIL: Es el correo electrónico del usuario que realiza la implementación.
  3. En el proyecto que tiene tu cuenta de servicio, agrega vinculaciones de políticas de IAM para los roles de agente de servicio requeridos en el proyecto de administración que contiene tu espacio:

    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member="serviceAccount:service-MANAGEMENT_PROJECT_NUMBER@gcp-sa-designcenter.iam.gserviceaccount.com" \
        --role="roles/apphub.editor"
    
    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member="serviceAccount:service-MANAGEMENT_PROJECT_NUMBER@gcp-sa-designcenter.iam.gserviceaccount.com" \
        --role="roles/config.agent"
    
    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member="serviceAccount:service-MANAGEMENT_PROJECT_NUMBER@gcp-sa-designcenter.iam.gserviceaccount.com" \
        --role="roles/serviceusage.serviceUsageAdmin"
    

    Reemplaza lo siguiente:

    • SERVICE_ACCOUNT_PROJECT_ID: Es el ID del proyecto que contiene tu cuenta de servicio.
    • MANAGEMENT_PROJECT_NUMBER: Es el número del proyecto de administración que contiene tu espacio.
  4. En el proyecto que tiene tu 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 la aplicación de la 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 lo siguiente:

    • SERVICE_ACCOUNT_PROJECT_ID: Es el ID del proyecto que contiene tu cuenta de servicio.
  5. Otorga a tu cuenta de servicio los roles necesarios para implementar recursos en proyectos. Los roles obligatorios se muestran cuando los desarrolladores implementan aplicaciones.

    Por ejemplo, para otorgar el rol roles/run.admin, agrega la siguiente vinculación a la política:

    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member="serviceAccount:service-DEPLOYMENT_PROJECT_NUMBER@gcp-sa-designcenter.iam.gserviceaccount.com" \
        --role="roles/run.admin"
    

    Reemplaza lo siguiente:

    • SERVICE_ACCOUNT_PROJECT_ID: Es el ID del proyecto que contiene tu cuenta de servicio.
    • DEPLOYMENT_PROJECT_NUMBER: Es el número del proyecto en el que implementas recursos.
  6. App Design Center usa Infrastructure Manager para implementar aplicaciones en la consola. Para usar tu propia cuenta de servicio para realizar implementaciones con Infrastructure Manager, completa los pasos que se indican en Cómo otorgar acceso a proyectos.

  7. Si la aplicación que implementas contiene componentes privados que importaste a través de una conexión de Developer Connect, haz lo siguiente:

    Otorga a tu cuenta de servicio el rol de roles/iam.serviceAccountTokenCreator en el proyecto en el que creaste la cuenta de servicio.

    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
        --role="roles/iam.serviceAccountTokenCreator"
    

    Reemplaza lo siguiente:

    • SERVICE_ACCOUNT_PROJECT_ID: Es el ID del proyecto que contiene tu cuenta de servicio.
    • SERVICE_ACCOUNT_EMAIL: Es el correo electrónico de tu cuenta de servicio. Por ejemplo, my-service-account@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com

¿Qué sigue?