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 el SDK de Cloud como se describe a continuación.
Habilitaste los servicios de Google necesarios como se describe a continuación.
Configura la cuenta de servicio que se usa para crear los archivos de configuración de API como se describe a continuación.
Prepara el SDK de Cloud para la implementación
Para preparar gcloud
para la implementación de la siguiente manera:
- Instala y, luego, inicializa el SDK de Cloud.
- Actualiza el SDK de Cloud:
gcloud components update
- Asegúrate de que el SDK de Cloud tenga autorización 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.
- 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.comgcloud 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 distinta 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.
En API Gateway, el usuario que crea o actualiza una configuración o puerta de enlace de API 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.
La función y el permiso se pueden agregar a la cuenta de servicio para el usuario con el siguiente comando:
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT \ --member user:USER_EMAIL \ --role roles/iam.serviceAccountUser
Además, la cuenta de servicio de puerta de enlace requiere los permisos necesarios para acceder a tu servicio de backend. Por ejemplo, si tu backend se implementa como una Cloud Function, entonces la cuenta de servicio debe tener asignada al menos la función de Invocador de Cloud Functions. Para un backend de Cloud Run, la función es invocador de Cloud Run. 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 su dirección de correo electrónico 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 para tu proyecto, se crea 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 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.
Usa OpenID Connect
Las solicitudes de API Gateway a los servicios de backend pueden usar la autenticación. Estas solicitudes se protegen mediante 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 de forma correcta a fin de aceptar tokens de OIDC para la autenticación y la autorización. Cloud Functions, Cloud Run e Identity-Aware Proxy (IAP) proporcionan esta opción.