1. 소개
이 Codelab에서는 ABAP SDK for Google Cloud를 사용하여 Google Cloud Secret Manager API에서 사용자 인증 정보 또는 비밀을 검색하는 방법을 설명합니다.
이 Codelab에서는 다음 Google Cloud 서비스를 사용합니다.
- Secret Manager
- Cloud Shell
빌드할 항목
다음을 실행합니다.
- Google Cloud 프로젝트에서 Secret Manager API 사용 설정
- 보안 비밀을 만듭니다.
- 보안 비밀 버전을 추가합니다.
- ABAP SDK for Google Cloud를 사용하여 비밀에 액세스/비밀을 검색합니다.
이 Codelab에서는 보안 비밀을 만들고 보안 비밀 버전을 추가하는 단계를 gcloud 명령어를 통해 수행하지만, Google Cloud용 ABAP SDK와 함께 제공되는 Secret Manager용 클라이언트 라이브러리를 사용하여 수행할 수도 있습니다.
2. 요구사항
- 브라우저(Chrome, Firefox 등)
- 결제가 사용 설정된 Google Cloud 프로젝트 또는 Google Cloud Platform용 90일 무료 체험판 계정 만들기
- 시스템에 설치된 SAP GUI (Windows 또는 Java) 노트북에 SAP GUI가 이미 설치되어 있는 경우 VM 외부 IP 주소를 애플리케이션 서버 IP로 사용하여 SAP에 연결합니다. Mac을 사용하는 경우 이 링크에서 Java용 SAP GUI를 설치할 수도 있습니다.
3. 시작하기 전에
- 시스템에 ABAP SDK for Google Cloud를 설치했습니다. Codelab - Google Cloud Platform에 ABAP Platform Trial 1909 설치 및 ABAP SDK 설치를 참고하여 새 시스템을 설정할 수 있습니다.
- Google Cloud에서 실행되는 명령줄 환경인 Cloud Shell을 사용합니다.
- Cloud 콘솔에서 오른쪽 상단에 있는 Cloud Shell 활성화를 클릭합니다.
- 다음 명령어를 실행하여 계정을 인증하고 기본 프로젝트를
abap-sdk-poc
로 설정합니다. 영역us-west4-b
를 예로 들 수 있습니다. 필요한 경우 다음 명령어에서 프로젝트와 영역을 원하는 대로 변경하세요.
gcloud auth login
gcloud config set project abap-sdk-poc
gcloud config set compute/zone us-west4-b
4. 개요
다음은 이 Codelab에서 다룰 Secret Manager의 일부 항목에 대한 간단한 개요입니다.
5. Google Cloud 프로젝트에서 Secret Manager 사용 설정
- Google Cloud 프로젝트로 이동하여 오른쪽 상단에서 Cloud Shell 활성화를 클릭합니다.
- 다음 명령어를 실행하여 Google Cloud 프로젝트에서 Cloud Secret Manager API를 사용 설정합니다.
gcloud services enable secretmanager.googleapis.com
이제 Google Cloud 프로젝트에서 Secret Manager API가 사용 설정되어 있어야 합니다.
6. Secret Manager 사용자 역할이 있는 서비스 계정 만들기
필요한 역할이 있는 서비스 계정을 만들려면 다음 단계를 따르세요.
- Cloud Shell 터미널에서 다음 명령어를 실행합니다.
gcloud iam service-accounts create abap-sdk-secretmanager-tester \
--display-name="Service Account for Secret Manager"
- 이전 단계에서 만든 서비스 계정에 필요한 역할을 추가하여 보안 비밀을 만들고, 보안 비밀 버전을 추가하고, 보안 비밀 버전에 액세스합니다.
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'
위 명령어는 abap-sdk-poc
를 Google Cloud 프로젝트의 자리표시자로 사용합니다. abap-sdk-poc
를 프로젝트 ID로 바꿉니다.
- 역할이 추가되었는지 확인하려면 IAM 페이지로 이동합니다. 만든 서비스 계정이 할당된 역할과 함께 표시됩니다.
7. 보안 비밀 만들기
- Cloud Shell에서 다음 명령어를 실행하여 이 Codelab의 'demo-secret'이라는 이름의 비밀을 만듭니다.
gcloud secrets create demo-secret \
--replication-policy="automatic"
아래와 같이 Google Cloud 프로젝트에 생성된 보안 비밀을 볼 수 있습니다.
8. 보안 비밀 버전 추가
- Cloud Shell에서 다음 명령어를 실행하여 'demo-secret' 보안 비밀에 보안 비밀 버전을 추가합니다.
echo -n "This is my super secret data" | \
gcloud secrets versions add demo-secret --data-file=-
보안 비밀 버전이 생성됩니다. 세부정보를 보려면 'demo-secret'를 클릭합니다.
- 오른쪽에 있는 점 3개를 클릭하고 보안 비밀 값 보기를 선택하면 저장된 보안 비밀이 표시됩니다.
9. SAP에서 SDK 구성 만들기
이제 Google Cloud 측에서 기본 요건을 설정했으므로 SAP 측에서 구성을 진행할 수 있습니다. 인증 및 연결 관련 구성을 위해 ABAP SDK for Google Cloud는 /GOOG/CLIENT_KEY 테이블을 사용합니다.
/GOOG/CLIENT_KEY 테이블의 구성을 유지하려면 다음 단계를 따르세요.
- SAP GUI에서 트랜잭션 코드 SPRO를 입력합니다.
- SAP 참조 IMG를 클릭합니다.
- ABAP SDK for Google Cloud > 기본 설정 > 클라이언트 키 구성을 클릭합니다.
- 필드에 다음 값을 유지합니다.
필드 | 설명 |
Google Cloud 키 이름 | SECRET_MANAGER_DEMO |
Google Cloud 서비스 계정 이름 | abap-sdk-secretmanager-tester@abap-sdk-poc.iam.gserviceaccount.com |
Google Cloud 범위 | https://www.googleapis.com/auth/cloud-platform |
Google Cloud 프로젝트 식별자 | <<Google Cloud 프로젝트 ID>> |
승인 클래스 | /GOOG/CL_AUTH_GOOGLE |
다른 입력란은 비워 둡니다.
10. SDK를 사용하여 보안 비밀 검색
- SAP 시스템에 로그인합니다.
- 트랜잭션 코드 SE38으로 이동하여 'ZDEMO_ACCESS_SECRET'이라는 이름의 보고서를 만듭니다.
- 열리는 팝업에서 아래와 같이 세부정보를 입력하고 저장을 클릭합니다.
- 다음 팝업에서 로컬 객체를 선택하거나 적절하게 패키지 이름을 입력합니다.
- ABAP 편집기에서 다음 코드를 추가합니다.
* 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.
- 보고서 프로그램을 저장하고 활성화합니다.
- 보고서를 실행합니다 (F8 누르기).
실행에 성공하면 아래와 같이 보고서 출력이 표시됩니다.
11. 마무리
축하합니다. ABAP SDK for Google Cloud를 사용하여 Google Cloud Platform Secret Manager에 저장된 비밀을 가져왔습니다.
Google Cloud Secret Manager에는 다음과 같은 다른 기능도 있습니다.
- 보안 비밀 패치
- 보안 비밀 버전 폐기
- 보안 비밀 삭제
SAP 애플리케이션에서 ABAP SDK for Google Cloud를 통해 이러한 Secret Manager 기능을 호출할 수 있습니다.
12. 삭제
ABAP SDK for Google Cloud와 관련된 추가 Codelab을 계속 진행하고 싶지 않다면 정리를 진행하세요.
프로젝트 삭제
- Google Cloud 프로젝트를 삭제합니다.
gcloud projects delete abap-sdk-poc
개별 리소스 삭제
- 컴퓨팅 인스턴스를 삭제합니다.
gcloud compute instances delete abap-trial-docker
- 방화벽 규칙을 삭제합니다.
gcloud compute firewall-rules delete sapmachine
- 서비스 계정을 삭제합니다.
gcloud iam service-accounts delete \
abap-sdk-secretmanager-tester@abap-sdk-poc.iam.gserviceaccount.com