access-control

4 개의 포스트

대규모 가시성: Figma가 (새 탭에서 열림)

피그마(Figma)는 서비스 규모가 확장됨에 따라 복잡해진 권한 관리 로직을 효율적으로 처리하기 위해 자체적인 권한 정의 언어(DSL)인 'Permit'을 구축했습니다. 기존의 파편화된 명령형 코드 방식에서 벗어나 선언적인 DSL을 도입함으로써 권한 정책의 일관성을 확보하고 보안 취약점 발생 가능성을 획기적으로 낮췄습니다. 이를 통해 복잡한 사용자-리소스 간의 관계를 명확하게 모델링하고 성능 저하 없이 대규모 시스템에 적용할 수 있는 권한 검증 인프라를 완성했습니다. ### 기존 시스템의 한계와 권한 관리의 복잡성 * 권한 체크 로직이 Go 애플리케이션 코드 곳곳에 흩어져 있어, 특정 리소스에 대한 접근 규칙을 한눈에 파악하거나 일관되게 수정하기 매우 어려웠습니다. * 팀, 프로젝트, 파일로 이어지는 계층 구조뿐만 아니라 엔터프라이즈 설정, 공유 링크 등 수많은 변수가 결합되면서 권한 로직 수정 시 예기치 않은 부작용(side effects)이 발생할 위험이 컸습니다. * 성능 최적화를 위해 데이터베이스 쿼리에 권한 로직을 직접 포함시켜야 하는 경우가 많았는데, 이는 비즈니스 로직과 권한 정책이 뒤섞여 코드 유지보수성을 떨어뜨리는 결과로 이어졌습니다. ### 관계 기반 접근 제어(ReBAC)와 Permit DSL 설계 * 구글의 Zanzibar 시스템에서 영감을 얻어, 객체 간의 관계를 중심으로 권한을 정의하는 ReBAC(Relationship-Based Access Control) 모델을 피그마의 환경에 맞게 커스텀화했습니다. * Permit DSL은 'Actor(사용자)', 'Resource(파일, 팀 등)', 'Action(편집, 보기 등)' 간의 관계를 선언적인 문법으로 정의합니다. * 예를 들어 "사용자가 파일이 속한 프로젝트의 편집자라면 해당 파일에 대한 편집 권한을 가진다"와 같은 전이적인(transitive) 관계를 직관적인 문법으로 표현할 수 있게 되었습니다. ### 컴파일러 및 성능 최적화 기술 * DSL로 작성된 정책을 런타임에 해석하는 대신, 효율적인 Go 코드로 변환하는 자체 컴파일러를 개발하여 실행 성능을 극대화하고 런타임 오버헤드를 최소화했습니다. * 컴파일 단계에서 정적 분석을 수행하여 순환 참조나 정의되지 않은 권한 사용 등 논리적 오류를 사전에 차단합니다. * 특히 '부분 평가(Partial Evaluation)' 기법을 도입하여, 권한 로직을 SQL 쿼리의 WHERE 절로 변환함으로써 수백만 개의 리소스 중 사용자가 접근 가능한 항목만 효율적으로 필터링할 수 있도록 구현했습니다. ### 안전한 전환을 위한 검증 및 배포 프로세스 * DSL 내부에 유닛 테스트를 직접 작성할 수 있는 기능을 포함시켜, 정책 변경이 기존의 기대 결과와 일치하는지 배포 전 즉시 검증할 수 있는 환경을 마련했습니다. * '섀도 모드(Shadow mode)'를 활용하여 실제 트래픽에서 기존의 레거시 권한 로직 결과와 새로운 Permit 시스템의 결과를 실시간으로 비교하며 데이터 정합성을 확인했습니다. * 성능 모니터링을 통해 권한 확인 작업이 전체 API 응답 시간에 미치는 영향을 정밀하게 추적하며 안정성을 확보했습니다. 권한 관리는 단순한 기능을 넘어 대규모 SaaS의 보안과 확장성을 결정짓는 핵심 인프라입니다. 피그마의 사례처럼 권한 로직을 비즈니스 코드에서 분리하여 '정책(Policy)'으로서 중앙 집중화하고 코드화하는 전략은, 제품의 복잡도가 높아질수록 개발 생산성과 시스템 안정성을 동시에 잡을 수 있는 가장 강력한 방법 중 하나입니다.

멤버, 중재자, 관리 (새 탭에서 열림)

서버의 권한 설정은 혼란스러운 무법지대와 활발하고 환영받는 커뮤니티를 가르는 결정적인 차이를 만듭니다. 서버의 규모와 성격이 제각각인 만큼, 모든 멤버에게 일률적인 권한을 부여하기보다는 커뮤니티의 니즈에 맞춘 전략적인 역할 배분이 필수적입니다. 이 글은 2025년 6월 최신 기준을 바탕으로 일반 멤버, 중재자, 그리고 관리자라는 세 가지 핵심 카테고리에 따른 효율적인 권한 관리 가이드를 제시합니다. **일반 멤버를 위한 참여 중심 권한** * 커뮤니티 소통의 기본이 되는 메시지 전송, 음성 채널 연결, 반응 추가 등의 권한을 포함하여 멤버들이 자유롭게 활동할 수 있도록 합니다. * 무분별한 알림으로 인한 피로도를 줄이기 위해 '@everyone'이나 '@here' 멘션 권한은 기본적으로 제한하는 것이 권장됩니다. * 멤버가 자신의 정체성을 표현할 수 있도록 별명 변경 권한을 부여하되, 서버의 분위기를 해치지 않는 선에서 조정이 필요합니다. **중재자(Moderator)를 위한 질서 유지 권한** * 부적절한 콘텐츠를 즉각 차단할 수 있도록 메시지 삭제 및 관리 권한을 부여하여 대화의 질을 유지합니다. * 규칙 위반자에 대해 타임아웃(채팅 금지), 추방(Kick), 또는 차단(Ban)과 같은 제재 조치를 취할 수 있는 권한이 핵심입니다. * 커뮤니티의 가독성을 높이기 위해 중요한 메시지를 고정하거나, 스레드를 생성 및 관리하여 대화를 조직화할 수 있는 능력을 부여합니다. **최상위 관리자(Admin)를 위한 서버 제어 권한** * 서버의 근간이 되는 채널 생성 및 편집, 역할 설정 변경 등 시스템 전반을 제어하는 권한을 포함합니다. * '관리자(Administrator)' 권한은 모든 채널 권한과 보안 설정을 우회하므로, 보안 사고 방지를 위해 서버 소유자가 전적으로 신뢰하는 극소수의 인원에게만 부여해야 합니다. * 서버의 확장성을 위해 웹훅(Webhook) 관리나 외부 앱 통합 설정을 관리하여 기술적인 운영 효율을 높입니다. 서버 운영 초기에는 최소한의 권한으로 시작하여 커뮤니티가 성장함에 따라 중재자 역할을 점진적으로 늘려가는 것이 안전합니다. 각 역할 간의 위계 구조(Hierarchy)를 명확히 설정하면 권한 남용을 방지할 수 있으며, 정기적으로 권한 로그를 검토하여 커뮤니티의 안전과 유연함 사이의 균형을 유지하는 것이 중요합니다.

디자이너 Q&A: (새 탭에서 열림)

피그마는 대규모 조직에서 디자인 시스템의 무결성을 유지하면서도 협업의 효율성을 높이기 위해 '고급 프로젝트 권한(Advanced Project Permissions)' 기능을 도입했습니다. 이 기능은 디자인 시스템 파일을 편집할 수 있는 인원을 엄격히 제한하는 동시에, 일반 디자이너들이 시스템을 원활하게 활용할 수 있도록 권한 관리의 유연성을 제공합니다. 이를 통해 의도치 않은 시스템 변경을 방지하고 전사적인 디자인 일관성과 보안을 동시에 확보할 수 있습니다. ### 디자인 시스템 관리의 한계 극복 * 기존의 팀 단위 권한 설정 체계에서는 팀에 편집 권한이 있는 모든 사용자가 디자인 시스템 라이브러리까지 수정할 수 있는 위험이 있었습니다. * 디자인 시스템의 규모가 커짐에 따라, 숙련되지 않은 작업자의 실수로 컴포넌트나 스타일이 변경되어 수천 개의 하위 파일에 예기치 못한 영향을 주는 사례가 빈번했습니다. * 시스템 관리자는 자유로운 자산 공유와 엄격한 소스 보호라는 상충하는 목표 사이에서 권한 설정에 어려움을 겪어왔습니다. ### 프로젝트 수준의 세밀한 권한 제어 * 이제 팀 전체에 편집 권한이 있더라도, 디자인 시스템 라이브러리가 포함된 특정 프로젝트에 대해서는 별도의 독립적인 권한을 설정할 수 있습니다. * 디자인 시스템 전담 운영진에게만 '편집 가능(Can edit)' 권한을 부여하고, 나머지 디자이너들에게는 '보기 전용(Can view)' 권한을 할당하여 소스 파일을 안전하게 보호합니다. * 특정 프로젝트에 접근할 수 있는 인원을 명확히 제한함으로써 조직 내 민감한 디자인 자산에 대한 보안 계층을 강화할 수 있습니다. ### 효율적인 거버넌스 및 워크플로우 구축 * '보기 전용' 권한을 가진 디자이너들도 라이브러리의 컴포넌트를 자신의 작업 파일로 가져와 사용하는 데에는 아무런 제약이 없어 협업 흐름이 끊기지 않습니다. * 디자인 시스템의 업데이트와 배포 권한을 가진 주체를 명확히 정의함으로써, 조직 내 디자인 거버넌스(Governance)를 더욱 체계화할 수 있습니다. * 권한 요청 및 승인 프로세스를 간소화하여 관리자의 운영 리소스를 줄이고 시스템의 신뢰도를 높입니다. 디자인 시스템을 운영하는 팀이라면 시스템 전용 프로젝트를 별도로 분리하고, 핵심 관리자 외의 인원에게는 '보기 전용' 권한을 부여하는 설정을 즉시 적용할 것을 권장합니다. 이를 통해 라이브러리의 안정성을 물리적으로 확보하는 동시에, 전사 디자이너들이 최신 시스템 자산을 안전하게 소비하는 환경을 조성할 수 있습니다.

디자인 면접에서 포트폴 (새 탭에서 열림)

제공해주신 Figma의 **'디자인 시스템을 위한 고급 프로젝트 권한(Advanced Project Permissions for design systems)'** 블로그 내용을 바탕으로 요약해 드립니다. Figma는 대규모 조직 내에서 디자인 시스템의 일관성을 유지하고 보안을 강화하기 위해 더욱 세분화된 '고급 프로젝트 권한' 기능을 도입했습니다. 이 기능은 디자인 라이브러리의 관리자와 일반 사용자의 권한을 명확히 분리하여, 시스템의 무결성을 보호하는 동시에 전사적인 협업 효율성을 극대화하는 것을 목표로 합니다. 관리자는 이를 통해 누가 디자인 자산을 수정할 수 있는지, 그리고 누가 단순 조회만 가능한지를 프로젝트 단위로 정교하게 제어할 수 있습니다. **디자인 시스템 관리의 효율성 및 무결성 확보** * 디자인 시스템은 모든 팀원이 사용해야 하지만, 소수의 관리자만이 수정해야 하는 특성을 가집니다. * 새로운 권한 설정을 통해 시스템 유지보수 담당자(Maintainers)에게는 '수정 가능(Can edit)' 권한을 부여하고, 일반 디자이너(Consumers)에게는 '보기 전용(Can view)' 권한을 부여하여 의도치 않은 시스템 변경을 방지합니다. * 라이브러리 업데이트 시 발생할 수 있는 혼선을 줄이고, 디자인 가이드라인의 '단일 진실 공급원(Single Source of Truth)' 역할을 공고히 합니다. **세분화된 접근 제어 및 사용자 경험 개선** * 팀 수준의 권한 설정 외에도 개별 프로젝트 단위로 접근 권한을 다르게 설정할 수 있어, 조직 구조에 맞춘 유연한 운영이 가능합니다. * '초대된 사람만 접근 가능(Invited users only)' 옵션을 통해 민감한 초기 프로젝트나 비공개 디자인 자산을 특정 인원에게만 노출할 수 있습니다. * 일반 사용자들은 권한에 따라 최적화된 인터페이스를 제공받아, 불필요한 편집 도구 없이 디자인 자산을 조회하고 활용하는 데에만 집중할 수 있습니다. **콘텐츠 보안 및 복제 방지 기능 강화** * '보기 전용' 사용자들에 대해 복제(Duplicate), 복사(Copy), 내보내기(Export) 기능을 제한할 수 있는 옵션을 제공합니다. * 이는 기업의 지적 재산권을 보호하고, 검증되지 않은 디자인 에셋이 외부로 유출되거나 무단으로 복제되어 사용되는 리스크를 최소화합니다. * 보안이 중요한 엔터프라이즈 환경에서 디자인 시스템의 안전한 배포와 관리를 지원합니다. **실용적인 권한 관리 팁** 성공적인 디자인 시스템 운영을 위해서는 모든 팀원에게 '수정' 권한을 주기보다, 시스템 관리 전담 조직을 구성하고 그들에게만 편집 권한을 집중시키는 것이 좋습니다. 또한, 새로운 프로젝트를 시작할 때 '복제 제한' 옵션을 검토하여 보안 수준을 결정하고, 정기적으로 프로젝트 참여자 리스트를 검토하여 권한 오남용을 방지할 것을 권장합니다.