En este documento, se describe cómo autenticarse en Google Cloud con tokens a través de la federación de Workload Identity. Con la federación de Workload Identity, puedes otorgar a las cargas de trabajo de SAP locales o de múltiples nubes acceso a los recursos de Google Cloud sin usar una clave de cuenta de servicio. Puedes usar la federación de Workload Identity con Amazon Web Services (AWS) o con cualquier proveedor de identidad (IdP) que admita OpenID Connect (OIDC), como Microsoft Azure o SAML 2.0.
La federación Workload Identity sigue la especificación del intercambio de tokens de OAuth 2.0. Proporciona una credencial desde tu IdP al servicio de tokens de seguridad, que verifica la identidad en la credencial y, luego, muestra un token de acceso a cambio. Puedes usar este token para actuar como una cuenta de servicio y obtener un token de acceso de corta duración. El token de acceso de corta duración te permite llamar a cualquier API de Google Cloud a la que tenga acceso la cuenta de servicio.
Para la autenticación mediante tokens a través de la federación de Workload Identity, los pasos de configuración de alto nivel son los siguientes:
- Prepara el IdP externo
- En Google Cloud, configura la federación de Workload Identity.
- En Google Cloud, crea una cuenta de servicio.
- En Google Cloud, permite que la carga de trabajo externa actúe en nombre de la cuenta de servicio.
- En el SDK de ABAP para Google Cloud, implementa el código ABAP para recuperar tokens de seguridad de tu IdP.
- En el SDK de ABAP para Google Cloud, configura la clave de cliente.
No todos los productos de Google Cloud admiten la federación de Workload Identity. Antes de configurar la autenticación mediante la federación de Workload Identity, revisa la lista de productos compatibles y las limitaciones. Para obtener más información, consulta Federación de Workload Identity: productos admitidos y limitaciones.
Prepara el IdP externo
Debes preparar tu IdP para que tu carga de trabajo de SAP pueda obtener credenciales que se puedan intercambiar por un token de seguridad de OAuth 2.0 de Google.
Para preparar el IdP externo, sigue los pasos según tu IdP:
- Si usas AWS o Azure como IdP, sigue las instrucciones para preparar tu IdP externo.
- Si usas otros IdP, sigue las instrucciones para preparar tu IdP externo.
Configura la federación de Workload Identity
En Google Cloud, configura el grupo y los proveedores de Workload Identity.
Debes configurar un grupo de identidades, que es una entidad que te permite administrar identidades externas. También debes configurar un proveedor de grupo de Workload Identity, que es una entidad que describe una relación entre Google Cloud y tu IdP.
Para configurar la federación de Workload Identity, sigue los pasos según tu IdP externo:
- Si usas AWS o Azure como IdP, sigue las instrucciones para crear el grupo y el proveedor de Workload Identity.
- Si usas otros IdP, sigue las instrucciones para crear el grupo y el proveedor de Workload Identity.
Toma nota de lo siguiente:
- Número de proyecto: el número de proyecto del proyecto de Google Cloud en el que creaste el grupo de Workload Identity.
- ID del grupo: Es un ID único que identifica el grupo de identidades para cargas de trabajo.
- ID de proveedor: Es un ID que identifica al proveedor del grupo de identidades para cargas de trabajo.
Las necesitarás para la configuración de la clave de cliente del SDK de ABAP.
Crear una cuenta de servicio
En la consola de Google Cloud, crea una cuenta de servicio de IAM dedicada para acceder a las APIs de Google Cloud. Esta cuenta de servicio debe ser una principal en el proyecto de Google Cloud que contiene las APIs de Google Cloud que planeas consumir mediante el SDK.
En la consola de Google Cloud, habilita la API de credenciales de la cuenta de servicio de IAM, la API del servicio de tokens de seguridad y cualquier otra API compatible que planeas acceder mediante el SDK.
Para obtener información sobre cómo habilitar las APIs de Google Cloud, consulta Habilita las API.
Crea una cuenta de servicio que represente la carga de trabajo.
Otorga a la cuenta de servicio los roles de IAM necesarios para acceder a la funcionalidad de la API. Para comprender el requisito de rol para las APIs de Google Cloud, consulta la documentación de la API individual y sigue el principio de privilegio mínimo. Si deseas obtener más información sobre los roles predefinidos específicos de la API, consulta Encuentra funciones de IAM para las APIs de Google Cloud.
Permite que la carga de trabajo externa actúe en nombre de la cuenta de servicio
Para permitir que la carga de trabajo externa actúe en nombre de la cuenta de servicio, sigue los pasos según tu IdP externo:
- Si usas AWS o Azure como IdP, sigue las instrucciones para permitir que la carga de trabajo externa suplante la cuenta de servicio.
- Si usas otros IdP, sigue las instrucciones para permitir que la carga de trabajo externa actúe en nombre de la cuenta de servicio.
Implementa el código ABAP para recuperar tokens de seguridad de tu IdP
El SDK de ABAP para Google Cloud proporciona una clase abstracta /GOOG/CL_AUTH_WIF_BASE
, que tiene la lógica para recuperar tokens de seguridad de OAuth 2.0 del servicio de tokens de seguridad y tokens de acceso de OAuth 2.0 de la API de IAM Service Account Credentials. Como desarrollador, debes crear una clase secundaria en tu espacio de nombres que herede de la clase abstracta /GOOG/CL_AUTH_WIF_BASE
.
Para invocar funciones de Cloud Run desde el SDK de ABAP para Google Cloud mediante la federación de identidades para cargas de trabajo, el SDK proporciona otra clase abstracta /GOOG/CL_AUTH_WIF_ID_TOKEN
. Si configuras la autenticación con Workload Identity Federation, debes crear una clase secundaria más en tu espacio de nombres que herede de la clase abstracta /GOOG/CL_AUTH_WIF_ID_TOKEN
. Debes especificar esta clase secundaria en el campo Clase de autorización mientras configuras la clave de cliente para invocar funciones de Cloud Run.
Asegúrate de implementar el método GET_EXT_IDP_TOKEN
en la clase secundaria y escribe la lógica para obtener el token de seguridad de tu IdP. Propaga los siguientes campos:
CV_TOKEN
: El token recuperado de tu IdP en formatostring
.CV_TOKEN_TYPE
: Es el tipo de token de seguridad que se recupera de tu IdP. Los tipos de tokens compatibles son los siguientes:urn:ietf:params:oauth:token-type:jwt
urn:ietf:params:oauth:token-type:id_token
urn:ietf:params:aws:token-type:aws4_request
urn:ietf:params:oauth:token-type:access_token
urn:ietf:params:oauth:token-type:saml2
Los métodos de la clase abstracta /GOOG/CL_AUTH_WIF_BASE
usan los valores propagados en CV_TOKEN
y CV_TOKEN_TYPE
para intercambiar y recuperar el token OAuth 2.0 final, que se usa en las llamadas a la API.
En el siguiente ejemplo, se muestran las implementaciones de muestra del método GET_EXT_IDP_TOKEN
para otros proveedores de servicios en la nube, como AWS y Azure.
AWS
Azure
Configura la clave de cliente
-
En la GUI de SAP, ejecuta el código de transacción
/GOOG/SDK_IMG
.Como alternativa, ejecuta el código de transacción
SPRO
y, luego, haz clic en IMG de referencia de SAP. - Haz clic en el SDK de ABAP para Google Cloud > Configuración básica > Configurar clave de cliente.
- Haz clic en Entradas nuevas.
Ingresa los valores para los siguientes campos:
Campo Descripción Nombre de la clave de Google Cloud Especifica un nombre de la configuración de la clave de cliente. Nombre de la cuenta de servicio de Google Cloud Especifica el nombre de la cuenta de servicio, en formato de dirección de correo electrónico, que se creó para acceder a las APIs de Google Cloud en el paso Crea una cuenta de servicio. Por ejemplo: sap-example-svc-acct@example-project-123456.iam.gserviceaccount.com
.Permiso de Google Cloud Deja este campo en blanco. Identificador de proyecto de Google Cloud Especifica el ID del proyecto de Google Cloud en el que creaste el grupo de Workload Identity. Nombre del comando Deja este campo en blanco. Clase de autorización Especifica la clase secundaria, que contiene la implementación de la clase /GOOG/CL_AUTH_WIF_BASE
. Si deseas obtener más información, consulta Implementa el código ABAP para recuperar tokens de seguridad de tu IdP.Almacenamiento en caché de tokens Deja este campo en blanco. Segundos de actualización de los tokens Deja este campo en blanco. Parámetro de autorización 1 Especifica el ID del grupo de identidades para cargas de trabajo. Parámetro de autorización 2 Especifica el ID del proveedor de Workload Identity. Guarda la entrada.
Obtenga asistencia
Si necesitas ayuda para resolver problemas con el SDK de ABAP para Google Cloud, haz lo siguiente:
Consulta la guía de solución de problemas del SDK de ABAP para Google Cloud.
Haz tus preguntas y analiza el SDK de ABAP para Google Cloud con la comunidad en Cloud Forums.
Recopila toda la información de diagnóstico disponible y comunícate con el servicio de Atención al cliente de Cloud. Si deseas obtener más información para comunicarte con el equipo de Atención al cliente de Cloud, consulta Obtén asistencia para SAP en Google Cloud.