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. Прежде чем начать
- В вашей системе установлен ABAP SDK для Google Cloud . Вы можете обратиться к кодовой лаборатории — Установите пробную версию платформы ABAP 1909 на Google Cloud Platform и установите ABAP SDK, чтобы настроить новую систему.
- Вы будете использовать Cloud Shell , среду командной строки, работающую в Google Cloud.
- В Cloud Console нажмите «Активировать Cloud Shell» в правом верхнем углу:
- Выполните следующие команды для аутентификации своей учетной записи и установите проект по умолчанию
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.
- Перейдите в свой проект Google Cloud и нажмите «Активировать Cloud Shell» в правом верхнем углу.
- Выполните следующую команду, чтобы включить API Cloud Secret Manager в вашем проекте Google Cloud.
gcloud services enable secretmanager.googleapis.com
Теперь в вашем проекте Google Cloud должен быть включен API Secret Manager.
6. Создайте учетную запись службы с ролями пользователя Secret Manager.
Чтобы создать учетную запись службы с необходимыми ролями, выполните следующие действия:
- Выполните следующую команду в терминале Cloud Shell:
gcloud iam service-accounts create abap-sdk-secretmanager-tester \
--display-name="Service Account for Secret Manager"
- Добавьте необходимые роли в учетную запись службы, созданную на предыдущем шаге, чтобы создать секрет, добавить секретную версию и получить доступ к секретной версии.
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, как показано ниже.
8. Добавьте секретную версию
- В облачной оболочке выполните следующую команду, чтобы добавить секретную версию к секретному «demo-secret».
echo -n "This is my super secret data" | \
gcloud secrets versions add demo-secret --data-file=-
Создана секретная версия. Для просмотра подробностей нажмите «демо-секрет».
- Нажмите три точки справа и выберите «Просмотреть секретное значение» , отобразится сохраненный секрет.
9. Создайте конфигурации SDK в SAP.
Теперь, когда вы настроили предварительные условия на стороне Google Cloud, мы можем продолжить настройку на стороне SAP. Для конфигурации, связанной с аутентификацией и подключением, ABAP SDK для Google Cloud использует таблицу /GOOG/CLIENT_KEY.
Чтобы сохранить конфигурацию в таблице /GOOG/CLIENT_KEY, выполните следующие действия:
- В графическом интерфейсе SAP введите код транзакции SPRO.
- Щелкните Справочное IMG SAP .
- Нажмите ABAP SDK для Google Cloud > Основные настройки > Настроить ключ клиента.
- Поддерживайте следующие значения для полей:
Поле | Описание |
Имя облачного ключа 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
- Войдите в свою систему SAP.
- Перейдите к коду транзакции SE38 и создайте отчет с именем «ZDEMO_ACCESS_SECRET».
- В открывшемся всплывающем окне укажите детали, как показано ниже, и нажмите «Сохранить» .
- В следующем всплывающем окне выберите «Локальный объект» или укажите имя пакета, если это необходимо.
- В редакторе 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.
- Сохраните и активируйте программу отчета.
- Выполните отчет (нажмите F8).
В случае успешного выполнения вы должны увидеть выходные данные отчета, как показано ниже:
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
Удаление отдельных ресурсов
- Удалите вычислительный экземпляр:
gcloud compute instances delete abap-trial-docker
- Удалите правила брандмауэра:
gcloud compute firewall-rules delete sapmachine
- Удалить сервисный аккаунт:
gcloud iam service-accounts delete \
abap-sdk-secretmanager-tester@abap-sdk-poc.iam.gserviceaccount.com