개요
2024.06.14-Snowflake 란, 2024.06.16-[Snowflake] 구조에서 snowflake에 대해서 간단히 알아보았는데, 이번에는 snowflake가 데이터 접근을 제어하는 방법에 대해 적어본다.
+ 최근에 들었던 교육에서 다룬 내용 정도만 적어보려고 한다.
접근 제어
Snowflake는 두 가지 방식으로 사용자의 데이터 접근을 제어한다.
- Role-based Access Control (RBAC) : 역할에 권한이 부여되고, 사용자는 역할을 할당받는다.
- Discretionary Access Control (DAC) : 객체에는 소유자가 있고, 소유자는 객체에 대한 접근 권한을 부여할 수 있다.
이 두 방식을 이해하기 위해서는 다음과 같은 개념이 필요하다.
- 객체 : 접근 권한이 부여되는 객체
- 역할 : 권한이 부여될 수 있는 요소로, 역할은 사용자에게 부여된다. 역할 간의 계층 구조를 구성할 수도 있다.
- 권한 : 객체애 대한 접근 수준
- 사용자 : sonwflake에서 인식하는 사용자 ID
간단히 요약하면 Snowflake에서 사용자는 객체 소유자가 접근 권한을 부여한 역할을 할당받아 데이터에 접근하거나, 객체 소유자로부터 소유권을 전달받아 데이터에 접근할 수 있다.
객체
Snowflake에서 최상위 객체는 Organization이다. 테이블, 뷰, 함수 등의 객체는 Schema에 포함되고, Schema는 데이터 베이스에 포함된다.
객체를 소유한다는 것은 역할이 객체에 대한 OWNERSHIP 권한을 가진다는 것을 의미한다. 객체는 단일 역할이 소유하고, 기본적으로는 객체를 생성할 때 사용된 역할이 된다. 만약 다른 역할로 객체 소유권을 이전하고 싶다면 GRANT OWNERSHIP 명령을 수행하면 된다.
역할
객체에 대한 권한을 부여하고나 취소할 수 있는 요소다. 사용자는 역할을 할당받아 필요한 작업을 수행할 수 있고, 하나의 사용자는 여러 역할을 할당받을 수 있다. 따라서 사용자는 여러 역할 중 사용할 역할을 전환하여 작업을 수행할 때 필요한 적절한 역할을 선택할 수 있다.
역할은 사용자가 정의하거나 시스템 지정 역할로 나뉘는데, 시스템 지정 역할로는 다음과 같은 역할이 있다.
참고 문서
https://docs.snowflake.com/ko/user-guide/security-access-control-overview