1. Giriş
Bu codelab'de, Google Cloud için ABAP SDK'sını kullanarak Google Cloud Secret Manager API'den kimlik bilgilerini veya sırları alma adımları listelenmiştir.
Bu codelab'de aşağıdaki Google Cloud hizmetleri kullanılmaktadır:
- Secret Manager
- Cloud Shell
Ne oluşturacaksınız?
Şunları 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'yı kullanarak bir sırra erişme/sırrı alma.
Bu codelab'de, gizli anahtar oluşturma ve gizli anahtar sürümü ekleme adımları gcloud komutları aracılığıyla gerçekleştirilir. Ancak bu işlemler, Google Cloud için ABAP SDK ile birlikte 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 yüklü SAP GUI (Windows veya Java) SAP GUI dizüstü bilgisayarınıza zaten yüklüyse Uygulama Sunucusu IP'si olarak VM'nin harici IP adresini kullanarak SAP'ye 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 Install ABAP Platform Trial 1909 on Google Cloud Platform and Install ABAP SDK (Google Cloud Platform'da ABAP Platform Trial 1909'u ve ABAP SDK'yı Yükleme) adlı codelab'e başvurabilirsiniz.
- 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 komutlarda 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'ın bazı öğelerine ilişkin kısa bir genel bakışı aşağıda bulabilirsiniz:
- Gizli anahtar: Gizli anahtar, meta veriler ve gizli anahtar sürümlerinden oluşan bir koleksiyon içeren, projeye özel bir nesnedir.
- Gizli anahtar sürümü: Gizli anahtar sürümü, API anahtarları, şifreler veya sertifikalar gibi gerçek gizli anahtar verilerini depolar.
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 çalıştırın.
gcloud services enable secretmanager.googleapis.com
Artık Google Cloud projenizde Secret Manager API etkinleştirilmiş olmalıdır.
6. Secret Manager kullanıcı rolleri içeren bir hizmet hesabı oluşturma
Gerekli rollerle 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 atanmış rolle birlikte listelenmelidir.
7. Gizli Anahtar oluştur
- Cloud Shell'de, bu codelab için "demo-secret" adlı bir gizli dizi oluşturmak üzere aşağıdaki komutu çalıştırın:
gcloud secrets create demo-secret \
--replication-policy="automatic"
Google Cloud projenizde oluşturulan bir gizli diziyi aşağıda gösterildiği gibi görebilirsiniz.
8. Gizli anahtar sürümü ekleme
- Cloud Shell'de, "demo-secret" adlı gizli öğeye gizli öğe 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 anahtar sürümü oluşturulur. Ayrıntıları görüntülemek için "demo-secret"ı tıklayın.
- Sağdaki üç noktayı tıklayın ve Gizli Değeri Görüntüle'yi seçin. Kayıtlı gizli değer gösterilir.
9. SAP'de SDK yapılandırmaları oluşturma
Google Cloud tarafında ön koşulları ayarladığınıza göre, SAP tarafındaki yapılandırmaya geçebiliriz. Google Cloud için ABAP SDK, 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'de SPRO işlem kodunu girin.
- SAP Reference IMG'yi (SAP Referans IMG) tıklayın.
- Google Cloud için ABAP SDK'sı > Temel Ayarlar > İstemci Anahtarını Yapılandır'ı tıklayın.
- Alanlara göre 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ı girin ve Kaydet'i tıklayın.
- Sonraki pop-up pencerede 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ütmenin ardından rapor çıkışını aşağıdaki gibi görmeniz gerekir:
11. Tebrikler
Tebrikler! Google Cloud için ABAP SDK'yı kullanarak Google Cloud Platform Secret Manager'da depolanan bir sırrı başarıyla aldınız.
Google Cloud Secret Manager'da aşağıdakiler gibi başka özellikler de bulunur:
- Gizli anahtarı düzeltme
- 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ı aracılığıyla çağırabilirsiniz.
12. Temizleme
Google Cloud için ABAP SDK ile ilgili ek codelab'lere devam etmek istemiyorsanız lütfen temizleme işlemine geçin.
Projeyi silme
- Google Cloud projesini silin:
gcloud projects delete abap-sdk-poc
Belirli kaynakları silme
- Compute ö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