이 문서에서는 워크로드 아이덴티티 제휴를 통해 토큰을 사용하여 Google Cloud에 인증하는 방법을 설명합니다. 워크로드 아이덴티티 제휴를 사용하면 서비스 계정 키를 사용하지 않고 온프레미스 또는 멀티 클라우드 SAP 워크로드에 Google Cloud리소스에 대한 액세스 권한을 부여할 수 있습니다.
워크로드 아이덴티티 제휴는 OAuth 2.0 토큰 교환 사양을 따릅니다. IdP의 사용자 인증 정보를 보안 토큰 서비스에 제공하면, 보안 토큰 서비스는 사용자 인증 정보에서 ID를 확인한 후에 대가로 제휴 액세스 토큰을 반환합니다. 이 제휴 액세스 토큰을 지원되는 서비스에서 직접 사용하거나 서비스 계정을 가장하고 단기 액세스 토큰을 가져오는 데 사용할 수 있습니다. 단기 액세스 토큰을 사용하면 서비스 계정이 액세스할 수 있는 모든 Google Cloud API를 호출할 수 있습니다.
워크로드 아이덴티티 제휴는 메타데이터 서버 또는 외부 ID 공급업체 (IdP)와 함께 사용할 수 있습니다.
VM 메타데이터를 사용한 워크로드 ID 제휴
SAP 시스템이 Google Cloud 에서 호스팅되지만 SAP에서 관리하는 경우 워크로드 아이덴티티 제휴를 사용하여 SAP 시스템에서 다른Google Cloud 프로젝트의 리소스에 안전하게 액세스할 수 있습니다. 워크로드 아이덴티티 제휴를 사용하면 SAP 시스템이 VM 메타데이터를 사용하여 다른 Google Cloud 프로젝트에 인증할 수 있습니다. 이렇게 하면 서비스 계정 키를 관리할 필요가 없어 보안이 강화되고 인증이 간소화됩니다.
간단한 구성 단계는 다음과 같습니다.
- Google Cloud에서 워크로드 아이덴티티 제휴를 구성합니다.
- Google Cloud에서 서비스 계정을 만듭니다.
- Google Cloud에서 서비스 계정에 워크로드 아이덴티티 제휴 풀에 대한 액세스 권한을 부여합니다.
- ABAP SDK for Google Cloud에서 클라이언트 키를 구성합니다.
워크로드 아이덴티티 제휴 구성
워크로드 아이덴티티 제휴를 구성하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 다음 IAM 역할을 부여해 달라고 요청합니다.
역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.
워크로드 아이덴티티 제휴를 구성하려면 다음 단계를 수행합니다.
Google Cloud 콘솔에서 새 워크로드 공급업체 및 풀 페이지로 이동합니다.
ID 풀 만들기 섹션에서 다음 필드의 값을 입력합니다.
- 이름: 풀의 이름입니다. 이 이름은 풀 ID로도 사용됩니다. 풀 ID는 나중에 변경할 수 없습니다.
- 설명: 풀의 목적을 설명하는 텍스트입니다.
계속을 클릭합니다.
풀에 공급업체 추가에서 메타데이터 서버를 공급업체로 추가합니다.
- 공급업체 선택 필드에서 OpenID Connect(OIDC)를 선택합니다.
다음 공급업체 세부정보를 입력합니다.
- 공급업체 이름: 공급업체의 이름을 입력합니다.
- Issuer(URL)(발급자(URL)): 메타데이터 서버 토큰 URL
https://accounts.google.com
을 입력합니다. - 대상: 허용된 대상을 선택하고 액세스해야 하는 Google Cloud 프로젝트의 Google Cloud 프로젝트 번호를 입력합니다. 프로젝트 번호를 가져오는 방법에 관한 자세한 내용은 Google 메타데이터 서버 인스턴스의 세부정보 수집을 참고하세요.
계속을 클릭합니다.
공급업체 속성 구성에서 다음을 실행합니다.
- Google 1 필드에서 값이
google.subject
인지 확인합니다. - OIDC 1 필드에
assertion.sub
을 입력합니다.
- Google 1 필드에서 값이
저장을 클릭합니다.
다음을 기록해 둡니다.
- 풀 ID
- 제공업체 ID
클라이언트 키를 구성할 때 이러한 ID가 필요합니다.
Google 메타데이터 서버 인스턴스의 세부정보 수집
워크로드 아이덴티티 제휴를 구성하는 데 필요한 Google 메타데이터 서버 인스턴스 세부정보를 가져오려면 다음 단계를 따르세요.
-
SAP GUI에서 트랜잭션 코드
/GOOG/SDK_IMG
를 실행합니다.또는 트랜잭션 코드
SPRO
를 실행한 후 SAP 참조 IMG를 클릭합니다. - ABAP SDK for Google Cloud > 유틸리티 > Google 메타데이터 서버 인스턴스의 특정 메타데이터 값 가져오기를 클릭합니다.
- 적절한 옵션을 선택합니다.
- 숫자 프로젝트 ID
- 기본 서비스 계정 이메일
- 실행을 클릭하여 세부정보를 확인합니다.
- 세부정보를 기록해 둡니다. Google Cloud 콘솔에서 워크로드 ID 제휴를 구성할 때 필요합니다.
서비스 계정 만들기
Google Cloud 콘솔에서 IAM 서비스 계정을 만듭니다. 이 서비스 계정은 SDK를 사용할 예정인Google Cloud API가 포함된 Google Cloud 프로젝트의 주 구성원이어야 합니다.
Google Cloud 콘솔에서 서비스 계정을 만들려는 프로젝트를 선택합니다.
Google Cloud API가 포함된 동일한 프로젝트에서 서비스 계정을 만들면 서비스 계정이 자동으로 프로젝트에 주 구성원으로 추가됩니다.
Google Cloud API가 사용 설정된 프로젝트 이외의 다른 프로젝트에 서비스 계정을 만드는 경우 추가 단계에서 서비스 계정을 해당 프로젝트에 추가해야 합니다. 자세한 내용은 Google Cloud 프로젝트에 서비스 계정 추가를 참고하세요.
API에 액세스하도록 인증 및 승인을 위한 서비스 계정을 만듭니다. Google Cloud
서비스 계정을 만드는 방법에 대한 자세한 내용은 서비스 계정 만들기를 참조하세요.
Google Cloud 콘솔에서 API 기능에 액세스하는 데 필요한 IAM 역할을 서비스 계정에 부여합니다. Google Cloud API의 역할 요구사항을 이해하려면 개별 API 문서를 참고하고 최소 권한 원칙을 따르세요. API별 사전 정의된 역할에 대한 자세한 내용은 IAM 기본 및 사전 정의된 역할 참조를 확인하세요.
SDK를 사용할 예정인 Google Cloud API가 포함된 프로젝트가 아닌 다른 프로젝트에 서비스 계정을 만든 경우 이 서비스 계정의 이름을 기록해 둡니다. 해당 프로젝트에 서비스 계정을 추가할 때 이 이름을 지정합니다.
Google Cloud 프로젝트에 서비스 계정 추가
SDK를 사용할 예정인 Google Cloud API가 포함된 프로젝트가 아닌 다른 프로젝트에서 ABAP SDK for Google Cloud의 서비스 계정을 만든 경우 Google Cloud API가 포함된 Google Cloud 프로젝트로 서비스 계정을 추가해야 합니다.
Google Cloud API가 포함된 동일한 프로젝트에서 서비스 계정을 만든 경우 이 단계를 건너뛸 수 있습니다.
Google Cloud API가 포함된 Google Cloud 프로젝트에 기존 서비스 계정을 추가하려면 다음 단계를 따르세요.
Google Cloud 콘솔에서 IAM 권한 페이지로 이동합니다.
대상Google Cloud API가 포함된 프로젝트의 이름이 페이지 상단 근처에 표시되는지 확인합니다. 예를 들면 다음과 같습니다.
'
PROJECT_NAME
' 프로젝트의 권한표시되지 않은 경우 프로젝트를 전환합니다.
IAM 권한 페이지에서
액세스 권한 부여를 클릭합니다.표시된 '
PROJECT_NAME
'에 액세스 권한 부여 대화상자에서 다음 단계를 수행합니다.- 새 주 구성원 필드에서 서비스 계정의 이름을 지정합니다.
역할 선택 필드에 관련 역할을 지정합니다. 예를 들어 Pub/Sub의 경우 주제 및 구독을 수정하고 메시지를 게시하고 사용할 수 있는 액세스 권한을 부여하려면 Pub/Sub 편집자(
roles/pubsub.editor
) 역할을 지정하면 됩니다.API별 사전 정의된 역할에 대한 자세한 내용은 IAM 기본 및 사전 정의된 역할 참조를 확인하세요.
API 사용에 필요한 추가 역할을 추가합니다. 최소 권한 원칙을 구현하는 것이 좋습니다.
저장을 클릭합니다. IAM 페이지의 프로젝트 주 구성원 목록에 서비스 계정이 표시됩니다.
이제 서비스 계정을 사용하여 이 프로젝트의 Google Cloud API에 액세스할 수 있습니다.
서비스 계정에 워크로드 아이덴티티 제휴 풀에 대한 액세스 권한 부여
제휴 워크로드에서 서비스 계정을 가장하려면 서비스 계정에 대한 워크로드 아이덴티티 사용자(roles/iam.workloadIdentityUser
) 권한을 부여합니다. 역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.
서비스 계정에 워크로드 ID 제휴 풀에 대한 액세스 권한을 부여하려면 다음을 실행합니다.
Google Cloud 콘솔에서 워크로드 아이덴티티 풀 페이지로 이동합니다.
워크로드 아이덴티티 제휴 구성 섹션에서 만든 워크로드 아이덴티티 풀을 선택합니다.
워크로드 아이덴티티 풀에 액세스 권한을 부여하려면
액세스 권한 부여를 클릭합니다.서비스 계정 목록에서 Google Cloud API에 액세스할 수 있는 서비스 계정을 선택합니다. 여러 서비스 계정을 사용하는 경우 모두 여기에 추가합니다.
속성 이름 필드에서 제목을 선택합니다.
속성 값 필드에 메타데이터 서버에서 가져온 서비스 계정 이메일 주소를 따옴표로 묶어 입력합니다. 예를 들면
"svc-acct-compute@example-project-123456.iam.gserviceaccount.com"
입니다.메타데이터 서버에서 서비스 계정 이메일 주소를 가져오는 방법에 관한 자세한 내용은 Google 메타데이터 서버 인스턴스의 세부정보 수집을 참고하세요.
표시된 애플리케이션 구성 대화상자에서 닫기를 클릭합니다.
클라이언트 키 구성
-
SAP GUI에서 트랜잭션 코드
/GOOG/SDK_IMG
를 실행합니다.또는 트랜잭션 코드
SPRO
를 실행한 후 SAP 참조 IMG를 클릭합니다. - ABAP SDK for Google Cloud > 기본 설정 > 클라이언트 키 구성을 클릭합니다.
- 새 항목을 클릭합니다.
다음 필드에 값을 입력합니다.
필드 설명 Google Cloud 키 이름 클라이언트 키 구성의 이름을 지정합니다. Google Cloud 서비스 계정 이름 서비스 계정 만들기 단계에서 Google Cloud API에 액세스하도록 만든 서비스 계정의 이름을 이메일 주소 형식으로 지정합니다. 예를 들면 sap-example-svc-acct@example-project-123456.iam.gserviceaccount.com
입니다.Google Cloud 범위 API 액세스 범위( https://www.googleapis.com/auth/cloud-platform
)를 지정합니다.Google Cloud 프로젝트 식별자 워크로드 아이덴티티 풀을 만든 Google Cloud 프로젝트의 ID를 지정합니다. 명령어 이름 이 입력란은 비워둡니다. 승인 클래스 적절하게 인증 클래스를 지정합니다. /GOOG/CL_AUTH_WIF_META_ACCESS
: Google이 서명한 OAuth 토큰을 생성합니다./GOOG/CL_AUTH_WIF_META_IDTOKEN
: Google이 서명한 ID 토큰을 생성합니다.
토큰 캐싱 Google Cloud 에서 검색된 액세스 토큰이 캐시될지 여부를 결정하는 플래그입니다.
Google Cloud에 대한 연결을 구성하고 테스트한 후 토큰 캐싱을 사용 설정하는 것이 좋습니다.
토큰 새로고침 시간(초) 이 입력란은 비워둡니다. 승인 매개변수 1 워크로드 아이덴티티 풀 ID를 지정합니다. 승인 매개변수 2 워크로드 아이덴티티 공급업체 ID를 지정합니다. 항목을 저장합니다.
외부 IdP와의 워크로드 아이덴티티 제휴
Amazon Web Services (AWS)와 같은 외부 IdP 또는 OpenID Connect (OIDC)를 지원하는 ID 공급업체 (IdP, 예: Microsoft Azure 또는 SAML 2.0)와 함께 워크로드 아이덴티티 제휴를 사용할 수 있습니다.
워크로드 아이덴티티 제휴를 통해 토큰을 사용하여 인증하기 위한 대략적인 구성 단계는 다음과 같습니다.
- 외부 IdP를 준비합니다.
- Google Cloud에서 워크로드 아이덴티티 제휴를 구성합니다.
- Google Cloud에서 서비스 계정을 만듭니다.
- Google Cloud에서 외부 워크로드가 서비스 계정을 가장하도록 허용합니다.
- ABAP SDK for Google Cloud에서 ABAP 코드를 구현하여 IdP에서 보안 토큰을 검색합니다.
- ABAP SDK for Google Cloud에서 클라이언트 키를 구성합니다.
일부 Google Cloud 제품에서는 워크로드 아이덴티티 제휴를 지원하지 않습니다. 워크로드 아이덴티티 제휴를 사용하여 인증을 설정하기 전에 지원되는 제품 및 제한사항 목록을 검토하세요. 자세한 내용은 직원 ID 제휴: 지원되는 제품 및 제한사항을 참고하세요.
외부 IdP 준비
SAP 워크로드가 Google OAuth 2.0 보안 토큰으로 교환할 수 있는 사용자 인증 정보를 가져올 수 있도록 IdP를 준비해야 합니다.
외부 IdP를 준비하려면 IdP에 따라 다음 단계를 수행합니다.
- AWS 또는 Azure를 IdP로 사용하는 경우 안내에 따라 외부 IdP를 준비합니다.
- 다른 IdP를 사용하는 경우 안내에 따라 외부 IdP를 준비합니다.
워크로드 아이덴티티 제휴 구성
Google Cloud에서 워크로드 ID 풀과 공급업체를 구성합니다.
외부 ID를 관리할 수 있는 항목인 ID 풀을 구성합니다. 또한 Google Cloud와 IdP 간의 관계를 설명하는 항목인 워크로드 아이덴티티 풀 제공업체를 구성합니다.
워크로드 아이덴티티 제휴를 구성하려면 외부 IdP에 따라 다음 단계를 수행합니다.
- AWS 또는 Azure를 IdP로 사용하는 경우 안내에 따라 워크로드 아이덴티티 풀과 공급업체를 만듭니다.
- 다른 IdP를 사용하는 경우 안내에 따라 워크로드 아이덴티티 풀과 공급업체를 만듭니다.
다음을 기록해 둡니다.
- 프로젝트 번호: 워크로드 아이덴티티 풀을 만든 Google Cloud 프로젝트의 프로젝트 번호입니다.
- 풀 ID: 워크로드 아이덴티티 풀을 식별하는 고유 ID입니다.
- 제공업체 ID: 워크로드 아이덴티티 풀 제공업체를 식별하는 ID입니다.
ABAP SDK 클라이언트 키 구성에 필요합니다.
서비스 계정 만들기
Google Cloud 콘솔에서 전용 IAM 서비스 계정을 만들어 Google Cloud API에 액세스합니다. 이 서비스 계정은 SDK를 사용할 예정인Google Cloud API가 포함된 Google Cloud 프로젝트의 주 구성원이어야 합니다.
Google Cloud 콘솔에서 IAM Service Account Credentials API, Security Token Service API, SDK를 사용해 액세스할 계획인 기타 모든 지원 API를 사용 설정합니다.
API를 사용 설정하는 방법에 관한 자세한 내용은 API 사용 설정을 참고하세요. Google Cloud
워크로드를 나타내는 서비스 계정을 만듭니다.
API 기능에 액세스하는 데 필요한 IAM 역할을 서비스 계정에 부여합니다. Google Cloud API의 역할 요구사항을 이해하려면 개별 API 문서를 참고하고 최소 권한 원칙을 따르세요. API별 사전 정의된 역할에 대한 자세한 내용은 API의 IAM 역할 찾기를 참고하세요. Google Cloud
외부 워크로드가 서비스 계정을 가장하도록 허용
외부 워크로드가 서비스 계정을 가장하도록 허용하려면 외부 IdP에 따라 다음 단계를 수행합니다.
- AWS 또는 Azure를 IdP로 사용하는 경우 안내에 따라 외부 워크로드가 서비스 계정을 가장하도록 허용합니다.
- 다른 IdP를 사용하는 경우 안내에 따라 외부 워크로드가 서비스 계정을 가장하도록 허용합니다.
ABAP 코드를 구현하여 IdP에서 보안 토큰 검색
ABAP SDK for Google Cloud는 보안 토큰 서비스에서 OAuth 2.0 보안 토큰을 검색하고 IAM Service Account Credentials API에서 OAuth 2.0 액세스 토큰을 검색하는 로직이 있는 추상 클래스 /GOOG/CL_AUTH_WIF_BASE
를 제공합니다. 개발자는 추상 클래스 /GOOG/CL_AUTH_WIF_BASE
에서 상속되는 하위 클래스를 네임스페이스에 만들어야 합니다.
워크로드 아이덴티티 제휴를 사용하여 ABAP SDK for Google Cloud에서 Cloud Run Functions를 호출하기 위해 SDK에서 또 다른 추상 클래스 /GOOG/CL_AUTH_WIF_ID_TOKEN
을 제공합니다. 워크로드 아이덴티티 제휴를 사용하여 인증을 설정하는 경우 추상 클래스 /GOOG/CL_AUTH_WIF_ID_TOKEN
에서 상속되는 하위 클래스 하나 이상을 네임스페이스에 만들어야 합니다. Cloud Run Functions를 호출하도록 클라이언트 키를 구성하는 동안에 이 하위 클래스를 승인 클래스 필드에 지정합니다.
하위 클래스에서 GET_EXT_IDP_TOKEN
메서드를 구현하고 IdP에서 보안 토큰을 가져오도록 로직을 작성해야 합니다. 다음 필드를 채웁니다.
CV_TOKEN
: IdP에서string
형식으로 검색한 토큰입니다.CV_TOKEN_TYPE
: IdP에서 검색한 보안 토큰의 유형입니다. 지원되는 토큰 유형은 다음과 같습니다.urn:ietf:params:oauth:token-type:jwt
urn:ietf:params:oauth:token-type:id_token
urn:ietf:params:aws:token-type:aws4_request
urn:ietf:params:oauth:token-type:access_token
urn:ietf:params:oauth:token-type:saml2
CV_TOKEN
및 CV_TOKEN_TYPE
에 채워진 값은 추상 클래스 /GOOG/CL_AUTH_WIF_BASE
의 메서드에서 API 호출에 사용되는 최종 OAuth 2.0 토큰을 교환하고 검색하는 데 사용됩니다.
다음 예시에서는 AWS 및 Azure와 같은 다른 클라우드 제공업체에 대한 GET_EXT_IDP_TOKEN
메서드의 샘플 구현을 보여줍니다.
AWS
Azure
클라이언트 키 구성
-
SAP GUI에서 트랜잭션 코드
/GOOG/SDK_IMG
를 실행합니다.또는 트랜잭션 코드
SPRO
를 실행한 후 SAP 참조 IMG를 클릭합니다. - ABAP SDK for Google Cloud > 기본 설정 > 클라이언트 키 구성을 클릭합니다.
- 새 항목을 클릭합니다.
다음 필드에 값을 입력합니다.
필드 설명 Google Cloud 키 이름 클라이언트 키 구성의 이름을 지정합니다. Google Cloud 서비스 계정 이름 서비스 계정 만들기 단계에서 Google Cloud API에 액세스하도록 만든 서비스 계정의 이름을 이메일 주소 형식으로 지정합니다. 예를 들면 sap-example-svc-acct@example-project-123456.iam.gserviceaccount.com
입니다.Google Cloud 범위 API 액세스 범위( https://www.googleapis.com/auth/cloud-platform
)를 지정합니다.Google Cloud 프로젝트 식별자 워크로드 아이덴티티 풀을 만든 Google Cloud 프로젝트의 ID를 지정합니다. 명령어 이름 이 입력란은 비워둡니다. 승인 클래스 /GOOG/CL_AUTH_WIF_BASE
클래스 구현이 포함된 하위 클래스를 지정합니다. 자세한 내용은 ABAP 코드를 구현하여 IdP에서 보안 토큰 검색을 참조하세요.토큰 캐싱 Google Cloud 에서 검색된 액세스 토큰이 캐시될지 여부를 결정하는 플래그입니다.
Google Cloud에 대한 연결을 구성하고 테스트한 후 토큰 캐싱을 사용 설정하는 것이 좋습니다.
토큰 새로고침 시간(초) 이 입력란은 비워둡니다. 승인 매개변수 1 워크로드 아이덴티티 풀 ID를 지정합니다. 승인 매개변수 2 워크로드 아이덴티티 공급업체 ID를 지정합니다. 항목을 저장합니다.
지원 받기
ABAP SDK for Google Cloud 문제를 해결하는 데 도움이 필요한 경우 다음을 수행하세요.
Cloud 포럼의 커뮤니티에서 ABAP SDK for Google Cloud에 대해 질문하고 논의합니다.
사용 가능한 모든 진단 정보를 수집하여 Cloud Customer Care에 문의합니다. Customer Care 문의 정보는 Google Cloud에서 SAP 지원 받기를 참고하세요.