Iceberg 작업 권한과 브랜치 보호
Operation은 Foundry가 개별 동작을 허용할 때 검사하는 권한입니다. 역할은 여러 operation의 묶음입니다. 아래 역할은 Palantir의 기본 역할이며 관리자가 사용자 지정 역할 집합으로 바꿨을 수 있습니다.
Iceberg 테이블과 가상 테이블의 일반 읽기 및 쓰기는 table:read, table:write가 통제합니다.
Main 리소스 브랜치 보호
Iceberg의 main 브랜치 보호는 Beta이며 환경에 따라 제공되지 않을 수 있습니다. 여기서 보호하는 것은 테이블 리소스의 브랜치이며 저장소 코드의 브랜치 보호와 다릅니다.
테이블을 작성하는 Pipeline Builder 또는 Python 파이프라인에서 Foundry가 소유 JobSpec을 생성합니다. 보호된 테이블을 이 소유 JobSpec 밖에서 변경하려면 추가 권한이 필요합니다.
| Operation | 표시 이름 | 기본 역할 |
|---|---|---|
iceberg:bypass-branch-protection | Bypass branch protection | Owner |
유지보수 작업이나 외부 클라이언트의 변경에서 이 권한이 필요할 수 있습니다. 브랜치 보호 우회 권한을 가진 것만으로 유지보수 작업의 다른 권한까지 충족하는 것은 아닙니다.
유지보수 작업 권한
| Operation | 동작 | 기본 역할 |
|---|---|---|
iceberg:read-maintenance-tasks | 유지보수 작업 조회 | Viewer |
iceberg:write-maintenance-tasks | 유지보수 작업 생성 및 수정 | Editor |
iceberg:write-sql-maintenance-tasks | Custom SQL 작업 작성 | Editor |
iceberg:write-data-altering-maintenance-tasks | 현재 스냅샷의 논리 데이터를 바꾸는 작업 작성 | Editor |
iceberg:schedule-maintenance-tasks | 종류와 관계없이 유지보수 작업의 새 일정 생성 | Editor |
작성 권한들은 누적해서 검사합니다. 어떤 작업이든 iceberg:write-maintenance-tasks가 필요합니다. 이 기본 권한을 제거하면 SQL 및 데이터 변경 권한이 남아 있어도 작업을 작성할 수 없습니다.
작업 생성이나 수정에는 기반 테이블 데이터의 읽기와 쓰기 권한도 필요합니다. 보호된 테이블이면 브랜치 보호 조건도 추가로 적용됩니다.
| 작업 | 작성에 필요한 유지보수 operation |
|---|---|
Rewrite data files, Expire snapshots 같은 폼 기반 프로시저 | iceberg:write-maintenance-tasks |
현재 스냅샷의 논리 내용은 바꾸지 않는 Custom SQL, 예를 들어 CALL system.rewrite_data_files(...) | 기본 작성 권한과 iceberg:write-sql-maintenance-tasks |
INSERT, UPDATE, DELETE처럼 현재 논리 데이터를 바꾸는 Custom SQL | 기본 작성 권한, SQL 작성 권한과 iceberg:write-data-altering-maintenance-tasks |
권한 조합
논리 데이터를 바꾸지 않는 Custom SQL 작업을 보호되지 않은 테이블에 작성하려면 기본 작성과 SQL 작성 operation이 필요합니다. 같은 작업을 보호된 테이블에 적용하려면 iceberg:bypass-branch-protection도 필요합니다. 데이터 변경 DML이면 그에 해당하는 추가 operation까지 충족해야 합니다.
이 분리를 사용하면 어떤 종류의 변경을 작성할 수 있는지와 어떤 보호 테이블에 적용할 수 있는지를 각각 통제할 수 있습니다. 실제 작업 구성은 유지보수 화면을 사용합니다.