SCIM 프로비저닝 기본: 흐름, 필드, 안전한 테스트
IdP와 사용자를 동기화하기 위한 SCIM 프로비저닝 기초: 생성·업데이트·비활성화 흐름, 필수 필드, 그리고 사람을 잠그지 않는 안전한 테스트 단계.

SCIM 프로비저닝이란 무엇이며 팀들이 왜 사용하는가
SCIM 프로비저닝은 간단하지만 고통스러운 문제를 해결합니다: 앱의 사용자 목록이 점점 IdP(Identity Provider)의 목록과 일치하지 않게 되는 문제입니다. 누군가 채용되거나, 이름이 바뀌거나, 팀을 옮기거나, 퇴사하면 앱이 그 변화를 즉시 반영하지 못하는 일이 발생합니다.
프로비저닝은 IdP가 사용자 변경사항을 앱으로 자동으로 푸시하는 것을 의미합니다. 관리자가 수동으로 사용자를 초대하고 프로필을 업데이트하며 접근을 제거하는 대신, 변경은 IdP에서 시작되고 앱이 이를 따릅니다.
초대와 오프보딩이 수동일 때 같은 실패가 반복됩니다. 신규 채용자는 초대가 누락되어 접근을 기다리고, 퇴사자는 오프보딩이 빠져 접근 권한을 유지합니다. 이름, 이메일, 부서 정보가 도구별로 어긋나고 감사가 어려워집니다. 지원 티켓이 쌓입니다(로그인 불가, 잘못된 권한, 오래된 데이터 노출 등).
SCIM은 내부 도구, 관리자 패널, 고객 포털처럼 HR과 IT의 결정과 접근을 일치시켜야 하는 곳에서 특히 적합합니다.
SSO만으로는 보통 충분하지 않습니다. SSO는 "사용자가 어떻게 로그인하나?"에 답합니다. SCIM은 "이 사용자가 앱에 존재해야 하나, 그리고 지금 계정은 어떻게 보여야 하나?"에 답합니다.
핵심 아이디어: 사용자에 대한 단일 출처(source of truth)
한 가지 규칙으로 시작하세요: 사용자에 대해 '옳은' 정보를 가진 단일 시스템을 선택하세요. 대부분 회사에서는 그 시스템이 IdP(Okta, Azure AD, Google Workspace)입니다.
IdP는 사용자를 생성하고 비활성화하며 그룹에 할당하는 곳입니다. 서비스 공급자(SP)는 그 결정을 받아 자체 사용자 데이터베이스에 적용하는 앱입니다. SaaS 제품일 수도 있고, 자체 제작한 내부 앱일 수도 있습니다.
IdP를 진실의 출처로 정하면 앱은 그것을 거스를 이유가 없습니다. 관리자가 IdP에서 사용자를 비활성화하면, 앱은 로컬에서 누군가 재활성화하려 해도 그 사용자를 비활성으로 처리해야 합니다. 그룹이 접근을 좌우할 때도 마찬가지입니다.
프로비저닝은 보통 푸시 기반입니다: IdP가 무언가 일어날 때 앱으로 변경을 보냅니다. 이는 주기적으로 변경을 조회하는 풀 기반 디렉터리 동기화와 다릅니다. 푸시는 더 빠르고 명확하지만 실수가 즉시 반영될 수 있어 기본값과 매칭 규칙이 중요합니다.
일반적인 활동은 HR과 IT 이벤트(신규 채용, 역할 변경, 휴직, 해고)에 의해 발생합니다. 상태와 그룹 할당을 IdP에서 관리하면 중복, "유령" 계정, 팀 이동 시 발생하는 접근 공백을 줄일 수 있습니다.
사용자 수명주기 흐름: 생성, 업데이트, 비활성화
대부분의 프로비저닝 설정은 하나의 약속으로 귀결됩니다: IdP가 누가 존재하고 로그인할 수 있는지를 앱에 알려준다는 것. 앱은 몇 가지 수명주기 상태를 일관되게 처리해야 합니다.
중요한 세 가지 상태
대부분의 팀은 세 가지 상태를 생각합니다:
- Active(활성): 사용자가 인증하고 제품을 사용할 수 있습니다.
- Inactive(비활성/비활성화): 계정은 남아 있지만 접근이 차단됩니다.
- Deleted(삭제): 레코드가 제거됩니다(많은 앱이 하드 삭제를 피하고 이를 비활성으로 처리합니다).
**Create(생성)**는 보통 관리자가 IdP에서 앱을 해당 인물에게 할당하거나 동기화된 그룹에 가입시킬 때 발생합니다. SCIM 엔드포인트는 나중에 그 사람을 매칭하는 데 필요한 정보를 저장해야 합니다: IdP로부터 오는 안정적인 고유 ID(종종 SCIM의 id)와 로그인 값(일반적으로 userName). 앱에서 이메일을 요구한다면 매핑에 명시해 생성이 중간에 실패하지 않도록 하세요.
**Update(업데이트)**는 IdP가 프로필 필드나 할당을 변경할 때 발생합니다. 이름, 이메일, 부서 등 식별 및 커뮤니케이션 필드를 변경하되 접근 권한이 예기치 않게 바뀌지 않도록 하세요. 가장 민감한 필드는 로그인 식별자입니다. userName이 변경될 수 있다면 불변 식별자를 사용해 같은 사람을 매칭해야 합니다. 그렇지 않으면 중복이 생깁니다.
**Deactivate(비활성화)**는 비즈니스 데이터를 잃지 않으면서 접근을 신속히 차단해야 합니다. IdP는 일반적으로 active=false를 설정합니다. 앱은 이를 "로그인 불가, API 사용 불가"로 처리하면서 소유한 레코드, 감사 기록, 참조는 보존해야 합니다.
**Reactivate(재활성화)**는 그 반대입니다. active=true는 같은 계정에 대한 접근을 복원해야 하며 새 계정을 만들면 안 됩니다. IdP가 동일인이라고 판단하면 앱도 동일인으로 처리해야 합니다. 이 사이에 이메일이나 표시명이 바뀌었더라도 마찬가지입니다.
놀라움을 피하는 필수 필드와 속성 매핑
프로비저닝이 제대로 작동하려면 앱과 IdP가 두 가지에 동의해야 합니다: 사용자를 어떻게 식별할지, 그리고 어떤 속성을 IdP가 덮어쓸 수 있는지.
보통 필요한 최소 항목
SCIM은 유연하지만 대부분의 앱은 동일한 핵심 속성에 의존합니다:
- 안정적 고유 식별자 (SCIM 리소스
id, 종종 IdP의externalId와 함께 사용) - 이메일 또는 사용자명 (보통
userName, 로그인에 사용됨) - 이름 (
name.givenName과name.familyName또는displayName) - 활성 상태 (
active: true/false) - 타임스탬프나 메타데이터(선택적이지만 감사 및 디버깅에 유용)
식별자가 핵심입니다. 이메일은 고유해 보이지만 변경됩니다. 이메일만으로 매칭하면 결혼, 리브랜딩, 도메인 이전 등으로 인해 IdP가 기존 사용자를 업데이트하지 않고 새 사용자를 만든 것처럼 보일 수 있습니다. 이것이 중복으로 가는 흔한 경로입니다.
IdP가 덮어쓸 수 있는 항목을 결정하세요
명확한 규칙을 정하세요: 어떤 필드는 IdP 소유(IdP가 항상 우선)이고 어떤 필드는 앱 소유(앱에서 변경해도 덮어쓰지 않음)인지.
일반적이고 안전한 분할 예시:
- IdP 소유:
active, 이메일/사용자명, given 및 family name,displayName - 앱 소유: 앱 특정 프로필 필드(환경설정, 내부 메모 등)
앱에서 사용자가 이름을 편집할 수 있게 한다면, 그 편집이 유지될지 SCIM 업데이트 때 덮어쓸지 결정하세요. 어느 쪽이든 예측 가능해야 합니다.
누락되거나 엉성한 데이터 처리
빈 값과 일관성 없는 포맷을 예상하세요. 일부 디렉터리는 displayName만 보내고, 다른 곳은 given/family name만 보냅니다. 실용적인 대책은 필요할 때 given과 family name으로 displayName을 구성하고, 성이 없는 경우도 우아하게 처리하는 것입니다.
중요 필드는 검증하세요. userName이 비어 있거나 로그인에 이메일이 필요하지만 이메일이 아닌 값이 들어오면 명확한 오류를 반환하고 로그를 남기세요. 로그인 불가능한 사용자를 조용히 생성하면 느린 장애로 이어집니다.
계정 매칭 방식과 중복이 발생하는 이유
"매칭"은 IdP와 앱이 두 레코드가 동일인임에 동의하는 경우입니다. 대부분의 프로비저닝 문제는 IdP가 업데이트를 보낼 때 앱이 기존 사용자를 찾기 위해 어떤 필드를 사용하는지에 달려 있습니다.
무엇으로 매칭해야 하는가
가장 먼저 안정적이고 사람이 바꾸기 어려운 식별자로 매칭하세요. 이메일과 사용자명은 프로필 데이터로 취급해 변경 가능하다고 생각하세요.
일반적인 매칭 키(신뢰도 높은 순):
- IdP의 불변 외부 ID(immutable external ID)
- SCIM
id(앱 내에서 사용자별로 안정적) - 이메일(유용하지만 변경 가능)
- 사용자명(종종 이름 변경, 재사용 또는 포맷 차이가 있음)
앱이 이메일만으로 매칭하면 이메일 변경이 새 인물로 보이며 중복을 만듭니다. 대신 외부 ID를 기본 키로 사용하고 이메일은 식별을 바꾸지 않도록 업데이트만 허용하세요.
중복이 발생하는 이유
중복은 보통 세 가지 상황에서 나타납니다:
- 앱이 명확한 매칭을 반환하지 않아 IdP가 "생성(create)"을 보냄(필수 속성 누락 또는 매핑 실수로 인해).
- 앱이 이메일을 고유 식별자로 취급해 이메일 변경이 두 번째 계정을 만듦.
- 동일한 사람이 두 경로에서 프로비저닝됨(두 IdP 또는 수동 초대 + SCIM).
충돌 업데이트를 줄이려면 핵심 프로필 필드에 대해 하나의 소유자를 정하세요. IdP가 이름, 이메일, active 상태를 소유하면 앱 내 수동 수정을 그 필드에 의존하지 않게 하거나 "IdP가 관리"된다고 명확히 표시하세요.
만약 두 IdP 사용자가 하나의 앱 사용자를 가리키게 된다면 자동 병합하지 마세요. 해당 계정에 대해 SCIM을 일시 중지하고, 어떤 IdP 정체성이 올바른지 결정한 뒤 외부 ID로 재연결하고 잘못된 것을 비활성화하세요. 이렇게 하면 감사 기록이 일관성 있게 유지됩니다.
그룹, 역할, 접근: 규칙을 예측 가능하게 유지하기
SCIM이 사용자와 그룹을 보내기 시작하면 가장 큰 위험은 놀라운 접근 권한 부여입니다. 모델을 단순하게 유지하세요: IdP 그룹을 기준으로 접근을 부여하거나, 앱 내부에서 관리하는 역할을 기준으로 접근을 부여하세요. 둘을 명확한 규칙 없이 섞으면 "왜 권한이 생겼지?"라는 사건이 생깁니다.
그룹 기반 접근은 이미 관리자가 팀 멤버십을 관리하는 IdP가 있을 때 잘 작동합니다. 역할 기반 접근은 앱 소유자가 IdP를 건드리지 않고 권한을 미세 조정할 때 더 적합합니다. 둘을 병용해야 한다면 충돌 시 누가 우선하는지 정의하세요.
기본값은 보수적으로 두세요. 그룹 데이터가 지연되거나 누락되면(첫 동기화 중에 흔함) 계정을 생성하더라도 민감한 접근 권한은 부여하지 마세요. "그룹 없음"을 추측하지 말고 "접근 없음"으로 처리하세요.
예측 가능한 규칙 세트:
- 사용자 생성: 최소 권한의 기본 역할을 할당하거나 역할 없음.
- 그룹 추가: 해당 그룹에 연결된 접근 부여.
- 그룹 제거: 해당 접근 즉시 제거.
- 사용자 비활성화: 그룹과 상관없이 로그인 차단 및 접근 철회.
- 사용자 재활성화: 현재 그룹 멤버십에 따라 접근만 복원.
그룹 제거와 비활성화는 다릅니다. 그룹 제거는 다른 그룹에 속해 있으면 계정을 계속 사용할 수 있게 권한을 줄이는 것이고, 비활성화는 오프보딩을 위한 완전한 차단입니다.
문서를 짧지만 구체적으로 유지하세요: 어떤 그룹이 어떤 권한으로 매핑되는지, 그룹이 없을 때 어떻게 되는지, 그룹 변경 권한은 IT와 앱 소유자 중 누가 가지는지, 변경이 반영되는 대략적인 시간 등.
단계별: 사람을 잠그지 않고 SCIM 테스트하는 방법
분리된 비프로덕션 환경(별도 테넌트, 워크스페이스 또는 스테이징 인스턴스)에서 깨끗한 디렉터리와 몇 개의 테스트 계정으로 시작하세요. 먼저 그곳에서 프로비저닝을 켭니다.
연결하기 전에 SCIM으로 관리되지 않는 브레이크글래스 관리자 계정을 만드세요. 강력한 비밀번호를 설정하고 IdP의 SCIM 할당에서 제외하세요. 프로비저닝이 정상 관리자 접근을 비활성화했을 때 복구할 수 있는 방법입니다.
작은 파일럿 그룹(2~5명)을 사용하세요. 관리자 1명과 일반 사용자 1명을 포함하세요. 파일럿이 완전히 예상대로 동작할 때까지 전체 회사에 프로비저닝을 적용하지 마세요.
위험한 부분을 점검하는 간단한 테스트 플랜:
- Create(생성): IdP에서 새 테스트 사용자를 할당하고 앱에 올바른 이름, 이메일, 상태로 계정이 생성되는지 확인하세요.
- Update(업데이트): 필드 하나(종종 이메일)를 변경하고 앱이 같은 사용자를 업데이트하는지, 중복을 만들지 않는지 확인하세요.
- Deactivate(비활성화): 할당을 제거하거나 사용자를 비활성화하고 앱이 접근을 차단하되 비즈니스 데이터를 삭제하지 않는지 확인하세요.
- Reactivate(재활성화): 사용자를 다시 할당하고 같은 계정이 재활성화되는지 확인하세요.
- 반복: 동일한 단계를 반복해 "처음 실행만" 발생하는 동작을 잡아내세요.
UI만 믿지 마세요. IdP와 앱 양쪽에서 SCIM 로그를 확인하고 타임스탬프(언제 IdP가 변경을 보냈는지, 언제 앱이 처리했는지, 어떤 필드가 변경되었는지)를 비교하세요.
어떤 단계에서든 두 번째 계정이 생성되거나 잘못된 사용자가 비활성화되거나 관리자 접근이 사라지면 롤아웃을 중단하고 매칭과 속성 매핑을 수정한 뒤 파일럿을 넘기세요.
잠금 또는 혼란스러운 디렉터리를 초래하는 흔한 실수
대부분의 문제는 "SCIM 자체의 버그"가 아닙니다. 설정 중엔 사소해 보였던 가정이 규모가 커지면서 깨지는 경우가 많습니다. 매칭 규칙과 기본값이 커넥터보다 더 중요합니다.
보통 잠금을 유발하는 실수
일반적인 패턴:
- 느슨한 매칭(예: 이메일만으로 매칭하거나 동일 식별자를 가진 복수 사용자를 허용).
- 이메일을 영구 ID로 취급(이메일은 이름 변경, 마이그레이션, 재사용이 발생함).
- SCIM이 수동 수정을 덮어써도 아무도 모르게 내버려 둠(IdP는 자신의 관점을 계속 재적용함).
- 생성 시 광범위한 접근 권한을 기본으로 부여하고 나중에 조정하지 않음.
- 파일럿 전에 전체 사용자 대상 프로비저닝을 켜 한 매핑 실수가 전체 회사에 영향을 줌.
실제 실패 시나리오 예: 도메인 변경 중 IT가 이메일을 일괄 변경하면 앱이 이메일로 매칭할 경우 기존 계정을 찾지 못해 새 계정을 만들고, 기존 계정을 비활성화합니다. 결과적으로 사용자는 두 개의 프로필과 깨진 이력, 그리고 적절한 접근을 잃게 됩니다.
문제를 피하는 방법
IdP의 불변 사용자 ID 같은 안정적인 고유 식별자로 매칭하고 이메일은 변경 가능한 값으로 다루세요.
앱에서 누가 사용자 필드를 편집할 수 있는지 결정하세요. SCIM이 진실의 출처라면 IdP 소유 필드에 대해 수동 편집을 차단하거나 곧 덮어써질 것임을 명확히 표시하세요.
작은 파일럿과 최소 권한 기본값으로 시작하세요. 흐름을 신뢰한 뒤 권한을 추가하는 편이, 과다 권한 부여나 잘못된 비활성화 이후 정리하는 것보다 쉽습니다.
더 많은 사용자에게 SCIM을 적용하기 전에 확인할 빠른 체크리스트
파일럿을 넘기기 전에 전체 수명주기(생성, 같은 계정의 업데이트, 접근 제거)를 검증하세요.
IdP에서 실제 직원이 아닌 새로운 테스트 ID 하나를 만들어 프로비저닝하고 앱에서 예상되는 사용자명, 이메일, 표시명, 상태로 계정이 나타나는지 확인하세요.
그 다음 변경 테스트를 실행하세요. IdP에서 이름과 이메일을 업데이트하고 앱에서 한 사용자 레코드만 업데이트되는지(두 번째 사용자가 생성되지 않는지) 확인하세요.
마지막으로 제거 및 복구를 테스트하세요. IdP에서 사용자를 비활성화하고 로그인 불가 및 접근이 제거되는지 확인한 다음 재활성화해 권한이 예측 가능하게(올바른 역할·그룹, 관리자 권한이 우연히 부여되지 않음) 복원되는지 확인하세요.
간단한 고-라이브 체크리스트:
- 신규 사용자가 올바른 주요 필드로 정확히 프로비저닝되고 올바른 접근 상태로 시작한다.
- 프로필 변경이 같은 사람을 업데이트한다(중복 없음).
- 비활성화가 로그인 차단 및 접근 제거를 빠르게 수행한다.
- 재활성화가 안전하게 접근을 복원한다.
- 관리자 복구 수단 존재(브레이크글래스 관리자, SCIM 일시중지 기능, 최근 변경의 감사 기록).
현실적인 예: 팀원 온보딩과 오프보딩
예를 들어 직원 200명 규모의 회사가 IdP와 SCIM으로 내부 도구 접근을 관리한다고 가정합니다.
월요일에 Maya가 Sales Ops에 합류합니다. IT가 IdP에서 앱을 Maya에게 할당하면 SCIM이 **Create(생성)**을 전송합니다. 앱에 새로운 사용자가 올바른 고유 식별자, 이메일, "Sales Ops" 부서 값으로 나타납니다. 그룹이 접근을 부여한다면 앱은 해당 그룹 멤버십을 받아 올바른 역할을 부여합니다.
목요일에 Maya가 RevOps로 이동합니다. 이것은 **Update(업데이트)**를 촉발합니다. Maya는 같은 사람(동일한 외부 ID)이지만 속성이 변경됩니다. 권한이 부서나 그룹에 따라 달라진다면 이때 실수가 드러나므로 즉시 확인하세요.
월말에 Maya가 퇴사하면 IdP가 계정을 비활성화하거나 앱 할당을 제거하고 SCIM이 Deactivate(비활성화)(active=false 같은 업데이트)를 보냅니다. Maya는 로그인할 수 없지만 과거 데이터는 비즈니스 소유로 남습니다.
관리자는 빨리 검증할 수 있습니다:
- 생성: 사용자가 한 번만 존재하고 로그인할 수 있으며 예상되는 기본 역할을 받음.
- 업데이트: 같은 사용자 레코드가 업데이트되어 중복이 없음.
- 비활성화: 로그인 차단, 세션 종료, API 접근 불가, 감사 기록 보존.
- 감사: SCIM 이벤트는 타임스탬프와 결과를 포함해 기록됨.
계약직에 임시 접근이 필요하면 Maya의 계정을 재사용하지 마세요. IdP에 별도 계약자 정체성을 생성하고 기간이 정해진 그룹에 넣어 프로비저닝으로 제거를 관리하세요.
다음 단계: 안전하게 롤아웃하고 유지관리하기
프로비저닝은 작동시키기 쉬워 보일 수 있지만 잘 운영하기는 어렵습니다. 규칙, 소유자, 변경 로그가 있는 작은 시스템으로 다루세요.
속성 매핑과 접근 규칙을 한 곳에 적어두세요: 어떤 IdP 필드가 username, email, name, department, manager를 채우는지, 어떤 그룹이 어떤 접근을 부여하는지. 누가 왜 사람을 비활성화했는지 질문이 들어왔을 때 한 가지 확실한 답을 원하기 때문입니다.
현실감 있는 파일럿을 선택하되 되돌리기 쉬운 규모로 설정하세요. 체크포인트(1일차, 1주차, 2주차)를 정의하고 롤백 단계(할당 일시중지, SCIM 중지, 접근 복원)를 명시하며 브레이크글래스 관리자 계정을 SCIM 범위 밖에 두세요.
모니터링은 사용자가 화난 상태로 문제를 알리기 전에 문제를 알아차리게 합니다. 무엇을 모니터링하고 누가 알림을 받는지 합의하세요: 비활성화/재활성화 급증, 중복 사용자 비정상 증가, 업데이트량 급증(매핑 루프 흔함), 필수 속성 없이 생성된 사용자 등.
직접 앱을 개발 중이라면 사용자 생성, 프로필 업데이트, 비활성화, 역할 할당을 초기 설계에 포함하세요. 이런 기능이 1순위 기능일 때 이후 작업이 훨씬 수월합니다.
내부 도구를 시제품으로 만들고 있다면 AppMaster (appmaster.io)는 백엔드, 웹 앱, 모바일 앱을 한 곳에서 구축한 뒤 사용자 모델과 접근 규칙이 안정되었을 때 API를 통해 SCIM을 연결하는 실용적인 방법이 될 수 있습니다.
자주 묻는 질문
SCIM 프로비저닝은 앱의 사용자 목록을 IdP(Identity Provider)와 자동으로 동기화합니다. 누군가 채용되거나 이름이 바뀌거나 팀을 옮기거나 퇴사하면 IdP가 그 변경을 앱에 전송해 관리자가 수동으로 초대, 수정, 제거할 필요가 없게 합니다.
SSO는 사용자가 어떻게 인증하는지를 제어합니다. SCIM은 사용자가 앱에 존재해야 하는지, 활성인지 비활성인지, 현재 프로필 필드가 어떻게 보여야 하는지를 제어합니다. 둘을 함께 쓰면 “로그인은 되지만 계정이 없어야 하는 경우”나 “계정은 있지만 접속할 수 없는 경우” 같은 문제가 줄어듭니다.
신원 필드와 수명주기 상태에 대해서는 IdP를 진실의 출처(source of truth)로 간주하고, 앱은 그에 맞춰 일관되게 따르세요. 앱에서 로컬 수정을 허용한다면, 어떤 필드를 IdP가 덮어쓸 수 있는지 미리 정해 혼란을 피하세요.
대부분의 팀은 세 가지 상태를 사용합니다: active(활성), inactive(비활성/비활성화), deleted(삭제). 실제 운영에서는 하드 삭제를 피하고 비활성화를 사용해 접근을 차단하면서 비즈니스 데이터와 감사 기록은 남기는 경우가 많습니다.
IdP로부터 받은 안정적인 고유 식별자(보통 SCIM의 사용자 id 또는 IdP의 immutable ID)와 로그인 값(userName 등), 그리고 필요한 커뮤니케이션 필드(예: 이메일)를 저장하세요. 안정적 ID가 있어야 이메일이나 사용자명이 바뀌어도 중복을 방지할 수 있습니다.
항상 변경 불가능한 식별자(immutable identifier)를 우선으로 매칭하세요. 이메일과 사용자명은 변경될 수 있으므로 기본 키로 삼으면 중복을 초래하기 쉽습니다.
IdP가 소유하는 속성(일반적으로 active 상태, 이메일/사용자명, 이름 필드)은 자동으로 적용하도록 하고, 앱 고유의 필드(환경설정, 내부 메모 등)는 앱이 소유하도록 하세요. 이렇게 하면 SCIM 업데이트가 로컬 데이터를 예기치 않게 덮어쓰지 않습니다.
비프로덕션 환경(별도 테넌트, 워크스페이스 또는 스테이징 인스턴스)에서 작은 파일럿으로 시작하세요. SCIM으로 관리되지 않는 브레이크글래스 관리자 계정을 만들어두고, 생성, 업데이트(특히 이메일 변경), 비활성화, 재활성화를 테스트해 항상 같은 사용자 레코드가 업데이트되는지 확인하세요.
중복은 보통 이메일만으로 매칭할 때, 생성 시 필수 속성이 빠졌을 때, 또는 동일 인물을 두 경로(수동 초대 + SCIM, 또는 여러 IdP)로 프로비저닝할 때 발생합니다. 해결하려면 권위 있는 하나의 ID를 선택하고 영향을 받은 계정에 대해 프로비저닝을 일시 중지한 후 정리(재연결)하세요. 자동 병합은 권장되지 않습니다.
기본 원칙은 최소 권한(least privilege)입니다: 계정을 생성할 때 기본 권한을 최소로 두고, 그룹이나 역할 정보가 도착하면 그때 권한을 부여하세요. 그룹 정보가 없거나 지연될 경우 ‘접근 없음’으로 처리하고, 비활성화는 항상 그룹 멤버십보다 우선해 오프보딩을 확실히 하세요.


