Iceberg 보안 표지의 테이블 전체 적용
Iceberg 테이블은 업스트림 입력의 보안 표지(Marking)를 상속할 수 있습니다. 표지는 이를 받은 스냅샷과 연결되지만 읽기 접근에는 사실상 테이블 전체로 적용됩니다. 한 메타데이터 파일에 모든 브랜치와 태그의 유지된 스냅샷이 포함되기 때문입니다.
stop_propagating을 적용한 경우를 제외하면, 사용자는 메타데이터에 남아 있는 모든 스냅샷의 표지를 충족해야 테이블을 읽을 수 있습니다. 직접 읽으려는 브랜치가 아닌 다른 브랜치의 표지도 영향을 줄 수 있습니다.
데이터셋과 비교
| 상황 | Foundry 데이터셋 | Iceberg 테이블 |
|---|---|---|
| 브랜치 A에 표지가 있는 트랜잭션 또는 스냅샷 추가 | main 접근을 제한하지 않습니다. | main을 포함한 모든 브랜치 접근을 제한합니다. |
| 표지가 없는 깨끗한 대체 데이터를 생성 | 새 현재 뷰는 읽을 수 있고 표지가 있는 과거 트랜잭션은 제한될 수 있습니다. | 표지가 있는 과거 스냅샷을 만료시키기 전에는 현재 스냅샷도 제한됩니다. |
| 표지가 있는 이력의 브랜치 삭제 | main 접근에는 영향이 없습니다. | 스냅샷이 남아 있으면 main도 계속 제한됩니다. |
stop_propagating으로 표지 전파 중단 | 해당 표지가 제거됩니다. | 해당 표지가 제거됩니다. |
표지 요구를 의도적으로 해제할 때
데이터를 표지 없이 공개하려는 의도라면 stop_propagating 워크플로에서 승인을 받아 상속된 표지를 제거합니다. 증분 및 비증분 파이프라인에 모두 사용할 수 있고, 증분 테이블 전체를 다시 빌드하지 않고 해제할 수도 있습니다.
이 절차는 단순한 이력 정리가 아니라 표지가 붙은 데이터의 노출 범위를 바꾸는 작업입니다. 데이터 공개 의도와 필요한 승인을 먼저 확인합니다.
오래된 표지 이력을 제거할 때
표지가 있는 스냅샷이 더 이상 현재 데이터 계보에 필요하지 않다면 이력을 정리하는 방식으로 접근 제한을 제거할 수 있습니다.
- 해당 스냅샷을 참조하는 브랜치나 태그가 없는지 확인합니다.
- 삭제 가능한 브랜치의 스냅샷이라면 브랜치를 삭제할 수 있습니다.
- main처럼 삭제하면 안 되는 브랜치라면 현재 헤드가 표지 스냅샷에 의존하지 않는 상태여야 합니다. 이전 스냅샷을 부모로 의존하지 않는 전체 table replace가 한 방법입니다.
- 참조가 없어진 표지 스냅샷을 유지보수 작업으로 만료시킵니다.
- 대상 스냅샷이
Snapshots탭에 더 이상 없는지 확인합니다.
브랜치를 삭제하는 것만으로는 스냅샷이 사라지지 않습니다. 이 정리에는 표지가 붙은 테이블을 읽을 수 있는 권한과 유지보수 operation이 필요합니다. 만료한 스냅샷은 롤백과 시간 여행에 사용할 수 없으므로 보존 조건도 확인합니다.