GrantForge

    빠른 시작

    핵심 개념

    테넌트, 계정, 리소스, 역할, 권한 부여, 배정과 평가, 그리고 이들의 관계.

    GrantForge의 모델은 한 문장으로 요약할 수 있습니다. 계정은 배정을 통해 역할을 얻고, 역할은 리소스에 권한을 부여하며, 평가할 때 이 권한 부여를 병합해 계정의 유효 권한을 만듭니다.

    flowchart LR
      A[계정] -->|직접 배정| R[역할]
      G[사용자 그룹] -->|배정| R
      O[부서] -->|배정, 하위 부서 포함 가능| R
      P[직위] -->|배정| R
      A -.소속.-> G
      A -.소속.-> O
      A -.재직.-> P
      R -->|상속| R2[상위 역할]
      R -->|권한 부여 허용/거부| S[리소스]
      S --- M[메뉴 · 페이지 · 버튼]
      S --- API[API]
      S --- D[데이터 엔터티 · 필드]

    테넌트

    테넌트는 데이터 격리의 경계입니다. 각 테넌트는 고유한 계정, 조직, 역할, 권한 부여를 가지며 서로 볼 수 없습니다. 초기화 시 생성되는 첫 테넌트는 플랫폼 테넌트이며, 이 테넌트의 관리자는 다른 테넌트와 리소스 카탈로그, 권한 부여 서버도 관리할 수 있습니다. 조직 하나만 서비스할 때는 이 테넌트 하나만 사용해도 됩니다.

    계정과 조직

    • 계정: 로그인 주체이며, 사용자명은 플랫폼 전체에서 고유합니다. 계정은 로컬(비밀번호는 GrantForge에 저장)에서 올 수도 있고, 신원 소스(LDAP 또는 OIDC, 비밀번호는 신원 소스가 관리)에서 올 수도 있습니다.
    • 부서: 트리 구조이며, 모든 계정에는 주 부서가 하나 있고 다른 부서를 겸할 수 있습니다.
    • 사용자 그룹: 조직 구조와 무관한 사람들의 모임입니다. 예를 들어 "당직 그룹"이 있습니다.
    • 직위: 직책입니다. 예를 들어 "재무 관리자"가 있으며, 한 계정이 여러 직위를 맡을 수 있습니다.

    리소스

    리소스는 "권한을 부여할 수 있는 대상"이며, 애플리케이션 단위로 트리를 이룹니다.

    타입 설명
    모듈, 메뉴 페이지를 묶는 그룹
    페이지, 탭 콘솔 또는 애플리케이션에 있는 페이지 하나, 페이지 위의 탭 하나
    버튼 페이지 위의 동작 하나. 예를 들어 "사용자 삭제"
    API REST 인터페이스 하나. 예: api:GET:/api/v1/users
    데이터 엔터티, 필드 행 범위를 제한할 수 있는 비즈니스 엔터티와 그 안에서 숨기거나 마스킹할 수 있는 필드

    리소스 사이에는 종속 관계가 있을 수 있습니다. 버튼은 자신이 호출하는 API를 필요로 하고, 페이지는 데이터를 불러오는 API를 필요로 합니다. 페이지나 버튼에 권한을 부여할 때 종속성이 함께 따라오므로, "버튼은 보이는데 누르면 권한이 없다는 오류가 나오는" 상황을 막을 수 있습니다.

    GrantForge 콘솔 자체도 하나의 애플리케이션입니다. 콘솔의 페이지, 버튼, API는 시작할 때 리소스 카탈로그에 자동으로 등록되므로, 콘솔에 대한 권한도 역할이 결정합니다.

    역할, 권한 부여와 배정

    • 역할: 권한 부여 묶음에 붙인 이름입니다. 시스템 역할(테넌트 관리자, 플랫폼 관리자)은 테넌트와 함께 만들어지며, 해당 모듈의 모든 권한을 가지고 수정할 수 없습니다. 그 밖의 역할은 모두 사용자 정의 역할입니다.
    • 권한 부여: 리소스에 대한 역할의 "허용" 또는 "거부"입니다. 거부가 허용보다 우선합니다.
    • 상속: 역할은 다른 역할의 권한 부여를 모두 상속할 수 있으며, 상속 관계에 순환은 허용되지 않습니다.
    • 배정: 역할을 계정, 사용자 그룹, 부서(하위 부서 포함 가능) 또는 직위에 맡기는 것입니다. 적용 시작 시각과 만료 시각을 지정할 수 있습니다.

    평가

    권한을 판단해야 할 때 GrantForge는 계정의 모든 유효 역할(직접 배정된 역할, 그룹/부서/직위를 통해 얻은 역할, 상속으로 얻은 역할 중 유효 기간 안에 있고 역할이 사용 설정된 것)을 찾아 권한 부여를 병합하고 다음을 도출합니다.

    • 사용 가능한 리소스(페이지, 버튼, API);
    • 각 데이터 엔터티를 읽기, 수정, 삭제, 내보내기할 때의 행 범위;
    • 각 필드의 읽기와 쓰기 방식(표시, 마스킹, 숨김, 편집 가능, 읽기 전용).

    결과에는 버전 번호가 붙습니다. 권한 부여, 배정, 카탈로그 중 하나라도 바뀌면 버전 번호가 바뀌고, 콘솔과 SDK는 이를 보고 캐시를 새로 고칩니다. 자세한 규칙은 권한 모델을 참고하세요.

    GitHub에서 이 페이지 편집