리더 계정 구성하기
리더 계정 구성하기
새로 만들어진 리더 계정에는 계정 전체의 관리자 역할을 하는 단일 사용자만 있어요. 계정을 "부트스트랩"(즉 구성)하려면 계정 관리자가 계정에 사용자, 커스텀 역할(원한다면), 가상 웨어하우스, 그리고 프로바이더 계정이 공유한 데이터를 위한 공유 데이터베이스 하나 이상을 포함한 최소한의 추가 객체를 만들어야 해요.
본문
이 주제는 필수·선택 구성 작업 전반을 다뤄요. 모든 작업은 프로바이더 계정이 아니라 리더 계정 안에서 수행해야 해요.
참고: 작업 2~4는 계정 관리자로 완료해야 해요. 나머지 모든 작업은 다른 사용자에게 위임할 수 있어요.
작업 1: 계정 관리자로 리더 계정에 로그인
Snowflake CLI, SnowSQL, 웹 인터페이스 등 지원되는 인터페이스 중 하나로 리더 계정에 로그인해요. 이 주제의 지침은 Snowflake CLI·SnowSQL·웹 인터페이스의 worksheet에서 SQL로 작업을 수행한다고 가정해요. 하지만 작업은 지원되는 어떤 Snowflake 인터페이스에서든 수행할 수 있어요.
팁: 사용할 역할로
ACCOUNTADMIN을 설정하는 것을 기억해요. 이 역할은 로그인 중이나 이후 활성 세션에서 설정할 수 있어요. 웹 인터페이스의 worksheet를 사용한다면 worksheet의 컨텍스트에서 역할을 설정해요.
작업 2: 커스텀 역할 만들기 (선택)
역할은 리더 계정의 사용자가 수행할 수 있는 작업에 대한 세밀한 제어를 가능하게 해요. 역할을 사용해:
- 계정과 공유된 데이터를 쿼리할 수 있는 사용자를 지정할 수 있어요.
- 선택한 사용자에게 가상 웨어하우스에 대한 제어 권한을 부여할 수 있어요.
- 일부 관리자 작업·책임을 선택한 사용자에게 위임할 수 있어요(원한다면).
각 리더 계정에는 표준 시스템 정의 역할(SYSADMIN, SECURITYADMIN, PUBLIC)이 함께 제공돼요. 이 역할들이 계정에서 만들 사용자의 접근 요건을 충족하지 못한다면 추가 커스텀 역할을 만들 수 있어요.
작업 3: 사용자 만들기
리더 계정에 로그인해 계정과 공유된 데이터를 쿼리하고 허용한 다른 작업을 수행할 사용자를 만들어요. 사용자 생성 과정의 일부로, 사용자에게 역할(시스템 정의 또는 만든 커스텀)을 부여하는 것을 기억해요. 사용자에게 지정한 역할이 그들이 계정에서 무엇을 할 수 있는지 결정해요.
팁: 이 주제의 나머지 모든 작업은 계정 관리자가 완료하거나 권한·역할을 통해 계정의 다른 사용자에게 위임할 수 있어요. 최소한 다음을 권장해요.
- 최소 한 명의 다른 사용자에게
SECURITYADMIN역할을 부여해 다른 사용자와 객체 접근 생성·관리를 돕게 해요.- 최소 한 명의 다른 사용자에게
SYSADMIN역할을 부여해 계정의 다른 객체(예: 가상 웨어하우스) 생성·관리를 돕게 해요.
작업 4: 리소스 모니터 만들기 (선택)
리더 계정과 공유된 데이터를 쿼리하려면 가상 웨어하우스가 필요해요. 실행 중인 가상 웨어하우스는 크레딧을 소비하며, 이는 프로바이더 계정에 부과돼요. 리더 계정의 가상 웨어하우스가 매월 소비하는 크레딧 양을 제어하고 싶다면 리소스 모니터를 하나 이상 만들어 다음 중 무엇을 제어할지 지정해요.
- 계정 안의 모든 웨어하우스
- 개별 웨어하우스
주의: 이 작업을 건너뛰면 리더 계정의 웨어하우스가 매달 무제한 크레딧을 소비할 수 있으며, 이는 프로바이더 계정에 부과돼요.
작업 5: 가상 웨어하우스 만들기
공유 데이터베이스의 객체를 쿼리하려면 가상 웨어하우스를 최소 하나 만들어야 해요. 원하는 만큼 웨어하우스를 만들 수 있지만, 리더 계정의 웨어하우스가 소비하는 모든 크레딧은 프로바이더 계정이 책임진다는 점을 기억하고 다음을 고려해요.
- 원하는 쿼리 성능과 크레딧 소비를 저울질해 웨어하우스 크기를 적절히 설정해요.
- 웨어하우스가 사용되지 않을 때 자동 일시 중지(auto-suspend)되도록 설정해요.
작업 6: 계정과 공유된 각 셰어에서 데이터베이스 만들기
리더 계정은 기본적으로 어떤 데이터도 포함하지 않아요. 프로바이더 계정에서 공유된 데이터를 소비하려면 CREATE DATABASE 명령으로 계정과 공유된 각 셰어에서 데이터베이스를 만들어야 해요. 데이터베이스를 만들 때 리더 계정의 다른 사용자가 공유 데이터를 쿼리할 때 참조할 이름을 지정해요.
예를 들어 프로바이더 계정이 ab12345이고 이 리더 계정과 share1, share2 두 셰어를 공유했다면:
CREATE DATABASE shared_db1 FROM SHARE ab12345.share1;
CREATE DATABASE shared_db2 FROM SHARE ab12345.share2;
작업 7: 역할에 가상 웨어하우스와 데이터베이스 권한 부여하기
데이터 프로바이더가 셰어에 객체를 추가하는 방식에 따라(데이터베이스 역할로 권한을 부여한 뒤 그 역할을 셰어에 부여하는 옵션 1, 또는 객체에 대한 권한을 셰어에 직접 부여하는 옵션 2) 이 섹션의 지침이 달라져요.
옵션 1:
리더 계정과 공유된 데이터를 쿼리하려면 계정 안의 비즈니스 기능에 맞는 셰어의 데이터베이스 역할을 계정의 적절한 역할에 부여해요. 예를 들어 셰어에 계정의 모든 사용자와 공유하려는 shared_db1.dr1이라는 데이터베이스 역할이 있다고 가정해요. 이 경우 데이터베이스 역할을 PUBLIC 시스템 역할에 부여해요.
GRANT DATABASE ROLE shared_db1.dr1 TO ROLE PUBLIC;
옵션 2:
리더 계정과 공유된 데이터를 쿼리하려면 계정의 다른 역할(시스템 정의 또는 커스텀)에 다음 권한을 부여해요.
- 작업 6에서 셰어에서 만든 각 데이터베이스에 대한
IMPORTED PRIVILEGES
예를 들어 다음 명령은 shared_db1, shared_db2 두 데이터베이스와 testing_vw 웨어하우스에 필요한 권한을 PUBLIC 역할에 부여해요. 계정의 모든 사용자는 자동으로 PUBLIC 역할을 가지므로, 계정의 모든 사용자가 웨어하우스를 사용하고 데이터베이스를 쿼리할 수 있어요.
GRANT IMPORTED PRIVILEGES ON DATABASE shared_db1 TO ROLE PUBLIC;
GRANT IMPORTED PRIVILEGES ON DATABASE shared_db2 TO ROLE PUBLIC;
또한 쿼리 실행을 위해 만든 가상 웨어하우스에 대한 USAGE 권한을 부여해요.
GRANT USAGE ON WAREHOUSE testing_vw TO ROLE PUBLIC;
원한다면 추가 권한을 부여할 수 있지만, 위 권한은 계정의 공유 데이터베이스를 쿼리하는 데 필요한 최소 권한이에요. 또한 testing_vw 웨어하우스에 대한 전체 권한을 SYSADMIN 역할에 부여해 그 역할을 가진 사용자가 웨어하우스를 시작·중지·크기 조정하게 할 수도 있어요.
GRANT ALL ON WAREHOUSE testing_vw TO ROLE SYSADMIN;
작업 8: 사용자를 로그인 초대하고 비밀번호 재설정
마지막 구성 작업으로, 만든 모든 사용자에게 계정을 사용할 수 있다고 알려요. 가장 빠르고 쉬운 방법은 ALTER USER 명령으로 각 사용자의 비밀번호를 재설정하는 거예요. 그러면 각 사용자마다 고유한 URL이 생성되고, 이를 사용자에게 보내거나 전달해요. 사용자는 그 URL로 비밀번호를 바꾸고 계정에 로그인해요. 예:
ALTER USER ra_user1 RESET PASSWORD;
ALTER USER ra_user2 RESET PASSWORD;
중요: 각 URL은 한 번만 사용할 수 있고 4시간 후에 만료돼요. 다만 사용자의 비밀번호는 필요할 때마다 재설정할 수 있어요.