Cómo recuperar credenciales o secretos de Secret Manager de Google Cloud con el SDK de ABAP para Google Cloud

1. Introducción

En este codelab, enumeramos los pasos para recuperar credenciales o secretos de la API de Secret Manager de Google Cloud con el SDK de ABAP para Google Cloud.

En este codelab, se usan los siguientes servicios de Google Cloud:

  • Secret Manager
  • Cloud Shell

Qué compilarás

Realizarás las siguientes acciones:

  • Habilita la API de Secret Manager en un proyecto de Google Cloud.
  • Crear un secreto.
  • Agrega una versión del Secret.
  • Accede a un secreto o recupera uno con el SDK de ABAP para Google Cloud.

En este codelab, los pasos para crear un secreto y agregar una versión de secreto se realizarán a través de comandos de gcloud, pero también se pueden realizar con la biblioteca cliente de Secret Manager que se proporciona con el SDK de ABAP para Google Cloud.

2. Requisitos

  • Un navegador, como Chrome o Firefox
  • Un proyecto de Google Cloud con la facturación habilitada o crea una cuenta de prueba gratuita de 90 días para Google Cloud Platform.
  • GUI de SAP (Windows o Java) instalada en tu sistema Si la GUI de SAP ya está instalada en tu laptop, conéctate a SAP con la dirección IP externa de la VM como la IP del servidor de aplicaciones. Si usas Mac, también puedes instalar la GUI de SAP para Java disponible en este vínculo.

3. Antes de comenzar

6757b2fb50ddcc2d.png

  • Ejecuta los siguientes comandos para autenticar tu cuenta y establecer el proyecto predeterminado en abap-sdk-poc. Se usa la zona us-west4-b como ejemplo. Si es necesario, cambia el proyecto y la zona en los siguientes comandos según tus preferencias.
gcloud auth login
gcloud config set project abap-sdk-poc
gcloud config set compute/zone us-west4-b

4. Descripción general

Esta es una descripción general de algunas de las entidades de Secret Manager con las que trabajarás en este codelab:

  • Secreto: Un secreto es un objeto global del proyecto que contiene una colección de metadatos y versiones de secretos.
  • Versión secreta: Una versión secreta almacena los datos secretos reales, como claves de API, contraseñas o certificados.

5. Habilita Secret Manager en tu proyecto de Google Cloud

  1. Ve a tu proyecto de Google Cloud y haz clic en Activar Cloud Shell en la esquina superior derecha.

8d15f753321c53e6.png

  1. Ejecuta el siguiente comando para habilitar la API de Cloud Secret Manager en tu proyecto de Google Cloud.
gcloud services enable secretmanager.googleapis.com

Ahora deberías tener habilitada la API de Secret Manager en tu proyecto de Google Cloud.

6. Crea una cuenta de servicio con roles de usuario de Secret Manager

Para crear una cuenta de servicio con los roles necesarios, sigue estos pasos:

  1. Ejecuta el siguiente comando en la terminal de Cloud Shell:
gcloud iam service-accounts create abap-sdk-secretmanager-tester \
--display-name="Service Account for Secret Manager"
  1. Agrega los roles necesarios a la cuenta de servicio creada en el paso anterior para crear un secreto, agregar una versión del secreto y acceder a una versión del secreto.
gcloud endpoints services add-iam-policy-binding secretmanager.googleapis.com \ --member='serviceAccount:abap-sdk-secretmanager-tester@abap-sdk-poc.iam.gserviceaccount.com' \
--role='roles/roles/secretmanager.secrets.create'
gcloud endpoints services add-iam-policy-binding secretmanager.googleapis.com \ --member='serviceAccount:abap-sdk-secretmanager-tester@abap-sdk-poc.iam.gserviceaccount.com' \
--role='roles/roles/secretmanager.versions.add'
gcloud endpoints services add-iam-policy-binding secretmanager.googleapis.com \ --member='serviceAccount:abap-sdk-secretmanager-tester@abap-sdk-poc.iam.gserviceaccount.com' \
--role='roles/roles/secretmanager.versions.access'

En los comandos anteriores, se usa abap-sdk-poc como marcador de posición para el proyecto de Google Cloud. Reemplaza abap-sdk-poc por el ID de tu proyecto.

  • Para verificar que se haya agregado el rol, ve a la página IAM. La cuenta de servicio que creaste debería aparecer en la lista junto con el rol que se le asignó.

7. Crear Secret

  • En Cloud Shell, ejecuta el siguiente comando para crear un secreto con el nombre "demo-secret" para este codelab:
gcloud secrets create demo-secret \
    --replication-policy="automatic"

Deberías poder ver un secreto creado en tu proyecto de Google Cloud, como se muestra a continuación.

99a318dbdd37af4e.png

8. Agrega una versión del Secret

  1. En Cloud Shell, ejecuta el siguiente comando para agregar una versión secreta al secreto “demo-secret”.
echo -n "This is my super secret data" | \
    gcloud secrets versions add demo-secret --data-file=-

Se crea una versión del Secret. Para ver los detalles, haz clic en "demo-secret" .

bbf6b9f2f9c4340a.png

  1. Haz clic en los tres puntos de la derecha y selecciona Ver valor del secreto (View Secret Value). Se mostrará el secreto almacenado.

6f3afd0ac25445bf.png

9. Crea configuraciones del SDK en SAP

Ahora que configuraste los requisitos previos en Google Cloud, podemos continuar con la configuración en SAP. En la configuración relacionada con la autenticación y la conectividad, el SDK de ABAP para Google Cloud usa la tabla /GOOG/CLIENT_KEY.

Para mantener la configuración en la tabla /GOOG/CLIENT_KEY, sigue estos pasos:

  1. En la GUI de SAP, ingresa el código de transacción SPRO.
  2. Haz clic en IMG de referencia de SAP.
  3. Haz clic en SDK de ABAP para Google Cloud > Configuración básica > Configurar clave de cliente.
  4. Mantén los siguientes valores en los campos:

Campo

Descripción

Nombre de la clave de Google Cloud

SECRET_MANAGER_DEMO

Nombre de la cuenta de servicio de Google Cloud

abap-sdk-secretmanager-tester@abap-sdk-poc.iam.gserviceaccount.com

Permiso de Google Cloud

https://www.googleapis.com/auth/cloud-platform

Identificador de proyecto de Google Cloud

<<Tu ID de proyecto de Google Cloud>>

Clase de autorización

/GOOG/CL_AUTH_GOOGLE

Deja los otros campos en blanco.

10. Cómo recuperar un secreto con el SDK

  1. Accede a tu sistema SAP.
  2. Ve al código de transacción SE38 y crea un informe con el nombre "ZDEMO_ACCESS_SECRET".
  3. En la ventana emergente que se abre, proporciona los detalles como se muestra a continuación y haz clic en Guardar.

b1ef7c7744ceb5ce.png

  1. En la siguiente ventana emergente, selecciona Objeto local o proporciona un nombre de paquete según corresponda.
  • En el Editor de ABAP, agrega el siguiente código:
* Data declarations
 DATA:
   lv_p_projects_id TYPE string,
   lv_p_secrets_id  TYPE string,
   lv_p_versions_id TYPE string.

 TRY.
* Open HTTP Connection
     DATA(lo_client) = NEW /goog/cl_secretmgr_v1( iv_key_name = 'SECRET_MANAGER_DEMO' ).

* Populate relevant parameters
 lv_p_projects_id = lo_client->gv_project_id.
 lv_p_secrets_id = 'demo-secret'.
 lv_p_versions_id = 'latest'.

* Call API method: secretmanager.projects.secrets.versions.access
     lo_client->access_versions(
       EXPORTING
         iv_p_projects_id = lv_p_projects_id
         iv_p_secrets_id  = lv_p_secrets_id
         iv_p_versions_id = lv_p_versions_id
       IMPORTING
         es_output        = DATA(ls_output)
         ev_ret_code      = DATA(lv_ret_code)
         ev_err_text      = DATA(lv_err_text)
         es_err_resp      = DATA(ls_err_resp) ).
     IF lo_client->is_success( lv_ret_code ).
      cl_http_utility=>if_http_utility~decode_base64(
        EXPORTING
          encoded = ls_output-payload-data
        RECEIVING
          decoded = DATA(lv_decoded_secret) ).
       DATA(lv_msg) = 'Secret data fetched successfully, Decoded Secret: ' && lv_decoded_secret.
      cl_demo_output=>display( lv_msg ).
     ELSE.
       lv_msg = lv_ret_code && ':' && lv_err_text.
       cl_demo_output=>display( lv_msg ).

     ENDIF.

* Close HTTP Connection
     lo_client->close( ).

   CATCH /goog/cx_sdk INTO DATA(lo_exception).
     MESSAGE lo_exception->get_text( ) TYPE 'E'.

 ENDTRY.
  1. Guarda y activa el programa de informes.
  2. Ejecuta el informe (presiona F8).

Si la ejecución se realiza correctamente, deberías ver el resultado del informe como se muestra a continuación:

24acec0fc2d4d18b.png

11. Felicitaciones

¡Felicitaciones! Recuperaste correctamente un secreto almacenado en Secret Manager de Google Cloud Platform con el SDK de ABAP para Google Cloud.

Secret Manager de Google Cloud también tiene otras funciones, como las siguientes:

  • Cómo aplicar un parche a un Secret
  • Destruye una versión del Secret
  • Cómo borrar un Secret

Puedes invocar estas funciones de Secret Manager a través del SDK de ABAP para Google Cloud desde tus aplicaciones de SAP.

12. Realiza una limpieza

Si no deseas continuar con los codelabs adicionales relacionados con el SDK de ABAP para Google Cloud, continúa con la limpieza.

Borra el proyecto

  • Borra el proyecto de Google Cloud:
gcloud projects delete abap-sdk-poc

Cómo borrar recursos individuales

  1. Borra la instancia de procesamiento:
gcloud compute instances delete abap-trial-docker
  1. Borra las reglas de firewall:
gcloud compute firewall-rules delete sapmachine
  1. Borra la cuenta de servicio:
gcloud iam service-accounts delete \
 abap-sdk-secretmanager-tester@abap-sdk-poc.iam.gserviceaccount.com