Configura el entorno de desarrollo

En este documento, se describe cómo configurar el entorno de desarrollo de API Gateway.

Requisitos previos

Antes de crear una API en API Gateway, asegúrate de haber hecho lo siguiente:

  • Creaste un proyecto de Google Cloud en el que tienes la función Editor o Propietario. Después de la implementación inicial, puedes otorgar la función más restringida Editor de configuración de servicio a un usuario, grupo o cuenta de servicio.

  • Se preparó Google Cloud CLI como se describe a continuación.

  • Habilitaste los servicios de Google obligatorios como se describe a continuación.

  • Configura la cuenta de servicio que se usa para crear los parámetros de configuración de la API como se describe a continuación.

Prepara Google Cloud CLI para la implementación

Para preparar gcloud para la implementación de la siguiente manera:

  1. Instala e inicializa gcloud CLI.
  2. Actualiza la CLI de gcloud:
    gcloud components update
  3. Asegúrate de que la CLI de gcloud esté autorizada para acceder a tus datos y servicios:
    gcloud auth login

    Se abrirá una pestaña nueva del navegador y se te solicitará que elijas una cuenta.

  4. Configura el proyecto predeterminado. Reemplaza PROJECT_ID por el ID del proyecto de Google Cloud:
    gcloud config set project PROJECT_ID 

Habilita los servicios obligatorios

API Gateway requiere que habilites los siguientes servicios de Google:

Nombre Título
apigateway.googleapis.com API de API Gateway
servicemanagement.googleapis.com API de Service Management
servicecontrol.googleapis.com API de Service Control

Para confirmar que los servicios obligatorios están habilitados, haz lo siguiente:

gcloud services list

Si no ves los servicios necesarios que se incluyeron en la lista, habilítalos:

gcloud services enable apigateway.googleapis.com
gcloud services enable servicemanagement.googleapis.com
gcloud services enable servicecontrol.googleapis.com

Para obtener más información sobre los servicios de gcloud, consulta Servicios de gcloud.

Configura una cuenta de servicio

Una configuración de API implementada en una puerta de enlace se ejecuta con los permisos asociados con la cuenta de servicio de la puerta de enlace.

Como práctica recomendada, crea una cuenta de servicio separada en el mismo proyecto que usas para API Gateway. Luego, asigna a la cuenta de servicio solo los permisos necesarios para acceder al servicio de backend. De esa manera, limitas los permisos asociados con la configuración de la API.

En el caso de API Gateway, el usuario que crea o actualiza una configuración de API o una puerta de enlace requiere el permiso iam.serviceAccounts.actAs en el objeto de la cuenta de servicio. Este permiso se incluye en la función de usuario de cuenta de servicio.

El rol y el permiso se pueden agregar a la cuenta de servicio del usuario con el siguiente comando:

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

Donde:

  • SERVICE_ACCOUNT_EMAIL es el correo electrónico de la cuenta de servicio, en el formato SA_NAME@PROJECT_ID.iam.gserviceaccount.com.
  • USER_EMAIL es la dirección de correo electrónico del usuario.

Por ejemplo:

gcloud iam service-accounts add-iam-policy-binding my-service-account@my-project.iam.gserviceaccount.com \
  --member user:myemail@email.com \
  --role roles/iam.serviceAccountUser

Además, la cuenta de servicio de la puerta de enlace requiere los permisos necesarios para acceder a tu servicio de backend. Por ejemplo:

  • Para un backend de Cloud Function, a la cuenta de servicio se le debe asignar el rol de Invocador de Cloud Functions.
  • Para un backend de Cloud Run, a la cuenta de servicio se le debe asignar el rol de Invocador de Cloud Run.
  • En el caso de un backend de App Engine, debes seguir los pasos que se indican en Cómo configurar el acceso a IAP para otorgar a la cuenta de servicio asociada con tu puerta de enlace el rol de Usuario de aplicación web protegida con IAP.

Si limitas los permisos asociados con la configuración de la API, puedes proteger mejor tus sistemas de backend. Para obtener más información, consulta la documentación de administración de identidades y accesos (IAM).

Después de crear la cuenta de servicio, usa la opción --backend-auth-service-account para especificar la dirección de correo electrónico de esa cuenta cuando crees una configuración de API:

gcloud api-gateway api-configs create CONFIG_ID \
  --api=API_ID --openapi-spec=API_DEFINITION --project=PROJECT_ID \
  --backend-auth-service-account=SERVICE_ACCOUNT_EMAIL

Consulta Crea una API para obtener más información sobre cómo crear configuraciones de API.

Usa una cuenta de servicio predeterminada

Algunos productos de GCP definen una cuenta de servicio predeterminada. Por ejemplo, si usas Compute Engine y habilitaste la API de Compute Engine en tu proyecto, se creará una cuenta de servicio predeterminada de Compute Engine. La cuenta de servicio predeterminada se identifica por su dirección de correo electrónico:

PROJECT_NUMBER-compute@developer.gserviceaccount.com

Si asignas los permisos necesarios a la cuenta de servicio predeterminada, puedes omitir la opción --backend-auth-service-account cuando creas una configuración de API:

gcloud api-gateway api-configs create CONFIG_ID \
  --api=API_ID --openapi-spec=API_DEFINITION --project=PROJECT_ID

Consulta Usa la cuenta de servicio predeterminada de Compute Engine para obtener más información.

Usa OpenID Connect

Las solicitudes de API Gateway a servicios de backend pueden usar autenticación. Estas solicitudes están protegidas con tokens de OpenID Connect (OIDC) que firma la cuenta de servicio de la puerta de enlace. Debes confirmar que tu servicio de backend esté configurado correctamente a fin de aceptar tokens de OIDC para la autenticación y autorización. Cloud Functions, Cloud Run y Identity Aware Proxy (IAP) ofrecen esta opción.

¿Qué sigue?