이 문서에서는 직원 ID 풀에서 SCIM 테넌트를 구성하는 방법을 설명합니다. SCIM에 대해 자세히 알아보려면 직원 ID 제휴를 위한 SCIM 프로비저닝을 참고하세요.
각 직원 ID 풀은 하나의 SCIM 테넌트만 지원합니다. 이미 SCIM 테넌트가 있는 풀에서 새 SCIM 테넌트를 구성하려면 먼저 기존 테넌트를 하드 삭제해야 합니다.
SCIM 테넌트의 --claim-mapping 플래그에는 특정 Common Expression Language(CEL) 표현식만 포함될 수 있습니다. 지원되는 표현식을 알아보려면 토큰 및 SCIM 속성 매핑을 참조하세요.
도메인 간 ID 관리 시스템 (SCIM)을 구성하려면 다음을 수행하세요.
Google Cloud에서 SCIM 테넌트 및 토큰 구성
Google Cloud에서 SCIM 테넌트를 구성하려면 다음을 수행합니다.
-
SCIM 테넌트를 만듭니다.
gcloud iam workforce-pools providers scim-tenants create SCIM_TENANT_ID \ --workforce-pool="WORKFORCE_POOL_ID" \ --provider="PROVIDER_ID" \ --display-name="SCIM_TENANT_DISPLAY_NAME" \ --description="SCIM_TENANT_DESCRIPTION" \ --claim-mapping="CLAIM_MAPPING" \ --location="global"다음을 바꿉니다.
SCIM_TENANT_ID: SCIM 테넌트의 ID입니다.WORKFORCE_POOL_ID: 이 문서 앞부분에서 만든 직원 풀의 ID입니다.PROVIDER_ID: 이 문서 앞부분에서 만든 직원 ID 풀 공급업체의 ID입니다.SCIM_TENANT_DISPLAY_NAME: SCIM 테넌트의 표시 이름입니다.SCIM_TENANT_DESCRIPTION: SCIM 테넌트에 대한 설명입니다.CLAIM_MAPPING: 속성 매핑의 쉼표로 구분된 목록입니다. 매핑 속성의 확장 목록은 토큰 및 SCIM 속성 매핑을 참고하세요. Gemini Enterprise에는 다음 매핑이 권장됩니다.google.subject=user.emails[0].value.lowerAscii(),google.group=group.displayNameSCIM 테넌트에서 매핑하는
google.subject속성은--attribute-mapping플래그를 사용하여 직원 ID 풀 프로바이더의google.subject속성에 매핑된 동일한 ID를 고유하게 참조해야 합니다. SCIM 테넌트가 생성된 후에는 클레임 매핑을 업데이트할 수 없습니다. 이를 대체하려면 SCIM 테넌트를 하드 삭제하고 즉시 새 테넌트를 만들면 됩니다. SCIM 사용 시 고려사항에 대해 자세히 알아보려면 SCIM 지원을 참고하세요.
-
명령어가 완료되면 다음을 수행합니다.
-
출력의
baseUri필드에https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID형식으로 지정된 전체 URI를 저장합니다. 이 URI를 IdP에 제공해야 합니다. -
또한 URI에서
SCIM_TENANT_UID만 저장합니다. 이 UID는 이 문서 뒷부분에서 IAM 허용 정책을 SCIM 테넌트에 설정하는 데 필요합니다.
-
출력의
-
SCIM 토큰을 만듭니다.
gcloud iam workforce-pools providers scim-tenants tokens create SCIM_TOKEN_ID \ --display-name DISPLAY_NAME \ --scim-tenant SCIM_TENANT_ID \ --workforce-pool WORKFORCE_POOL_ID \ --provider PROVIDER_ID \ --location global다음을 바꿉니다.
SCIM_TOKEN_ID: SCIM 토큰 ID입니다.DISPLAY_NAME: SCIM 토큰의 표시 이름입니다.WORKFORCE_POOL_ID: 직원 풀의 ID입니다.SCIM_TENANT_ID: SCIM 테넌트의 ID입니다.PROVIDER_ID: 직원 ID 풀 공급업체의 ID입니다.
-
gcloud iam workforce-pools providers scim-tenants tokens create명령어가 완료되면 다음을 수행합니다.-
출력에서
SCIM_TOKEN값을securityToken필드에 저장합니다. 이 보안 토큰을 IdP에 제공해야 합니다. 보안 토큰은 이 출력에만 표시되며 분실한 경우 새 SCIM 토큰을 만들어야 합니다. -
조직 정책에서
SCIM_TOKEN을 거부했는지 확인하려면 다음 명령어를 실행합니다.curl -v -H "Authorization: Bearer SCIM_TOKEN" https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID/Users
권한 관련 오류가 표시되면서 명령어가 실패하면 이후 단계에 설명된
gcloud organizations add-iam-policy-binding을 실행합니다. 명령어가 성공하면 이 단계를 건너뛸 수 있습니다.
-
-
SCIM 테넌트 및 토큰에 IAM 허용 정책을 설정합니다. 권한 관련 오류가 표시되면서 이전 단계의
curl명령어가 실패하면 다음 명령어를 실행해야 합니다.gcloud organizations add-iam-policy-binding ORGANIZATION_ID \ --member=serviceAccount:SERVICE_AGENT_EMAIL \ --role roles/iam.scimSyncer다음을 바꿉니다.
- ORGANIZATION_ID: 조직의 ID입니다.
- SERVICE_AGENT_EMAIL: 서비스 에이전트의 이메일 주소입니다. 이메일 주소는
o-ORGANIZATION_ID-SCIM_TENANT_UID@gcp-sa-iamscim.iam.gserviceaccount.com형식입니다. SCIM 테넌트를 만들면 SCIM_TENANT_UID가 반환됩니다.
IdP에서 그룹을 프로비저닝할 때 displayName 필드에 제공된 각 그룹의 표시 이름이 SCIM 테넌트 내에서 고유해야 합니다. Microsoft Entra ID의 그룹 및 SCIM을 자세히 알아보려면 그룹을 참조하세요.
Okta에서 SCIM 구성
기존 Okta 애플리케이션에서 Okta의 SCIM을 구성하려면 다음을 수행합니다.
- Okta 관리 콘솔에 로그인합니다.
- 애플리케이션 > 애플리케이션으로 이동합니다.
애플리케이션을 선택하거나 만듭니다.
기존 애플리케이션을 선택하려면 다음을 수행합니다.
- Google Cloud 직원 ID 제휴 템플릿을 사용하여 만든 애플리케이션의 이름을 클릭합니다.
-
일반 탭에서 다음을 수행합니다.
- 앱 설정 창에서 수정을 클릭합니다.
- 테넌트 필드에 gcloud CLI에서 가져온 테넌트 ID를 입력합니다.
- 완료를 클릭합니다.
새 애플리케이션을 만들려면 다음 단계를 따르세요.
- 앱 카탈로그 둘러보기를 클릭합니다.
- 검색 필드에 Google Cloud 직원 ID 제휴를 입력한 다음 검색 결과에서 Google Cloud 직원 ID 제휴 통합을 선택합니다.
통합 추가를 클릭합니다.
- 애플리케이션 필드에 앱 이름을 입력합니다.
- 테넌트 필드에 gcloud CLI에서 가져온 테넌트 ID를 입력합니다.
- 완료를 클릭합니다.
-
프로비저닝 탭에서 다음을 수행합니다.
통합 창에서 수정을 클릭합니다.
- API 토큰 필드에 Google Cloud에서 가져온 SCIM 토큰을 입력합니다.
- API 토큰의 유효성을 확인하려면 사용자 인증 정보 테스트를 클릭합니다.
- 그룹 가져오기를 선택합니다.
- 저장을 클릭합니다.
앱 창에서 수정을 클릭합니다.
- 사용자 만들기, 사용자 속성 업데이트, 사용자 비활성화를 선택합니다.
- 저장을 클릭합니다.
SCIM을 사용 설정하도록 공급업체 업데이트
공급업체에 SCIM을 사용 설정하려면 다음 단계를 따르세요.
OIDC
gcloud iam workforce-pools providers update-oidc PROVIDER_ID \
--workforce-pool=WORKFORCE_POOL_ID \
--location=LOCATION \
--scim-usage=enabled-for-groups
다음을 바꿉니다.
PROVIDER_ID: 직원 ID 풀 공급업체의 ID입니다.WORKFORCE_POOL_ID: 직원 풀의 ID입니다.LOCATION: 직원 풀의 위치입니다.
SAML
gcloud iam workforce-pools providers update-saml PROVIDER_ID \
--workforce-pool=WORKFORCE_POOL_ID \
--location=LOCATION \
--scim-usage=enabled-for-groups
다음을 바꿉니다.
PROVIDER_ID: 직원 ID 풀 공급업체의 ID입니다.WORKFORCE_POOL_ID: 직원 풀의 ID입니다.LOCATION: 직원 풀의 위치입니다.
SCIM 동기화를 확인하려면 SCIM 동기화 확인을 참고하세요.
토큰 및 SCIM 속성 매핑
직원 ID 풀 프로바이더와 프로바이더에 대해 구성된 SCIM 테넌트 모두에서 속성을 일관되게 매핑해야 합니다. 직원 ID 풀 프로바이더의 경우 --attribute-mapping 플래그를 사용하고 SCIM 테넌트의 경우 --claim-mapping 플래그를 사용합니다. 사용자의 google.subject에 매핑된 IdP 속성은 토큰에 정의되었는지 SCIM 매핑에 정의되었는지에 관계없이 동일한 ID를 고유하게 참조해야 합니다. SCIM을 사용할 때 속성을 매핑하는 방법을 자세히 알아보려면 SCIM 지원 섹션을 참조하세요.
다음 표에는 토큰 클레임의 속성과 SCIM 속성을 매핑하는 방법이 나와 있습니다.
| Google 속성 | 직원 ID 풀 공급업체 매핑 | SCIM 테넌트 매핑 |
|---|---|---|
google.subject |
assertion.sub |
user.externalId |
google.subject |
assertion.subject |
user.userName |
google.subject |
assertion.subject.lowerAscii() |
user.userName.lowerAscii() |
google.subject |
assertion.preferred_username |
user.userName |
google.subject |
assertion.preferred_username.lowerAscii() |
user.userName.lowerAscii() |
google.subject |
assertion.email |
user.emails[0].value |
google.subject |
assertion.email.lowerAscii() |
user.emails[0].value.lowerAscii() |
google.group: 공급업체를 --scim-usage=enabled-for-groups로 업데이트하도록 지원 |
N/A |
group.displayName |
SCIM 동기화 확인
SCIM을 구성한 후 curl를 사용하여 사용자와 그룹이 Google Cloud에 올바르게 동기화되는지 확인할 수 있습니다. 이러한 명령어를 사용하려면 유효한 SCIM 토큰과 SCIM 테넌트 ID가 필요합니다.
사용자 동기화 확인
사용자가 올바르게 동기화되었는지 확인하려면 다음 필터를 사용하여 사용자의 userName을 검색합니다.
curl -H "Authorization: Bearer SCIM_TOKEN" \ "https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID/Users?filter=userName%20eq%20%22USER_NAME%22"
응답 예:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"totalResults": 1,
"Resources": [
{
"id": "USER_ID",
"userName": "USER_NAME",
...
}
]
}
그룹 동기화 확인
그룹이 올바르게 동기화되었는지 확인하려면 다음 필터를 사용하여 그룹의 displayName을 검색하세요.
curl -H "Authorization: Bearer SCIM_TOKEN" \ "https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID/Groups?filter=displayName%20eq%20%22GROUP_NAME%22"
응답 예:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"totalResults": 1,
"Resources": [
{
"id": "GROUP_ID",
"displayName": "GROUP_NAME",
...
}
]
}
그룹 멤버십 확인
특정 사용자가 그룹의 구성원인지 확인하려면 그룹 ID와 사용자 ID를 모두 지정하는 필터를 사용하세요.
curl -H "Authorization: Bearer SCIM_TOKEN" \ "https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID/Groups?filter=id%20eq%20%22GROUP_ID%22%20and%20members%20eq%20%22USER_ID%22"
사용자가 회원인 경우의 응답 예시:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"totalResults": 1,
"Resources": [
{
"id": "GROUP_ID",
"displayName": "GROUP_NAME",
...
}
]
}
사용자가 회원이 아닌 경우의 응답 예시:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"totalResults": 0,
"Resources": []
}
참고: GROUP_ID 및 USER_ID을 가져오려면 먼저 displayName 및 userName 필터를 사용하여 그룹과 사용자를 찾으세요. ID는 응답의 id 필드에 반환됩니다. SCIM_TOKEN, SCIM_TENANT_UID, USER_NAME, GROUP_NAME, GROUP_ID, USER_ID을 실제 값으로 바꿉니다.
SCIM 테넌트 강제 삭제
SCIM 테넌트를 강제 삭제하려면 다음 단계를 따르세요.
- 제공업체에
--scim-usage=enabled-for-groups가 설정된 경우 제공업체 구성에서 사용 중지합니다.gcloud iam workforce-pools providers update-oidc PROVIDER_ID \ --workforce-pool=WORKFORCE_POOL_ID \ --location=LOCATION \ --scim-usage=SCIM_USAGE_UNSPECIFIED다음을 바꿉니다.
PROVIDER_ID: 직원 ID 풀 공급업체의 ID입니다.WORKFORCE_POOL_ID: 직원 풀의 ID입니다.LOCATION: 직원 풀의 위치입니다.
- SCIM 테넌트를 삭제합니다.
gcloud iam workforce-pools providers scim-tenants delete SCIM_TENANT_ID \ --workforce-pool=WORKFORCE_POOL_ID \ --provider=PROVIDER_ID \ --hard-delete \ --location=global다음을 바꿉니다.
SCIM_TENANT_ID: 삭제할 SCIM 테넌트의 ID입니다.WORKFORCE_POOL_ID: 직원 풀의 ID입니다.PROVIDER_ID: 직원 ID 풀 공급업체의 ID입니다.
다음 단계
- 직원 ID 제휴 사용자 및 데이터 삭제
- 직원 ID 제휴를 지원하는 Google Cloud 제품 알아보기
- 콘솔에 대한 사용자 액세스 설정(제휴)