Esta página se aplica a Apigee y Apigee Hybrid.
Consulta la documentación de
Apigee Edge.
En este tema se explica cómo configurar e implementar un proxy de API que esté configurado para usar la autenticación de Google.
Introducción
Apigee admite el uso de tokens de OAuth de Google o tokens de OpenID Connect para autenticarte en servicios de Google como Cloud Logging y Secret Manager, así como en servicios personalizados que se ejecutan en determinados Google Cloud productos, como Cloud Functions y Cloud Run.
Para usar esta función, debes configurar el elemento <Authentication>
XML en uno de los siguientes contextos:
- Políticas de AssignMessage
- Políticas ServiceCallout
- Políticas ExternalCallout
- Configuraciones de TargetEndpoint
Después de completar algunos pasos de configuración básicos (como se describe en este tema), Apigee genera el token y hace llamadas seguras a los servicios de Google o a los servicios alojados personalizados que elijas, sin que tengas que definir manualmente los encabezados de autenticación ni modificar de otro modo una solicitud de servicio. Desde el punto de vista de un desarrollador de APIs, el proceso de llamar a los servicios de Google desde un proxy de API configurado correctamente se gestiona sin problemas.
Opciones de configuración de proxies de APIs
En esta sección se explica dónde puede usar el elemento XML <Authentication>
para habilitar la autenticación con token de OAuth de Google u OpenID Connect:
Opción de configuración | Descripción |
---|---|
Política AssignMessage | La política AssignMessage te permite añadir los encabezados necesarios para la autenticación de Google y la inyección de tokens. Para ver ejemplos y detalles de uso, consulta la política AssignMessage. |
Política ServiceCallout | La política ServiceCallout te permite llamar a otros servicios internos o externos desde un proxy de API. Por ejemplo, ServiceCallout puede llamar a servicios de Google externos o a servicios alojados personalizados. Para obtener información detallada sobre el uso y ejemplos, consulta la política ServiceCallout. |
Política ExternalCallout | La política ExternalCallout te permite enviar solicitudes gRPC a tu servidor gRPC para implementar un comportamiento personalizado que no admiten las políticas de Apigee. Para obtener información sobre el uso y ejemplos, consulta la política ExternalCallout. |
TargetEndpoint | Especifica un servicio de Google o un servicio alojado personalizado como endpoint de destino de un proxy de APIs. Para obtener información detallada sobre el uso y ejemplos, consulta la referencia de configuración de proxies de APIs. |
Contextos admitidos de tokens de autenticación de Google
El elemento <Authentication>
tiene dos configuraciones de subelementos: <GoogleAccessToken>
o <GoogleIDToken>
. En la siguiente tabla se muestran los contextos en los que se admiten estos elementos:
Utilizada en | GoogleAccessToken | GoogleIDToken |
---|---|---|
Política AssignMessage | Compatible | Compatible |
Política ServiceCallout | Compatible | Compatible |
Política de ExternalCallout | No se admite | Compatible |
TargetEndpoint | Compatible | Compatible |
Pasos de la implementación
En esta sección se explica cómo implementar un proxy de API que use la autenticación de Google para llamar a servicios de Google específicos o a servicios alojados personalizados. Explicamos los pasos de implementación de Apigee y Apigee Hybrid por separado.
Desplegar en Apigee
En los siguientes pasos se explica cómo desplegar un proxy de API en Apigee, donde el proxy está configurado para hacer llamadas autenticadas a servicios de Google o a servicios alojados personalizados. En los pasos se presupone que ya has creado el proxy y que incluye un elemento <Authentication>
en uno de los contextos admitidos que se indican.
- Crea una cuenta de servicio de Google en el mismo proyecto Google Cloud
en el que se creó tu organización de Apigee. Debes proporcionar el nombre de esta cuenta de servicio cuando implementes un proxy de API configurado para usar la autenticación de Google. Los tokens de OAuth que se generen representarán la cuenta de servicio.
Puedes crear la cuenta de servicio en la Google Cloud consola o con el comando
gcloud
. Consulta el artículo Crear y gestionar cuentas de servicio. - Concede al usuario que vaya a hacer la implementación (el implementador) el permiso
iam.serviceAccounts.actAs
en la cuenta de servicio. Consulta también Información sobre los permisos de las cuentas de servicio.gcloud iam service-accounts add-iam-policy-binding \ SA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --member="MEMBER" \ --role="roles/iam.serviceAccountUser"
- PROJECT_ID: el ID del proyecto. El ID es el mismo que el nombre de tu organización.
- SA_NAME: el nombre que proporcionaste al crear la cuenta de servicio.
- MEMBER: el miembro al que se va a añadir la vinculación. Debe tener el formato
user|group|serviceAccount:email
odomain:domain
. - Concede a la cuenta de servicio los permisos necesarios para comunicarse con los servicios de Google a los que te diriges. Por ejemplo, si quieres llamar al servicio de registro de Google, esta cuenta de servicio debe incluir los permisos necesarios para comunicarse con ese servicio. Consulta también Descripción de los roles.
- Antes de implementar un proxy de API configurado para usar la autenticación de Google, necesitas lo siguiente:
- El nombre de la cuenta de servicio que has creado anteriormente. Por ejemplo:
SA_NAME@PROJECT_ID.iam.gserviceaccount.com
- Como usuario que realiza el despliegue, debes tener o recibir el permiso
iam.serviceAccounts.actAs
en la cuenta de servicio. Consulta cómo conceder, cambiar y revocar el acceso a los recursos.
- El nombre de la cuenta de servicio que has creado anteriormente. Por ejemplo:
- Despliega el proxy de API que contiene la configuración de autenticación de Google que has implementado. Puedes usar la interfaz de usuario o la API de Apigee para desplegar el proxy. Para obtener más información, consulta Desplegar un proxy de API.
- Si usas la interfaz de usuario, se te pedirá que proporciones el nombre de una cuenta de servicio. Usa el nombre de la cuenta de servicio proxy que has creado en el paso 1. Por ejemplo:
SA_NAME@PROJECT_ID.iam.gserviceaccount.com
. - Si prefieres desplegar el proxy con la API de implementación de Apigee, aquí tienes un ejemplo de comando cURL que puedes usar. Ten en cuenta
que el comando incluye el nombre de una cuenta de servicio como parámetro de consulta. Este es el nombre de la cuenta de servicio que has creado en el paso 1:
curl -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/ORG_NAME/environments/ENV_NAME/apis/apiproxy/revisions/2/deployments?serviceAccount=SA_NAME@PROJECT_ID.iam.gserviceaccount.com" \ -H "Content-Type: application/json" -X POST
Donde:
TOKEN
: un token de OAuth que debes obtener a cambio de tus credenciales de Google. Para obtener más información, consulta el artículo Obtener un token de acceso OAuth 2.0.ORG_NAME
: nombre de tu organización de Apigee.ENV_NAME
: nombre del entorno en el que se va a implementar el proxy de API.SA_NAME
: El nombre que proporcionaste al crear la cuenta de servicio.PROJECT_ID
: tu ID de proyecto Google Cloud (el mismo que el nombre de la organización).
- Si usas la interfaz de usuario, se te pedirá que proporciones el nombre de una cuenta de servicio. Usa el nombre de la cuenta de servicio proxy que has creado en el paso 1. Por ejemplo:
- Cuando se complete la implementación, prueba tu proxy de API para asegurarte de que el servicio de Google devuelve la respuesta esperada.
Donde:
Desplegar en Apigee hybrid
En los siguientes pasos se explica cómo desplegar en Apigee hybrid un proxy de API configurado para hacer llamadas autenticadas a servicios de Google.
En los pasos se presupone que ya has creado el proxy y que incluye un elemento <Authentication>
en uno de los contextos admitidos que se indican.
- Crea una cuenta de servicio y una clave para el componente de tiempo de ejecución de Apigee hybrid mediante uno de los siguientes métodos:
- Usa la herramienta
create-service-account
que se proporciona con Apigee hybrid para crear una cuenta de servicioapigee-runtime
. La herramienta crea la cuenta de servicio y devuelve una clave de cuenta de servicio. Consulta el artículo sobre cómo crear una cuenta de servicio para obtener más información. - Crea la cuenta de servicio en la Google Cloud consola o con el comando
gcloud
. Consulta el artículo Crear y gestionar cuentas de servicio. Para obtener la clave de la cuenta de servicio, consulta el artículo Crear y gestionar claves de cuentas de servicio.
- Usa la herramienta
- Abre el archivo
overrides.yaml
y especifica la ruta al archivo de clave de la cuenta de servicio para cada entorno que requiera la función de autenticación de Google:envs: - name: "ENVIRONMENT_NAME" serviceAccountPaths: runtime: "KEY_FILE_PATH"
Por ejemplo:
envs: - name: "test" serviceAccountPaths: runtime: "./service_accounts/my_runtime_sa.json"
- Aplica el archivo de anulaciones a tu clúster con
Helm:
helm upgrade ENV_NAME apigee-env/ \ --namespace APIGEE_NAMESPACE \ --set env=ENV_NAME \ --atomic \ -f overrides.yaml
- Crea una segunda cuenta de servicio, a la que llamaremos cuenta de servicio proxy. Esta cuenta de servicio debe estar en el mismo proyecto de Google Cloudque usaste para crear tu organización de Apigee. Debes proporcionar la dirección de correo de esta cuenta de servicio cuando implementes un proxy de API configurado para usar la autenticación de Google. Los tokens de OAuth que se generen representarán a la cuenta de servicio.
- Concede al usuario que vaya a hacer la implementación (el implementador) el permiso
iam.serviceAccounts.actAs
en la cuenta de servicio. Consulta también Información sobre los permisos de las cuentas de servicio.gcloud iam service-accounts add-iam-policy-binding \ SA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --member="MEMBER" \ --role="roles/iam.serviceAccountUser"
- PROJECT_ID: el ID del proyecto. El ID es el mismo que el nombre de tu organización.
- SA_NAME: el nombre que proporcionaste al crear la cuenta de servicio.
- MEMBER: el miembro al que se va a añadir la vinculación. Debe tener el formato user|group|serviceAccount:email o domain:domain.
- Concede a la cuenta de servicio proxy los permisos necesarios para comunicarse con los servicios de Google de destino. Por ejemplo, si quieres llamar al servicio de registro de Google, esta cuenta de servicio debe incluir los permisos necesarios para comunicarse con ese servicio. Consulta también Descripción de los roles.
- Asegúrate de que el tiempo de ejecución pueda suplantar la identidad de la cuenta de servicio proxy. Para proporcionar esta función, asigna el rol
iam.serviceAccountTokenCreator
a la cuenta de servicio runtime en la cuenta de servicio proxy. Consulta también Información sobre los permisos de las cuentas de servicio. Por ejemplo:gcloud iam service-accounts add-iam-policy-binding \ PROXY_SA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --member=serviceAccount:RUNTIME_SA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator
Donde:
- PROJECT_ID: el ID del proyecto. El ID es el mismo que el nombre de tu organización. Ten en cuenta que no has tenido que usar el proyecto asociado a tu organización para crear la cuenta de servicio de tiempo de ejecución. Asegúrate de usar los IDs de proyecto correctos en este comando.
- PROXY_SA_NAME: el ID de la cuenta de servicio proxy.
- RUNTIME_SA_NAME: ID de la cuenta de servicio runtime.
- Antes de implementar un proxy de API configurado para usar la autenticación de Google, necesitas lo siguiente:
- El nombre de la cuenta de servicio proxy que has creado anteriormente. Por ejemplo:
PROXY_SA_NAME@PROJECT_ID.iam.gserviceaccount.com
- Como usuario que realiza la implementación, ya debes tener o se te debe conceder el permiso
iam.serviceAccounts.actAs
en el Google Cloud proyecto en el que se aprovisiona la organización de Apigee. Consulta Conceder, cambiar y revocar el acceso a los recursos.
- El nombre de la cuenta de servicio proxy que has creado anteriormente. Por ejemplo:
- Despliega el proxy de API que contiene la configuración de autenticación de Google que has implementado. Puedes usar la interfaz de usuario o la API de Apigee para desplegar el proxy. Para obtener más información, consulta Desplegar un proxy de API.
- Si usas la interfaz de usuario, se te pedirá que proporciones el nombre de una cuenta de servicio. Usa el nombre de la cuenta de servicio proxy que has creado anteriormente. Por ejemplo:
PROXY_SA_NAME@PROJECT_ID.iam.gserviceaccount.com
. - Si prefieres desplegar el proxy con la API de implementación de Apigee, aquí tienes un ejemplo de comando cURL que puedes usar. Ten en cuenta
que el comando incluye el nombre de una cuenta de servicio como parámetro de consulta. Este es el nombre de la cuenta de servicio proxy:
curl -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/ORG_NAME/environments/ENV_NAME/apis/apiproxy/revisions/2/deployments?serviceAccount=PROXY_SA_NAME@PROJECT_ID.iam.gserviceaccount.com" \ -H "Content-Type: application/json" -X POST
Donde:
TOKEN
: un token de OAuth que debes obtener a cambio de tus credenciales de Google. Para obtener más información, consulta el artículo Obtener un token de acceso OAuth 2.0.ORG_NAME
: nombre de tu organización de Apigee.ENV_NAME
: nombre del entorno en el que se va a implementar el proxy de API.PROXY_SA_NAME
: nombre de la cuenta de servicio proxy.PROJECT_ID
: tu ID de proyecto Google Cloud (el mismo que el nombre de la organización).
- Si usas la interfaz de usuario, se te pedirá que proporciones el nombre de una cuenta de servicio. Usa el nombre de la cuenta de servicio proxy que has creado anteriormente. Por ejemplo:
- Cuando se complete la implementación, prueba tu proxy de API para asegurarte de que el servicio de Google devuelve la respuesta esperada.
Donde:
Información sobre los permisos de las cuentas de servicio
Para configurar un proxy de API de forma que use la autenticación de Google, debes crear una cuenta de servicio tal como se describe en la siguiente tabla. Consulta también el artículo Crear y gestionar cuentas de servicio.
Cuenta de servicio | Obligatorio para | Descripción |
---|---|---|
Proxy | Apigee y Apigee Hybrid | Tiene los permisos necesarios para que un proxy de API haga llamadas autenticadas a servicios de Google específicos.
|
Tiempo de ejecución | Solo Apigee Hybrid | Permite que el tiempo de ejecución de Apigee genere tokens para autenticarse en los servicios de Google solicitados por un proxy de API. Esta cuenta de servicio "suplanta" la cuenta de servicio específica del proxy para hacer llamadas autenticadas en su nombre.
|