Google Cloud için ABAP SDK'sı ile Google Cloud Secret Manager'dan kimlik bilgilerini/gizli anahtarları alma

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

6757b2fb50ddcc2d.png

  • 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 olarak us-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

  1. Google Cloud projenize gidin ve sağ üst köşedeki Cloud Shell'i etkinleştir'i tıklayın.

8d15f753321c53e6.png

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

  1. 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"
  1. 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.

99a318dbdd37af4e.png

8. Gizli anahtar sürümü ekleme

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

bbf6b9f2f9c4340a.png

  1. Sağdaki üç noktayı tıklayın ve Gizli Değeri Görüntüle'yi seçin. Kayıtlı gizli değer gösterilir.

6f3afd0ac25445bf.png

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:

  1. SAP GUI'de SPRO işlem kodunu girin.
  2. SAP Reference IMG'yi (SAP Referans IMG) tıklayın.
  3. Google Cloud için ABAP SDK'sı > Temel Ayarlar > İstemci Anahtarını Yapılandır'ı tıklayın.
  4. 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

  1. SAP sisteminize giriş yapın.
  2. SE38 işlem koduna gidin ve "ZDEMO_ACCESS_SECRET" adlı bir rapor oluşturun.
  3. Açılan pop-up'ta aşağıdaki gibi ayrıntıları girin ve Kaydet'i tıklayın.

b1ef7c7744ceb5ce.png

  1. 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.
  1. Rapor programını kaydedip etkinleştirin.
  2. 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:

24acec0fc2d4d18b.png

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

  1. Compute örneğini silin:
gcloud compute instances delete abap-trial-docker
  1. Güvenlik duvarı kurallarını silin:
gcloud compute firewall-rules delete sapmachine
  1. Hizmet hesabını silin:
gcloud iam service-accounts delete \
 abap-sdk-secretmanager-tester@abap-sdk-poc.iam.gserviceaccount.com