Mengambil kredensial/rahasia dari Google Cloud Secret Manager dengan ABAP SDK untuk Google Cloud

1. Pengantar

Dalam codelab ini, kami telah mencantumkan langkah-langkah tentang cara mengambil kredensial atau rahasia dari Google Cloud Secret Manager API menggunakan ABAP SDK untuk Google Cloud.

Layanan Google Cloud berikut digunakan dalam codelab ini:

  • Secret Manager
  • Cloud Shell

Yang akan Anda build

Anda akan melakukan hal berikut:

  • Aktifkan Secret Manager API di project Google Cloud.
  • Buat secret.
  • Tambahkan versi secret.
  • Mengakses/Mengambil secret menggunakan ABAP SDK untuk Google Cloud.

Dalam codelab ini, langkah-langkah untuk membuat secret dan menambahkan versi secret akan dilakukan melalui perintah gcloud, tetapi hal ini juga dapat dilakukan dengan menggunakan library klien untuk Secret Manager yang disediakan dengan ABAP SDK untuk Google Cloud.

2. Persyaratan

  • Browser, seperti Chrome atau Firefox.
  • Project Google Cloud dengan penagihan diaktifkan atau Buat akun Uji Coba Gratis 90 Hari untuk Google Cloud Platform.
  • SAP GUI (Windows atau Java) yang diinstal di sistem Anda. Jika SAP GUI sudah diinstal di laptop Anda, hubungkan ke SAP menggunakan alamat IP eksternal VM sebagai IP Server Aplikasi. Jika menggunakan Mac, Anda juga dapat menginstal SAP GUI for Java yang tersedia di link ini.

3. Sebelum memulai

6757b2fb50ddcc2d.png

  • Jalankan perintah berikut untuk melakukan autentikasi akun Anda dan menetapkan project default ke abap-sdk-poc. Zona us-west4-b digunakan sebagai contoh. Jika perlu, ubah project dan zona dalam perintah berikut berdasarkan preferensi Anda.
gcloud auth login
gcloud config set project abap-sdk-poc
gcloud config set compute/zone us-west4-b

4. Ringkasan

Berikut ringkasan singkat beberapa entity Secret Manager yang akan Anda gunakan dalam codelab ini:

  • Secret - Secret adalah objek global project yang berisi kumpulan metadata dan versi secret.
  • Versi rahasia - Versi rahasia menyimpan data rahasia yang sebenarnya, seperti kunci API, sandi, atau sertifikat.

5. Aktifkan Secret Manager di Project Google Cloud Anda

  1. Buka Project Google Cloud Anda dan klik Activate Cloud Shell di pojok kanan atas.

8d15f753321c53e6.png

  1. Jalankan perintah berikut untuk mengaktifkan Cloud Secret Manager API di Project Google Cloud Anda.
gcloud services enable secretmanager.googleapis.com

Sekarang Anda seharusnya telah mengaktifkan Secret Manager API di Project Google Cloud Anda.

6. Buat Akun Layanan dengan peran pengguna Secret Manager

Untuk membuat akun layanan dengan peran yang diperlukan, lakukan langkah-langkah berikut:

  1. Jalankan perintah berikut di terminal Cloud Shell:
gcloud iam service-accounts create abap-sdk-secretmanager-tester \
--display-name="Service Account for Secret Manager"
  1. Tambahkan peran yang diperlukan ke akun layanan yang dibuat pada langkah sebelumnya untuk membuat secret, menambahkan versi secret, dan mengakses versi secret.
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'

Perintah di atas menggunakan abap-sdk-poc sebagai placeholder untuk Project Google Cloud. Ganti abap-sdk-poc dengan project ID Anda.

  • Untuk memverifikasi bahwa peran telah ditambahkan, buka halaman IAM. Akun layanan yang Anda buat akan tercantum bersama dengan peran yang telah ditetapkan untuknya.

7. Buat Secret

  • Di cloud shell, jalankan perintah berikut untuk membuat secret dengan nama "demo-secret" untuk codelab ini:
gcloud secrets create demo-secret \
    --replication-policy="automatic"

Anda akan dapat melihat secret yang dibuat di project Google Cloud Anda seperti yang ditunjukkan di bawah.

99a318dbdd37af4e.png

8. Menambahkan versi secret

  1. Di cloud shell, jalankan perintah berikut untuk menambahkan versi rahasia ke rahasia "demo-secret".
echo -n "This is my super secret data" | \
    gcloud secrets versions add demo-secret --data-file=-

Versi rahasia dibuat. Untuk melihat detailnya, klik "demo-secret" .

bbf6b9f2f9c4340a.png

  1. Klik tiga titik di sebelah kanan, lalu pilih Lihat Nilai Rahasia, rahasia yang disimpan akan ditampilkan.

6f3afd0ac25445bf.png

9. Membuat konfigurasi SDK di SAP

Setelah Anda menyiapkan prasyarat di sisi Google Cloud, kita dapat melanjutkan konfigurasi di sisi SAP. Untuk konfigurasi terkait autentikasi dan konektivitas, ABAP SDK untuk Google Cloud menggunakan tabel /GOOG/CLIENT_KEY.

Untuk mempertahankan konfigurasi di tabel /GOOG/CLIENT_KEY, lakukan langkah-langkah berikut:

  1. Di SAP GUI, masukkan kode transaksi SPRO.
  2. Klik IMG Referensi SAP.
  3. Klik ABAP SDK for Google Cloud > Basic Settings > Configure Client Key.
  4. Pertahankan nilai berikut untuk kolom:

Kolom

Deskripsi

Google Cloud Key Name

SECRET_MANAGER_DEMO

Nama Akun Layanan Google Cloud

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

Google Cloud Scope

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

ID Project Google Cloud

<<ID project Google Cloud Anda>>

Class Otorisasi

/GOOG/CL_AUTH_GOOGLE

Biarkan kolom lainnya kosong.

10. Mengambil rahasia menggunakan SDK

  1. Login ke sistem SAP Anda.
  2. Buka kode transaksi SE38 dan buat laporan dengan nama "ZDEMO_ACCESS_SECRET".
  3. Di jendela pop-up yang terbuka, berikan detail seperti yang ditunjukkan di bawah, lalu klik Simpan.

b1ef7c7744ceb5ce.png

  1. Di jendela pop-up berikutnya, pilih Local Object atau berikan nama paket yang sesuai.
  • Di ABAP Editor, tambahkan kode berikut:.
* 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. Simpan dan aktifkan program laporan.
  2. Jalankan laporan (tekan F8).

Jika berhasil dieksekusi, Anda akan melihat output laporan seperti yang ditunjukkan di bawah ini:

24acec0fc2d4d18b.png

11. Selamat

Selamat! Anda telah berhasil mengambil secret yang disimpan di Google Cloud Platform Secret Manager menggunakan ABAP SDK untuk Google Cloud.

Google Cloud Secret Manager juga memiliki fitur lain, seperti:

  • Membuat Patch Secret
  • Menghancurkan Versi Secret
  • Menghapus Secret

Anda dapat memanggil fitur Secret Manager ini melalui ABAP SDK untuk Google Cloud dari aplikasi SAP Anda.

12. Pembersihan

Jika Anda tidak ingin melanjutkan codelab tambahan yang terkait dengan ABAP SDK untuk Google Cloud, lanjutkan pembersihan.

Menghapus project

  • Hapus project Google Cloud:
gcloud projects delete abap-sdk-poc

Menghapus resource satu per satu

  1. Hapus instance komputasi:
gcloud compute instances delete abap-trial-docker
  1. Hapus aturan firewall:
gcloud compute firewall-rules delete sapmachine
  1. Hapus akun layanan:
gcloud iam service-accounts delete \
 abap-sdk-secretmanager-tester@abap-sdk-poc.iam.gserviceaccount.com