1. Giriş
Bu kod laboratuvarında, Google Cloud için ABAP SDK'sını kullanarak Google Cloud Secret Manager API'den kimlik bilgilerini veya gizli bilgileri nasıl alacağınızla ilgili adımları listeledik.
Bu kod laboratuvarında aşağıdaki Google Cloud hizmetleri kullanılmaktadır:
- Secret Manager
- Cloud Shell
Ne oluşturacaksınız?
Aşağıdakileri yapacaksınız:
- Google Cloud projesinde Secret Manager API'yi etkinleştirin.
- Gizli anahtar oluşturun.
- Gizli anahtar sürümü ekleyin.
- Google Cloud için ABAP SDK'sını kullanarak bir gizliye erişme/gizliyi alma.
Bu kod laboratuvarında, gizli bir öğe oluşturma ve gizli öğe sürümü ekleme adımları gcloud komutları aracılığıyla gerçekleştirilir. Ancak bu işlem, Google Cloud için ABAP SDK'sı ile sağlanan Secret Manager istemci kitaplığı kullanılarak da yapılabilir.
2. Şartlar
- Chrome veya Firefox gibi bir tarayıcı.
- Faturalandırmanın etkin olduğu bir Google Cloud projesi veya Google Cloud Platform için 90 Günlük Ücretsiz Deneme hesabı oluşturun.
- Sisteminizde SAP GUI (Windows veya Java) yüklü olmalıdır. SAP GUI dizüstü bilgisayarınızda zaten yüklüyse uygulama sunucusu IP'si olarak sanal makinenin harici IP adresini kullanarak SAP'e bağlanın. Mac kullanıyorsanız bu bağlantıda bulunan Java için SAP GUI'yi de yükleyebilirsiniz.
3. Başlamadan önce
- Sisteminize Google Cloud için ABAP SDK'yı yüklemiş olmanız gerekir. Yeni bir sistem oluşturmak için Google Cloud Platform'a ABAP Platform 1909 Deneme Sürümü'nü ve ABAP SDK'sını Yükleme kod laboratuvarına göz atabilirsiniz.
- Google Cloud'da çalışan bir komut satırı ortamı olan Cloud Shell'i kullanacaksınız.
- Cloud Console'da, sağ üst köşedeki Cloud Shell'i Etkinleştir'i tıklayın:
- Hesabınızın kimliğini doğrulamak ve varsayılan projeyi
abap-sdk-poc
olarak ayarlamak için aşağıdaki komutları çalıştırın. Örnek olarakus-west4-b
bölgesi kullanılmıştır. Gerekirse lütfen aşağıdaki komutlardaki projeyi ve bölgeyi tercihinize göre değiştirin.
gcloud auth login
gcloud config set project abap-sdk-poc
gcloud config set compute/zone us-west4-b
4. Genel Bakış
Bu codelab'de kullanacağınız Secret Manager öğelerinden bazılarına kısaca göz atın:
- Gizli anahtar: Gizli anahtar, meta veri ve gizli anahtar sürümü koleksiyonu içeren proje genelindeki bir nesnedir.
- Gizli sürüm: Gizli sürüm, API anahtarları, şifreler veya sertifikalar gibi gerçek gizli verileri saklar.
5. Google Cloud projenizde Secret Manager'ı etkinleştirme
- Google Cloud projenize gidin ve sağ üst köşedeki Cloud Shell'i etkinleştir'i tıklayın.
- Google Cloud projenizde Cloud Secret Manager API'yi etkinleştirmek için aşağıdaki komutu yürütün.
gcloud services enable secretmanager.googleapis.com
Artık Google Cloud projenizde Secret Manager API'yi etkinleştirmiş olmanız gerekir.
6. Secret Manager kullanıcı rolleri içeren bir hizmet hesabı oluşturma
Gerekli rollere sahip bir hizmet hesabı oluşturmak için aşağıdaki adımları uygulayın:
- Cloud Shell terminalinde aşağıdaki komutu çalıştırın:
gcloud iam service-accounts create abap-sdk-secretmanager-tester \
--display-name="Service Account for Secret Manager"
- Gizli anahtar oluşturmak, gizli anahtar sürümü eklemek ve gizli anahtar sürümüne erişmek için önceki adımda oluşturulan hizmet hesabına gerekli rolleri ekleyin.
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'
Yukarıdaki komutlarda, Google Cloud projesi için yer tutucu olarak abap-sdk-poc
kullanılır. abap-sdk-poc
yerine proje kimliğinizi yazın.
- Rolün eklendiğini doğrulamak için IAM sayfasına gidin. Oluşturduğunuz hizmet hesabı, kendisine atanan rolle birlikte listelenir.
7. Gizli Anahtar oluştur
- Cloud Shell'de aşağıdaki komutu çalıştırarak bu kod laboratuvarı için "demo-secret" adlı bir gizli anahtar oluşturun:
gcloud secrets create demo-secret \
--replication-policy="automatic"
Google Cloud projenizde oluşturulan bir gizli anahtarı aşağıda gösterildiği gibi görebilirsiniz.
8. Gizli anahtar sürümü ekleme
- Cloud Shell'de, "demo-secret" gizlisine gizli sürüm eklemek için aşağıdaki komutu çalıştırın.
echo -n "This is my super secret data" | \
gcloud secrets versions add demo-secret --data-file=-
Gizli bir sürüm oluşturulur. Ayrıntıları görüntülemek için "demo-secret"i tıklayın.
- Sağdaki üç noktayı tıklayın ve Gizli Değeri Göster'i seçin. Kayıtlı gizli değer gösterilir.
9. SAP'te SDK yapılandırmaları oluşturma
Google Cloud tarafındaki ön koşulları ayarladığınıza göre SAP tarafında yapılandırma işlemine geçebiliriz. Google Cloud için ABAP SDK'sı, kimlik doğrulama ve bağlantıyla ilgili yapılandırma için /GOOG/CLIENT_KEY tablosunu kullanır.
/GOOG/CLIENT_KEY tablosundaki yapılandırmayı korumak için aşağıdaki adımları uygulayın:
- SAP GUI'ye SPRO işlem kodunu girin.
- SAP Reference IMG'yi (SAP Referans IMG'si) tıklayın.
- Google Cloud için ABAP SDK'sı > Temel Ayarlar > İstemci Anahtarını Yapılandır'ı tıklayın.
- Alanlarda aşağıdaki değerleri koruyun:
Alan | Açıklama |
Google Cloud Anahtar Adı | SECRET_MANAGER_DEMO |
Google Cloud Hizmet Hesabı Adı | abap-sdk-secretmanager-tester@abap-sdk-poc.iam.gserviceaccount.com |
Google Cloud Kapsamı | https://www.googleapis.com/auth/cloud-platform |
Google Cloud Proje Tanımlayıcısı | <<Google Cloud proje kimliğiniz>> |
Yetkilendirme Sınıfı | /GOOG/CL_AUTH_GOOGLE |
Diğer alanları boş bırakın.
10. SDK'yı kullanarak gizli anahtarı alma
- SAP sisteminize giriş yapın.
- SE38 işlem koduna gidin ve "ZDEMO_ACCESS_SECRET" adlı bir rapor oluşturun.
- Açılan pop-up'ta aşağıdaki gibi ayrıntıları sağlayın ve Kaydet'i tıklayın.
- Sonraki pop-up'ta Yerel Nesne'yi seçin veya uygun bir paket adı girin.
- ABAP Düzenleyici'ye aşağıdaki kodu ekleyin:
* 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.
- Rapor programını kaydedip etkinleştirin.
- Raporu çalıştırın (F8 tuşuna basın).
Başarılı bir yürütme işleminde, rapor çıkışını aşağıdaki gibi görürsünüz:
11. Tebrikler
Tebrikler! Google Cloud için ABAP SDK'sını kullanarak Google Cloud Platform Secret Manager'da depolanan bir gizli bilgiyi başarıyla aldınız.
Google Cloud Secret Manager'ın diğer özellikleri şunlardır:
- Gizli Anahtarı Yamalama
- Gizli Anahtar Sürümünü Kaldırma
- Gizli anahtarı silme
Bu Secret Manager özelliklerini, SAP uygulamalarınızdan Google Cloud için ABAP SDK'sı üzerinden çağırabilirsiniz.
12. Temizleme
Google Cloud için ABAP SDK'sıyla ilgili ek kod laboratuvarlarına devam etmek istemiyorsanız lütfen temizleme işlemine devam edin.
Projeyi silme
- Google Cloud projesini silin:
gcloud projects delete abap-sdk-poc
Kaynakları tek tek silme
- Hesaplama örneğini silin:
gcloud compute instances delete abap-trial-docker
- Güvenlik duvarı kurallarını silin:
gcloud compute firewall-rules delete sapmachine
- Hizmet hesabını silin:
gcloud iam service-accounts delete \
abap-sdk-secretmanager-tester@abap-sdk-poc.iam.gserviceaccount.com