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 secret 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 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, hubungkan ke SAP menggunakan alamat IP eksternal VM sebagai IP Server Aplikasi. Jika menggunakan Mac, Anda juga dapat menginstal SAP GUI untuk Java yang tersedia di link ini.

3. Sebelum memulai

6757b2fb50ddcc2d.png

  • Jalankan perintah berikut untuk melakukan autentikasi untuk akun Anda dan menetapkan project default ke abap-sdk-poc. Zona us-west4-b digunakan sebagai contoh. Jika diperlukan, 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 adalah ringkasan singkat tentang beberapa entitas Pengelola Secret yang akan Anda gunakan dalam codelab ini:

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

5. Mengaktifkan Secret Manager di Project Google Cloud

  1. Buka Project Google Cloud Anda, lalu klik Aktifkan Cloud Shell di sudut 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.

6. Membuat 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 beserta peran yang telah ditetapkan.

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 seperti yang ditunjukkan di bawah.

99a318dbdd37af4e.png

8. Menambahkan versi secret

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

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

bbf6b9f2f9c4340a.png

  1. Klik tiga titik di sebelah kanan dan 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 terhadap 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 secret menggunakan SDK

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

b1ef7c7744ceb5ce.png

  1. Di 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:

  • Melakukan Patch pada Secret
  • Menghancurkan Versi Secret
  • Menghapus Secret

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

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