사용자 관리¶
사용자 관리자는 SQL 또는 웹 인터페이스를 통해 Snowflake 사용자를 생성 및 관리할 수 있습니다.
관리자는 SQL을 사용하여 로그인 자격 증명 및 사용자 기본값 변경 등 모든 사용자 관련 작업을 수행할 수 있습니다.
Snowsight 는 대부분의 사용자 관련 작업을 지원합니다.
Classic Console 는 일부 사용자 관련 작업을 지원하지 않지만, 사용자 비밀번호 재설정 등 가장 일반적인 활동을 수행하고 사용자를 생성할 수 있는 마법사를 제공합니다.
사용자 유형¶
일부 사용자 오브젝트는 인간 사용자에 해당하는 반면, 다른 사용자 오브젝트는 사람의 상호작용 없이 프로그래밍 방식으로 Snowflake와 상호작용하는 서비스 또는 애플리케이션에 해당합니다. 사용자 오브젝트를 만들 때 사용자 유형을 지정하여 사람과 서비스를 구분합니다. 이 구분이 중요한 이유는 사람 사용자는 다단계 인증(MFA) 에 등록해야 하지만, 서비스 및 애플리케이션은 사람이 없기 때문에 2차 인증 수단을 사용할 필요가 없기 때문입니다.
사용자 유형은 사용자 오브젝트의 TYPE
속성에 따라 결정됩니다. 이 TYPE
속성의 가능한 값은 다음과 같습니다.
- PERSON:
사용자는 Snowflake와 상호 작용할 수 있는 사람 사용자입니다.
- NULL:
PERSON
과 동일한 함수입니다.- SERVICE:
사용자는 사람의 개입 없이 Snowflake와 상호 작용하는 서비스 또는 애플리케이션입니다.
비대화형 사용 사례의 보안 태세를 개선하기 위해
TYPE
속성이SERVICE
로 설정된 사용자는 다음과 같은 특성을 갖습니다.비밀번호를 사용해 로그인할 수 없습니다.
SAML SSO를 사용해 로그인할 수 없습니다.
MFA에서 등록 할 수 없습니다.
인증 정책 MFA 적용을 받지 않습니다.
다음과 같은 속성을 가질 수 없습니다.
FIRST_NAME
MIDDLE_NAME
LAST_NAME
PASSWORD
MUST_CHANGE_PASSWORD
MINS_TO_BYPASS_MFA
다음 명령을 사용할 수 없습니다.
ALTER USER RESET PASSWORD
ALTER USER SET
DISABLE_MFA = TRUE
- SNOWFLAKE_SERVICE:
Snowpark Container Services 용으로 Snowflake가 생성한 사용자. 관리자는 SNOWFLAKE_SERVICE 유형의 사용자를 만들 수 없으며 기존 사용자의 유형을 SNOWFLAKE_SERVICE 로 변경할 수도 없습니다. SNOWFLAKE_SERVICE 사용자에 대한 자세한 내용은 컨테이너 내부에서 Snowflake에 연결하기 섹션을 참조하십시오.
- LEGACY_SERVICE:
TYPE
속성이LEGACY_SERVICE
로 설정된 사용자는 비대화형 통합을 나타냅니다.SERVICE
와 유사하지만 비밀번호와 SAML 인증을 허용합니다. 향후 릴리스에서는 LEGACY_SERVICE 유형이 더 이상 사용되지 않으며, 이때 모든 비대화형 사용 사례에서는 보안 인증 방법이 포함된 SERVICE 유형을 사용하게 됩니다.LEGACY_SERVICE
사용자는 다음과 같은 특징이 있습니다.SERVICE
사용자와는 달리, 비밀번호나 SAML 인증을 사용하여 로그인할 수 있습니다.SERVICE
사용자의 속성을 가지고 있지만,PASSWORD
및MUST_CHANGE_PASSWORD
속성을 사용할 수 있습니다.SERVICE
사용자의 명령 제한을 받지만, ALTER USER RESET PASSWORD 명령을 사용할 수 있습니다.인증 정책의 다단계 인증(MFA) 적용 대상이 아닙니다. 관리자는 이 속성을 사용하여
LEGACY_SERVICE
사용자가 비밀번호 인증을 위해 MFA를 요구하지 못하도록 사용자 수준 인증 정책을 설정하지 않고도 비밀번호 인증을 위해 MFA를 요구하는 계정 수준 인증 정책을 설정할 수 있습니다.
사용자 역할¶
Snowflake는 사용자가 액세스할 수 있는 오브젝트(가상 웨어하우스, 데이터베이스, 테이블 등)를 관리하는 역할을 사용합니다.
Snowflake는 사전 정의된 역할 세트뿐만 아니라 사용자 지정 역할의 계층 구조를 정의하기 위한 프레임워크를 제공합니다.
모든 Snowflake 사용자는 사전 정의된 PUBLIC 역할에 자동으로 할당되며, 이를 통해 Snowflake 및 기본 오브젝트 액세스에 로그인할 수 있습니다.
PUBLIC 역할뿐만 아니라, 각 사용자는 추가 역할에 할당될 수 있으며 이러한 역할 중 하나가 기본 역할 로 지정됩니다. 사용자의 기본 역할은 사용자가 시작한 Snowflake 세션에서 사용되는 역할을 결정하지만, 이는 단지 기본값에 해당합니다. 사용자는 세션 내에서 언제라도 역할을 변경할 수 있습니다.
역할은 사용자 생성 시 또는 이후에 할당이 가능합니다.
주의
사용자에게 할당할 추가 역할을 결정할 때 및 기본 역할을 지정할 때에는 사전 정의 ACCOUNTADMIN 역할(계정 수준 관리 작업 수행 시 필요)과 관련하여 다음을 고려해야 합니다.
Snowflake는 엄격한 ACCOUNTADMIN 할당을 권장하지만, 두 명 이상의 사용자에게 할당하는 것이 좋습니다.
ACCOUNTADMIN은 절대로 사용자의 기본 역할로 지정되지 않아야 합니다. 대신, 하위 수준 관리 또는 사용자 지정 역할을 기본값으로 지정해야 합니다.
ACCOUNTADMIN 역할과 관련한 자세한 내용과 모범 사례는 액세스 제어 모범 사례 을 참조하십시오. 역할에 대한 보다 일반적인 내용은 액세스 제어의 개요 를 참조하십시오.
사용자를 생성하고 수정하는 데 필요한 권한¶
계정에서 사용자를 관리하기 위해 필요한 역할 또는 권한은 다음과 같습니다.
- 사용자 생성:
USERADMIN 시스템 역할은 SQL(CREATE USER)을 사용하여 사용자를 생성할 수 있습니다.
이를 수행하기 위해 사용자 지정 역할을 사용하려면 이 역할의 계정에 CREATE USER 권한을 부여합니다.
- 사용자 수정:
사용자에 대한 OWNERSHIP 권한이 있는 역할만 SQL (ALTER USER)을 사용하여 대부분의 사용자 속성을 수정할 수 있습니다.
사용자 만들기¶
이 섹션에서는 선택한 인터페이스를 사용하여 특정 계정에 사용자를 생성하는 방법에 대해 설명합니다.
인터페이스를 선택할 때 Classic Console 또는 Snowsight 를 사용하는 웹 인터페이스는 사용자를 만들 때 비밀번호를 지정해야 한다는 점을 고려하십시오. CREATE USER 명령 및 UserCollection.create Python API 는 그렇지 않습니다.
참고
조직 내에서 여러 계정에 액세스할 수 있는 사용자를 만들려면 조직 사용자 를 참조하십시오.
Snowsight 사용하기¶
Snowsight 에 로그인합니다.
Admin » Users & Roles 를 선택합니다.
+ User 를 선택합니다.
User Name 필드에 사용자의 고유 식별자를 입력합니다. 로그인 이름을 지정하지 않는 한 사용자는 이 식별자를 사용하여 Snowflake에 로그인합니다.
선택 사항으로, Email 필드에 사용자의 이메일 주소를 지정합니다.
Password 및 Confirm Password 필드에 사용자의 비밀번호를 입력합니다.
선택 사항으로, 사용자를 생성한 이유를 설명하는 주석을 추가합니다.
사용자가 로그인할 때 비밀번호를 반드시 변경하도록 하려면 Force user to change password on first time login 확인란을 선택한 상태로 두십시오.
선택 사항으로, 사용자에 대한 추가 세부 정보를 지정하려면 Advanced User Options 를 선택하십시오.
Snowflake에 로그인할 때 User Name 대신 사용할 Login Name.
로그인 후 화면에 나타나는 Display Name.
사용자 프로필을 작성하기 위한 First Name 및 Last Name.
Default Role, Default Warehouse, Default Namespace
Create User 를 선택합니다.
Classic Console 사용하기¶
Create 를 선택합니다.
User Name 필드에 사용자의 고유 식별자를 입력합니다.
참고
사용자 이름은 Snowflake에서 사용자에 대한 고유 식별자입니다. 이러한 사용자 이름은 사용자의 로그인 이름(즉, 사용자가 Snowflake에 로그인할 때 입력하는 이름)이 아닙니다. Snowflake에서는 원하는 경우 다른 사용자 이름 및 로그인 이름을 사용하는 것이 허용됩니다. 사용자의 로그인 이름은 다음 화면에서 지정할 수 있습니다.
Password 및 Confirm Password 필드에 사용자의 비밀번호를 입력합니다.
사용자가 다음 로그인 시에 비밀번호를 변경하도록 하려면 Force Password Change 확인란을 선택하고, 그렇지 않으면 확인란의 선택을 해제합니다.
Next 를 선택합니다. Advanced 화면이 열립니다.
선택 사항으로 사용자의 Login Name, Display Name 및 개인 정보를 입력합니다.
참고
사용자가 Snowflake에 로그인하려면 로그인 이름이 필요합니다. 사용자가 로그인 이름을 명시적으로 입력하지 않으면 Snowflake는 사용자 이름을 로그인 이름으로 사용합니다.
Next 를 선택합니다. Preferences 화면이 열립니다.
선택 사항으로 사용자의 기본값을 입력합니다.
가상 웨어하우스
db_name
또는db_name.schema_name
형식의 네임스페이스역할
Finish 를 선택합니다. Snowflake에 성공 메시지가 표시됩니다.
SQL 사용하기¶
사용자를 생성하려면 CREATE USER 명령을 사용합니다.
중요
사용자를 생성할 때 기본 역할을 사용자에게 할당하려면 이 역할의 권한을 사용자에게 명시적으로 부여해야 합니다. 예:
CREATE USER janesmith PASSWORD = 'abc123' DEFAULT_ROLE = myrole MUST_CHANGE_PASSWORD = TRUE; GRANT ROLE myrole TO USER janesmith;
GRANT ROLE 명령을 사용하면 여러 역할을 한 명의 사용자에게 할당할 수 있습니다. 웹 인터페이스는 현재 이러한 기능을 지원하지 않습니다.
Python 사용하기¶
UserCollection .create Python API 를 사용하여 사용자를 만듭니다.
중요
사용자를 생성할 때 기본 역할을 사용자에게 할당하려면 이 역할의 권한을 사용자에게 명시적으로 부여해야 합니다. 예:
from snowflake.core.user import Securable, User my_user = User( name="janesmith", password="abc123", default_role="myrole", must_change_password=True) root.users.create(my_user) root.users['janesmith'].grant_role(role_type="ROLE", role=Securable(name='myrole'))
사용자 비활성화 또는 활성화하기¶
사용자를 비활성화하면 사용자가 Snowflake에 로그인할 수 없습니다. 다음 인터페이스를 통해 사용자를 비활성화할 수 있습니다.
Snowsight 사용하기¶
Snowsight 에 로그인합니다.
Admin » Users & Roles 를 선택합니다.
열리는 확인 대화 상자에서 Disable 을 선택합니다.
사용자를 활성화하려면 같은 단계를 따르되 Enable User 를 클릭하십시오.
Classic Console 사용하기¶
선택할 사용자 행을 클릭한 후 Disable User 버튼을 클릭합니다. 확인 대화 상자가 열립니다.
사용자를 비활성화하려면 Yes 를 클릭합니다.
사용자를 활성화하려면 같은 단계를 따르되 Enable User 를 클릭하십시오.
SQL 사용하기¶
사용자를 비활성화 또는 활성화하려면 ALTER USER 명령을 사용합니다. 예:
사용자 비활성화:
ALTER USER janesmith SET DISABLED = TRUE;
사용자 활성화:
ALTER USER janesmith SET DISABLED = FALSE;
Python 사용하기¶
UserResource.create_or_alter Python API 를 사용하여 사용자를 비활성화하거나 활성화합니다. 예:
사용자 비활성화:
user_parameters = root.users["janesmith"].fetch() user_parameters.disabled = True root.users["janesmith"].create_or_alter(user_parameters)
사용자 활성화:
user_parameters = root.users["janesmith"].fetch() user_parameters.disabled = False root.users["janesmith"].create_or_alter(user_parameters)
사용자 잠금 해제하기¶
사용자 로그인을 5회 연속 시도한 후 실패하면 사용자의 계정이 일정 시간(현재 15분) 동안 잠깁니다. 일정 시간 후에는 시스템에서 잠금이 자동으로 해제되고 사용자는 다시 로그인을 시도할 수 있습니다.
시간이 경과하기 전에 사용자의 잠금을 해제하려면 ALTER USER 명령 또는 UserResource.create_or_alter Python API 를 사용하여 타이머를 재설정할 수 있습니다.
다음 예시에서는 타이머를 0으로 재설정하여, janesmith
사용자의 잠금을 즉시 해제합니다.
ALTER USER janesmith SET MINS_TO_UNLOCK= 0;
user_parameters = root.users["janesmith"].fetch()
user_parameters.mins_to_unlock = 0
root.users["janesmith"].create_or_alter(user_parameters)
팁
단일 역할에 모든 Snowflake 사용자에 대한 OWNERSHIP 권한이 있는 경우 여러 사용자에게 해당 역할에 대한 권한을 부여하는 것이 좋습니다. 이러한 방식으로 해당 역할의 구성원이 잠긴 경우 다른 구성원이 해당 사용자의 잠금을 해제할 수 있습니다.
사용자의 세션 매개 변수 변경하기¶
사용자의 세션 매개 변수를 표시하려면 다음 SQL 구문을 사용합니다.
SHOW PARAMETERS [ LIKE '<pattern>' ] FOR USER <name>
사용자의 세션 매개 변수를 변경하려면 다음 구문을 사용합니다.
ALTER USER <name> SET <session_param> = <value>
예를 들어, 사용자가 시간 제한 없이 Snowflake에 계속해서 연결하도록 허용합니다.
ALTER USER janesmith SET CLIENT_SESSION_KEEP_ALIVE = TRUE;
사용자의 세션 매개 변수를 기본값으로 재설정하려면 다음 구문을 사용합니다.
ALTER USER <name> UNSET <session_param>
다른 사용자 속성 수정하기¶
ALTER USER 명령 또는 UserResource.create_or_alter Python API 를 사용하여 다른 모든 사용자 속성을 수정할 수 있습니다. Snowsight 를 사용하여 여러 동일한 사용자 속성을 수정할 수 있습니다.
예:
사용자
janesmith
의 성을Jones
로 변경:- SQL:
ALTER USER janesmith SET LAST_NAME = 'Jones';
- Python:
user_parameters = root.users["janesmith"].fetch() user_parameters.last_name = "Jones" root.users["janesmith"].create_or_alter(user_parameters)
- Snowsight:
사용자
janesmith
의 기본 웨어하우스, 네임스페이스, 기본 역할, 보조 역할 설정 또는 변경:- SQL:
ALTER USER janesmith SET DEFAULT_WAREHOUSE = mywarehouse DEFAULT_NAMESPACE = mydatabase.myschema DEFAULT_ROLE = myrole DEFAULT_SECONDARY_ROLES = ('ALL');
- Python:
user_parameters = root.users["janesmith"].fetch() user_parameters.default_warehouse = "mywarehouse" user_parameters.default_namespace = "mydatabase.myschema" user_parameters.default_role = "myrole" user_parameters.default_secondary_roles = "ALL" root.users["janesmith"].create_or_alter(user_parameters)
- Snowsight:
참고
Snowsight 를 사용하여 사용자에 대한 기본 보조 역할을 설정할 수 없습니다.
사용자 보기¶
다음 인터페이스를 사용하여 사용자에 대한 정보를 볼 수 있습니다.
SQL 사용하기¶
1명 이상 사용자에 대한 정보를 살펴보려면 DESCRIBE USER 또는 SHOW USERS 명령을 사용합니다.
예:
DESC USER janeksmith;
Python 사용하기¶
UserResource.fetch Python API 를 사용하여 사용자에 대한 정보를 가져옵니다.
예:
my_user = root.users["janesmith"].fetch()
print(my_user.to_dict())
UserCollection.iter Python API 를 사용하여 계정의 사용자를 목록으로 만듭니다.
예:
users = root.users.iter(like="jane%")
for user in users:
print(user.name)
Snowsight 사용하기¶
사용자 삭제하기¶
사용자를 삭제하면 Snowflake에서 사용자의 자격 증명이 제거됩니다.
중요
사용자를 삭제하면 해당 사용자가 소유한 폴더, 워크시트 및 대시보드에 액세스할 수 없게 되며 공유가 활성화되어 있지 않으면 다른 사용자에게 이전되지 않습니다.
뷰, 뷰 + 실행 및 편집 권한 이 있는 공유 대상 사용자는 할당된 권한을 유지하며 공유 폴더, 워크시트 및 대시보드에 계속 액세스할 수 있습니다. 하지만 편집 권한이 있는 사용자만 공유 폴더, 워크시트, 대시보드를 수정하거나 삭제할 수 있습니다. 소유자를 삭제하기 전에 최소 1명의 다른 사용자에게 편집 권한을 부여하지 않으면 해당 소유자의 폴더, 워크시트 및 대시보드를 삭제할 수 없습니다.
삭제된 사용자의 워크시트에 공유가 활성화되어 있지 않은 경우, 관리자는 사용자가 소유한 최대 500개의 워크시트를 복구 할 수 있습니다.
조심
Classic Console의 모든 워크시트는 영구적으로 삭제되며, 이전에 다른 사용자와 공유하지 않은 대시보드에 액세스할 수 없게 됩니다.
테이블이나 뷰와 같이 사용자가 만든 오브젝트는 오브젝트 생성 시 사용자의 활성 역할이 소유하므로 삭제되지 않습니다. 역할 계층 구조 의 동일 역할 또는 이상의 역할에 할당된 다른 사용자는 오브젝트를 관리하거나 다른 역할로 소유권을 이전할 수 있습니다.
Snowsight 사용하기¶
Classic Console 사용하기¶
SQL 사용하기¶
사용자를 삭제하려면 DROP USER 명령을 사용합니다.
DROP USER janesmith;
Python 사용하기¶
UserResource.drop Python API 를 사용하여 사용자를 삭제합니다.
root.users["janesmith"].drop()