액세스 제어

이 섹션에서는 Snowflake Open Catalog에 대해 액세스 제어가 작동하는 방식에 대한 정보를 제공합니다.

Open Catalog는 Open Catalog 관리자가 카탈로그 역할에 액세스 권한을 할당한 다음 카탈로그 역할을 주체 역할에 할당하여 서비스 주체에게 리소스 액세스 권한을 부여하는 역할 기반 액세스 제어(RBAC) 모델을 사용합니다.

Open Catalog에서의 액세스 제어를 이해하기 위한 주요 개념은 다음과 같습니다.

  • 보안 오브젝트

  • 주체 역할

  • 카탈로그 역할

  • 권한

보안 오브젝트

보안 오브젝트는 액세스 권한을 부여할 수 있는 오브젝트입니다. Open Catalog에는 다음과 같은 보안 오브젝트가 있습니다.

  • 카탈로그

  • 네임스페이스

  • Iceberg 테이블

Open Catalog의 RBAC 모델은 전체 카탈로그나 카탈로그 내의 네임스페이스, 테이블 또는 뷰에 대한 권한을 부여할 수 있도록 세분화되어 있습니다. 네임스페이스에 권한을 부여하는 경우 해당 네임스페이스 아래에 그룹화된 테이블과 중첩된 하위 네임스페이스 또는 테이블도 보호하는 옵션이 있습니다.

주체 역할

주체 역할은 Open Catalog에서 Open Catalog 서비스 주체를 논리적으로 그룹화하고 보안 오브젝트에 대한 권한을 부여하는 데 사용할 수 있는 리소스입니다.

Open Catalog는 서비스 주체와 주체 역할 사이에서 다대일 관계를 지원합니다. 예를 들어, 여러 서비스 주체에게 동일한 권한을 부여하려면 해당 서비스 주체에게 단일 주체 역할을 부여하면 됩니다. 서비스 주체에게는 하나의 주체 역할을 부여할 수 있습니다. 서비스 연결을 등록할 경우 Open Catalog 관리자는 서비스 주체에게 부여되는 주체 역할을 지정합니다.

주체 역할에 직접 권한을 부여하는 것은 아닙니다. 대신, 카탈로그 역할 수준에서 오브젝트 권한을 구성한 다음 카탈로그 역할을 주체 역할에 부여합니다.

다음 표에는 Open Catalog에서 구성할 수 있는 주체 역할의 예가 나와 있습니다.

주체 역할 이름

설명

Data_engineer

데이터 엔지니어링 작업을 실행하기 위해 여러 서비스 주체에게 부여되는 역할입니다.

Data_scientist

데이터 과학 또는 AI 작업을 실행하기 위해 여러 서비스 주체에게 부여되는 역할입니다.

카탈로그 역할

카탈로그 역할은 Open Catalog의 특정 카탈로그 리소스에 속하며 카탈로그나 카탈로그에 있는 오브젝트(예: 카탈로그 네임스페이스 또는 테이블)에 대한 작업을 위한 권한 세트를 지정합니다. 한 카탈로그에 하나 또는 그 이상의 카탈로그 역할을 만들 수 있습니다.

카탈로그 역할에 권한을 부여한 다음 카탈로그 역할을 주체 역할에 부여하여 하나 또는 그 이상의 서비스 주체에게 권한을 부여합니다.

참고

서비스 주체에게 부여된 권한을 업데이트하는 경우 업데이트가 최대 1시간 동안 적용되지 않습니다. 즉, 카탈로그에 대해 일부 권한을 취소하거나 부여하는 경우 해당 카탈로그에 액세스할 수 있는 모든 서비스 주체에게 업데이트된 권한이 최대 1시간 동안 적용되지 않습니다.

Open Catalog는 카탈로그 역할과 주체 역할 간의 다대다 관계도 지원합니다. 하나 이상의 주체 역할에 동일한 카탈로그 역할을 부여할 수 있습니다. 마찬가지로, 주체 역할에는 하나 이상의 카탈로그 역할을 부여할 수 있습니다.

다음 표에는 Open Catalog에서 구성할 수 있는 카탈로그 역할의 예가 나와 있습니다.

카탈로그 역할의 예

설명

카탈로그 관리자

카탈로그에 대한 전체 액세스 권한을 에뮬레이션하려고 여러 권한이 부여된 역할입니다.

이 역할이 부여된 주체 역할은 카탈로그에서 테이블을 만들고 변경하고 읽고 쓰고 삭제할 권한이 있습니다.

카탈로그 리더

카탈로그의 테이블에 대한 읽기 전용 권한이 부여된 역할입니다.

이 역할이 부여된 주체 역할은 카탈로그의 테이블에서 읽을 수 있습니다.

카탈로그 기여자

카탈로그에 속한 모든 테이블에 대해 읽기 및 쓰기 액세스 권한이 부여된 역할입니다.

이 역할이 부여된 주체 역할은 카탈로그의 테이블에서 읽기 및 쓰기 작업을 수행할 수 있습니다.

사용자 역할

사용자는 Open Catalog 계정을 관리하려고 Open Catalog 웹 인터페이스에 로그인하는 사람입니다. 하지만 먼저 하나 이상의 사용자 역할이 부여되어야 사용자가 계정을 관리할 수 있습니다. 사용자에게 부여할 수 있는 사용자 역할은 서비스 관리자와 카탈로그 관리자입니다.

서비스 관리자 역할

몇 가지 예외 사항은 있지만, 서비스 관리자 역할을 통해 사용자가 전체 계정을 관리할 수 있습니다.

허용된 권한

서비스 관리자 권한이 있는 사용자가 서비스 관리자입니다. 서비스 관리자는 계정에서 다음 작업을 수행할 수 있습니다.

  • 서비스 연결 만들기

  • 네트워크 정책 사용.

  • 사용자 관리: 사용자 생성 및 삭제, 사용자에게 역할 부여, 사용자의 역할 취소

  • 카탈로그 생성 및 생성한 카탈로그 관리.

서비스 관리자가 카탈로그를 생성하면 카탈로그에 대한 카탈로그 관리자 역할도 자동으로 부여됩니다. 서비스 관리자는 카탈로그 관리자 권한이 있는 카탈로그에 대해 다음 작업을 수행할 수 있습니다.

  • 다른 사용자에게 카탈로그 관리자 역할을 부여할 수 있습니다. 결과적으로, 두 사용자 모두 카탈로그에 액세스할 수 있습니다.

  • 카탈로그에 대한 액세스 권한이 상실되도록 카탈로그에 대한 자신의 카탈로그 관리자 권한을 취소할 수 있습니다. 하지만 카탈로그 관리자 권한을 취소하기 전에 먼저 다른 사용자에게 해당 카탈로그에 대한 카탈로그 관리자 권한을 부여해야 합니다.

허용되지 않은 권한

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

  • 자신이 만들지 않은 카탈로그에 액세스 또는 관리.

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

카탈로그 관리자 역할

카탈로그 관리자 역할을 통해 사용자는 계정에서 카탈로그를 관리할 수 있습니다. 각각의 개별 카탈로그에 카탈로그 관리자 역할을 부여해야 합니다.

허용된 권한

카탈로그 관리자 역할은 사용자에게 다음과 같이 카탈로그에 액세스하고 관리할 권한을 부여합니다.

  • 카탈로그에 액세스

  • 카탈로그에 네임스페이스 생성

  • 카탈로그에 카탈로그 역할 생성 및 카탈로그 역할에 권한 부여.

  • 카탈로그 역할에 부여된 권한을 서비스 주체에게 부여하는 주체 역할에 카탈로그 역할 부여.

허용되지 않은 권한

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

  • 서비스 연결 생성

  • 카탈로그 관리자 역할이 부여되지 않은 카탈로그에 액세스 또는 관리

  • 카탈로그 만들기 또는 제거

  • 네트워크 정책 사용

  • 사용자 관리

RBAC 모델

다음 다이어그램은 Open Catalog에서 사용하는 RBAC 모델을 보여줍니다. 각 카탈로그에 대해 Open Catalog 카탈로그 관리자는 카탈로그 역할에 액세스 권한을 할당한 다음 카탈로그 역할을 주체 역할에 할당하여 서비스 주체에게 리소스에 대한 액세스 권한을 부여합니다. Open Catalog는 서비스 주체와 주체 역할 사이에서 다대일 관계를 지원합니다.

Open Catalog의 RBAC 모델을 보여주는 다이어그램.

테이블 또는 네임스페이스 수준에서 액세스 제어 권한을 부여할 수도 있습니다. 예를 들어, 다음 다이어그램은 카탈로그 내의 네임스페이스와 테이블에 대한 권한을 부여하는 방법을 보여줍니다.

테이블, 네임스페이스 수준에서 Open Catalog의 RBAC 모델을 보여주는 다이어그램입니다.

액세스 제어 권한

이 섹션에서는 Open Catalog 액세스 제어 모델에서 사용할 수 있는 권한에 대해 설명합니다. 권한은 카탈로그 역할에 부여되고, 카탈로그 역할은 주체 역할에 부여되며, 주체 역할은 서비스 주체에게 부여되어 서비스 주체가 Open Catalog의 오브젝트에 대해 수행할 수 있는 작업을 지정합니다.

오브젝트에 대한 전체 권한 세트(삭제, 나열, 읽기, 쓰기 등)를 부여하려면 전체 권한 옵션을 사용하면 됩니다.

카탈로그 권한

권한

설명

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

모든 뷰 권한을 부여합니다.

RBAC 예제

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

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

    참고

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

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

    • Alice는 Bob을 위한 서비스 주체를 만들었습니다. 이 서비스 주체에는 Data_engineer 주체 역할이 부여되었고, 이 주체 역할에는 (다음 다이어그램의 Silver 및 Gold 존 카탈로그 모두에 대해) 카탈로그 기여자 역할과 데이터 관리자 역할이라는 카탈로그 역할이 부여되었습니다.

    • 카탈로그 기여자 역할은 Bronze 존 카탈로그에 네임스페이스와 테이블을 만들 수 있는 권한을 부여합니다.

    • 데이터 관리자 역할은 Silver 존 카탈로그와 Gold 존 카탈로그에 대한 모든 관리 권한을 부여합니다.

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

    • Alice는 Mark를 위한 서비스 주체를 만들었습니다. 이 서비스 주체에는 Data_scientist 주체 역할이 부여되었고, 이 주체 역할에는 카탈로그 리더라는 카탈로그 역할이 부여되었습니다.

    • 카탈로그 리더 역할은 Gold 존 카탈로그라는 카탈로그에 대한 읽기 전용 액세스 권한을 부여합니다.

Open Catalog에서 RBAC가 작동하는 방식의 예를 보여주는 다이어그램입니다.