ユーザー管理¶
ユーザー管理者は、 SQL またはウェブインターフェイスを介してSnowflakeユーザーを作成および管理できます。
SQL を使用すると、管理者はユーザーのログイン認証情報やデフォルトの変更など、ユーザーに関連するすべてのタスクを実行できます。
Snowsight は、ユーザー関連のタスクの大半をサポートします。
Classic Console はすべてのユーザー関連タスクをサポートしていませんが、ユーザーを作成して、ユーザーのパスワードのリセットといった、最も一般的なアクティビティを実行するためのウィザードを提供します。
ユーザーのタイプ¶
人間のユーザーに該当するユーザーオブジェクトと、サービスやアプリケーションに該当するユーザーオブジェクトがあります。後者はプログラム的にSnowflakeと通信を行い、人間による介入を必要としません。ユーザーオブジェクトを作成する際、人間とサービスを区別するためにユーザーのタイプを指定します。この区別は重要になります。人間のユーザーは、 多要素認証(MFA) に登録する必要がありますが、サービスやアプリケーションには必要ありません。サービスやアプリケーションにはセカンダリの認証方法を使用する人間がいないためです。
ユーザーオブジェクトの 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:
Snowflakeによって Snowpark Container Services 用に作成されるユーザーです。管理者は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 のロールに加えて、各ユーザーに追加のロールを割り当てることができ、これらのロールの1つを 既定のロール として指定できます。ユーザーの既定のロールにより、ユーザーが開始したSnowflakeセッションで使用されるロールが決まります。ただし、これはデフォルトにすぎません。ユーザーは、セッション内のロールをいつでも変更できます。
ロールは、ユーザー作成時またはその後に割り当てることができます。
注意
ユーザーに割り当てる追加のロールを決定し、既定のロールを指定するときは、事前定義された ACCOUNTADMIN のロール(アカウントレベルの管理タスクを実行するために必要)について以下を考慮します。
Snowflakeでは、 ACCOUNTADMINの割り当てを厳密に制御するようにお勧めしますが、少なくとも2人のユーザーに割り当てることをお勧めします。
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 を選択します。
従来のコンソールの使用¶
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 ボタンをクリックします。
従来のコンソールの使用¶
ユーザー行をクリックして選択し、 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)
Tip
単一のロールですべての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の使用¶
DESCRIBE USER または SHOW USERS コマンドを使用して、1人以上のユーザーに関する情報を表示します。
例:
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シートのワークシートを回復 することができます。
注意
クラシックコンソールのワークシートは永久に削除され、ダッシュボードは他のユーザーと共有されていない場合はアクセスできなくなります。
テーブルやビューなど、ユーザーが作成したオブジェクトは、オブジェクトが作成された時点でユーザーのアクティブロールが所有しているため、削除されません。 ロール階層 で同じロールまたはそれ以上のロールを割り当てられた別のユーザーは、オブジェクトを管理したり、所有権を別のロールに移したりできます。
Snowsightの使用¶
従来のコンソールの使用¶
SQLの使用¶
DROP USER コマンドを使用してユーザーをドロップします。
DROP USER janesmith;
Pythonの使用¶
ユーザーをドロップするには、 UserResource.drop Python API を使用します。
root.users["janesmith"].drop()