접근 제어

접근 제어

일반적으로 사용 가능(GA) — 정부 리전에서는 사용할 수 없어요.

이 섹션은 Snowflake Open Catalog에서 접근 제어가 작동하는 방식에 대한 정보를 제공해요.

Open Catalog는 Open Catalog 관리자가 카탈로그 역할에 접근 권한을 할당한 다음 카탈로그 역할을 보안 주체 역할에 할당해 서비스 주체에 리소스 접근을 부여하는 RBAC(역할 기반 접근 제어) 모델을 사용해요.

Open Catalog의 접근 제어를 이해하는 핵심 개념은 다음과 같아요:

  • 보안 가능 객체(Securable object)
  • 보안 주체 역할(Principal role)
  • 커스텀 역할(Custom role)
  • 카탈로그 역할(Catalog role)
  • 권한(Privilege)

출처: Access control

본문

보안 가능 객체

보안 가능 객체는 접근이 부여될 수 있는 객체예요. Open Catalog에는 다음 보안 가능 객체가 있어요:

  • 카탈로그
  • 네임스페이스
  • Iceberg 테이블
  • 뷰

Open Catalog의 RBAC 모델은 세밀해요. 즉, 전체 카탈로그 또는 카탈로그 내 네임스페이스, 테이블, 뷰에 권한을 부여할 수 있어요. 네임스페이스에 권한을 부여한다면 그 아래에 그룹화된 테이블과 그 아래에 중첩된 하위 네임스페이스나 테이블도 보호할 수 있어요.

보안 주체 역할

보안 주체 역할은 Open Catalog의 리소스로, Open Catalog 서비스 주체를 논리적으로 그룹화하고 보안 가능 객체에 대한 권한을 부여하는 데 사용할 수 있어요.

Open Catalog는 서비스 주체와 보안 주체 역할 사이의 다대일 관계를 지원해요. 예를 들어 여러 서비스 주체에 같은 권한을 부여하려면 그 서비스 주체들에 단일 보안 주체 역할을 부여할 수 있어요. 서비스 주체에는 보안 주체 역할 하나만 부여할 수 있어요. 서비스 연결을 등록할 때 Open Catalog 관리자는 서비스 주체에 부여되는 보안 주체 역할을 지정해요.

보안 주체 역할에 직접 권한을 부여하지 않아요. 대신 카탈로그 역할 수준에서 객체 권한을 구성한 다음 보안 주체 역할에 카탈로그 역할을 부여해요.

다음 표는 Open Catalog에서 구성할 수 있는 보안 주체 역할 예시를 보여줘요:

보안 주체 역할 이름 설명
Data_engineer 데이터 엔지니어링 작업을 실행하기 위해 여러 서비스 주체에 부여되는 역할.
Data_scientist 데이터 과학 또는 AI 작업을 실행하기 위해 여러 서비스 주체에 부여되는 역할.

커스텀 역할

커스텀 역할은 보안 주체 역할과 비슷하지만 몇 가지 차이가 있어요. 커스텀 역할도 Open Catalog의 리소스예요. 커스텀 역할은 다음 목적에 사용할 수 있어요:

  • Snowflake CLI를 통해 만든 Open Catalog 서비스 주체를 논리적으로 그룹화. Open Catalog는 이러한 서비스 주체와 커스텀 역할 사이의 다대일 관계를 지원해요. 이 서비스 주체를 사용해 External OAuth로 Open Catalog에 연결해요.
  • 키 페어 인증을 위해 Snowflake CLI를 통해 만든 Open Catalog 사용자를 논리적으로 그룹화. Open Catalog는 이러한 사용자와 커스텀 역할 사이의 다대일 관계를 지원해요. 이 서비스 주체를 사용해 키 페어 인증으로 Open Catalog에 연결해요.

커스텀 역할을 만들려면 Snowflake CLI를 사용해야 해요.

보안 주체 역할과 마찬가지로 커스텀 역할에 직접 권한을 부여하지 않아요. 대신 카탈로그 역할 수준에서 객체 권한을 구성한 다음 커스텀 역할에 카탈로그 역할을 부여해요.

Open Catalog UI를 통해 만든 서비스 주체에는 커스텀 역할을 부여할 수 없어요. 즉, 서비스 연결을 구성할 때 서비스 연결의 서비스 주체에 커스텀 역할을 부여할 수 없어요. 하지만 커스텀 역할에 카탈로그 역할을 부여하면 커스텀 역할이 Open Catalog UI의 ASSIGNED TO PRINCIPAL ROLES 열에 나타나요.

카탈로그 역할

카탈로그 역할은 Open Catalog의 특정 카탈로그 리소스에 속하며, 카탈로그 네임스페이스나 테이블 같은 카탈로그 내 객체 또는 카탈로그에 대한 동작의 권한 집합을 지정해요. 카탈로그에 대해 하나 이상의 카탈로그 역할을 만들 수 있어요.

카탈로그 역할에 권한을 부여한 다음 카탈로그 역할을 보안 주체 역할에 부여해 하나 이상의 서비스 주체에 권한을 내려줘요.

서비스 주체에 내려진 권한을 업데이트하면 업데이트가 최대 1시간 동안 적용되지 않아요. 즉, 카탈로그에 대한 일부 권한을 철회하거나 부여하면 업데이트된 권한이 해당 카탈로그에 접근 권한이 있는 어떤 서비스 주체에도 최대 1시간 동안 적용되지 않아요.

Open Catalog는 카탈로그 역할과 보안 주체 역할 사이의 다대다 관계도 지원해요. 같은 카탈로그 역할을 하나 이상의 보안 주체 역할에 부여할 수 있어요. 마찬가지로 보안 주체 역할에는 하나 이상의 카탈로그 역할을 부여할 수 있어요.

다음 표는 Open Catalog에서 구성할 수 있는 카탈로그 역할 예시를 보여줘요:

예제 카탈로그 역할 설명
Catalog administrators 카탈로그에 대한 전체 접근을 모방하기 위해 여러 권한이 부여된 역할. 이 역할이 부여된 보안 주체 역할은 카탈로그에서 테이블을 만들고, 변경하고, 읽고, 쓰고, 삭제할 수 있음.
Catalog readers 카탈로그의 테이블에 대한 읽기 전용 권한이 부여된 역할. 이 역할이 부여된 보안 주체 역할은 카탈로그의 테이블에서 읽을 수 있음.
Catalog contributor 카탈로그에 속한 모든 테이블에 대한 읽기 및 쓰기 접근 권한이 부여된 역할. 이 역할이 부여된 보안 주체 역할은 카탈로그의 테이블에 대해 읽기 및 쓰기 작업을 수행할 수 있음.

사용자 역할

사용자는 Open Catalog 웹 인터페이스에 로그인해 Open Catalog 계정을 관리하는 사람이에요. 하지만 사용자가 계정을 관리하려면 먼저 최소한 하나의 사용자 역할이 부여돼야 해요. 사용자에게 부여할 수 있는 사용자 역할은 서비스 관리자(service admin)와 카탈로그 관리자(catalog admin)예요.

서비스 관리자 역할

서비스 관리자 역할은 사용자가 몇 가지 예외를 제외하고 전체 계정을 관리할 수 있게 해요.

허용 권한

서비스 관리자 권한이 있는 사용자는 서비스 관리자예요. 서비스 관리자는 계정에서 다음 작업을 수행할 수 있어요:

  • 서비스 연결 만들기.
  • 네트워크 정책 사용.
  • 사용자 관리: 사용자 만들기 및 삭제, 사용자에게 역할 부여, 사용자에게서 역할 철회.
  • 카탈로그 만들기 및 만든 카탈로그 관리.

서비스 관리자가 카탈로그를 만들면 카탈로그에 대한 카탈로그 관리자 역할도 자동으로 부여돼요. 서비스 관리자는 카탈로그 관리자 권한이 있는 카탈로그에 대해 다음을 수행할 수 있어요:

  • 다른 사용자에게 카탈로그에 대한 카탈로그 관리자 역할을 부여. 그 결과 두 사용자 모두 카탈로그에 접근할 수 있음.
  • 카탈로그에 대한 자신의 카탈로그 관리자 권한을 철회해 카탈로그 접근을 상실. 하지만 카탈로그 관리자 권한을 철회하기 전에 먼저 다른 사용자에게 그 카탈로그에 대한 카탈로그 관리자 권한을 부여해야 함.

허용되지 않는 권한

서비스 관리자 권한이 있는 사용자는 계정에서 다음 작업을 수행할 수 없어요:

  • 만들지 않은 카탈로그에 접근하거나 관리.
  • 서비스 관리자가 만들지 않은 카탈로그에 카탈로그 관리자 권한 부여.

카탈로그 관리자 역할

카탈로그 관리자 역할은 사용자가 계정의 카탈로그를 관리할 수 있게 해요. 카탈로그 관리자 역할은 각 개별 카탈로그에 부여돼야 해요.

허용 권한

카탈로그 관리자 역할은 사용자에게 다음과 같이 카탈로그에 접근하고 관리할 권한을 부여해요:

  • 카탈로그 접근.
  • 카탈로그에서 네임스페이스 만들기.
  • 카탈로그에서 카탈로그 역할을 만들고 그 역할에 권한 부여.
  • 카탈로그 역할을 보안 주체 역할에 부여. 이는 서비스 주체에게 카탈로그 역할에 부여된 권한을 내려줌.

허용되지 않는 권한

카탈로그 관리자 권한만 있는 사용자는 계정에서 다음 작업을 수행할 수 없어요:

  • 서비스 연결 만들기.
  • 카탈로그 관리자 역할이 부여되지 않은 카탈로그에 접근하거나 관리.
  • 카탈로그 만들기 또는 제거.
  • 네트워크 정책 사용.
  • 사용자 관리.

RBAC 모델

다음 다이어그램은 Open Catalog가 사용하는 RBAC 모델을 보여줘요. 각 카탈로그에 대해 Open Catalog 카탈로그 관리자는 카탈로그 역할에 접근 권한을 할당한 다음 카탈로그 역할을 보안 주체 역할에 부여해 서비스 주체에 리소스 접근을 부여해요. Open Catalog는 서비스 주체와 보안 주체 역할 사이의 다대일 관계를 지원해요.

  • External OAuth 및 키 페어 인증의 경우 보안 주체 역할 대신 커스텀 역할이 사용돼요.
  • 키 페어 인증의 경우 서비스 주체 대신 키 페어 인증 사용자가 사용돼요. 이 유형의 사용자는 액세스 토큰을 통해 프로그래매틱하게 Open Catalog에 연결해요. 사용자 이름과 비밀번호로 Open Catalog UI에 로그인하는 사람(휴먼) 사용자가 아니에요.

테이블이나 네임스페이스 수준에서도 접근 제어 권한을 부여할 수 있어요. 예를 들어 다음 다이어그램은 카탈로그 내 네임스페이스와 테이블에 권한을 부여하는 것을 보여줘요.

접근 제어 권한

이 섹션은 Open Catalog 접근 제어 모델에서 사용할 수 있는 권한을 설명해요. 권한은 카탈로그 역할에 부여되고, 카탈로그 역할은 보안 주체 역할에 부여되며, 보안 주체 역할은 서비스 주체에 부여되어 서비스 주체가 Open Catalog의 객체에서 수행할 수 있는 작업을 지정해요.

객체에 전체 권한 집합(drop, list, read, write 등)을 부여하려면 전체 권한(full privilege) 옵션을 사용할 수 있어요.

자세한 내용은 다음을 참조하세요:

Table Reader 같은 일반 카탈로그 역할의 권한 집합은 일반 카탈로그 역할의 권한 집합을 참조하세요.

카탈로그 권한

권한 설명
CATALOG_MANAGE_CONTENT 카탈로그 콘텐츠의 전체 관리를 활성화. 이 권한은 다음 권한을 포함함: CATALOG_MANAGE_METADATA, TABLE_FULL_METADATA, NAMESPACE_FULL_METADATA, VIEW_FULL_METADATA, TABLE_WRITE_DATA, TABLE_READ_DATA, CATALOG_READ_PROPERTIES, CATALOG_WRITE_PROPERTIES
CATALOG_MANAGE_METADATA 카탈로그, 카탈로그 역할, 네임스페이스, 테이블의 전체 관리를 활성화.
CATALOG_READ_PROPERTIES 카탈로그 나열과 카탈로그 속성 읽기를 활성화.
CATALOG_WRITE_PROPERTIES 카탈로그 속성 구성을 활성화.
NAMESPACE_CREATE 카탈로그에서 네임스페이스 만들기를 활성화.
NAMESPACE_DROP 카탈로그에서 네임스페이스 삭제를 활성화.
NAMESPACE_FULL_METADATA 모든 네임스페이스 권한을 부여.
NAMESPACE_LIST 중첩 네임스페이스와 테이블을 포함해 네임스페이스의 모든 객체 나열을 활성화.
NAMESPACE_READ_PROPERTIES 모든 네임스페이스 속성 읽기를 활성화.
NAMESPACE_WRITE_PROPERTIES 네임스페이스 속성 구성을 활성화.
TABLE_CREATE 카탈로그에 테이블 등록을 활성화.
TABLE_DROP 카탈로그에서 테이블 삭제를 활성화.
TABLE_FULL_METADATA 개별적으로 부여해야 하는 TABLE_READ_DATA와 TABLE_WRITE_DATA를 제외한 모든 테이블 권한을 부여.
TABLE_LIST 카탈로그의 모든 테이블 나열을 활성화.
TABLE_READ_DATA 카탈로그에서 단기간 유효한 읽기 전용 스토리지 자격 증명을 받아 테이블에서 데이터 읽기를 활성화.
TABLE_READ_PROPERTIES 테이블의 속성 읽기를 활성화.
TABLE_WRITE_DATA 카탈로그에서 단기간 유효한 읽기+쓰기 스토리지 자격 증명을 받아 테이블에 데이터 쓰기를 활성화.
TABLE_WRITE_PROPERTIES 테이블에 대한 속성 구성을 활성화.
VIEW_CREATE 카탈로그에 뷰 등록을 활성화.
VIEW_DROP 카탈로그에서 뷰 삭제를 활성화.
VIEW_FULL_METADATA 모든 뷰 권한을 부여.
VIEW_LIST 카탈로그의 모든 뷰 나열을 활성화.
VIEW_READ_PROPERTIES 모든 뷰 속성 읽기를 활성화.

네임스페이스 권한

권한 설명
CATALOG_MANAGE_CONTENT 해당되는 경우 네임스페이스, 그 아래에 그룹화된 모든 테이블, 네임스페이스 아래에 중첩된 모든 네임스페이스와 테이블의 콘텐츠 전체 관리를 활성화. 이 권한은 전체 카탈로그에 부여되지 않음. 이 권한은 다음 권한을 포함함: CATALOG_MANAGE_METADATA, TABLE_FULL_METADATA, NAMESPACE_FULL_METADATA, VIEW_FULL_METADATA, TABLE_WRITE_DATA, TABLE_READ_DATA, CATALOG_READ_PROPERTIES, CATALOG_WRITE_PROPERTIES
CATALOG_MANAGE_METADATA 네임스페이스, 카탈로그 역할, 그 아래에 그룹화된 모든 테이블 또는 그 아래에 중첩된 하위 네임스페이스나 테이블의 전체 관리를 활성화.
NAMESPACE_CREATE 네임스페이스에서 하위 네임스페이스 만들기를 활성화.
NAMESPACE_DROP 카탈로그에서 네임스페이스 삭제를 활성화.
NAMESPACE_FULL_METADATA 네임스페이스의 모든 네임스페이스 권한을 부여.
NAMESPACE_LIST 중첩 네임스페이스와 테이블을 포함해 네임스페이스의 모든 객체 나열을 활성화.
NAMESPACE_READ_PROPERTIES 모든 네임스페이스 속성 읽기를 활성화.
NAMESPACE_WRITE_PROPERTIES 네임스페이스 속성 구성을 활성화.
TABLE_CREATE 네임스페이스에 테이블 등록을 활성화.
TABLE_DROP 네임스페이스에서 테이블 삭제를 활성화.
TABLE_FULL_METADATA 개별적으로 부여해야 하는 TABLE_READ_DATA와 TABLE_WRITE_DATA를 제외한 네임스페이스에 그룹화된 테이블의 모든 테이블 권한을 부여.
TABLE_LIST 네임스페이스의 모든 테이블 나열을 활성화.
TABLE_READ_DATA 카탈로그에서 단기간 유효한 읽기 전용 스토리지 자격 증명을 받아 네임스페이스 아래에 그룹화된 모든 테이블에서 데이터 읽기를 활성화.
TABLE_READ_PROPERTIES 네임스페이스 아래에 그룹화된 모든 테이블의 속성 읽기를 활성화.
TABLE_WRITE_DATA 카탈로그에서 단기간 유효한 읽기+쓰기 스토리지 자격 증명을 받아 네임스페이스에 그룹화된 모든 테이블에 데이터 쓰기를 활성화.
TABLE_WRITE_PROPERTIES 네임스페이스 아래에 그룹화된 모든 테이블에 대한 속성 구성을 활성화.
VIEW_CREATE 네임스페이스에 뷰 등록을 활성화.
VIEW_DROP 네임스페이스에서 뷰 삭제를 활성화.
VIEW_FULL_METADATA 네임스페이스의 모든 뷰에 대한 모든 뷰 권한을 부여.
VIEW_LIST 네임스페이스의 모든 뷰 나열을 활성화.
VIEW_READ_PROPERTIES 네임스페이스의 모든 뷰에 대한 모든 뷰 속성 읽기를 활성화.
VIEW_WRITE_PROPERTIES 네임스페이스의 모든 뷰에 대한 뷰 속성 구성을 활성화.

테이블 권한

권한 설명
TABLE_DROP 카탈로그에서 테이블 삭제를 활성화.
TABLE_FULL_METADATA 개별적으로 부여해야 하는 TABLE_READ_DATA와 TABLE_WRITE_DATA를 제외한 모든 테이블 권한을 부여.
TABLE_LIST 카탈로그의 모든 테이블 나열을 활성화.
TABLE_READ_DATA 카탈로그에서 단기간 유효한 읽기 전용 스토리지 자격 증명을 받아 테이블에서 데이터 읽기를 활성화.
TABLE_READ_PROPERTIES 테이블의 속성 읽기를 활성화.
TABLE_WRITE_DATA 카탈로그에서 단기간 유효한 읽기+쓰기 스토리지 자격 증명을 받아 테이블에 데이터 쓰기를 활성화.
TABLE_WRITE_PROPERTIES 테이블에 대한 속성 구성을 활성화.
VIEW_READ_PROPERTIES 모든 뷰 속성 읽기를 활성화.

뷰 권한

권한 설명
VIEW_CREATE 카탈로그에 뷰 등록을 활성화.
VIEW_DROP 카탈로그에서 뷰 삭제를 활성화.
VIEW_LIST 카탈로그의 모든 뷰 나열을 활성화.
VIEW_READ_PROPERTIES 모든 뷰 속성 읽기를 활성화.
VIEW_WRITE_PROPERTIES 뷰 속성 구성을 활성화.
VIEW_FULL_METADATA 모든 뷰 권한을 부여.

일반 카탈로그 역할의 권한 집합

카탈로그 역할 설명 권한
table_reader 테이블 정보를 읽고 테이블을 쿼리. TABLE_LIST, TABLE_READ_PROPERTIES, TABLE_READ_DATA, TABLE_FULL_METADATA
catalog_writer 테이블 만들기 및 삭제. TABLE_CREATE, TABLE_DROP, TABLE_LIST, TABLE_READ_PROPERTIES, TABLE_WRITE_PROPERTIES, TABLE_READ_METADATA, TABLE_WRITE_METADATA, TABLE_FULL_METADATA
catalog_metadata_reader 카탈로그 메타데이터 읽기. NAMESPACE_LIST, NAMESPACE_READ_PROPERTIES, NAMESPACE_FULL_METADATA, CATALOG_READ_PROPERTIES

RBAC 예제

다음 다이어그램은 카탈로그 수준에서 Open Catalog의 RBAC가 작동하는 방식을 보여주며 다음 사용자를 포함해요:

  • Alice: Open Catalog에 가입한 서비스 관리자. Alice는 서비스 주체를 만들 수 있어요. 또한 카탈로그와 네임스페이스를 만들고 Open Catalog 리소스에 대한 접근 제어를 구성할 수 있어요.

Alice의 서비스 주체는 Open Catalog 사용자 인터페이스에 표시되지 않아요.

  • Bob: Snowpipe Streaming(Snowflake 내)과 Apache Spark™ 연결을 사용해 Open Catalog와 상호작용하는 데이터 엔지니어.

Alice는 Bob을 위한 서비스 주체를 만들었어요. 여기에는 Data_engineer 보안 주체 역할이 부여됐고, 이 역할에는 다음 카탈로그 역할이 부여됐어요: Catalog contributor와 Data administrator(다음 다이어그램의 Silver 및 Gold 존 카탈로그 모두에 대해).

Catalog contributor 역할은 Bronze 존 카탈로그에서 네임스페이스와 테이블을 만들 권한을 부여해요. Data administrator 역할은 Silver 존 카탈로그와 Gold 존 카탈로그에 대한 전체 관리 권한을 부여해요.

  • Mark: Snowflake AI 서비스를 사용해 Open Catalog와 상호작용하는 데이터 과학자.

Alice는 Mark를 위한 서비스 주체를 만들었어요. 여기에는 Data_scientist 보안 주체 역할이 부여됐고, 이 역할에는 Catalog reader라는 카탈로그 역할이 부여됐어요.

Catalog reader 역할은 Gold 존 카탈로그라는 카탈로그에 대한 읽기 전용 접근을 부여해요.

더 알아보기