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
- Anda telah menginstal ABAP SDK untuk Google Cloud di sistem Anda. Anda dapat melihat codelab - Menginstal Uji Coba Platform ABAP 1909 di Google Cloud Platform dan Menginstal ABAP SDK untuk menyiapkan sistem baru.
- Anda akan menggunakan Cloud Shell, lingkungan command line yang berjalan di Google Cloud.
- Dari Cloud Console, klik Activate Cloud Shell di pojok kanan atas:
- Jalankan perintah berikut untuk melakukan autentikasi untuk akun Anda dan menetapkan project default ke
abap-sdk-poc
. Zonaus-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
- Buka Project Google Cloud Anda, lalu klik Aktifkan Cloud Shell di sudut kanan atas.
- 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:
- Jalankan perintah berikut di terminal Cloud Shell:
gcloud iam service-accounts create abap-sdk-secretmanager-tester \
--display-name="Service Account for Secret Manager"
- 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.
8. Menambahkan versi secret
- 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" .
- Klik tiga titik di sebelah kanan dan pilih Lihat Nilai Rahasia, rahasia yang disimpan akan ditampilkan.
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:
- Di SAP GUI, masukkan kode transaksi SPRO.
- Klik IMG Referensi SAP.
- Klik ABAP SDK for Google Cloud > Basic Settings > Configure Client Key.
- 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
- Login ke sistem SAP Anda.
- Buka kode transaksi SE38 dan buat laporan dengan nama "ZDEMO_ACCESS_SECRET".
- Di pop-up yang terbuka, berikan detail seperti yang ditunjukkan di bawah, lalu klik Simpan.
- 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.
- Simpan dan aktifkan program laporan.
- Jalankan laporan (tekan F8).
Jika berhasil dieksekusi, Anda akan melihat output laporan seperti yang ditunjukkan di bawah ini:
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
- Hapus instance komputasi:
gcloud compute instances delete abap-trial-docker
- Hapus aturan firewall:
gcloud compute firewall-rules delete sapmachine
- Hapus akun layanan:
gcloud iam service-accounts delete \
abap-sdk-secretmanager-tester@abap-sdk-poc.iam.gserviceaccount.com