Truy xuất thông tin xác thực/bí mật từ Trình quản lý bí mật của Google Cloud bằng SDK ABAP cho Google Cloud

1. Giới thiệu

Trong lớp học lập trình này, chúng tôi đã liệt kê các bước về cách truy xuất thông tin xác thực hoặc thông tin bảo mật từ API Trình quản lý bí mật của Google Cloud bằng SDK ABAP cho Google Cloud.

Các dịch vụ sau đây của Google Cloud được sử dụng trong lớp học lập trình này:

  • Secret Manager
  • Cloud Shell

Sản phẩm bạn sẽ tạo ra

Bạn sẽ thực hiện những việc sau:

  • Bật API Trình quản lý bí mật trong một dự án Google Cloud.
  • Tạo một khoá bí mật.
  • Thêm phiên bản bí mật.
  • Truy cập/Truy xuất khoá bí mật bằng SDK ABAP cho Google Cloud.

Trong lớp học lập trình này, các bước tạo khoá bí mật và thêm phiên bản khoá bí mật sẽ được thực hiện thông qua các lệnh gcloud, nhưng bạn cũng có thể thực hiện việc này bằng cách sử dụng thư viện ứng dụng cho Trình quản lý khoá bí mật được cung cấp cùng với SDK ABAP cho Google Cloud.

2. Yêu cầu

  • Một trình duyệt, chẳng hạn như Chrome hoặc Firefox.
  • Một dự án Google Cloud đã bật tính năng thanh toán hoặc Tạo tài khoản dùng thử miễn phí 90 ngày cho Google Cloud Platform.
  • SAP GUI (Windows hoặc Java) đã được cài đặt trong hệ thống của bạn. Nếu bạn đã cài đặt SAP GUI trên máy tính xách tay, hãy kết nối với SAP bằng địa chỉ IP bên ngoài của máy ảo làm địa chỉ IP của Máy chủ ứng dụng. Nếu đang dùng máy Mac, bạn cũng có thể cài đặt SAP GUI cho Java có trong đường liên kết này.

3. Trước khi bắt đầu

6757b2fb50ddcc2d.png

  • Chạy các lệnh sau để xác thực cho tài khoản của bạn và đặt dự án mặc định thành abap-sdk-poc. Ví dụ: vùng us-west4-b. Nếu cần, vui lòng thay đổi dự án và vùng trong các lệnh sau đây theo lựa chọn ưu tiên của bạn.
gcloud auth login
gcloud config set project abap-sdk-poc
gcloud config set compute/zone us-west4-b

4. Tổng quan

Dưới đây là thông tin tổng quan ngắn gọn về một số thực thể của Trình quản lý bí mật mà bạn sẽ làm việc trong lớp học lập trình này:

  • Bí mật – Bí mật là một đối tượng toàn dự án chứa một tập hợp siêu dữ liệu và các phiên bản bí mật.
  • Phiên bản bí mật – Phiên bản bí mật lưu trữ dữ liệu bí mật thực tế, chẳng hạn như khoá API, mật khẩu hoặc chứng chỉ.

5. Bật Trình quản lý bí mật trong dự án Google Cloud

  1. Chuyển đến Dự án Google Cloud rồi nhấp vào Kích hoạt Cloud Shell ở góc trên cùng bên phải.

8d15f753321c53e6.png

  1. Thực thi lệnh sau để bật API Trình quản lý bí mật trên đám mây trong Dự án Google Cloud của bạn.
gcloud services enable secretmanager.googleapis.com

Bây giờ, bạn đã bật API Trình quản lý bí mật trong Dự án Google Cloud.

6. Tạo Tài khoản dịch vụ có vai trò người dùng trong Trình quản lý bí mật

Để tạo tài khoản dịch vụ có các vai trò bắt buộc, hãy thực hiện các bước sau:

  1. Chạy lệnh sau trong dòng lệnh Cloud Shell:
gcloud iam service-accounts create abap-sdk-secretmanager-tester \
--display-name="Service Account for Secret Manager"
  1. Thêm các vai trò bắt buộc vào tài khoản dịch vụ được tạo ở bước trước để tạo khoá bí mật, thêm phiên bản khoá bí mật và truy cập vào phiên bản khoá bí mật.
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'

Các lệnh trên sử dụng abap-sdk-poc làm phần giữ chỗ cho Dự án Google Cloud. Thay thế abap-sdk-poc bằng mã dự án của bạn.

  • Để xác minh vai trò đã được thêm, hãy chuyển đến trang IAM. Tài khoản dịch vụ mà bạn đã tạo sẽ xuất hiện cùng với vai trò đã được chỉ định cho tài khoản đó.

7. Tạo khoá bí mật

  • Trong màn hình shell trên đám mây, hãy chạy lệnh sau để tạo một khoá bí mật có tên "demo-secret" cho lớp học lập trình này:
gcloud secrets create demo-secret \
    --replication-policy="automatic"

Bạn sẽ thấy một khoá bí mật được tạo trong dự án Google Cloud như minh hoạ dưới đây.

99a318dbdd37af4e.png

8. Thêm phiên bản bí mật

  1. Trong màn hình shell trên đám mây, hãy chạy lệnh sau để thêm phiên bản bí mật vào "demo-secret" bí mật.
echo -n "This is my super secret data" | \
    gcloud secrets versions add demo-secret --data-file=-

Một phiên bản bí mật sẽ được tạo. Để xem thông tin chi tiết, hãy nhấp vào "demo-secret" .

bbf6b9f2f9c4340a.png

  1. Nhấp vào biểu tượng ba dấu chấm ở bên phải rồi chọn Xem giá trị bí mật, giá trị bí mật đã lưu trữ sẽ xuất hiện.

6f3afd0ac25445bf.png

9. Tạo cấu hình SDK trong SAP

Giờ đây, khi bạn đã thiết lập các điều kiện tiên quyết ở phía Google Cloud, chúng ta có thể tiếp tục với cấu hình ở phía SAP. Đối với cấu hình liên quan đến việc xác thực và kết nối, SDK ABAP cho Google Cloud sử dụng bảng /GOOG/CLIENT_KEY.

Để duy trì cấu hình trong bảng /GOOG/CLIENT_KEY, hãy thực hiện các bước sau:

  1. Trong SAP GUI, hãy nhập mã giao dịch SPRO.
  2. Nhấp vào SAP Reference IMG (Hình ảnh tham chiếu SAP).
  3. Nhấp vào ABAP SDK for Google Cloud (SDK ABAP cho Google Cloud) > Basic Settings (Cài đặt cơ bản) > Configure Client Key (Định cấu hình khoá ứng dụng).
  4. Duy trì các giá trị sau đây cho các trường:

Trường

Mô tả

Tên khoá Google Cloud

SECRET_MANAGER_DEMO

Tên tài khoản dịch vụ Google Cloud

abap-sdk-secretmanager-tester@abap-sdk-poc.iam.gserviceaccount.com

Phạm vi Google Cloud

https://www.googleapis.com/auth/cloud-platform

Giá trị nhận dạng dự án trên Google Cloud

<<Mã dự án Google Cloud của bạn>>

Lớp uỷ quyền

/GOOG/CL_AUTH_GOOGLE

Để trống các trường khác.

10. Truy xuất thông tin bí mật bằng SDK

  1. Đăng nhập vào hệ thống SAP.
  2. Chuyển đến mã giao dịch SE38 rồi tạo một báo cáo có tên "ZDEMO_ACCESS_SECRET".
  3. Trong cửa sổ bật lên, hãy cung cấp thông tin chi tiết như bên dưới rồi nhấp vào Lưu.

b1ef7c7744ceb5ce.png

  1. Trong cửa sổ bật lên tiếp theo, hãy chọn Local Object (Đối tượng cục bộ) hoặc cung cấp tên gói phù hợp.
  • Trong Trình soạn thảo ABAP, hãy thêm mã sau:.
* 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. Lưu và kích hoạt chương trình báo cáo.
  2. Thực thi báo cáo (nhấn phím F8).

Khi thực thi thành công, bạn sẽ thấy kết quả báo cáo như dưới đây:

24acec0fc2d4d18b.png

11. Xin chúc mừng

Xin chúc mừng! Bạn đã truy xuất thành công một khoá bí mật được lưu trữ trong Trình quản lý khoá bí mật của Google Cloud Platform bằng SDK ABAP cho Google Cloud.

Trình quản lý bí mật của Google Cloud cũng có các tính năng khác, chẳng hạn như:

  • Vá một khoá bí mật
  • Huỷ phiên bản bí mật
  • Xoá khoá bí mật

Bạn có thể gọi các tính năng của Trình quản lý bí mật này thông qua SDK ABAP cho Google Cloud từ các ứng dụng SAP.

12. Dọn dẹp

Nếu bạn không muốn tiếp tục các lớp học lập trình bổ sung liên quan đến SDK ABAP cho Google Cloud, vui lòng tiến hành dọn dẹp.

Xoá dự án

  • Xoá dự án trên Google Cloud:
gcloud projects delete abap-sdk-poc

Xoá từng tài nguyên

  1. Xoá thực thể máy tính:
gcloud compute instances delete abap-trial-docker
  1. Xoá firewall-rules:
gcloud compute firewall-rules delete sapmachine
  1. Xoá tài khoản dịch vụ:
gcloud iam service-accounts delete \
 abap-sdk-secretmanager-tester@abap-sdk-poc.iam.gserviceaccount.com