Получение учетных данных/секретов из Google Cloud Secret Manager с помощью ABAP SDK для Google Cloud

1. Введение

В этой лаборатории кода мы перечислили шаги по получению учетных данных или секретов из API Google Cloud Secret Manager с помощью ABAP SDK для Google Cloud .

В этой лаборатории кода используются следующие сервисы Google Cloud:

  • Секретный менеджер
  • Облачная оболочка

Что ты построишь

Вы выполните следующее:

  • Включите API Secret Manager в проекте Google Cloud.
  • Создайте секрет.
  • Добавьте секретную версию.
  • Доступ/получение секрета с помощью ABAP SDK для Google Cloud.

В этой лабораторной работе шаги по созданию секрета и добавлению секретной версии будут выполняться с помощью команд gcloud, но это также можно сделать с помощью клиентской библиотеки для Secret Manager, входящей в состав ABAP SDK для Google Cloud.

2. Требования

  • Браузер, например Chrome или Firefox .
  • Проект Google Cloud с включенной оплатой или создайте 90-дневную бесплатную пробную учетную запись для Google Cloud Platform.
  • SAP GUI (Windows или Java), установленный в вашей системе. Если графический интерфейс SAP уже установлен на вашем ноутбуке, подключитесь к SAP, используя внешний IP-адрес виртуальной машины в качестве IP-адреса сервера приложений. Если вы используете Mac, вы также можете установить графический интерфейс SAP для Java, доступный по этой ссылке.

3. Прежде чем начать

6757b2fb50ddcc2d.png

  • Выполните следующие команды для аутентификации своей учетной записи и установите проект по умолчанию abap-sdk-poc . В качестве примера используется зона us-west4-b . При необходимости измените проект и зону с помощью следующих команд в соответствии с вашими предпочтениями.
gcloud auth login
gcloud config set project abap-sdk-poc
gcloud config set compute/zone us-west4-b

4. Обзор

Вот краткий обзор некоторых сущностей Secret Manager, с которыми вам придется работать в этой лаборатории кода:

  • Секрет. Секрет — это глобальный объект проекта, содержащий коллекцию метаданных и секретных версий.
  • Секретная версия. Секретная версия хранит фактические секретные данные, такие как ключи API, пароли или сертификаты.

5. Включите Secret Manager в своем проекте Google Cloud.

  1. Перейдите в свой проект Google Cloud и нажмите «Активировать Cloud Shell» в правом верхнем углу.

8d15f753321c53e6.png

  1. Выполните следующую команду, чтобы включить API Cloud Secret Manager в вашем проекте Google Cloud.
gcloud services enable secretmanager.googleapis.com

Теперь в вашем проекте Google Cloud должен быть включен API Secret Manager.

6. Создайте учетную запись службы с ролями пользователя Secret Manager.

Чтобы создать учетную запись службы с необходимыми ролями, выполните следующие действия:

  1. Выполните следующую команду в терминале Cloud Shell:
gcloud iam service-accounts create abap-sdk-secretmanager-tester \
--display-name="Service Account for Secret Manager"
  1. Добавьте необходимые роли в учетную запись службы, созданную на предыдущем шаге, чтобы создать секрет, добавить секретную версию и получить доступ к секретной версии.
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'

Приведенные выше команды используют abap-sdk-poc в качестве заполнителя для проекта Google Cloud. Замените abap-sdk-poc на идентификатор вашего проекта.

  • Чтобы убедиться, что роль добавлена, перейдите на страницу IAM . Созданная вами учетная запись службы должна быть указана вместе с назначенной ей ролью.

7. Создайте секрет

  • В облачной оболочке выполните следующую команду, чтобы создать секрет с именем «demo-secret» для этой лаборатории кода:
gcloud secrets create demo-secret \
    --replication-policy="automatic"

Вы должны увидеть секрет, созданный в вашем проекте Google Cloud, как показано ниже.

99a318dbdd37af4e.png

8. Добавьте секретную версию

  1. В облачной оболочке выполните следующую команду, чтобы добавить секретную версию к секретному «demo-secret».
echo -n "This is my super secret data" | \
    gcloud secrets versions add demo-secret --data-file=-

Создана секретная версия. Для просмотра подробностей нажмите «демо-секрет».

bbf6b9f2f9c4340a.png

  1. Нажмите три точки справа и выберите «Просмотреть секретное значение» , отобразится сохраненный секрет.

6f3afd0ac25445bf.png

9. Создайте конфигурации SDK в SAP.

Теперь, когда вы настроили предварительные условия на стороне Google Cloud, мы можем продолжить настройку на стороне SAP. Для конфигурации, связанной с аутентификацией и подключением, ABAP SDK для Google Cloud использует таблицу /GOOG/CLIENT_KEY.

Чтобы сохранить конфигурацию в таблице /GOOG/CLIENT_KEY, выполните следующие действия:

  1. В графическом интерфейсе SAP введите код транзакции SPRO.
  2. Щелкните Справочное IMG SAP .
  3. Нажмите ABAP SDK для Google Cloud > Основные настройки > Настроить ключ клиента.
  4. Поддерживайте следующие значения для полей:

Поле

Описание

Имя облачного ключа Google

SECRET_MANAGER_DEMO

Имя учетной записи облачной службы Google

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

Облачная область Google

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

Идентификатор проекта Google Cloud

<<Идентификатор вашего проекта Google Cloud>>

Класс авторизации

/GOOG/CL_AUTH_GOOGLE

Остальные поля оставьте пустыми.

10. Получить секрет с помощью SDK

  1. Войдите в свою систему SAP.
  2. Перейдите к коду транзакции SE38 и создайте отчет с именем «ZDEMO_ACCESS_SECRET».
  3. В открывшемся всплывающем окне укажите детали, как показано ниже, и нажмите «Сохранить» .

b1ef7c7744ceb5ce.png

  1. В следующем всплывающем окне выберите «Локальный объект» или укажите имя пакета, если это необходимо.
  • В редакторе ABAP добавьте следующий код:.
* 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. Сохраните и активируйте программу отчета.
  2. Выполните отчет (нажмите F8).

В случае успешного выполнения вы должны увидеть выходные данные отчета, как показано ниже:

24acec0fc2d4d18b.png

11. Поздравления

Поздравляем! Вы успешно получили секрет, хранящийся в диспетчере секретов Google Cloud Platform, с помощью ABAP SDK для Google Cloud.

Google Cloud Secret Manager имеет и другие функции, такие как:

  • Исправление секрета
  • Уничтожение секретной версии
  • Удаление секрета

Вы можете вызвать эти функции Secret Manager через ABAP SDK для Google Cloud из своих приложений SAP.

12. Очистка

Если вы не хотите продолжать работу с дополнительными лабораториями кода, связанными с ABAP SDK для Google Cloud, продолжите очистку.

Удалить проект

  • Удалите проект Google Cloud:
gcloud projects delete abap-sdk-poc

Удаление отдельных ресурсов

  1. Удалите вычислительный экземпляр:
gcloud compute instances delete abap-trial-docker
  1. Удалите правила брандмауэра:
gcloud compute firewall-rules delete sapmachine
  1. Удалить сервисный аккаунт:
gcloud iam service-accounts delete \
 abap-sdk-secretmanager-tester@abap-sdk-poc.iam.gserviceaccount.com