En este documento, se describe cómo autenticarse en Google Cloudcon tokens a través de la federación de Workload Identity. Con la federación de identidades para cargas de trabajo, puedes otorgar a las cargas de trabajo de SAP locales o de múltiples nubes acceso a los recursos de Google Cloudsin usar una clave de cuenta de servicio.
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 federado a cambio. Puedes usar este token de acceso federado directamente con los servicios compatibles o usarlo para actuar en nombre de 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 Google Cloud API a la que tenga acceso la cuenta de servicio.
Puedes usar la federación de identidades para cargas de trabajo con el servidor de metadatos o proveedores de identidad (IdP) externos.
Federación de identidades para cargas de trabajo con metadatos de VM
Si tu sistema SAP está alojado en Google Cloud , pero SAP lo administra, puedes usar la federación de identidades para cargas de trabajo para acceder de forma segura a los recursos en otros proyectos deGoogle Cloud desde tu sistema SAP. La federación de identidades para cargas de trabajo permite que tu sistema SAP se autentique en otros proyectos de Google Cloud con los metadatos de la VM. Esto elimina la necesidad de administrar claves de cuentas de servicio, lo que mejora la seguridad y simplifica la autenticación.
Los pasos de la configuración de alto nivel son los siguientes:
- En Google Cloud, configura la federación de Workload Identity.
- En Google Cloud, crea una cuenta de servicio.
- En Google Cloud, otorga acceso a la cuenta de servicio al grupo de federación de Workload Identity.
- En el SDK de ABAP para Google Cloud, configura la clave de cliente.
Configura la federación de Workload Identity
A fin de obtener los permisos que necesitas para configurar la federación de Workload Identity, pídele a tu administrador que te otorgue los siguientes roles de IAM en el proyecto:
- Administrador de grupos de Workload Identity (
roles/iam.workloadIdentityPoolAdmin
) - Administrador de cuenta de servicio (
roles/iam.serviceAccountAdmin
)
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso.
Para configurar la federación de Workload Identity, sigue estos pasos:
En la consola de Google Cloud , ve a la página Nuevo proveedor y grupo de cargas de trabajo.
En la sección Crear un grupo de identidades, ingresa un valor para los siguientes campos:
- Nombre: el nombre del grupo. El nombre también se usa como el ID del grupo. No puedes cambiar el ID del grupo más adelante.
- Descripción: el texto que describe el propósito del grupo.
Haz clic en Continuar.
En Agregar un proveedor al grupo, agrega el servidor de metadatos como proveedor:
- En el campo Seleccionar un proveedor, selecciona OpenID Connect (OIDC).
Ingresa los siguientes detalles del proveedor:
- Nombre del proveedor: ingresa un nombre para el proveedor.
- Issuer(URL): Ingresa la URL del token del servidor de metadatos,
https://accounts.google.com
. - Público: Selecciona Público permitido y, luego, ingresa el número del proyecto Google Cloud al que necesitas acceder Google Cloud . Para obtener información sobre cómo obtener el número de proyecto, consulta Recopila detalles de la instancia del servidor de metadatos de Google.
Haz clic en Continuar.
En Configurar atributos del proveedor, haz lo siguiente:
- En el campo Google 1, asegúrate de que el valor sea
google.subject
. - En el campo OIDC 1, ingresa
assertion.sub
.
- En el campo Google 1, asegúrate de que el valor sea
Haz clic en Guardar.
Toma nota de lo siguiente:
- ID de grupo
- ID del proveedor
Necesitarás estos IDs cuando configures la clave del cliente.
Recopila detalles de la instancia del servidor de metadatos de Google
Para obtener los detalles de la instancia del servidor de metadatos de Google que necesitas para configurar la federación de identidades para cargas de trabajo, sigue estos pasos:
-
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 SDK de ABAP para Google Cloud > Utilidades > Obtener valores de metadatos específicos para la instancia del servidor de metadatos de Google.
- Selecciona las opciones según corresponda:
- ID numérico del proyecto
- Correo electrónico de la cuenta de servicio predeterminada
- Haz clic en Ejecutar para ver los detalles.
- Anota los detalles. Los necesitarás cuando configures la federación de identidades para cargas de trabajo en la consola de Google Cloud .
Crea una cuenta de servicio
En la consola de Google Cloud , crea una cuenta de servicio de IAM. Esta cuenta de servicio debe ser una principal en el proyecto Google Cloud que contiene las APIsGoogle Cloud que planeas consumir con el SDK.
En la consola de Google Cloud , selecciona el proyecto en el que deseas crear la cuenta de servicio.
Si creas la cuenta de servicio en el mismo proyecto que contiene las APIs de Google Cloud , la cuenta de servicio se agrega como principal al proyecto de forma automática.
Si creas la cuenta de servicio en un proyecto que no sea el en el que están habilitadas las APIs deGoogle Cloud , debes agregar la cuenta de servicio a ese proyecto en un paso adicional. Para obtener más información, consulta Agrega la cuenta de servicio al proyecto Google Cloud .
Crea una cuenta de servicio para la autenticación y autorización para acceder a las Google Cloud APIs.
Para obtener información sobre cómo crear una cuenta de servicio, consulta Crea una cuenta de servicio.
En la consola de Google Cloud , 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. Para obtener más información sobre los roles predefinidos específicos de la API, consulta Referencia de los roles básicos y predefinidos de IAM.
Si creaste la cuenta de servicio en un proyecto diferente al del proyecto que contiene las APIs de Google Cloud que planeas consumir con el SDK, anota el nombre de la cuenta de servicio. Debes especificar el nombre cuando agregas la cuenta de servicio a ese proyecto.
Agrega la cuenta de servicio al proyecto Google Cloud
Si creaste la cuenta de servicio del SDK de ABAP para Google Cloud en un proyecto que no es el que contiene las Google Cloud APIs que planeas consumir con el SDK, debes agregar el servicio al proyecto Google Cloud que contiene las Google Cloud APIs.
Si creaste la cuenta de servicio en el mismo proyecto que contiene las APIs deGoogle Cloud , puedes omitir este paso.
Para agregar una cuenta de servicio existente al proyecto Google Cloud que contiene las APIs de Google Cloud , sigue estos pasos:
En la Google Cloud consola, ve a la página de permisos de IAM.
Confirma que el nombre del proyecto que contiene las APIs deGoogle Cloud de destino se muestra cerca de la parte superior de la página. Por ejemplo:
Permisos para el proyecto “
PROJECT_NAME
”Si no es así, cambia de proyecto.
En la página Permisos de IAM, haz clic en
Otorgar acceso.En el diálogo Otorgar acceso a “
PROJECT_NAME
” que aparece, sigue estos pasos:- En el campo Principales nuevas, especifica el nombre de la cuenta de servicio.
En el campo Seleccionar un rol, especifica un rol relevante. Por ejemplo, en Pub/Sub, para modificar temas y suscripciones y acceso a fin de publicar y consumir mensajes, puedes especificar el rol de editor de Pub/Sub (
roles/pubsub.editor
).Para obtener más detalles sobre los roles predefinidos específicos de la API, consulta Referencia de los roles básicos y predefinidos de IAM.
Agrega roles adicionales según sea necesario para el uso de la API. Recomendamos implementar el principio de privilegio mínimo.
Haz clic en Guardar. La cuenta de servicio aparece en la lista de principales del proyecto en la página IAM.
La cuenta de servicio ahora se puede usar para acceder a las APIs de Google Cloud en este proyecto.
Otorga acceso a la cuenta de servicio al grupo de federación de Workload Identity
Para actuar como cuentas de servicio de cargas de trabajo federadas, otorga el usuario de Workload Identity (roles/iam.workloadIdentityUser
) en la cuenta de servicio. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso.
Para otorgar acceso a la cuenta de servicio al grupo de federación de Workload Identity, haz lo siguiente:
En la consola de Google Cloud , ve a la página Grupos de Workload Identity.
Selecciona el grupo de Workload Identity que creaste en la sección Configura la federación de Workload Identity.
Para otorgar acceso al grupo de identidades para cargas de trabajo, haz clic en
Otorgar acceso.En la lista Cuenta de servicio, selecciona la cuenta de servicio que tiene acceso a las APIs de Google Cloud . Si usas varias cuentas de servicio, agrégalas todas aquí.
En el campo Nombre del atributo, elige Asunto.
En el campo Valor del atributo, ingresa la dirección de correo electrónico de la cuenta de servicio recuperada del servidor de metadatos entre comillas dobles. Por ejemplo,
"svc-acct-compute@example-project-123456."
Para obtener información sobre cómo recuperar la dirección de correo electrónico de la cuenta de servicio del servidor de metadatos, consulta Recopila detalles de la instancia del servidor de metadatos de Google.
En el cuadro de diálogo Configurar tu aplicación que aparece, haz clic en Descartar.
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.
.Permiso de Google Cloud Especifica el permiso de acceso a la API, https://www.googleapis.com/auth/cloud-platform
.Identificador de proyecto de Google Cloud Especifica el ID del proyecto 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 de autenticación según corresponda: /GOOG/CL_AUTH_WIF_META_ACCESS
: Genera tokens de OAuth firmados por Google./GOOG/CL_AUTH_WIF_META_IDTOKEN
: Genera tokens de ID firmados por Google.
Almacenamiento en caché de tokens La marca que determina si los tokens de acceso recuperados de Google Cloud se almacenan en caché.
Te recomendamos que habilites el almacenamiento en caché de tokens después de que termines de configurar y probar tu conexión a Google Cloud.
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.
Federación de identidades para cargas de trabajo con IdP externos
Puedes usar la federación de Workload Identity con IdPs externos, como Amazon Web Services (AWS), o con cualquier proveedor de identidad (IdP) que admita OpenID Connect (OIDC), como Microsoft Azure o SAML 2.0.
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 identidades para cargas de trabajo. 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 identidades de personal: 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 tu IdP externo, sigue los pasos según tu IdP:
- Si usas AWS o Azure como tu 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.
Configuras un grupo de identidades, que es una entidad que te permite administrar identidades externas. También debes configurar un proveedor de grupo de identidades para cargas de trabajo, que es una entidad que describe una relación entre Google Cloudy 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: Es el número del proyecto Google Cloud en el que creaste el grupo de identidades para cargas de trabajo.
- 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 configurar la clave del cliente del SDK de ABAP.
Crea 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 Google Cloud que contiene las APIsGoogle Cloud que planeas consumir con el SDK.
En la consola de Google Cloud , habilita la API de IAM Service Account Credentials, la API de Security Token Service y cualquier otra API compatible a la que planees acceder con el SDK.
Para obtener información sobre cómo habilitar las Google Cloud APIs, consulta Habilita las APIs.
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. Para obtener más información sobre los roles predefinidos específicos de la API, consulta Encuentra roles 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 tu 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 Cloud Run Functions 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 del cliente para invocar Cloud Run Functions.
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
: Es el token recuperado de tu IdP en el formatostring
.CV_TOKEN_TYPE
: Es el tipo de token de seguridad recuperado de tu IdP. Los tipos de tokens admitidos 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
Luego, 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 final de OAuth 2.0, 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 Cloud, 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.
.Permiso de Google Cloud Especifica el permiso de acceso a la API, https://www.googleapis.com/auth/cloud-platform
.Identificador de proyecto de Google Cloud Especifica el ID del proyecto 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 La marca que determina si los tokens de acceso recuperados de Google Cloud se almacenan en caché.
Te recomendamos que habilites el almacenamiento en caché de tokens después de que termines de configurar y probar tu conexión a Google Cloud.
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.
Valida la configuración de autenticación
Para validar la configuración de autenticación y verificar que esté lista, haz lo siguiente:
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 SDK de ABAP para Google Cloud > Utilidades > Validar configuración de autenticación.
Ingresa el nombre de la clave del cliente.
Haz clic en Ejecutar.
Una marca de verificación verde en la columna Resultado indica que todos los pasos de configuración se completaron de forma correcta.
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, consulta Obtén asistencia para SAP en Google Cloud.