이 가이드에서는 Microsoft Entra ID를 사용하여 직원 ID 제휴를 구성하고 Google Cloud에 대한 액세스 권한을 관리하는 방법을 보여줍니다. 그러면 Microsoft Entra ID 사용자는 직원 ID 제휴를 지원하는 Google Cloud 서비스에 액세스할 수 있습니다.
시작하기 전에
- Google Cloud 조직이 설정되어 있는지 확인합니다.
-
After installing the Google Cloud CLI, configure the gcloud CLI to use your federated identity and then initialize it by running the following command:
gcloud init
- Microsoft Entra ID에서 ID 토큰이 암시적 흐름에 사용 설정되어 있는지 확인합니다. 자세한 내용은 [암시적 흐름 사용 설정](https://learn.microsoft.com/ko-kr/azure/active-directory-b2c/tutorial-register-applications#enable-id-token-implicit-grant)을 참고하세요.
- 로그인 시 IdP에서 서명된 인증 정보를 제공해야 합니다. OIDC IdP는 JWT를 제공해야 하고 SAML IdP 응답에 서명이 되어야 합니다.
- 조직 또는 Google Cloud 제품의 변경사항에 대한 중요 정보를 수신하려면 필수 연락처를 제공해야 합니다. 자세한 내용은 직원 ID 제휴 개요를 참조하세요.
필요한 역할
직원 ID 제휴를 구성하는 데 필요한 권한을 얻으려면 관리자에게 조직에 대한 IAM 직원 풀 관리자(roles/iam.workforcePoolAdmin
) IAM 역할을 부여해 달라고 요청하세요.
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.
IAM 소유자(roles/owner
) 기본 역할에도 직원 ID 제휴에 대한 권한이 포함되어 있습니다.
프로덕션 환경에서는 기본 역할을 부여하지 말아야 하지만 개발 환경 또는 테스트 환경에서는 부여해도 됩니다.
직원 ID 풀 만들기
콘솔
직원 ID 풀을 만들려면 다음을 수행합니다.
Google Cloud 콘솔에서 직원 ID 풀 페이지로 이동합니다.
풀 만들기를 클릭하고 다음을 수행합니다.
이름 필드에 풀의 표시 이름을 입력합니다. 풀 ID는 자동으로 입력한 이름에서 파생되며 이름 필드 아래에 표시됩니다. 풀 ID 옆에 있는 수정을 클릭하여 풀 ID를 업데이트할 수 있습니다.
(선택사항) 설명에 풀 설명을 입력합니다.
세션 시간은 기본값으로 설정됩니다. 사용자설정 세션 시간을 입력하려면 수정을 클릭합니다. 세션 시간은 이 직원 풀에서 유래한 Google Cloud 액세스 토큰, 콘솔(제휴) 로그인 세션, gcloud CLI 로그인 세션이 유효하게 지속되는 시간을 결정합니다. 기간은 15분(900초) 이상, 12시간(43,200초) 미만이어야 합니다. 세션 시간을 설정하지 않은 경우 기본값은 1시간(3,600초)입니다.
사용 설정 상태의 풀을 만들려면 사용 설정된 풀을 사용 설정합니다.
직원 ID 풀을 만들려면 다음을 클릭합니다.
gcloud
직원 ID 풀을 만들려면 다음 명령어를 실행합니다.
gcloud iam workforce-pools create WORKFORCE_POOL_ID \
--organization=ORGANIZATION_ID \
--display-name="DISPLAY_NAME" \
--description="DESCRIPTION" \
--session-duration=SESSION_DURATION \
--location=global
다음을 바꿉니다.
WORKFORCE_POOL_ID
: Google Cloud 직원 풀을 나타내기 위해 선택하는 ID. ID 형식 지정에 대한 자세한 내용은 API 참고 리소스의 쿼리 매개변수 섹션을 참조하세요.ORGANIZATION_ID
: Google Cloud 조직의 숫자 조직 ID입니다.DISPLAY_NAME
: 선택사항. 직원 ID 풀 표시 이름입니다.DESCRIPTION
: 선택사항. 직원 ID 풀 설명입니다.SESSION_DURATION
: 선택사항. 세션 시간으로, 이 직원 풀의 Google Cloud 액세스 토큰, 콘솔(제휴) 로그인 세션, gcloud CLI 로그인 세션이 유효하게 지속되는 시간을 결정합니다. 기간은 15분(900초) 이상, 12시간(43,200초) 미만이어야 합니다. 세션 시간을 설정하지 않은 경우 기본값은 1시간(3,600초)입니다.
Microsoft Entra ID 앱 만들기
이 섹션에서는 Microsoft Entra 관리 포털을 사용하여 Microsoft Entra ID 앱을 만드는 단계를 설명합니다. 자세한 내용은 인증이란 무엇인가요?를 참조하세요.
직원 ID 풀은 OIDC 및 SAML 프로토콜을 모두 사용하여 제휴를 지원합니다.
OIDC
OIDC 프로토콜을 사용하는 Microsoft 앱 등록을 만들려면 다음 단계를 수행합니다.
- Microsoft Entra 관리자 포털에 로그인합니다.
- ID > 애플리케이션 > 앱 등록으로 이동합니다.
앱 등록 구성을 시작하려면 다음을 수행합니다.
- '새 등록'을 클릭합니다.
- 앱 이름을 입력합니다.
- 지원되는 계정 유형에서 옵션을 선택합니다.
리디렉션 URI 섹션의 플랫폼 선택 드롭다운 목록에서 웹을 선택합니다. 텍스트 필드에 리디렉션 URL을 입력합니다. 사용자가 성공적으로 로그인하면 이 URL로 리디렉션됩니다. 콘솔(제휴)에 대한 액세스를 구성하는 경우 다음 URL 형식을 사용합니다.
https://auth.cloud.google/signin-callback/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
다음을 바꿉니다.
WORKFORCE_POOL_ID
: 이 가이드의 앞부분에서 만든 직원 풀의 ID입니다.WORKFORCE_PROVIDER_ID
: 선택한 직원 ID 공급업체 ID(예:azure-ad-oidc-provider
)입니다. ID 형식 지정에 대한 자세한 내용은 API 문서의 쿼리 매개변수 섹션을 참조하세요.
앱 등록을 만들려면 등록을 클릭합니다.
선택사항: 그룹 클레임을 구성하려면 다음을 수행합니다.
- Microsoft Entra ID 앱 등록으로 이동합니다.
- 토큰 구성을 클릭합니다.
- 그룹 클레임 추가를 클릭합니다. 이 가이드 뒷부분에서 제공된 속성 매핑 예시를 사용하려면 커스텀
department
속성을 만들어야 합니다. - 반환할 그룹 유형을 선택합니다. 자세한 내용은 그룹 선택적 클레임 구성을 참조하세요.
SAML
SAML 프로토콜을 사용하는 Microsoft 애플리케이션을 만들려면 다음 단계를 수행하세요.
- Microsoft Azure 포털에 로그인합니다.
- Azure Active Directory > 엔터프라이즈 애플리케이션으로 이동합니다.
엔터프라이즈 애플리케이션 구성을 시작하려면 다음을 수행합니다.
- 새 애플리케이션 > 자체 애플리케이션 만들기를 클릭합니다.
- 앱 이름을 입력합니다.
- 만들기를 클릭합니다.
- 싱글 사인온(SSO) > SAML로 이동합니다.
다음과 같이 기본 SAML 구성을 업데이트합니다.
식별자(항목 ID) 필드에 다음 값을 입력합니다.
https://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
답장 URL(Assertion Consumer Service URL(어설션 소비자 서비스 URL)) 필드에 리디렉션 URL을 입력합니다. 사용자가 성공적으로 로그인하면 이 URL로 리디렉션됩니다. 콘솔(제휴)에 대한 액세스를 구성하는 경우 다음 URL 형식을 사용합니다.
https://auth.cloud.google/signin-callback/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
다음을 바꿉니다.
WORKFORCE_POOL_ID
: 이 가이드의 앞부분에서 만든 직원 ID 풀의 ID입니다.WORKFORCE_PROVIDER_ID
: 선택한 직원 ID 공급업체 ID(예:azure-ad-oidc-provider
)입니다. ID 형식 지정에 대한 자세한 내용은 API 문서의 쿼리 매개변수 섹션을 참조하세요.
IdP에서 시작하는 사인온을 사용 설정하려면 Relay State 필드를 다음 값으로 설정합니다.
https://console.cloud.google/
SAML 앱 구성을 저장하려면 저장을 클릭합니다.
그룹 클레임을 구성하려면 다음을 수행합니다. 이 가이드 뒷부분에서 제공된 속성 매핑 예시를 사용하려면 커스텀
department
속성을 만들어야 합니다.- Microsoft Entra ID 앱으로 이동합니다.
- Single sign-on(싱글 사인온)을 클릭합니다.
- 속성 및 클레임 섹션에서 수정을 클릭합니다.
- 그룹 클레임 추가를 클릭합니다.
- 반환할 그룹 유형을 선택합니다. 자세한 내용은 SSO 구성을 사용하여 SAML 애플리케이션 토큰의 그룹 클레임 추가를 참조하세요.
Microsoft Entra ID 직원 ID 풀 제공업체 만들기
이 섹션에서는 IdP 사용자가 Google Cloud에 액세스할 수 있도록 직원 ID 풀 제공업체를 만드는 방법을 설명합니다. 공급업체가 OIDC 또는 SAML 프로토콜을 사용하도록 구성할 수 있습니다.
OIDC 직원 ID 풀 공급업체 만들기
OIDC 프로토콜을 사용하여 Microsoft Entra ID 앱 통합에 사용할 직원 ID 풀 제공업체를 만들려면 다음을 수행합니다.
Microsoft Entra ID 앱의 발급기관 URI를 가져오려면 다음을 수행합니다.
- Microsoft Entra ID 앱 등록으로 이동합니다.
- 엔드포인트를 클릭합니다.
- 새 탭에서 OpenID Connect 메타데이터 문서를 엽니다.
- JSON 파일에서
issuer
값을 복사합니다.
Microsoft Entra ID 앱의 클라이언트 ID를 가져오려면 다음을 수행합니다.
- Microsoft Entra ID 앱 등록으로 이동합니다.
- 애플리케이션(클라이언트) ID 값을 복사합니다.
웹 기반 로그인이 가능하도록 OIDC 직원 ID 풀 공급업체를 만들려면 다음을 수행합니다.
콘솔
코드 흐름
웹 기반 로그인에 승인 코드 플로우를 사용하는 OIDC 공급업체를 만들려면 다음을 수행합니다.
Microsoft Entra ID 클라이언트 보안 비밀번호를 가져오려면 다음을 수행합니다.
Microsoft Entra ID 앱 등록으로 이동합니다.
인증서 및 보안 비밀번호에서 클라이언트 보안 비밀번호 탭을 클릭합니다.
클라이언트 보안 비밀번호를 추가하려면 + 새 클라이언트 보안 비밀번호를 클릭합니다.
클라이언트 보안 비밀번호 추가 대화상자에 필요에 따라 정보를 입력합니다.
클라이언트 보안 비밀번호를 만들려면 추가를 클릭합니다.
클라이언트 보안 비밀번호 탭에서 새 클라이언트 보안 비밀번호를 찾습니다.
새 클라이언트 보안 비밀번호의 값 열에서 content_copy 복사를 클릭합니다.
Google Cloud 콘솔에서 승인 코드 플로우을 사용하는 OIDC 공급업체를 만들려면 다음을 수행합니다.
Google Cloud 콘솔에서 직원 ID 풀 페이지로 이동합니다.
직원 ID 풀 표에서 공급업체를 만들 풀을 선택합니다.
공급업체 표에서 공급업체 추가를 클릭합니다.
프로토콜 선택에서 OpenID Connect(OIDC)를 선택합니다.
풀 제공업체 만들기에서 다음을 수행합니다.
- 이름에 제공업체 이름을 입력합니다.
- 발급기관(URL)에 발급기관 URI를 입력합니다. OIDC 발급기관 URI는 유효한 URI 형식이어야 하며
https
(으)로 시작해야 합니다. 예를 들면https://example.com/oidc
입니다. - OIDC IdP에 등록된 OIDC 클라이언트 ID인 클라이언트 ID를 입력합니다. ID는 IdP에서 발급한 JWT의
aud
클레임과 일치해야 합니다. - 사용 설정 상태의 공급업체를 만들려면 사용 설정된 제공업체를 사용 설정합니다.
- 계속을 클릭합니다.
응답 유형에서 다음을 수행합니다. 응답 유형은 웹 기반 싱글 사인온(SSO) 흐름에만 사용됩니다.
- 응답 유형에서 코드를 선택합니다.
- 클라이언트 보안 비밀번호에 IdP에서 받은 클라이언트 보안 비밀번호를 입력합니다.
어설션 클레임 동작에서 다음 중 하나를 선택합니다.
- 사용자 정보 및 ID 토큰
- ID 토큰만
계속을 클릭합니다.
공급업체 구성에서 속성 매핑 및 속성 조건을 구성할 수 있습니다. 속성 매핑을 만들려면 다음을 수행합니다. IdP 필드 이름이나 문자열을 반환하는 CEL 형식의 표현식을 입력합니다.
필수: OIDC 1에 IdP에서 확인된 소유자를 입력합니다. 예를 들면
assertion.sub
입니다.OIDC 인증을 사용하는 Microsoft Entra ID의 경우 다음 속성 매핑을 사용하는 것이 좋습니다.
google.subject=assertion.sub, google.groups=assertion.groups, google.display_name=assertion.preferred_username
이 예시에서는 IdP 속성인
subject
,groups
,preferred_username
을(를) Google Cloud 속성google.subject
,google.groups
,google.display_name
에 각각 매핑합니다.선택사항: 속성 매핑을 더 추가하려면 다음을 수행합니다.
- 매핑 추가를 클릭합니다.
- Google n에서 n은 숫자이며 Google Cloud 지원 키 중 하나를 입력합니다.
- 해당하는 OIDC n 필드에 매핑할 IdP별 필드 이름을 CEL 형식으로 입력합니다.
속성 조건을 만들려면 다음을 수행합니다.
- 조건 추가를 클릭합니다.
- 속성 조건에서 조건을 CEL 형식으로 입력합니다. 예를 들어
ipaddr
속성을 특정 IP 범위로 제한하려면assertion.ipaddr.startsWith('98.11.12.')
조건을 설정합니다.
제공업체를 만들려면 제출을 클릭합니다.
암시적 흐름
웹 기반 로그인에 암시적 흐름을 사용하는 OIDC 공급업체를 만들려면 다음을 수행합니다.
Google Cloud 콘솔에서 직원 ID 풀 페이지로 이동합니다.
직원 ID 풀 표에서 공급업체를 만들 풀을 선택합니다.
공급업체 표에서 공급업체 추가를 클릭합니다.
프로토콜 선택에서 OpenID Connect(OIDC)를 선택합니다.
풀 제공업체 만들기에서 다음을 수행합니다.
- 이름에 제공업체 이름을 입력합니다.
- 발급기관(URL)에 발급기관 URI를 입력합니다. OIDC 발급기관 URI는 유효한 URI 형식이어야 하며
https
(으)로 시작해야 합니다. 예를 들면https://example.com/oidc
입니다. - OIDC IdP에 등록된 OIDC 클라이언트 ID인 클라이언트 ID를 입력합니다. ID는 IdP에서 발급한 JWT의
aud
클레임과 일치해야 합니다. - 사용 설정 상태의 공급업체를 만들려면 사용 설정된 제공업체를 사용 설정합니다.
- 계속을 클릭합니다.
응답 유형에서 다음을 수행합니다. 응답 유형은 웹 기반 싱글 사인온(SSO) 흐름에만 사용됩니다.
- 응답 유형에서 ID 토큰을 선택합니다.
- 계속을 클릭합니다.
공급업체 구성에서 속성 매핑 및 속성 조건을 구성할 수 있습니다. 속성 매핑을 만들려면 다음을 수행합니다. IdP 필드 이름이나 문자열을 반환하는 CEL 형식의 표현식을 입력합니다.
필수: OIDC 1에 IdP에서 확인된 소유자를 입력합니다. 예를 들면
assertion.sub
입니다.OIDC 인증을 사용하는 Microsoft Entra ID의 경우 다음 속성 매핑을 사용하는 것이 좋습니다.
google.subject=assertion.sub, google.groups=assertion.groups, google.display_name=assertion.preferred_username
이 예시에서는 IdP 속성인
subject
,groups
,preferred_username
을(를) Google Cloud 속성google.subject
,google.groups
,google.display_name
에 각각 매핑합니다.선택사항: 속성 매핑을 더 추가하려면 다음을 수행합니다.
- 매핑 추가를 클릭합니다.
- Google n에서 n은 숫자이며 Google Cloud 지원 키 중 하나를 입력합니다.
- 해당하는 OIDC n 필드에 매핑할 IdP별 필드 이름을 CEL 형식으로 입력합니다.
속성 조건을 만들려면 다음을 수행합니다.
- 조건 추가를 클릭합니다.
속성 조건에서 조건을 CEL 형식으로 입력합니다. 예를 들어
ipaddr
속성을 특정 IP 범위로 제한하려면assertion.ipaddr.startsWith('98.11.12.')
조건을 설정합니다.
제공업체를 만들려면 제출을 클릭합니다.
gcloud
OIDC 프로토콜을 지원하는 제공업체를 만들려면 다음을 수행합니다.
코드 흐름
웹 기반 로그인에 승인 코드 플로우를 사용하는 OIDC 공급업체를 만들려면 다음을 수행합니다.
Microsoft Entra ID 앱에서 클라이언트 보안 비밀번호를 가져오려면 다음을 수행합니다.
Microsoft Entra ID 앱 등록으로 이동합니다.
인증서 및 보안 비밀번호에서 클라이언트 보안 비밀번호 탭을 클릭합니다.
클라이언트 보안 비밀번호를 추가하려면 + 새 클라이언트 보안 비밀번호를 클릭합니다.
클라이언트 보안 비밀번호 추가 대화상자에 필요에 따라 정보를 입력합니다.
클라이언트 보안 비밀번호를 만들려면 추가를 클릭합니다.
클라이언트 보안 비밀번호 탭에서 새 클라이언트 보안 비밀번호를 찾습니다.
새 클라이언트 보안 비밀번호의 값 열에서 content_copy 복사를 클릭합니다.
Google Cloud 콘솔에서 코드 흐름을 사용하는 OIDC 공급업체를 만들려면 다음을 수행합니다.
gcloud iam workforce-pools providers create-oidc WORKFORCE_PROVIDER_ID \ --workforce-pool=WORKFORCE_POOL_ID \ --display-name="DISPLAY_NAME" \ --description="DESCRIPTION" \ --issuer-uri="ISSUER_URI" \ --client-id="OIDC_CLIENT_ID" \
--client-secret-value="OIDC_CLIENT_SECRET" \ --web-sso-response-type="code" \ --web-sso-assertion-claims-behavior="merge-user-info-over-id-token-claims" \ --web-sso-additional-scopes="WEB_SSO_ADDITIONAL_SCOPES" \ --attribute-mapping="ATTRIBUTE_MAPPING" \ --attribute-condition="ATTRIBUTE_CONDITION" \ --jwk-json-path="JWK_JSON_PATH" \ --location=global다음을 바꿉니다.
WORKFORCE_PROVIDER_ID
: 고유한 직원 ID 풀 공급업체 ID입니다.gcp-
접두사는 예약되어 있으며 직원 ID 풀 또는 직원 ID 풀 공급업체 ID에 사용할 수 없습니다.WORKFORCE_POOL_ID
: IdP를 연결할 직원 ID 풀 IDDISPLAY_NAME
: 선택사항이며 공급업체의 사용자 친화적인 표시 이름(예:idp-eu-employees
)DESCRIPTION
: 선택사항이며 직원 공급업체 설명(예:IdP for Partner Example Organization employees
)ISSUER_URI
: 유효한 URI 형식의 OIDC 발급기관 URI,https
(으)로 시작(예:https://example.com/oidc
) 참고: 보안상의 이유로ISSUER_URI
은(는) HTTPS 스키마를 사용해야 합니다.OIDC_CLIENT_ID
: OIDC IdP에 등록된 OIDC 클라이언트 ID. ID가 IdP에서 발급한 JWT의aud
클레임과 일치해야 합니다.OIDC_CLIENT_SECRET
: OIDC 클라이언트 보안 비밀번호WEB_SSO_ADDITIONAL_SCOPES
: 콘솔(제휴) 또는 gcloud CLI 브라우저 기반 로그인을 위해 OIDC IdP로 전송할 선택적 추가 범위ATTRIBUTE_MAPPING
: 속성 매핑입니다. OIDC 인증을 사용하는 Microsoft Entra ID의 경우 다음 속성 매핑을 사용하는 것이 좋습니다.google.subject=assertion.sub, google.groups=assertion.groups, google.display_name=assertion.preferred_username
이 예시에서는 IdP 속성인
subject
,groups
,preferred_username
을(를) Google Cloud 속성google.subject
,google.groups
,google.display_name
에 각각 매핑합니다.ATTRIBUTE_CONDITION
: 속성 조건. 예를 들어ipaddr
속성을 특정 IP 범위로 제한하려면assertion.ipaddr.startsWith('98.11.12.')
조건을 설정합니다.JWK_JSON_PATH
: 로컬로 업로드된 OIDC JWK의 선택적 경로입니다. 이 파라미터를 제공하지 않으면 Google Cloud에서 대신 IdP의/.well-known/openid-configuration
경로를 사용하여 공개 키가 포함된 JWK를 소싱합니다. 로컬로 업로드된 OIDC JWK에 대한 자세한 내용은 OIDC JWK 관리를 참조하세요.
locations/global/workforcePools/enterprise-example-organization-employees
).
암시적 흐름
웹 로그인에 암시적 흐름을 사용하는 OIDC 공급업체를 만들려면 다음을 수행합니다.
Microsoft Entra ID 앱에서 ID 토큰을 사용 설정하려면 다음을 수행합니다.
- Microsoft Entra ID 앱 등록으로 이동합니다.
- 인증에서 ID 토큰 체크박스를 선택합니다.
- 저장을 클릭합니다.
공급업체를 만들려면 다음 명령어를 실행합니다.
gcloud iam workforce-pools providers create-oidc WORKFORCE_PROVIDER_ID \ --workforce-pool=WORKFORCE_POOL_ID \ --display-name="DISPLAY_NAME" \ --description="DESCRIPTION" \ --issuer-uri="ISSUER_URI" \ --client-id="OIDC_CLIENT_ID" \ --web-sso-response-type="id-token" \ --web-sso-assertion-claims-behavior="only-id-token-claims" \ --web-sso-additional-scopes="WEB_SSO_ADDITIONAL_SCOPES" \ --attribute-mapping="ATTRIBUTE_MAPPING" \ --attribute-condition="ATTRIBUTE_CONDITION" \ --jwk-json-path="JWK_JSON_PATH" \ --location=global
다음을 바꿉니다.
WORKFORCE_PROVIDER_ID
: 고유한 직원 ID 풀 공급업체 ID입니다.gcp-
접두사는 예약되어 있으며 직원 ID 풀 또는 직원 ID 풀 공급업체 ID에 사용할 수 없습니다.WORKFORCE_POOL_ID
: IdP를 연결할 직원 ID 풀 IDDISPLAY_NAME
: 선택사항이며 공급업체의 사용자 친화적인 표시 이름(예:idp-eu-employees
)DESCRIPTION
: 선택사항이며 직원 공급업체 설명(예:IdP for Partner Example Organization employees
)ISSUER_URI
: 유효한 URI 형식의 OIDC 발급기관 URI,https
(으)로 시작(예:https://example.com/oidc
) 참고: 보안상의 이유로ISSUER_URI
은(는) HTTPS 스키마를 사용해야 합니다.OIDC_CLIENT_ID
: OIDC IdP에 등록된 OIDC 클라이언트 ID. ID가 IdP에서 발급한 JWT의aud
클레임과 일치해야 합니다.WEB_SSO_ADDITIONAL_SCOPES
: 콘솔(제휴) 또는 gcloud CLI 브라우저 기반 로그인을 위해 OIDC IdP로 전송할 선택적 추가 범위ATTRIBUTE_MAPPING
: 속성 매핑입니다. OIDC 인증을 사용하는 Microsoft Entra ID의 경우 다음 속성 매핑을 사용하는 것이 좋습니다.google.subject=assertion.sub, google.groups=assertion.groups, google.display_name=assertion.preferred_username
이 예시에서는 IdP 속성인
subject
,groups
,preferred_username
을(를) Google Cloud 속성google.subject
,google.groups
,google.display_name
에 각각 매핑합니다.ATTRIBUTE_CONDITION
: 속성 조건. 예를 들어ipaddr
속성을 특정 IP 범위로 제한하려면assertion.ipaddr.startsWith('98.11.12.')
조건을 설정합니다.JWK_JSON_PATH
: 로컬로 업로드된 OIDC JWK의 선택적 경로입니다. 이 파라미터를 제공하지 않으면 Google Cloud에서 대신 IdP의/.well-known/openid-configuration
경로를 사용하여 공개 키가 포함된 JWK를 소싱합니다. 로컬로 업로드된 OIDC JWK에 대한 자세한 내용은 OIDC JWK 관리를 참조하세요.
locations/global/workforcePools/enterprise-example-organization-employees
).
SAML 직원 ID 풀 공급업체 만들기
SAML IdP에서 Google Cloud 직원 ID 제휴를 위한 새 애플리케이션을 등록합니다.
SAML 어설션 대상을 설정합니다. 이는 일반적으로 IdP 구성의
SP Entity ID
필드입니다. 값을 다음 URL로 설정해야 합니다.https://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
콘솔에 대한 사용자 액세스를 설정하려면 SAML IdP에서 리디렉션 URL 또는 어설션 소비자 서비스(ACS) URL 필드를 다음 URL로 설정합니다.
https://auth.cloud.google/signin-callback/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
콘솔 로그인 구성에 대한 자세한 내용은 콘솔에 대한 사용자 액세스 설정을 참조하세요.
Google Cloud에서 IdP의 SAML 메타데이터 문서를 사용하여 SAML 직원 ID 풀 제공업체를 만듭니다. IdP의 SAML 메타데이터 XML 문서를 다운로드할 수 있습니다. 문서에는 다음 항목이 반드시 포함되어야 합니다.
- IdP의 SAML 엔티티 ID
- IdP의 싱글 사인온(SSO) URL
- 서명 공개 키 1개 이상 서명 키에 대한 자세한 내용은 이 가이드 뒷부분의 주요 요구사항을 참조하세요.
콘솔
Google Cloud 콘솔을 사용하여 SAML 공급업체를 구성하려면 다음을 수행합니다.
Google Cloud 콘솔에서 직원 ID 풀 페이지로 이동합니다.
직원 ID 풀 표에서 공급업체를 만들 풀을 선택합니다.
공급업체 표에서 공급업체 추가를 클릭합니다.
프로토콜 선택에서 SAML을 선택합니다.
풀 제공업체 만들기에서 다음을 수행합니다.
이름에 제공업체 이름을 입력합니다.
선택사항: 설명에 제공업체에 대한 설명을 입력합니다.
IDP 메타데이터 파일(XML)에서 이 가이드의 앞부분에서 생성한 메타데이터 XML 파일을 선택합니다.
사용 설정된 제공업체를 사용 설정합니다.
계속을 클릭합니다.
제공업체 구성에서 다음을 수행합니다.
속성 매핑에서
google.subject
의 CEL 표현식을 입력합니다.선택사항: 다른 매핑을 입력하려면 매핑 추가를 클릭하고 다른 매핑을 입력합니다. 예를 들면 다음과 같습니다.
이 예시에서는 IdP 속성google.subject=assertion.subject, google.groups=assertion.attributes['https://example.com/aliases'], attribute.costcenter=assertion.attributes.costcenter[0]
assertion.subject
,assertion.attributes['https://example.com/aliases']
,assertion.attributes.costcenter[0]
을 각각 Google Cloud 속성google.subject
,google.groups
,google.costcenter
에 매핑합니다.선택사항: 속성 조건을 추가하려면 조건 추가를 클릭하고 속성 조건을 나타내는 CEL 표현식을 입력합니다. 예를 들어
ipaddr
속성을 특정 IP 범위로 제한하려면assertion.attributes.ipaddr.startsWith('98.11.12.')
조건을 설정합니다. 이 예시의 조건은 IP 주소가98.11.12.
로 시작하는 사용자만 이 직원 제공업체를 사용하여 로그인할 수 있도록 합니다.계속을 클릭합니다.
제공업체를 만들려면 제출을 클릭합니다.
gcloud
Microsoft Entra ID 앱의 SAML 메타데이터를 저장하려면 다음을 수행합니다.
- Microsoft Entra ID 앱으로 이동합니다.
- Single sign-on(싱글 사인온)을 클릭합니다.
- SAML 인증서 섹션에서 제휴 메타데이터 XML을 다운로드합니다.
- 메타데이터를 로컬 XML 파일로 저장합니다.
SAML 직원 ID 풀 공급업체를 만들려면 다음 명령어를 실행합니다.
gcloud iam workforce-pools providers create-saml WORKFORCE_PROVIDER_ID \
--workforce-pool="WORKFORCE_POOL_ID" \
--display-name="DISPLAY_NAME" \
--description="DESCRIPTION" \
--idp-metadata-path="XML_METADATA_PATH" \
--attribute-mapping="ATTRIBUTE_MAPPING" \
--attribute-condition="ATTRIBUTE_CONDITION" \
--location=global
다음을 바꿉니다.
WORKFORCE_PROVIDER_ID
: 공급업체 IDWORKFORCE_POOL_ID
: 직원 ID 풀 IDDISPLAY_NAME
: 표시 이름DESCRIPTION
: 설명XML_METADATA_PATH
: SAML ID 공급업체의 구성 메타데이터가 있는 XML 형식의 메타데이터 파일 경로ATTRIBUTE_MAPPING
: 속성 매핑. 예를 들면 다음과 같습니다. 이 예시에서는 IdP 속성google.subject=assertion.subject, google.groups=assertion.attributes['https://example.com/aliases'], attribute.costcenter=assertion.attributes.costcenter[0]
assertion.subject
,assertion.attributes['https://example.com/aliases']
,assertion.attributes.costcenter[0]
을 각각 Google Cloud 속성google.subject
,google.groups
,google.costcenter
에 매핑합니다.ATTRIBUTE_CONDITION
: 선택사항인 속성 조건 예를 들어ipaddr
속성을 특정 IP 범위로 제한하려면assertion.attributes.ipaddr.startsWith('98.11.12.')
조건을 설정하면 됩니다. 이 예시의 조건은 IP 주소가98.11.12.
로 시작하는 사용자만 이 직원 제공업체를 사용하여 로그인할 수 있도록 합니다.
선택사항: IdP에서 암호화된 SAML 어설션 허용
SAML 2.0 IdP에서 직원 ID 제휴에서 허용할 수 있는 암호화된 SAML 어설션을 생성하도록 하려면 다음 안내를 따르세요.
- 직원 ID 제휴에서 다음을 수행합니다.
- 직원 ID 풀 공급업체에 비대칭 키 쌍을 만듭니다.
- 공개 키가 포함된 인증서 파일을 다운로드합니다.
- 공개 키를 사용하여 발급되는 SAML 어설션을 암호화하도록 SAML IdP를 구성합니다.
- IdP에서 다음을 수행합니다.
- 토큰 암호화라고도 하는 어설션 암호화를 사용 설정합니다.
- 직원 ID 제휴에서 만든 공개 키를 업로드합니다.
- IdP에서 암호화된 SAML 어설션을 생성하는지 확인합니다.
직원 ID 제휴 SAML 어설션 암호화 키 만들기
이 섹션에서는 직원 ID 제휴가 암호화된 SAML 어설션을 허용할 수 있도록 하는 비대칭 키 쌍을 만드는 방법을 설명합니다.
Google Cloud는 비공개 키를 사용하여 IdP에서 발급하는 SAML 어설션을 복호화합니다. SAML 암호화에 사용할 비대칭 키 쌍을 만들려면 다음 명령어를 실행합니다. 자세한 내용은 지원되는 SAML 암호화 알고리즘을 참조하세요.
gcloud iam workforce-pools providers keys create KEY_ID \ --workforce-pool WORKFORCE_POOL_ID \ --provider WORKFORCE_PROVIDER_ID \ --location global \ --use encryption \ --spec KEY_SPECIFICATION
다음을 바꿉니다.
KEY_ID
: 선택한 키 이름WORKFORCE_POOL_ID
: 풀 IDWORKFORCE_PROVIDER_ID
: 직원 ID 풀 제공업체 ID-
KEY_SPECIFICATION
: 키 사양(rsa-2048
,rsa-3072
,rsa-4096
중 하나일 수 있음)
키 쌍이 생성된 후 공개 키를 인증서 파일로 다운로드하려면 다음 명령어를 실행합니다. 직원 ID 제휴만 비공개 키에 액세스할 수 있습니다.
gcloud iam workforce-pools providers keys describe KEY_ID \ --workforce-pool WORKFORCE_POOL_ID \ --provider WORKFORCE_PROVIDER_ID \ --location global \ --format "value(keyData.key)" \ > CERTIFICATE_PATH
다음을 바꿉니다.
KEY_ID
: 키 이름WORKFORCE_POOL_ID
: 풀 IDWORKFORCE_PROVIDER_ID
: 직원 ID 풀 제공업체 IDCERTIFICATE_PATH
: 인증서를 작성할 경로(예:saml-certificate.cer
또는saml-certificate.pem
)
암호화된 SAML 어설션을 발급하도록 SAML 2.0 호환 IdP 구성
SAML 토큰을 암호화하도록 Microsoft Entra ID를 구성하려면 Azure Active Directory SAML 토큰 암호화 구성을 참조하세요.
SAML 어설션을 암호화하도록 IdP를 구성한 후에는 생성되는 어설션이 실제로 암호화되는지 확인하는 것이 좋습니다. SAML 어설션 암호화를 구성하더라도 직원 ID 제휴는 일반 텍스트 어설션을 처리할 수 있습니다.
직원 ID 제휴 암호화 키 삭제
SAML 암호화 키를 삭제하려면 다음 명령어를 실행합니다.gcloud iam workforce-pools providers keys delete KEY_ID \ --workforce-pool WORKFORCE_POOL_ID \ --provider WORKFORCE_PROVIDER_ID \ --location global
다음을 바꿉니다.
KEY_ID
: 키 이름WORKFORCE_POOL_ID
: 풀 IDWORKFORCE_PROVIDER_ID
: 직원 ID 풀 제공업체 ID
지원되는 SAML 암호화 알고리즘
직원 ID 제휴는 다음 키 전송 알고리즘을 지원합니다.
- http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p
- http://www.w3.org/2009/xmlenc11#rsa-oaep"
- http://www.w3.org/2001/04/xmlenc#rsa-1_5"
직원 ID 제휴는 다음 블록 암호화 알고리즘을 지원합니다.
Google Cloud 리소스 액세스 관리
이 섹션에서는 직원 ID 제휴 사용자별로 Google Cloud 리소스에 대한 액세스 권한을 관리하는 방법을 보여주는 예시를 제공합니다.
이 예시에서는 샘플 프로젝트에 Identity and Access Management(IAM) 역할을 부여합니다. 그러면 사용자가 로그인하고 이 프로젝트를 사용하여 Google Cloud 제품에 액세스할 수 있습니다.
단일 ID, ID 그룹 또는 전체 풀에 대해 IAM 역할을 관리할 수 있습니다. 자세한 내용은 IAM 정책에서 직원 ID 풀 사용자 표현을 참조하세요.
단일 ID의 경우
TEST_PROJECT_ID
프로젝트의 단일 ID에 스토리지 관리자(roles/storage.admin
) 역할을 부여하려면 다음 명령어를 실행합니다.
gcloud projects add-iam-policy-binding TEST_PROJECT_ID \
--role="roles/storage.admin" \
--member="principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/SUBJECT_VALUE"
다음을 바꿉니다.
TEST_PROJECT_ID
: 프로젝트의 ID입니다.WORKFORCE_POOL_ID
: 직원 ID 풀 ID입니다.SUBJECT_VALUE
: 사용자 ID
매핑된 부서 속성 사용
TEST_PROJECT_ID
프로젝트의 특정 부서 내의 모든 ID에 스토리지 관리자(roles/storage.admin
) 역할을 부여하려면 다음 명령어를 실행합니다.
gcloud projects add-iam-policy-binding TEST_PROJECT_ID \
--role="roles/storage.admin" \
--member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/attribute.department/DEPARTMENT_VALUE"
다음을 바꿉니다.
TEST_PROJECT_ID
: 프로젝트의 IDWORKFORCE_POOL_ID
: 직원 ID 풀 IDDEPARTMENT_VALUE
: 매핑된attribute.department
값
매핑된 그룹 사용
TEST_PROJECT_ID
프로젝트의 GROUP_ID
그룹 내 모든 ID에 스토리지 관리자(roles/storage.admin
) 역할을 부여하려면 다음 명령어를 실행합니다.
gcloud projects add-iam-policy-binding TEST_PROJECT_ID \
--role="roles/storage.admin" \
--member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID"
다음을 바꿉니다.
TEST_PROJECT_ID
: 프로젝트의 IDWORKFORCE_POOL_ID
: 직원 ID 풀 IDGROUP_ID
: 매핑된google.groups
클레임의 그룹
로그인 및 액세스 테스트
이 섹션에서는 직원 ID 풀 사용자로 로그인하여 Google Cloud 제품에 대한 액세스 권한이 있는지 테스트합니다.
로그인
이 섹션에서는 제휴 사용자로 로그인하여 Google Cloud 리소스에 액세스하는 방법을 설명합니다.
콘솔(제휴) 로그인
콘솔(제휴)이라고도 알려진 Google Cloud 직원 ID 제휴 콘솔에 로그인하려면 다음을 수행합니다.
-
콘솔(제휴) 로그인 페이지로 이동합니다.
-
다음과 같은 형식의 공급업체 이름을 입력합니다.
locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
- 메시지가 표시되면 Microsoft Entra ID에 사용자 인증 정보를 입력합니다.
gcloud CLI 브라우저 기반 로그인
브라우저 기반 로그인 과정을 사용하여 gcloud CLI에 로그인하려면 다음을 수행합니다.
구성 파일 만들기
로그인 구성 파일을 만들려면 다음 명령어를 실행합니다. 선택적으로 --activate
플래그를 사용해서 gcloud CLI에 대한 기본값으로 파일을 활성화할 수 있습니다.
gcloud iam workforce-pools create-login-config \ locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID \ --output-file=LOGIN_CONFIG_FILE
다음을 바꿉니다.
-
WORKFORCE_POOL_ID
: 직원 ID 풀 ID입니다. -
WORKFORCE_PROVIDER_ID
: 직원 ID 풀 제공업체 ID LOGIN_CONFIG_FILE
: 지정하는 로그인 구성 파일의 경로(예:login.json
)
파일은 gcloud CLI에서 브라우저 기반 인증 흐름을 사용 설정하고 직원 ID 풀 공급업체에 구성된 IdP를 잠재고객으로 설정하는 데 사용한 엔드포인트를 포함합니다. 파일에 기밀 정보가 포함되어 있지 않습니다.
결과는 다음과 유사합니다.
{ "type": "external_account_authorized_user_login_config", "audience": "//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID", "auth_url": "https://auth.cloud.google/authorize", "token_url": "https://sts.googleapis.com/v1/oauthtoken", "token_info_url": "https://sts.googleapis.com/v1/introspect", }
브라우저 기반 인증을 사용하여 로그인
브라우저 기반 로그인 인증을 사용하여 인증하려면 다음 방법 중 하나를 사용할 수 있습니다.
-
구성 파일을 만들 때
--activate
플래그를 사용하거나gcloud config set auth/login_config_file
로 구성 파일을 활성화한 경우 gcloud CLI에서 자동으로 구성 파일을 사용합니다.gcloud auth login
-
구성 파일의 위치를 지정하여 로그인하려면 다음 명령어를 실행합니다.
gcloud auth login --login-config=LOGIN_CONFIG_FILE
-
환경 변수를 사용하여 구성 파일의 위치를 지정하려면
CLOUDSDK_AUTH_LOGIN_CONFIG_FILE
을 구성 경로로 설정합니다.
브라우저 기반 로그인 사용 중지
로그인 구성 파일 사용을 중단하려면 다음을 수행합니다.
-
구성 파일을 만들 때
--activate
플래그를 사용했거나gcloud config set auth/login_config_file
로 구성 파일을 활성화한 경우 다음 명령어를 실행하여 설정을 해제해야 합니다.gcloud config unset auth/login_config_file
-
CLOUDSDK_AUTH_LOGIN_CONFIG_FILE
환경 변수가 설정되어 있으면 지웁니다.
gcloud CLI 헤드리스 로그인
gcloud CLI를 사용하여 Microsoft Entra ID에 로그인하려면 다음을 수행합니다.
OIDC
로그인 요청 보내기의 단계를 수행합니다. OIDC를 사용하여 Microsoft Entra ID로 앱에 사용자를 로그인합니다.
리디렉션 URL의
id_token
매개변수에서 ID 토큰을 복사하여 로컬 머신의 안전한 위치에 있는 파일에 저장합니다. 이후 단계에서 PATH_TO_OIDC_ID_TOKEN을 이 파일의 경로로 설정합니다.다음 명령어를 실행하여 이 단계의 뒷부분에 있는 예와 유사한 구성 파일을 생성합니다.
gcloud iam workforce-pools create-cred-config \ locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID \ --subject-token-type=urn:ietf:params:oauth:token-type:id_token \ --credential-source-file=PATH_TO_OIDC_ID_TOKEN \ --workforce-pool-user-project=WORKFORCE_POOL_USER_PROJECT \ --output-file=config.json
다음을 바꿉니다.
WORKFORCE_POOL_ID
: 직원 ID 풀 IDWORKFORCE_PROVIDER_ID
: 직원 ID 풀 공급업체 ID입니다.PATH_TO_OIDC_ID_TOKEN
: IdP 토큰이 저장된 파일 위치의 경로WORKFORCE_POOL_USER_PROJECT
: 할당량 및 결제에 사용되는 프로젝트 번호 또는 ID. 주 구성원에게 이 프로젝트에 대한serviceusage.services.use
권한이 있어야 합니다.
명령어가 완료되면 Microsoft Entra ID에서 다음 구성 파일을 만듭니다.
{ "type": "external_account", "audience": "//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID", "subject_token_type": "urn:ietf:params:oauth:token-type:id_token", "token_url": "https://sts.googleapis.com/v1/token", "workforce_pool_user_project": "WORKFORCE_POOL_USER_PROJECT", "credential_source": { "file": "PATH_TO_OIDC_CREDENTIALS" } }
gcloud CLI를 열고 다음 명령어를 실행합니다.
gcloud auth login --cred-file=PATH_TO_OIDC_CREDENTIALS
PATH_TO_OIDC_CREDENTIALS를 이전 단계의 출력 파일 경로로 바꿉니다.
gcloud CLI는 사용자 인증 정보를 보안 토큰 서비스 엔드포인트에 투명하게 게시합니다. 엔드포인트에서 임시 Google Cloud 액세스 토큰으로 교환됩니다.
이제 Google Cloud에 gcloud CLI 명령어를 실행할 수 있습니다.
SAML
Microsoft Entra ID 앱에 사용자를 로그인하고 SAML 응답을 가져옵니다.
Microsoft Entra ID에서 반환한 SAML 응답을 로컬 머신의 안전한 위치에 저장한 후 다음과 같이 경로를 저장합니다.
SAML_ASSERTION_PATH=SAML_ASSERTION_PATH
이 단계의 뒷부분에 나오는 예와 같은 구성 파일을 생성하려면 다음 명령어를 실행합니다.
gcloud iam workforce-pools create-cred-config \ locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID \ --subject-token-type=urn:ietf:params:oauth:token-type:saml2 \ --credential-source-file=SAML_ASSERTION_PATH \ --workforce-pool-user-project=PROJECT_ID \ --output-file=config.json
다음을 바꿉니다.
WORKFORCE_PROVIDER_ID
: 이 가이드의 앞부분에서 만든 직원 ID 풀 공급업체 ID입니다.WORKFORCE_POOL_ID
: 이 가이드의 앞부분에서 만든 직원 ID 풀 ID입니다.SAML_ASSERTION_PATH
: SAML 어설션 파일의 경로입니다.PROJECT_ID
: 프로젝트 ID입니다.
생성되는 구성 파일은 다음과 유사합니다.
{ "type": "external_account", "audience": "//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID", "subject_token_type": "urn:ietf:params:oauth:token-type:saml2", "token_url": "https://sts.googleapis.com/v1/token", "credential_source": { "file": "SAML_ASSERTION_PATH" }, "workforce_pool_user_project": "PROJECT_ID" }
토큰 교환을 사용하여
gcloud
에 로그인하려면 다음 명령어를 실행합니다.gcloud auth login --cred-file=config.json
그러면
gcloud
에서 Microsoft Entra ID 사용자 인증 정보를 임시 Google Cloud 액세스 토큰으로 투명하게 교환하여 다른gcloud
호출을 Google Cloud에 보낼 수 있습니다.다음과 비슷한 출력이 표시됩니다.
Authenticated with external account user credentials for: [principal://iam.googleapis.com/locations/global/workforcePools/
WORKFORCE_POOL_ID
/subject/USER_ID
].사용자 인증 정보 계정과 활성 계정을 나열하려면 다음 명령어를 실행합니다.
gcloud auth list
액세스 테스트
이제 직원 ID 제휴를 지원하고 액세스 권한이 부여된 Google Cloud 서비스에 액세스할 수 있습니다. 이 가이드의 앞부분에서는 TEST_PROJECT_ID
프로젝트의 특정 부서 내 모든 ID에 스토리지 관리자 역할을 부여했습니다. 이제 Cloud Storage 버킷을 나열하여 액세스 권한이 있는지 테스트할 수 있습니다.
콘솔(제휴)
이제 Google Cloud에 gcloud CLI 명령어를 실행할 수 있습니다.
- Cloud Storage 페이지로 이동합니다.
TEST_PROJECT_ID
의 기존 버킷 목록이 표시되는지 확인합니다.
gcloud CLI
액세스 권한이 있는 프로젝트의 Cloud Storage 버킷 및 객체를 나열하려면 다음 명령어를 실행합니다.
gcloud storage ls --project="TEST_PROJECT_ID"
주 구성원에게 지정된 프로젝트에 대한 serviceusage.services.use
권한이 있어야 합니다.
사용자 삭제
직원 ID 제휴는 제휴 사용자 ID에 대한 사용자 메타데이터와 리소스를 만듭니다. 예를 들어 IdP에서 사용자를 삭제하는 경우 Google Cloud에서도 해당 리소스를 명시적으로 삭제해야 합니다. 이렇게 하려면 직원 ID 제휴 사용자 및 데이터 삭제를 참조하세요.
리소스가 삭제된 사용자와 계속 연결된 것으로 표시될 수 있습니다. 이는 사용자 메타데이터 및 리소스 삭제를 위해 장기 실행 작업이 필요하기 때문입니다. 사용자 ID 삭제를 시작한 후에는 프로세스가 완료되거나 취소되기 전까지 삭제 이전에 사용자가 시작한 프로세스가 계속 실행될 수 있습니다.
다음 단계
- 직원 ID 제휴 사용자 및 데이터 삭제
- 직원 ID 제휴를 지원하는 Google Cloud 제품 알아보기
- 콘솔에 대한 사용자 액세스 설정(제휴)