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

1. Введение

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

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

  • Секретный менеджер
  • Cloud Shell

Что вы построите

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

  • Включить Secret Manager API в проекте 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 GUI уже установлен на вашем ноутбуке, подключитесь к SAP, используя внешний IP-адрес виртуальной машины в качестве IP-адреса сервера приложений. Если вы используете Mac, вы также можете установить SAP GUI для 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=-

Создана секретная версия. Чтобы узнать подробности, нажмите «demo-secret».

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. Нажмите ссылку SAP IMG .
  3. Нажмите ABAP SDK для Google Cloud > Основные настройки > Настроить ключ клиента.
  4. Поддерживайте следующие значения в полях:

Поле

Описание

Имя ключа Google Cloud

SECRET_MANAGER_DEMO

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

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

Область применения Google Cloud

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