직원 ID 제휴를 위한 SCIM 프로비저닝

ID 공급업체 (IdP)가 도메인 간 ID 관리 시스템 (SCIM)을 지원하는 경우 IdP를 구성하여 Google Cloud에서 사용자와 그룹을 프로비저닝하고 관리할 수 있습니다.

기능

직원 ID 제휴 SCIM 지원은 다음 기능을 제공합니다.

  • ID 동기화: 외부 IdP의 사용자 및 그룹을 Google Cloud 에 동기화하여 직원 ID를 전체적으로 파악합니다.
  • 클레임의 기본 소스: 직원 프로바이더에 SCIM이 사용 설정된 경우 Google Cloud 는 동기화된 SCIM 사용자 및 그룹을 IAM 정책 평가를 위한 사용자 속성 및 그룹 멤버십의 정보 소스로 사용합니다.
  • ID 자동 완성: Gemini Enterprise에서 액세스 권한을 부여하고 노트북, 에이전트와 같은 리소스를 공유할 때 사용자 및 그룹 자동 완성을 사용 설정합니다.

고려사항

직원 ID 제휴 SCIM 지원을 사용하는 경우 다음 사항을 고려하세요.

  • SCIM 테넌트를 구성하기 전에 직원 ID 풀 및 공급업체를 설정해야 합니다.
  • 각 직원 ID 풀은 단일 제공업체에 연결된 하나의 SCIM 테넌트만 지원합니다. 동일한 풀의 다른 제공업체에서는 SCIM 사용 (--scim-usage)을 사용 설정할 수 없습니다. 동일한 직원 ID 풀에서 새 SCIM 테넌트를 구성하려면 먼저 기존 테넌트를 삭제해야 합니다. SCIM 테넌트를 삭제하려면 다음 방법 중 하나를 사용하세요.
    • 소프트 삭제 (기본값): SCIM 테넌트를 삭제하면 30일의 소프트 삭제 기간이 시작됩니다. 이 기간 동안 테넌트는 숨겨져 사용할 수 없으며 동일한 직원 ID 풀에서 새 SCIM 테넌트를 만들 수 없습니다.
    • 하드 삭제: SCIM 테넌트를 영구적으로 즉시 삭제하려면 삭제 명령어와 함께 --hard-delete 플래그를 사용합니다. 이 작업은 되돌릴 수 없으며 30일 보관 기간을 기다리지 않고도 즉시 동일한 직원 ID 풀에서 새 SCIM 테넌트를 만들 수 있습니다. 또는 새 직원 ID 풀과 새 SCIM 테넌트를 만들거나 이전에 SCIM 테넌트로 구성된 적이 없는 직원 ID 풀을 사용할 수 있습니다.
  • SCIM 사용 모드 (--scim-usage):
    • enabled-for-groups (Gemini Enterprise): IAM 승인 및 정책 평가를 위해 SCIM 동기화 그룹을 사용합니다. 사용자 속성은 계속해서 로그인 토큰에서 가져옵니다. google.subject 및 google.group 매핑만 평가됩니다.
    • enabled-for-users-groups (Looker) (미리보기): SCIM 동기화 사용자 및 그룹 데이터를 IAM 승인 및 OAuth 로그인 워크플로의 클레임 소스로 사용합니다. google.subject, google.group, 구성된 모든 사용자 클레임 (예: google.display_name, google.profile_photo, google.email, google.posix_username, 맞춤 attribute.KEY)을 평가합니다.
  • 상호 배타성: --scim-usage=enabled-for-users-groups (미리보기) 설정은 추가 속성 (extra_attributes_oauth2_client) 및 확장 속성(extended_attributes_oauth2_client)과 상호 배타적입니다.
  • SCIM을 사용하는 경우 직원 ID 풀 프로바이더와 SCIM 테넌트 모두에서 속성을 매핑합니다. google.subject 속성은 동일한 ID를 고유하게 참조해야 합니다. --attribute-mapping 플래그를 사용하여 직원 ID 풀 공급업체에서 google.subject를 지정하고 --claim-mapping 플래그를 사용하여 SCIM 테넌트에서 지정합니다. 고유하지 않은 ID 값을 매핑하면 Google Cloud 에서 서로 다른 IdP ID를 동일한 ID로 간주할 수 있습니다. 따라서 한 사용자 또는 그룹 ID에 부여된 액세스 권한이 다른 ID에도 적용될 수 있지만, 한 ID의 액세스 권한을 취소해도 모든 ID의 액세스 권한이 취소되지 않을 수 있습니다.
  • 연결된 SCIM 테넌트가 없는 프로바이더에서 SCIM 사용을 사용 설정하면 Google Cloud 에서 해당 프로바이더의 SCIM 테넌트를 찾을 수 없으므로 로그인 시도가 실패합니다.
  • 고유성 적용: Google Cloud 는 SCIM 테넌트에서 google.subject (사용자) 및 google.group (그룹)에 매핑된 속성의 고유성을 검증하고 적용합니다. IdP에서 프로비저닝한 매핑된 속성으로 인해 동기화 중에 google.subject 또는 google.group 값이 중복되면 HTTP 409 Conflict 오류와 함께 프로비저닝이 실패합니다. 매핑된 속성이 null 또는 비어 있는 것으로 평가되면 프로비저닝이 HTTP 400 Bad Request 오류와 함께 실패합니다.
  • 속성 크기 제한: 직렬화된 매핑 사용자 속성 (google.group 제외)의 최대 크기는 16kB입니다. 매핑된 속성이 이 한도를 초과하면 로그인 시도가 실패합니다.
  • SCIM 토큰 한도: 각 SCIM 테넌트는 최대 2개의 SCIM 토큰을 지원합니다 (예: 무중단 토큰 순환 지원). 토큰이 두 개인 경우 새 토큰을 만들기 전에 기존 토큰을 삭제하세요.
  • SCIM API (iamscim.googleapis.com)에는 표준 IAM 리소스 API 할당량과 다른 비율 할당량이 적용됩니다. 기본적으로 쓰기 및 읽기 요청은 조직별로 분당 SCIM 테넌트당 3,000개 요청으로 제한됩니다. 자세한 내용은 할당량 및 한도를 참조하세요.

소유권 주장 매핑

SCIM을 구성할 때 SCIM 사용자 및 그룹 속성을 Google 속성에 매핑하도록 SCIM 테넌트에서 클레임 매핑 (--claim-mapping)을 정의합니다.

클레임 매핑에 지원되는 Google Cloud 속성

다음 표에는 Common Expression Language (CEL)를 사용하여 SCIM 테넌트 (--claim-mapping)에서 매핑할 수 있는 Google Cloud 속성이 나와 있습니다.

Google Cloud 속성 요구사항 설명 지원되는 표현식 및 한도
google.subject 필수

인증하는 사용자의 고유 식별자입니다.

google.subject를 채우는 데 사용되는 기본 IdP 속성은 공급업체 매핑 (--attribute-mapping)과 SCIM 테넌트 (--claim-mapping) 모두에서 동일해야 합니다. 이러한 매핑이 일치하지 않으면 사용자가 로그인할 수는 있지만 SCIM에서 프로비저닝된 그룹의 구성원으로 인식되지 않습니다.

다음 기본 표현식 (또는 .lowerAscii() 사용)으로 제한됩니다.
  • user.externalId
  • user.userName
  • user.emails[0].value

최대 길이: 127바이트

참고: 이 매핑은 SCIM 테넌트가 생성된 후에는 변경할 수 없습니다. 업데이트하려면 SCIM 테넌트를 하드 삭제하고 다시 만들어야 합니다.

google.group SCIM 그룹에 필수 SCIM을 사용하여 동기화된 그룹 멤버십의 고유 식별자입니다. 다음 기본 표현식 (또는 .lowerAscii() 사용)으로 제한됩니다.
  • group.externalId
  • group.displayName

참고: 이 매핑은 SCIM 테넌트가 생성된 후에는 변경할 수 없습니다. 업데이트하려면 SCIM 테넌트를 하드 삭제하고 다시 만들어야 합니다.

google.display_name 선택사항 Google Cloud 콘솔에서 로그인한 사용자의 이름을 설정하는 속성입니다. IAM 허용 정책에서는 사용할 수 없습니다. 문자열 속성 (예: user.displayName 또는 user.name.formatted)에 매핑됩니다. 최대 길이는 100바이트입니다.
google.profile_photo 선택사항 Google Cloud 콘솔에서 프로필 사진으로 표시되는 사용자의 썸네일 사진 URL입니다. IAM 허용 정책에서는 사용할 수 없습니다. 유효한 URL 문자열 (예: user.photos.filter(p, p.type == 'thumbnail')[0].value 또는 user.photos[0].value)로 평가되어야 합니다.
google.email 선택사항 IdP의 이메일 주소를 직원 ID 제휴 OAuth 클라이언트 통합을 사용하여 통합된 제품에 매핑하는 데 사용되는 속성입니다. IAM 허용 정책에서는 사용할 수 없습니다. 이메일 속성 (예: user.emails.filter(e, e.type == 'work')[0].value 또는 user.emails[0].value)에 매핑됩니다.
google.posix_username 선택사항 SSH-in-browser 및 직원 ID 제휴가 있는 OS 로그인에 사용되는 고유한 POSIX 호환 사용자 이름 문자열입니다. 이 속성은 IAM 허용 정책에서 사용할 수 없습니다. 최대 길이는 32자(영문 기준)입니다.
attribute.KEY 선택사항

IAM 허용 정책에서 승인 전략을 정의하는 데 사용할 수 있는 IdP의 맞춤 속성입니다. KEY을 사용하려는 속성 이름으로 바꿉니다.

예를 들어 costcenter = "1234"와 같은 맞춤 속성을 정의하고 principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workforcePools/WORKFORCE_POOL_ID/attribute.costcenter/1234를 사용하여 이를 참조할 수 있습니다. 이 주 구성원 식별자에 액세스 권한을 부여하면 해당 비용 센터로 IdP에 구성된 모든 ID에 액세스 권한이 부여됩니다.

최대 50개의 맞춤 속성 매핑 규칙 규칙당 최대 크기: 256자(영문 기준)

제공업체 SCIM 사용량 (--scim-usage)에 따른 동작

SCIM 클레임 매핑 평가는 직원 ID 풀 공급업체에 구성된 --scim-usage 모드에 따라 달라집니다.

  • enabled-for-groups (Gemini Enterprise): google.subject 및 google.group 매핑만 평가됩니다. --claim-mapping의 추가 사용자 클레임 매핑은 무시됩니다.
  • enabled-for-users-groups (Looker) (프리뷰): google.subject, google.group, 구성된 모든 사용자 클레임 (예: google.display_name, google.profile_photo, google.email, google.posix_username, 맞춤 attribute.<var>KEY</var>)을 평가합니다.

주제 일관성을 위한 매핑 예시

클레임 매핑에 지원되는 속성에 설명된 대로 google.subject를 채우는 데 사용되는 기본 IdP 속성은 공급자 매핑 (--attribute-mapping)과 SCIM 테넌트 (--claim-mapping) 모두에서 동일해야 합니다. 다음 표에는 참조 예가 나와 있습니다.

Google 속성 직원 ID 풀 공급업체 매핑 SCIM 테넌트 매핑 (SCIM)
google.subject assertion.oid (Entra ID) user.externalId
google.subject assertion.sub (Okta) user.externalId
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()

지원되는 엔드포인트 및 지원되지 않는 엔드포인트

다음 표준 SCIM 프로토콜 엔드포인트가 지원됩니다.

  • /Users: 사용자 리소스를 관리합니다. 지원되는 작업: Create, Get, Update, Delete, Patch, Put

  • /Groups: 그룹 리소스를 관리합니다. 지원되는 작업: Create, Get, Update, Delete, Patch 그룹에는 PUT 메서드가 지원되지 않습니다.

  • /Schemas: 스키마 정보를 가져옵니다.

  • /ServiceProviderConfig: 서비스 제공업체 구성을 검색합니다.

다음 SCIM 프로토콜 엔드포인트는 지원되지 않습니다.

  • /Me

  • /Bulk

  • /Search

  • /ResourceTypes

제한사항

다음 섹션에서는 직원 ID 제휴 SCIM 구현의 제한사항과 SCIM 사양 (RFC 7643 및 7644)과의 차이점을 설명합니다.

프로토콜 기능 제한사항

  • 필터 지원: /Users 또는 /Groups 엔드포인트를 사용하여 사용자 또는 그룹을 나열할 때 필터 표현식은 eq (같음) 연산자만 지원합니다. 여러 eq 필터를 and와 결합할 수 있습니다. co (포함) 또는 sw (다음으로 시작)과 같은 다른 SCIM 필터 연산자는 지원되지 않습니다.

  • 페이지로 나누기: IAM SCIM API는 사용자 또는 그룹을 나열하기 위한 표준 페이지로 나누기를 지원하지 않습니다.

    • startIndex: 이 매개변수는 항상 1입니다. startIndex에 제공하는 값과 관계없이 API는 최대 100개의 결과를 반환합니다.

    • itemsPerPage: 단일 응답에서 반환되는 최대 리소스 수는 100개입니다.

    • totalResults: API가 일치하는 리소스의 실제 총 개수를 반환하지 않습니다. 응답의 totalResults 필드는 항상 해당 응답에서 반환되는 항목 수와 같으며 최대 100개입니다.

  • 필터링 없이 그룹 가져오기 및 그룹 나열: GetGroup 및 ListGroups API가 빈 회원 목록을 반환합니다. 특정 그룹의 구성원을 가져오려면 구성원 필터와 함께 ListGroups API를 사용합니다.

  • 잘못된 토큰이 포함된 비규격 JSON 응답: 잘못된 API 토큰이 포함된 요청은 Google Cloud에서 HTTP 401 상태 코드를 반환합니다. 대답이 SCIM 사양에 따라 유효한 JSON이 아닙니다.

SCIM 동작 제한사항

  • 변경 불가능한 식별자: google.subject 또는 google.group에 매핑된 SCIM 속성의 값은 Google Cloud내에서 변경 불가능한 식별자로 처리됩니다. 이러한 값을 변경해야 하는 경우 IdP에서 사용자 또는 그룹을 영구적으로 삭제한 다음 새 값으로 다시 만들어야 합니다.

  • 고유하고 비어 있지 않은 식별자: Google Cloud 는 SCIM 테넌트에서 google.subject 및 google.group에 매핑된 값의 고유성을 적용합니다. google.subject 또는 google.group의 값이 중복되는 매핑된 속성을 동기화하면 HTTP 409 Conflict 오류가 발생합니다. null 또는 빈 값으로 평가되는 매핑된 속성은 HTTP 400 Bad Request 오류로 실패합니다.

  • 단일 이메일 요구사항: SCIM 동기화가 성공하려면 각 사용자에게 work 유형의 이메일 주소가 하나만 있어야 합니다. IdP에서 이메일을 여러 개 보내거나 제공된 단일 이메일이 work 유형이 아닌 경우 프로비저닝 또는 업데이트가 실패합니다.

  • 대소문자 구분 없는 변환: 제한된 Common Expression Language(CEL) 변환이 SCIM 클레임 매핑에 지원됩니다. user.userName 및 user.emails[0].value의 대소문자를 구분하지 않는 비교에는 .lowerAscii()만 지원됩니다.

속성 제한사항

다음 섹션에서는 사용자, 그룹, 엔터프라이즈 사용자 스키마 확장 프로그램의 속성 지원에 대해 설명합니다.

사용자 속성

다음 표에는 사용자 속성과 직원 ID 제휴 클레임에서의 사용 가능 여부가 나와 있습니다.

속성 하위 속성 SCIM 프로비저닝에서 지원됨 제한사항 --claim-mapping에서 지원됨
userName 해당 사항 없음 예 해당 사항 없음 예
name formatted, familyName, givenName, middleName, honorificPrefix, honorificSuffix 예 해당 사항 없음 예
displayName 해당 사항 없음 예 해당 사항 없음 예
nickName 해당 사항 없음 예 해당 사항 없음 예
profileUrl 해당 사항 없음 예 해당 사항 없음 예
title 해당 사항 없음 예 해당 사항 없음 예
userType 해당 사항 없음 예 해당 사항 없음 예
preferredLanguage 해당 사항 없음 예 해당 사항 없음 예
locale 해당 사항 없음 예 해당 사항 없음 예
timezone 해당 사항 없음 예 해당 사항 없음 예
active 해당 사항 없음 예 해당 사항 없음 예
password 해당 사항 없음 아니요 해당 사항 없음 아니요
emails display, type, value, primary 예 work 이메일 유형만 지원됩니다. 예
phoneNumbers display, type, value, primary 예 해당 사항 없음 예
ims display, type, value 예 해당 사항 없음 예
photos display, type, value 예 해당 사항 없음 예
addresses formatted, streetAddress, locality, region, postalCode, country 예 해당 사항 없음 예
groups 해당 사항 없음 아니요 해당 사항 없음 아니요
entitlements display, type, value 예 해당 사항 없음 예
roles type, value 예 display은 지원되지 않습니다. 예
x509Certificates type, value 예 display은 지원되지 않습니다. 아니요

그룹 속성

다음 표에는 그룹 속성과 직원 ID 제휴 클레임에서의 사용 가능 여부가 나와 있습니다.

속성 지원되는 하위 속성 --claim-mapping에서 지원됨
displayName 해당 사항 없음 예
externalId 해당 사항 없음 예
members value, type, $ref, display 아니요

엔터프라이즈 사용자 스키마 확장 프로그램 속성

다음 표에는 엔터프라이즈 사용자 스키마 확장 지원에 관한 세부정보가 나와 있습니다.

속성 지원되는 하위 속성 --claim-mapping에서 지원됨
employeeNumber 해당 사항 없음 예
costCenter 해당 사항 없음 예
organization 해당 사항 없음 예
division 해당 사항 없음 예
department 해당 사항 없음 예
manager value, $ref, displayName 예 ($ref은 SCIM 프로비저닝에서만 지원되며 --claim-mapping에서는 지원되지 않음)

다음 단계