Configura la autenticación para la edición SAP BTP del SDK de ABAP para Google Cloud

En este documento, se describe cómo autenticarte en Google Cloud desde la edición SAP BTP del SDK de ABAP para Google Cloud.

Las aplicaciones desarrolladas con la edición SAP BTP del SDK de ABAP para Google Cloud requieren autenticación para conectarse a las APIs de Google Cloud.

Para la autenticación y autorización a fin de acceder a las APIs de Google Cloud, el SDK usa tokens principalmente. Además, el SDK también admite claves de API para autenticarse en las APIs de Google Cloud que usan claves de API. Solo algunas APIs de Google Cloud usan claves de API para la autenticación. Por ejemplo, Google Maps Platform. Revisa la documentación de autenticación del servicio o la API que deseas usar para determinar si es compatible con las claves de API.

Según las APIs de Google Cloud a las que necesites acceder, puedes elegir un método de autenticación adecuado. En la siguiente lista, se resumen diferentes métodos de autenticación que admite el SDK:

Autenticación con tokens mediante la Federación de Workload Identity

La federación de identidades para cargas de trabajo sigue la especificación del intercambio de tokens de OAuth 2.0. Proporciona una credencial desde tu proveedor de identidad (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, habilita las siguientes APIs de Google Cloud:

Para obtener información sobre cómo habilitar las APIs de Google Cloud, consulta Habilita las API.

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:

  1. En SAP BTP, crea una instancia de servicio de autorización y confianza (XSUAA).
  2. En Google Cloud, crea una cuenta de servicio.
  3. En Google Cloud, configura la federación de Workload Identity.
  4. En SAP BTP, configura el SDK de ABAP para que Google Cloud use la federación de Workload Identity.

Crea una instancia de servicio de autorización y confianza (XSUAA)

Para proporcionar los servicios necesarios a la aplicación de backend, crea una instancia de servicio de autorización y confianza (XSUAA) mediante los siguientes pasos:

  1. Accede a SAP BTP Cockpit. Para obtener más información, consulta Access the Cockpit en la página de SAP.
  2. Selecciona tu cuenta secundaria.
  3. Crea una instancia de servicio XSUAA:

    1. Ve a Servicios > Marketplace de servicios.
    2. Busca y selecciona Servicio de administración de autorización y confianza (XSUAA).
    3. Haz clic en Crear.
    4. En el cuadro de diálogo Instancia o suscripción nueva que aparece, ingresa un valor para los siguientes campos:

      • Plan: Selecciona Aplicación.
      • Entorno de ejecución: Selecciona Cloud Foundry.
      • Barra espaciadora: Selecciona un nombre para el espacio.
      • Nombre de la instancia: Ingresa un nombre para la instancia de servicio XSUAA.
    5. Haz clic en Crear.

  4. Crea una clave de servicio:

    1. Ve a Instancias y suscripción > Instancias.
    2. Selecciona la instancia de servicio XSUAA que creaste en el paso anterior y haz clic en la pestaña Claves de servicio.
    3. Haz clic en Crear.
    4. Ingresa un nombre de clave de servicio y haz clic en Crear.
    5. Para la clave de servicio recién creada, haz clic en el menú Acciones () y selecciona Ver.
    6. En las credenciales de la clave de servicio, toma nota de lo siguiente:

      • url
      • clientid
      • clientsecret

    Necesitarás estas credenciales de clave de servicio cuando configures la autenticación en Google Cloud.

Crear 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 de Google Cloud que contiene las APIs de Google Cloud que planeas consumir mediante el SDK.

  1. 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 de Google 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 de Google Cloud.

  2. Crea una cuenta de servicio para la autenticación y autorización para acceder a las APIs de Google Cloud.

    Ir a Cuentas de servicio

    Para obtener información sobre cómo crear una cuenta de servicio, consulta Crea una cuenta de servicio.

  3. 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 detalles sobre los roles predefinidos específicos de la API, consulta Referencia de los roles básicos y predefinidos de IAM.

  4. 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 de 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 APIs de Google Cloud que planeas consumir con el SDK, debes agregar el servicio al proyecto de Google Cloud que contiene las APIs de Google Cloud.

Si creaste la cuenta de servicio en el mismo proyecto que contiene las APIs de Google Cloud, puedes omitir este paso.

Para agregar una cuenta de servicio existente al proyecto de Google Cloud que contiene las APIs de Google Cloud, sigue estos pasos:

  1. En la consola de Google Cloud, ve a la página de permisos de IAM.

    Ir a Permisos de IAM

  2. Confirma que el nombre del proyecto que contiene las APIs de Google 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.

  3. En la página Permisos de IAM, haz clic en Otorgar acceso.

  4. En el diálogo Otorgar acceso a “PROJECT_NAME que aparece, sigue estos pasos:

    1. En el campo Principales nuevas, especifica el nombre de la cuenta de servicio.
    2. 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.

    3. Agrega roles adicionales según sea necesario para el uso de la API. Recomendamos implementar el principio de privilegio mínimo.

    4. 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.

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:

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:

  1. En la consola de Google Cloud, ve a la página Proveedor y grupo de cargas de trabajo nuevos.

    Ir a Nuevo proveedor y grupo de cargas de trabajo

  2. 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.
  3. Haz clic en Continuar.

  4. En Agregar un proveedor al grupo, agrega la configuración del proveedor:

    1. En el campo Seleccionar un proveedor, selecciona OpenID Connect (OIDC).
    2. Ingresa los siguientes detalles del proveedor:

      • Nombre del proveedor: ingresa un nombre para el proveedor.
      • Emisor(URL): ingresa la URL de las credenciales de la clave de servicio que anotaste cuando creaste la instancia de servicio XSUAA. Agrega /oauth/token a la URL.
      • Público: selecciona Público permitido y, luego, ingresa el ID de cliente de las credenciales de clave de servicio que anotaste cuando creaste la instancia de servicio XSUAA.
  5. Haz clic en Continuar.

  6. En Configurar atributos del proveedor, en el campo OIDC 1, ingresa assertion.sub.

  7. Haz clic en Guardar.

  8. Toma nota de lo siguiente:

    • ID de grupo
    • ID del proveedor

    Necesitarás estos IDs cuando configures la autenticación en la app de Fiori de configuración del SDK.

Permite que las identidades externas actúen en nombre de la cuenta de servicio

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 permitir que las identidades externas actúen en nombre de una cuenta de servicio, haz lo siguiente:

  1. En la consola de Google Cloud, ve a la página Grupos de Workload Identity.

    Ir a Grupos de Workload Identity

  2. Selecciona el grupo de Workload Identity que creaste en la sección Configura la federación de Workload Identity.

  3. Para otorgar acceso al grupo de identidades para cargas de trabajo, haz clic en Otorgar acceso.

  4. 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í.

  5. En el campo Nombre del atributo, elige Asunto.

  6. En el campo Valor del atributo, ingresa el ID de cliente de las credenciales de la clave de servicio que anotaste cuando creaste la instancia de servicio XSUAA.

  7. Haz clic en Guardar.

  8. En el cuadro de diálogo Configurar tu aplicación que aparece, haz clic en Descartar.

Configura el SDK de ABAP para Google Cloud a fin de usar la federación de Workload Identity

Puedes crear artefactos de administración de comunicaciones mediante las apps de administración de comunicaciones de SAP.

Para crear artefactos de administración de comunicaciones para la autenticación mediante el servicio de XSUAA y la Federación de Workload Identity, usa la situación de comunicación /GOOG/COM_SDK_WIF que se envía con el SDK de ABAP para Google Cloud.

Más adelante, usarás la app de Fiori de configuración del SDK para crear un mapa de comunicación. En el mapa de comunicación, debes definir una clave de cliente única que usas en tu programa de ABAP para la autenticación en Google Cloud.

  1. Accede al SAP Fiori launchpad del sistema BTP ABAP en el que está instalado el SDK de ABAP para Google Cloud.
  2. Ve a Todos los espacios > Administración > Administración de la comunicación.
  3. Crear un sistema de comunicación:
    1. Abre la app Communication Systems.
    2. Haz clic en Nuevo.
    3. En el diálogo Nuevo sistema de comunicación que aparece, ingresa un valor para los siguientes campos:
      • ID del sistema: ingresa un ID del sistema.
      • Nombre del sistema: ingresa un nombre del sistema.
    4. Haz clic en Crear.
    5. En el campo Nombre de host, ingresa la URL sin https:// de las credenciales de la clave de servicio que anotaste cuando creaste la instancia de servicio XSUAA.
    6. En el campo Puerto, escribe 443.
    7. En la pestaña Usuarios para la comunicación saliente, haz clic en Agregar.
    8. Proporciona los siguientes detalles:
      • Método de autenticación: Selecciona Nombre de usuario y contraseña.
      • Nombre de usuario/ID de cliente: ingresa el ID de cliente de las credenciales de la clave de servicio que anotaste cuando creaste la instancia de servicio de XSUAA.
      • Contraseña: ingresa el secreto del cliente de las credenciales de la clave de servicio que anotaste cuando creaste la instancia de servicio de XSUAA.
    9. Haz clic en Guardar.
  4. Crea un acuerdo de comunicación:

    1. Abre la app Communication Arrangement.
    2. Haz clic en Nuevo.
    3. En el diálogo Nuevo acuerdo de comunicaciones que aparece, ingresa un valor para los siguientes campos:

      • Situación: Selecciona Autenticación mediante la federación de Workload Identity (/GOOG/COM_SDK_WIF).
      • Nombre del acuerdo: ingresa un nombre para el acuerdo de comunicación.
    4. Haz clic en Crear.

    5. Para la disposición de comunicación que aparece, en el campo Sistema de comunicaciones, selecciona el sistema de comunicación que creaste en el paso anterior.

    6. Proporciona los siguientes detalles de la sección Configura la federación de Workload Identity:

      • ID del grupo de federación de Workload Identity: ingresa el ID del grupo de la federación de Workload Identity.
      • ID del proveedor de federación de Workload Identity: ingresa el ID del proveedor de la federación de Workload Identity.
    7. En Servicios salientes, en el campo Ruta de acceso, ingresa /oauth/token.

    8. Haz clic en Guardar.

  5. Crea una clave de cliente y un mapa de comunicación:

    1. Ve al espacio que contiene las apps de Fiori para la configuración del SDK.
    2. Abre la app de SDK de Google: configuración principal.
    3. Haz clic en Crear.
    4. En el cuadro de diálogo Crear que aparece, ingresa un nombre de clave de cliente.
    5. Haz clic en Continuar.
    6. Proporciona los siguientes detalles:
      • Cuenta de servicio: Ingresa la cuenta de servicio que tiene acceso a las APIs de Google Cloud.
      • ID del proyecto: ingresa el ID del proyecto de Google Cloud. Para obtener información sobre el ID del proyecto, consulta Identifica proyectos.
      • Número de proyecto: ingresa el número de proyecto de Google Cloud. Para obtener información sobre el número de proyecto, consulta Identifica proyectos.
      • Tipo de autenticación: Selecciona W (federación de Workload Identity).
    7. Para el mapa de comunicación que aparece, en el campo Communication arrangement, selecciona la acuerdo de comunicación que creaste en el paso anterior.
    8. Haz clic en Crear. Aparecerá un cuadro de diálogo que confirma que aceptas usar el SDK de ABAP para Google Cloud según las condiciones estándar de Google Cloud.
    9. Para validar la configuración de autenticación, haz clic en Verificar conexión. Una marca de verificación verde en una entrada indica que la configuración se realizó correctamente. Si se produce algún error, visita la página de solución de problemas para obtener orientación sobre cómo resolver los errores comunes.

Autenticación mediante una clave de API almacenada en Secret Manager

Cuando usas claves de API para la autenticación en Google Cloud, puedes almacenar tus claves de API de forma segura mediante el servicio Secret Manager de Google Cloud.

Para la autenticación mediante una clave de API almacenada en Secret Manager, habilita las siguientes APIs de Google Cloud:

Para obtener información sobre cómo habilitar las APIs de Google Cloud, consulta Habilita las API.

Para obtener los permisos que necesitas para configurar Secret Manager y la federación de Workload Identity, pídele a tu administrador que te otorgue los siguientes roles de IAM en el proyecto:

Para la autenticación mediante claves de API almacenada en Secret Manager, los pasos de configuración de alto nivel son los siguientes:

  1. En SAP BTP, crea una instancia de servicio de autorización y confianza (XSUAA).
  2. En Google Cloud, crea una cuenta de servicio.
  3. En Google Cloud, configura la federación de Workload Identity.
  4. En Google Cloud, crea una clave de API.
  5. En Google Cloud, crea un secreto y almacena la clave de API.
  6. En SAP BTP, configura el SDK de ABAP para que Google Cloud use la clave de API de Secret Manager.

Cuando autenticas con una clave de API almacenada en Secret Manager, puedes volver a usar la instancia de servicio XSUAA, la cuenta de servicio y el grupo y el proveedor de la federación de Workload Identity que creaste para autenticación mediante tokens.

Crea una clave de API

Para autenticar con una clave de API, debes crear una clave de API. La string de clave de API es una string encriptada, por ejemplo, AIzaSyDaGmWKa4JsXZ-HjGw7ISLn_3namBGewQe. El SDK de ABAP para Google Cloud usa la string de clave de API en la solicitud HTTP para autenticarse de forma segura cuando se llama a una API de Google Cloud.

Google Cloud proporciona varias formas de crear claves de API.

Para crear claves de API con la consola de Google Cloud, sigue estos pasos:

  1. En la consola de Google Cloud, ve a la página Credenciales.

    Ir a Credenciales

  2. Haz clic en Crear credenciales y, luego, selecciona Clave de API en el menú.

    • Se mostrará la string de clave de API en el cuadro de diálogo Se creó la clave de API. Copia tu string de clave y mantenla segura. Necesitas esta clave de API para configurar la autenticación en Google Cloud.

    • De forma predeterminada, las claves de API no están restringidas. Te recomendamos restringir las claves de API mediante la selección de las APIs que puedes usar. Para obtener más información sobre cómo agregar restricciones de API, consulta Agrega restricciones de API.

Crea un secreto y almacena la clave de API

  1. En la consola de Google Cloud, ve a la página Secret Manager.

    Ir a Secret Manager

  2. Haz clic en Crear secreto.

  3. En la página Crear secreto, en Nombre, ingresa un nombre para el secreto. Un nombre de secreto puede contener letras mayúsculas y minúsculas, números, guiones y guiones bajos. La longitud máxima permitida para un nombre es de 255 caracteres.

  4. En el campo Valor del secreto, ingresa la clave de API que creaste en la sección Crea una clave de API.

  5. Haz clic en Crear secreto. El contenido de tu secreto se almacena en una versión de secreto.

  6. Haz clic en el nombre del secreto que creaste.

  7. En la pestaña Versiones que se abre, toma nota de lo siguiente:

    • Nombre del secreto
    • Versión

    Necesitas estos detalles del secreto cuando configuras la autenticación en Google Cloud.

Configura el SDK de ABAP para Google Cloud para usar la clave de API de Secret Manager

Puedes crear artefactos de administración de comunicaciones mediante las apps de administración de comunicaciones de SAP.

Para crear artefactos de administración de comunicaciones para la autenticación mediante el servicio XSUAA y la federación de Workload Identity, usa la situación de comunicación /GOOG/COM_SDK_APIKSM que se envía con el SDK de ABAP para Google Cloud.

Más adelante, usarás la app de Fiori de configuración del SDK para crear un mapa de comunicación. En el mapa de comunicación, debes definir una clave de cliente única que usas en tu programa de ABAP para la autenticación en Google Cloud.

  1. Accede al SAP Fiori launchpad del sistema BTP ABAP en el que está instalado el SDK de ABAP para Google Cloud.
  2. Ve a Todos los espacios > Administración > Administración de la comunicación.
  3. Crear un sistema de comunicación:
    1. Abre la app Communication Systems.
    2. Haz clic en Nuevo.
    3. En el diálogo Nuevo sistema de comunicación que aparece, ingresa un valor para los siguientes campos:
      • ID del sistema: ingresa un ID del sistema.
      • Nombre del sistema: ingresa un nombre del sistema.
    4. Haz clic en Crear.
    5. En el campo Nombre de host, ingresa la URL sin https:// de las credenciales de la clave de servicio que anotaste cuando creaste la instancia de servicio XSUAA.
    6. En el campo Puerto, escribe 443.
    7. En la pestaña Usuarios para la comunicación saliente, haz clic en Agregar.
    8. Proporciona los siguientes detalles:
      • Método de autenticación: Selecciona Nombre de usuario y contraseña.
      • Nombre de usuario/ID de cliente: ingresa el ID de cliente de las credenciales de la clave de servicio que anotaste cuando creaste la instancia de servicio de XSUAA.
      • Contraseña: ingresa el secreto del cliente de las credenciales de la clave de servicio que anotaste cuando creaste la instancia de servicio de XSUAA.
    9. Haz clic en Guardar.
  4. Crea un acuerdo de comunicación:

    1. Abre la app Communication Arrangement.
    2. Haz clic en Nuevo.
    3. En el cuadro de diálogo Nuevo acuerdo de comunicaciones que aparece, ingresa los siguientes detalles:

      • Situación: Selecciona Autenticación mediante la clave de API con Secret Manager (/GOOG/COM_SDK_APIKSM).
      • Nombre del acuerdo: ingresa un nombre para el acuerdo de comunicación.
    4. Haz clic en Crear.

    5. Para la disposición de comunicación que aparece, en el campo Sistema de comunicaciones, selecciona el sistema de comunicación que creaste en el paso anterior.

    6. En Propiedades adicionales, proporciona un valor para las siguientes propiedades:

    7. En Servicios salientes, en el campo Ruta de acceso, ingresa /oauth/token.

    8. Haz clic en Guardar.

  5. Crea una clave de cliente y un mapa de comunicación:

    1. Ve al espacio que contiene las apps de Fiori para la configuración del SDK.
    2. Abre la app de SDK de Google: configuración principal.
    3. Haz clic en Crear.
    4. En el cuadro de diálogo Crear que aparece, ingresa un nombre de clave de cliente.
    5. Haz clic en Continuar.
    6. Proporciona los siguientes detalles:

      • Cuenta de servicio: Ingresa la cuenta de servicio que tiene acceso a las APIs de Google Cloud.
      • ID del proyecto: ingresa el ID del proyecto de Google Cloud. Para obtener información sobre el ID del proyecto, consulta Identifica proyectos.
      • Número de proyecto: ingresa el número de proyecto de Google Cloud. Para obtener información sobre el número de proyecto, consulta Identifica proyectos.
      • Tipo de autenticación: Selecciona V (Clave de API con Secret Manager).
    7. Para el mapa de comunicación que aparece, en el campo Communication arrangement, selecciona la acuerdo de comunicación que creaste en el paso anterior.

    8. Haz clic en Crear. Aparecerá un cuadro de diálogo que confirma que aceptas usar el SDK de ABAP para Google Cloud según las condiciones estándar de Google Cloud.

    9. Para validar la configuración de autenticación, haz clic en Verificar conexión. Una marca de verificación verde en una entrada indica que la configuración se realizó correctamente. Si se produce algún error, visita la página de solución de problemas para obtener orientación sobre cómo resolver los errores comunes.

Obtenga asistencia

Si necesitas ayuda para resolver problemas con el SDK de ABAP para Google Cloud, haz lo siguiente: