
데이터를 적재한 웨어하우스에 다른 사용자들이 접근 권한을 해서, 분석 및 대시보드 작성, 테이블 생성 등 다양한 작업을 할 수 있는 환경을 구축해주는 과정이다.
✅ 권한을 줄 특정 사용자를 생성하는 단계이다.
CREATE USER Jaewon
PASSWORD = '123123'
DEFAULT_ROLE = myrole
DEFAULT_WAREHOUSE = COMPUTE_WH
MUST_CHANGE_PASSWORD = TRUE;
✅ 만들어진 사용자 Jaewon이 웨어하우스에 접근하기 위한 과정



✅ 역할(ROLE)을 생성하는 단계이다. 역할을 생성하고 사용자가 어떤 행동을 할 수 있는지 권한을 부여한다.
-- ROLE 생성
CREATE ROLE myrole;
-- ROLE 사용
USE ROLE myrole;
--DB 사용 권한 부여
GRANT USAGE ON DATABASE PROJECT TO ROLE myrole;
--스키마 사용 권한 부여
GRANT USAGE ON SCHEMA PROJECT.MY_SCHEMA TO ROLE myrole;
-- 특정 테이블(ACCOUNTS_SCHOOL)의 조회를 할 수 있게 해주는 권한 부여
GRANT SELECT ON TABLE PROJECT.MY_SCHEMA.ACCOUNTS_SCHOOL TO ROLE myrole;
-- 모든 테이블을 조회할 수 있는 권한 부여
GRANT SELECT ON ALL TABLES IN SCHEMA PROJECT.MY_SCHEMA TO ROLE myrole;
✅ 역할(ROLE)을 부여받은 사용자가 실질적으로 쿼리를 작업할 수 있는 권한 부여하는 단계이다.
❓ 이 과정이 이해가 가질 않았던 부분 중 하나이다. 역할(Role)을 하나씩 추가로 만들 때 추가되는 역할마다 웨어하우스 사용&운영 권한을 주어야 실행이 가능하다. 역할을 준다해서 실행이 되는것이 아니라 웨어하우스 권한까지 직접 주어야 실행이 가능하다. 즉, 데이터를 사용하며 Admin의 웨어하우스의 비용을 사용하기 위해 다른 사용자들에게 허용을 해주어야 한다.
GRANT USAGE ON WAREHOUSE COMPUTE_WH TO ROLE myrole;
REVOKE USAGE ON WAREHOUSE COMPUTE_WH FROM ROLE myrole;


✅ 특정 사용자들이 웨어하우스를 운영(즉, 일시 중단 또는 재개) 할 수 있다.
GRANT OPERATE ON WAREHOUSE COMPUTE_WH TO ROLE myrole;
GRANT ROLE myrole TO ROLE your_role
필요한 데이터가 적재적소에 올바르게 사용됨을 보장하기 위한 데이터 관리 프로세스. 품질 보장과 데이터 관련 법규 준수가 주 목적!
✅ 가장 강력한 권한으로, 객체의 소유자로서 할 수 있는 모든 작업을 말한다. 처음엔 ACCOUNTADMIN이 갖고 있다.
스테이지에서 테이블로 새로운 데이터 업로드 시, 권한을 부여한 사용자들에게도 보이게 하기 위해선 ROLE 에 대한 GRANT 명령문을 다시 실행시켜줘야한다.
GRANT SELECT ON ALL TABLES IN SCHEMA PROJECT.MY_SCHEMA TO ROLE myrole;
나와 공동 작업을 하는 파트너가 있다고 가정해보자. 기존 나의 최고 역할(ACCOUNTADMIN)에 OWNERSHIP이 있다. 이런 경우 새로운 역할을 만들고 OWNERSHIP 권한을 부여하는 방향으로 진행한다. OWNERSHIP 권한을 가진 역할은 테이블을 수정, 삭제, 권한 부여 및 회수 등을 할 수 있지만, 시스템에서 보안을 위해 설정 제한을 넘어서는 행동(DROP)은 제한된다.
-- 새 역할 생성 CREATE ROLE partner_role; -- 권한 부여 GRANT OWNERSHIP ON SCHEMA my_schema TO partner_role WITH GRANT OPTION; -- 역할 할당 GRANT partner_role TO my_partner;
작업 분리 : 각 웨어하우스는 독립적인 컴퓨팅 리소스를 가지고 있어, 다양한 작업을 동시에 수행하면서도 서로의 성능에 영향을 주지 않는다. 하나의 웨어하우스는 대용량 데이터 처리용, 다른 하나는 경량의 실시간 분석용으로 사용할 수 있다.
성능 최적화 : 다른 종류의 작업은 서로 다른 리소스 요구 사항을 가질 수 있다. 예를 들어, 데이터 로딩과 데이터 쿼리는 서로 다른 성능 최적화가 필요할 수 있다.
비용 관리 : 작업의 우선순위나 중요도에 따라 다른 사이즈의 웨어하우스를 선택하여 비용을 효과적으로 관리할 수 있다. 예를 들어, 비용을 절감하기 위해 비중요한 배치 작업에는 작은 웨어하우스를, 중요한 실시간 분석에는 큰 웨어하우스를 사용할 수 있다.
동적 확장성 : 사용량이 많은 시간대에는 더 큰 웨어하우스를 활성화, 사용량이 적은 시간에는 작은 웨어하우스 사용하거나 일시정지
보안 및 권한 관리 : 다른 웨어하우스를 사용함으로써 데이터와 작업에 대한 접근을 세분화하고 보안을 강화.
GRANT OPERATE ON WAREHOUSE COMPUTE_WH TO ROLE myrole WITH GRANT OPTION;

UNDROP SCHEMA MY_SCHEMA
https://docs.snowflake.com/ko/sql-reference/sql/grant-privilege
https://docs.snowflake.com/ko/sql-reference/sql/undrop-schema