Hyeseong's Blog

"사용자"를 다루는 서비스 개발이나 조직 관리에서 Identity Managmenet는 절대 빼놓을 수 없는 핵심적인 주제입니다.

언제나 단순한 인증만 구현하고 넘어가면 편하겠지만 해당 시스템을 확장해야하는 순간이 오면 이 Identity Managment 하나가 이후 나머지의 성패를 좌지우지 한다고 해도 과언이 아닐 것 입니다. 올바른 Identity 플랫폼 없이는 올바른 Access Control 이 구현될 수 없으며, 올바른 Access Control 없이 Use Case를 확장하는데는 뚜렷한 한계가 있기 때문입니다.

저는 Identity를 2016 년에 SI 하면서 잠깐 공부할 기회가 있었는데, 솔직히 그 이후로 서비스 개발하면서 다시 볼 일이 없다고 까먹고 있다가 최근 들어서 똑같은 주제를 바닥부터 다시 공부하고 있습니다. 아무래도 아키텍처 볼 거면 한 번은 제대로 짚고 넘어가야하는 주제 중 하나가 아닐까 합니다.

Identity를 가장 탁월하게 다루는 기업을 하나 꼽자면 역시 Microsoft일 겁니다. AD/ADFS로 수많은 엔터프라이즈 기업의 인증 시스템을 제공하고 있고, 현재는 이를 Azure로 확장해서 클라우드 시대의 인증까지 성공적으로 제공하고 있습니다.

사실 이런 거대한 인증 시스템 이전에도 많은 시행착오가 있었다고 알려져 있습니다. 지금에야 PII(개인식별정보)를 다룰 때 지켜야할 원칙들이 법으로 제한되고 있고, 인증/인가를 위한 다양한 표준 기술이 등장했지만 이것들이 모두 이전의 시행착오를 바탕으로 만들어진 것입니다.

Microsoft Passport ID와 Access 아키텍처를 설계한 Kim Cameron이 이전의 성공과 실패를 바탕으로 정리한 "The Laws of Identity" 백서가 아주 유명하며 이후 만들어진 Shibboleth, CardSpace 같은 시스템들에 직접적인 영향을 미쳤습니다.

서비스 개발자들이나 시스템 설계에 참여하는 사람들도 한 번쯤 읽고 머릿속 어딘가에 새겨둬야 하는 명문입니다. 근데 국내에 공유나 번역이 딱히 없어서 요약된 버전을 올려둡니다. 요약은 레퍼런스에 첨부한 다른 논문에서 발췌하고 해석한 것 입니다. 더 정확한 사례와 설명이 포함되어 있는 원본 글을 정독하는걸 권장드립니다.

The Laws of Identity

  1. 사용자 제어 및 동의 (User Control and Consent): 사용자가 데이터 공유 권한을 부여하며 공유 방식에 대해 발언권을 갖습니다;

    ID 시스템은 사용자의 동의를 얻은 신원 정보에 대해서만 공유해야 합니다. 여기서 기본 가설은 사용자가 명시적인 동의없이 자신의 신원 정보를 공유하는 시스템을 신뢰하지 않는다는 것 입니다. 사용자가 자신의 ID 속성을 공유하는 시스템이 해당 속성을 보호하고 사용방법에 대해 자신의 희망을 존중한다는 확신을 가질 필요가 있습니다.

  2. 제한된 사용을 위한 최소 공개 (Minimal Disclosure for a Constrained Use): 최소한의 식별 정보만 공유하고, 안전하게 저장되고, 신속하게 삭제합니다;

    가장 제한된 사용을 위해 가장 최소한의 신원 정보만 공유하는 방식이 가장 안정적이고 장기적인 솔루션입니다. 여기서 기본 가설은 모든 시스템이 보관하는 기밀정보는 탈취와 도용에 취약하다는 것 입니다. 따라서 시스템은 캡처하고 저장하는 PII를 최소화해야하며 이용목적이 만료되자마자 즉시 삭제해야 합니다.

  3. 정당한 당사자 (Justifiable Parties): 필요를 증명할 수 있는 사람만이 액세스 권한을 얻을 수 있습니다;

    ID 시스템은 신원 정보 공유가 신원 관계에서 필요하고 정당한 당사자에게만 제한되도록 설계해야합니다. 여기서 기본 가설은 사용자가 자신의 PII가 적절한 역할이 없는 제3자에게 제공되는 것에 대해 분개한다는 점 입니다. 예를 들면 사용자가 가족 블로그에 사진을 게시하기 위해 Microsoft 계정을 사용할 필요가 없을 것 입니다. 이는 Microsoft Passport가 "인터넷을 위한 ID 시스템"이라는 비전을 달성하지 못한 가장 직접적인 원인으로 파악됩니다.

  4. 유향 신원 (Directed Identity): 사용 목적만을 위한 개인 식별자를 제공해서 신원정보를 보호합니다;

    기술적으로 ID는 항상 다른 ID 또는 ID 세트와 연관되는 "방향"을 가진다고 얘기할 수 있습니다. 범용 ID 시스템이 사이트에 신원정보를 제공할 때는 제한된 당사자만 접근 가능하도록 단기적인 "단방향" 식별자를 할당해야 합니다. 여기서 기본 가설은 모든 사용자가 자신의 식별자를 알고 싶어하지 않고 비공개로 유지하는 것을 선호하는 반면, 모든 서비스/웹사이트는 사용자를 식별하고 직접 연락하길 원한다는 것입니다. 이 때 여러 서비스 제공자들이 글로벌 프로필 구축을 위해 공모하는 것을 방지할 수 있습니다.

  5. 다원주의 (Pluralism of Operators and Technologies): 경쟁이 더 나은 성과를 낳기 때문에 많은 ID 공급자가 지원되어야 합니다;

    범용 ID 시스템은 여러 ID 공급자가 운영하는 여러 ID 기술에 대해 채널화하고 상호운용을 활성화 해야합니다. 여기서 기본 가설은 경쟁은 항상 좋고, 사용자가 익명 ID 사이를 마음대로 전환할 수 있어야 한다는 것 입니다. 이를 위해 지원되는 자격 증명 기술 유형의 무한한 다양성을 지원하면서 신원 정보 전송을 위해 공통 프로토콜을 사용하는 포괄적인 메타-아이덴티티 시스템이 필요합니다. 인증을 위한 단일 중앙 집중식 모놀리식 시스템(메타시스템의 반대)이 결코 존재하지 않는 이유는 한 상황에서 시스템을 이상적으로 만드는 특성이 다른 상황에서 해당 시스템을 부적격하게 만들기 때문입니다.

  6. 인간 통합 (Human Integration): 실제 사람이 참여해서 컴퓨터 간 해킹의 위험을 줄입니다;

    범용 ID 시스템은 인간 사용자를 보호된 ID 메커니즘으로 통합된 분산 시스템의 일부로 정의해야 합니다. 여기서 기본 가설은 신원 도용 사례의 대다수가 개인 간의 연결보다 PC와 인간 간의 연결 취약성을 공격해서 발생하므로 이 연결이 특별히 보호되어야 한다는 점이며, 두 번째 가설은 그 연결에서 사용자가 이미 친숙한 일관된 의식이 필요하다는 점입니다. 이를 통해 사용자는 인증 과정에서 이상이 발생했을 때 바로 인지할 수 있습니다.

  7. 컨텍스트 전반에 걸친 일관성 (Consistent Experience Across Contexts): 사용자는 플랫폼 간에 간단하고 일관된 경험을 갖습니다;

    통합 ID 메타시스템은 사용자에게 단순하고 일관된 경험을 제공하는 동시에 여러 운영자와 기술을 통해 컨텍스트를 분리할 수 있어야 합니다. 서비스 제공자가 선택한 신원 증명 기술이나 사용자가 선택한 프로필과 관계 없이 일관된 경험을 가져야 합니다. 사용자는 자신이 선택한 여러 ID 유형 사이에서 자유롭게 전환할 수 있어야 하고 어떤 트랜잭션에서 어떤 ID를 사용하고 있는지 쉽게 식별할 수 있도록 디지털 ID를 이해하기 쉬운 기호로 “사물화(Thingify)”해야 합니다.

위 7가지 법칙들은 만유인력의 법칙처럼 모든 현상에 적용되는 물리법칙 같은 것은 아니지만, ID 관리 시스템이 지원하기 위해 노력해야하며, 지키지 않는 것을 "위험을 무릅쓰고" 선택해야 하는 것들입니다. 사용자가 이 7가지 법칙을 준수하지 않는 모든 ID 시스템을 거부할 가능성이 있습니다.

레퍼런스

크리에이티브 커먼즈 라이선스