GrantForge

    외부 시스템 권한

    데이터 서비스, 정책과 에이전트

    플러그인으로 HDFS, ZooKeeper, MySQL 같은 외부 시스템의 권한을 관리합니다. 데이터 서비스, 접근 정책, 에이전트, 접근 감사.

    "데이터 권한" 그룹은 GrantForge 밖의 데이터 시스템에 대한 권한을 관리하며, 아키텍처는 Apache Ranger와 비슷합니다. 플러그인이 서비스 타입을 정의하고, 관리자가 콘솔에서 정책을 작성하면, 접근 경로의 에이전트가 정책을 내려받아 접근을 로컬에서 판단합니다.

    flowchart LR
      C["콘솔: 데이터 서비스와 정책"] --> S["GrantForge 서버"]
      S -->|서명된 정책 스냅샷| A["정책 적용 에이전트"]
      A -->|하트비트와 접근 감사| S
      U["사용자의 데이터 접근"] --> A

    플러그인

    플랫폼 관리 → 플러그인에는 로드된 서비스 타입 플러그인이 나열됩니다. 기본 플러그인은 서버와 함께 제공되고, 다른 플러그인은 plugins 디렉터리에 넣고 "다시 스캔"을 누르면 됩니다. 각 플러그인은 독립적으로 로드되므로 오류가 나도 해당 플러그인만 비활성화됩니다. 플러그인 개발은 플러그인과 서비스 타입을 참고하세요.

    플러그인

    HDFS

    배포 패키지에 HDFS 서비스 타입 플러그인이 포함됩니다. 설치, 연결 설정, 디렉터리 탐색, 경로 정책은 Apache Hadoop HDFS를 참조하세요.

    MySQL

    MySQL 서비스 플러그인은 연결 검증, 데이터베이스/테이블/열 조회와 접근, 열 마스킹, 행 필터링 정책 관리를 담당합니다. MySQL을 참조하세요. 별도로 배포하는 MySQL 프록시 에이전트가 정책을 적용합니다. 클라이언트는 프록시의 수신 주소에 연결하고 프록시가 백엔드 MySQL에 접근합니다. MySQL 서버 프로세스 안에 설치하지 않으며, 백엔드에 직접 연결하면 GrantForge 정책을 우회합니다.

    데이터 서비스

    데이터 권한 → 데이터 서비스: 서비스는 GrantForge가 권한을 관리하는 외부 시스템 인스턴스 하나이며, 예를 들어 HDFS 클러스터 하나입니다. 서비스를 추가할 때 서비스 타입을 선택하고, 플러그인이 정의한 설정 항목에 따라 연결 정보를 입력하며 먼저 연결 테스트를 할 수 있습니다. 비밀번호 같은 민감한 설정은 암호화해 저장하고 저장한 뒤에는 더 이상 표시하지 않습니다.

    데이터 서비스

    정책

    데이터 권한 → 정책은 누가 데이터 서비스의 어떤 리소스로 무엇을 할 수 있는지 결정합니다.

    • 접근 정책은 접근을 허용하거나 거부합니다;
    • 마스킹 정책은 필드를 가립니다;
    • 행 필터 정책은 일부 행만 내보냅니다.

    리소스 계층(예: MySQL의 데이터베이스, 테이블, 열), 접근 타입(예: select, update), 조건은 모두 서비스 타입의 플러그인에서 옵니다. 리소스를 입력할 때는 대상 시스템에 실제로 존재하는 리소스를 검색할 수 있습니다. 정책의 대상은 사용자, 사용자 그룹 또는 역할입니다.

    탐색할 수 있는 레벨(HDFS 경로 등)에는 탐색 버튼이 있습니다. 디렉터리를 단계별로 열어 소유자, 그룹, 권한을 보고 여러 파일이나 디렉터리를 한 번에 고를 수 있습니다. 조회나 탐색이 실패하면 이유(권한 없음, 연결 불가, 너무 큰 디렉터리 등)가 표시되고 다시 시도할 수 있습니다.

    정책

    에이전트

    데이터 권한 → 에이전트: 에이전트는 대상 시스템 안에서 실행하거나 독립 네트워크 프록시로 배포하며, 토큰으로 주기적으로 하트비트를 보고 서명된 정책 스냅샷을 내려받아 접근을 로컬에서 판단합니다. 이곳에서 에이전트 토큰을 발급하고(한 번만 표시됨) 각 에이전트가 이미 최신 정책을 사용하고 있는지 확인합니다.

    에이전트

    접근 감사

    데이터 권한 → 접근 감사: 에이전트가 보고한 접근 판단마다, 누가 언제 어디서 어떤 리소스로 무엇을 했는지, 허용되었는지 거부되었는지, 어떤 정책이 결정했는지가 기록됩니다. 기록은 기본적으로 90일 보관됩니다.

    접근 감사

    GitHub에서 이 페이지 편집