ObjectOS
설정권한

권한

신원, 역할, 권한 집합, 레코드 접근, 필드 보안 — 전체 접근 모델을 한 페이지에서.

권한

ObjectOS는 엔터프라이즈 소프트웨어에서 20년간 검증된 방식을 차용한 계층형 접근 모델을 갖추고 있습니다: 신원 → 역할 → 권한 집합 → 레코드 접근 → 필드 보안. 각 계층은 서로 다른 질문에 답하며, 필요하지 않은 계층은 무시할 수 있습니다.

하나의 다이어그램으로 보는 모델

Authentication       Who is the caller?

Identity             Which user/org/membership is active?

Roles                Where do they sit in the hierarchy?

Permission sets      What CAN they do — apps, objects, fields, system?

Record access        WHICH records can they touch?

Field security       For those records, which FIELDS are readable / writable?

각 계층은 보안 플러그인에 의해 적용됩니다. 단순한 앱이라면 권한 집합만 사용하고(역할이나 공유 규칙 없이), 요구 사항이 생길 때 나머지를 추가할 수 있습니다.

계층 1 — 신원

신원 객체는 프로젝트 데이터베이스에 존재합니다. 가장 중요한 것들은 다음과 같습니다:

객체의미
sys_user인증할 수 있는 사람 또는 서비스 계정
sys_organization테넌트 / 워크스페이스 경계(멀티테넌트 앱)
sys_member조직 내 사용자의 멤버십(역할은 멤버십 단위로 할당됨)
sys_department, sys_team공유 규칙을 위한 선택적 조직 구조
sys_invitation수락을 기다리는 대기 중인 초대
sys_session활성 인증 세션
sys_api_key사용자에 바인딩된 장기 프로그래밍 자격 증명

멀티테넌트 배포에서는:

  • 사용자는 프로젝트 데이터베이스 범위로 한정됩니다.
  • 세션은 프로젝트 호스트명 범위로 한정됩니다.
  • 행 수준 검사는 현재 사용자의 조직과 권한을 사용합니다.
  • 컨트롤 플레인 사용자는 자동으로 비즈니스 사용자가 아닙니다 — 플랫폼 SSO 또는 명시적 프로비저닝을 통해 매핑되어야 합니다.

이들은 런타임에 Console(/_console/)에서 생성/관리하거나, 새 환경을 위해 objectstack.config.ts에 시드할 수 있습니다.

계층 2 — 역할

역할은 조직도(CFO → Finance Manager → Analyst)를 모델링합니다. 역할이 존재하는 주된 이유는 공유 규칙과 보고서가 "레코드 소유자의 관리자"와 같은 표현을 할 수 있게 하기 위함입니다. 계층적 접근이 필요할 때 역할을 사용하고, 평면적인 팀에서는 생략하세요.

역할을 참조하세요.

계층 3 — 권한 집합

권한 집합은 기능을 부여하는 주요 방법입니다. 사용자에게 직접 연결되거나 역할을 통해 연결됩니다.

무엇을 부여하는가

유형예시
애플리케이션 접근CRM 열기, 지원 포털 열기
객체 권한객체의 레코드 생성 / 읽기 / 수정 / 삭제
필드 권한특정 필드 읽기 또는 수정
시스템 권한Console 접근, 보고서 실행, 데이터 내보내기, 감사 로그 보기
통합 권한API 키 사용, 웹훅 구성, 관리 작업 실행

객체 권한 플래그

다음은 보안 플러그인이 검사하는 정확한 플래그 이름입니다:

플래그의미
allowRead레코드 접근을 통해 사용자가 볼 수 있는 레코드 읽기
allowCreate새 레코드 생성
allowEdit사용자가 볼 수 있는 레코드 수정
allowDelete사용자가 볼 수 있는 레코드 삭제
viewAllRecords레코드 접근 규칙을 무시하고 해당 객체의 모든 레코드 읽기
modifyAllRecords모든 레코드 수정/삭제; viewAllRecords를 함의함

viewAllRecordsmodifyAllRecords는 해당 객체에 대한 테넌트 전역 슈퍼유저 권한입니다. 명시적인 관리용 권한 집합에만 한정하고, 사용자 대상 역할에서는 제외하세요.

권한 집합을 참조하세요.

계층 4 — 레코드 접근

viewAllRecords없는 사용자의 경우, 어떤 행을 볼 수 있을까요?

이 모델은 다음을 지원합니다:

  • 암묵적 소유권(사용자가 생성했거나 소유한 행)
  • 공유 규칙(선언적 — "팀 A는 팀 A의 레코드를 본다")
  • 명시적 공유(sys_record_share 행 — 일회성 공유)
  • 조직 범위 지정(행의 organization_id가 사용자의 조직과 일치)

레코드 접근을 참조하세요.

계층 5 — 필드 보안

사용자가 레코드를 볼 수 있는 경우에도, 개별 필드는 다음과 같이 설정될 수 있습니다:

  • 숨김 — 필드가 API 및 UI 응답에서 제거됩니다.
  • 읽기 전용 — 필드는 반환되지만 쓰기 시 거부됩니다.

필드 보안은 객체별 + 권한 집합별로 적용됩니다. 일반적인 사용 예:

  • HR 외부의 누구에게나 sys_usersalary를 숨김.
  • 지원 담당자에게 external_account_id를 읽을 수는 있지만 수정할 수는 없게 설정.

이는 객체 권한과 동일한 평가기에서 적용되므로 REST, ObjectQL, Console 전반에 걸쳐 일관되게 작동합니다.

어디서 시작할까

무엇을 만들고 있다면 …사용
단일 팀 내부 도구권한 집합만
관리자가 보고서를 보는 멀티팀 앱역할 + 권한 집합
멀티테넌트 SaaS 형태의 앱조직 범위 지정 + 권한 집합
PII가 있는 규제 대상 앱그 위에 필드 보안 추가
복잡한 CRM 스타일 앱전체 스택

진단 및 감사

  • /_console/는 평가되는 대로 모든 사용자의 유효 권한을 보여줍니다.
  • 감사 로그(sys_audit_log)는 권한에 민감한 변경 사항(권한 부여, 역할 할당, 권한 집합 편집)을 기록합니다.
  • 거부된 요청은 실패한 규칙(객체 권한, 레코드 접근, 필드 보안 중 무엇인지)을 기록하므로, 지원 담당자가 "왜 이걸 볼 수 없나요?"라는 질문에 빠르게 답할 수 있습니다.

On this page