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.

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

  • Habilitar los servicios de Google necesarios como se describe a continuación

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

Preparar Google Cloud CLI para la implementación

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

  1. Instala e inicializa la CLI de gcloud.
  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 Administración de servicios
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 independiente 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, limitarás los permisos asociados con la configuración de la API.

Para API Gateway, el usuario que crea o actualiza una configuración de API o una puerta de enlace necesita 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, la cuenta de servicio debe tener asignada la función de Invocador de Cloud Functions.
  • Para un backend de Cloud Run, la cuenta de servicio debe tener asignada la función de invocador de Cloud Run.
  • Para un backend de App Engine, debes seguir los pasos que se indican en Configura el acceso a IAP para otorgar el rol de Usuario de aplicación web protegida con IAP a la cuenta de servicio asociada con tu puerta de enlace.

Cuando 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 de servicio 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 Cómo crear 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 para tu proyecto, se te creará una cuenta de servicio predeterminada de Compute Engine. La cuenta de servicio predeterminada se identifica a través de 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 crees 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.

Cómo usar 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) firmados por 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. Las funciones de Cloud Run, Identity-Aware Proxy (IAP) y Cloud Run ofrecen esta opción.

¿Qué sigue?