CREATE USER¶
システム内の新しいユーザーを作成するか、既存のユーザーを置き換えます。詳細については、 ユーザー管理 をご参照ください。
注釈
ユーザーを作成できるのは、ユーザー管理者(つまり、 USERADMIN ロール以上のユーザー)またはアカウントの CREATE USER 権限を持つ別のロールのみです。
- こちらもご参照ください。
構文¶
CREATE [ OR REPLACE ] USER [ IF NOT EXISTS ] <name>
[ objectProperties ]
[ objectParams ]
[ sessionParams ]
[ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
条件:
objectProperties ::= PASSWORD = '<string>' LOGIN_NAME = <string> DISPLAY_NAME = <string> FIRST_NAME = <string> MIDDLE_NAME = <string> LAST_NAME = <string> EMAIL = <string> MUST_CHANGE_PASSWORD = TRUE | FALSE DISABLED = TRUE | FALSE DAYS_TO_EXPIRY = <integer> MINS_TO_UNLOCK = <integer> DEFAULT_WAREHOUSE = <string> DEFAULT_NAMESPACE = <string> DEFAULT_ROLE = <string> DEFAULT_SECONDARY_ROLES = ( 'ALL' ) MINS_TO_BYPASS_MFA = <integer> RSA_PUBLIC_KEY = <string> RSA_PUBLIC_KEY_FP = <string> RSA_PUBLIC_KEY_2 = <string> RSA_PUBLIC_KEY_2_FP = <string> COMMENT = '<string_literal>'objectParams ::= ENABLE_UNREDACTED_QUERY_SYNTAX_ERROR = TRUE | FALSE NETWORK_POLICY = <string>sessionParams ::= ABORT_DETACHED_QUERY = TRUE | FALSE AUTOCOMMIT = TRUE | FALSE BINARY_INPUT_FORMAT = <string> BINARY_OUTPUT_FORMAT = <string> DATE_INPUT_FORMAT = <string> DATE_OUTPUT_FORMAT = <string> ERROR_ON_NONDETERMINISTIC_MERGE = TRUE | FALSE ERROR_ON_NONDETERMINISTIC_UPDATE = TRUE | FALSE JSON_INDENT = <num> LOCK_TIMEOUT = <num> QUERY_TAG = <string> ROWS_PER_RESULTSET = <num> SIMULATED_DATA_SHARING_CONSUMER = <string> STATEMENT_TIMEOUT_IN_SECONDS = <num> STRICT_JSON_OUTPUT = TRUE | FALSE TIMESTAMP_DAY_IS_ALWAYS_24H = TRUE | FALSE TIMESTAMP_INPUT_FORMAT = <string> TIMESTAMP_LTZ_OUTPUT_FORMAT = <string> TIMESTAMP_NTZ_OUTPUT_FORMAT = <string> TIMESTAMP_OUTPUT_FORMAT = <string> TIMESTAMP_TYPE_MAPPING = <string> TIMESTAMP_TZ_OUTPUT_FORMAT = <string> TIMEZONE = <string> TIME_INPUT_FORMAT = <string> TIME_OUTPUT_FORMAT = <string> TRANSACTION_DEFAULT_ISOLATION_LEVEL = <string> TWO_DIGIT_CENTURY_START = <num> UNSUPPORTED_DDL_ACTION = <string> USE_CACHED_RESULT = TRUE | FALSE WEEK_OF_YEAR_POLICY = <num> WEEK_START = <num>
注釈
読みやすくするために、ユーザーに設定できるセッションパラメーターの完全なリストはここには含まれていません。すべてのセッションパラメーターの完全なリストとその説明、およびアカウントとオブジェクトのパラメーターついては、 パラメーター をご参照ください。
必須パラメーター¶
name
ユーザーの識別子。アカウントに対して一意である必要があります。
識別子はアルファベットで始まる必要があり、識別子文字列全体が二重引用符で囲まれていない限り、スペースや特殊文字を含めることはできません(例:
"My object"
)。二重引用符で囲まれた識別子も大文字と小文字が区別されます。詳細については、 識別子の要件 をご参照ください。
注釈
ユーザーはこの値を使用してSnowflakeにログインすることは しません。代わりにユーザーは、 LOGIN_NAME
プロパティに指定された値を使用してログインします。ただし、ユーザーのログイン名が明示的に指定されていない場合は、ユーザー名/識別子がデフォルトのログイン名として機能します。
オプションのオブジェクトプロパティ(objectProperties
)¶
PASSWORD = 'string'
ユーザーのパスワードは、一重引用符または二重引用符で囲む必要があります。パスワードが指定されていない場合、ユーザーは、パスワードが明示的に指定されるまでSnowflakeにログインできません。
パスワードにバックスラッシュ(例:
\
)文字が使用されている場合は、 SQL コマンドでパスワードを指定する際に、バックスラッシュで文字をエスケープするか、二重ドル記号(例:$$
)区切り文字を使用します。詳細については、 文字列およびバイナリデータ型 をご参照ください。Snowflakeでのパスワードの詳細については、 パスワードポリシー をご参照ください。
デフォルト:
NULL
LOGIN_NAME = string
ユーザーがシステムにログインするために入力する名前。ユーザーのログイン名は、アカウント全体で一意である必要があります。
ログイン名には、スペースや感嘆符(
!
)、パーセント記号(%
)、アスタリスク(*
)などの英数字以外の文字列を使用できます。ただし、文字列にスペースまたは英数字以外の文字が含まれる場合は、一重引用符または二重引用符で囲む必要があります。ログイン名は常に大文字と小文字を区別しません。Snowflakeでは、異なるユーザー名とログイン名を指定して、ログインに共通の識別子(例: メールアドレス)を使用できるようにします。
デフォルト: ユーザーの名前/識別子(つまり、値が指定されていない場合は、
name
に指定された値をログイン名として使用)DISPLAY_NAME = string
Snowflakeウェブインターフェイスでユーザーに表示される名前。
デフォルト: ユーザーの名前/識別子(つまり、値が指定されていない場合は、
name
に指定された値を表示名として使用)FIRST_NAME = string
、 .MIDDLE_NAME = string
、 .LAST_NAME = string
ユーザーの名、ミドルネーム、および姓。
デフォルト:
NULL
EMAIL = string
ユーザーのメールアドレス。
Snowflakeを使用するためにメールアドレスは必要ありません。ただし、Snowflakeコミュニティにアクセスしてサポートチケットを開いたり、コミュニティフォーラムに投稿したりするには、ユーザーの有効なメールアドレスを指定する必要があります。
個人のメールアドレスではなく、会社のメールアドレスを指定することをお勧めします。ユーザーのメールアドレスは、Snowflakeアカウントの他のすべてのユーザーに表示されます。
デフォルト:
NULL
MUST_CHANGE_PASSWORD = TRUE | FALSE
ユーザーがシステムへの次のログイン(最初/初回のログインを含む)でパスワードの変更を強制されるかどうかを指定します。
デフォルト:
FALSE
DISABLED = TRUE | FALSE
ユーザーを無効にするかどうかを指定します。これにより、次のアクションが防止されます。
新しいユーザーの場合、ユーザーはSnowflakeからロックアウトされ、ログインできません。
既存のユーザーの場合、プロパティを設定すると、現在実行中のすべてのクエリが中止され、ユーザーは新しいクエリを発行できなくなります。ユーザーはすぐにSnowflakeからロックアウトされ、再びログインできません。
デフォルト:
FALSE
DAYS_TO_EXPIRY = integer
ユーザーのステータスが「期限切れ」に設定され、ユーザーがログインできなくなるまでの日数を指定します。これは、一時的なユーザー(つまり、一定の期間だけSnowflakeにアクセスする必要があるユーザー)を定義するのに役立ちます。一般に、 アカウント管理者 (つまり、ACCOUNTADMINロールを持つユーザー)にはこのプロパティを設定しないでください。Snowflakeは、ユーザーが「期限切れ」になるとロックアウトするためです。
設定すると、値は
0
までカウントダウンしますが、停止しません。負の値は、ユーザーのステータスが「期限切れ」であることを示します。値をリセットするには、 ALTER USER を使用して次の値を設定します。ユーザーを一時ユーザーとして再度有効にするには、値を
0
より大きい値に設定します。ユーザーを永続ユーザーとして指定するには、値を
NULL
または0
に設定します。
デフォルト:
NULL
MINS_TO_UNLOCK = integer
ユーザーログインの一時ロックが解除されるまでの分数を指定します。不正なユーザーログインから保護するために、Snowflakeは5回連続して失敗したログイン試行後にユーザーを一時的にロックします。
正の値は、ユーザーのステータスが「ロック」されていることを示します。
値が
0
(または負の値)までカウントダウンすると、ロックが解除され、ユーザーは再びログインできるようになります。ユーザーがSnowflakeに正常にログインすると、値は
NULL
にリセットされます。
ユーザーを作成するとき、指定された時間が経過するまでログインできないようにこのプロパティを設定できます。
ユーザーのロックをすぐに削除するには、 ALTER USER を使用して、このパラメーターに
0
の値を指定します。デフォルト:
NULL
DEFAULT_WAREHOUSE = string
ログイン時のユーザーのセッションに対してデフォルトでアクティブになっている仮想ウェアハウスを指定します。
ユーザーは、 ALTER USER を使用して現在のデフォルトの仮想ウェアハウスを指定または変更できます。さらに、セッションを開始(ログイン)した後、ユーザーは USE WAREHOUSE を使用してセッションの仮想ウェアハウスを変更できます。
CREATE USER 操作では、ウェアハウスが存在することを確認しないことに注意してください。
デフォルト:
NULL
DEFAULT_NAMESPACE = string
ログイン時にユーザーのセッションに対してデフォルトでアクティブになる名前空間(データベースのみ、またはデータベースとスキーマ)を指定します。
データベースのみを指定するには、データベース名を入力します。
スキーマを指定するには、完全修飾スキーマ名を
db_name.schema_name
の形式で入力します。
ユーザーは、 ALTER USER を使用して現在のデフォルト名前空間を指定または変更できます。さらに、セッションを開始(つまり、ログイン)した後、ユーザーは USE DATABASE または USE SCHEMA を使用してセッションの名前空間を変更できます。
CREATE USER 操作では、名前空間が存在することを確認しないことに注意してください。
デフォルト:
NULL
DEFAULT_ROLE = string
ログイン時にユーザーのセッションに対してデフォルトでアクティブになるプライマリロールを指定します。プライマリロールは、 CREATE <オブジェクト> ステートメントまたはその他の SQL アクションの実行を承認する単一のロールです。これらのアクションを実行するための権限は、プライマリロールまたはロール階層内の下位のロールに付与できます。
ユーザーに既定のロールを指定しても、そのロールはユーザーに付与 されません。ロールは、 GRANT ROLE コマンドを使用してユーザーに明示的に付与する必要があります。さらに、 CREATE USER 操作はロールが存在することを確認しません。
ユーザーは、 ALTER USER を使用して現在の既定のロールを指定または変更できます。さらに、セッションを開始(ログイン)した後、ユーザーは USE ROLE を使用してセッションのロールを変更できます。いずれの場合も、明示的に付与されたロールからのみ選択できます。
デフォルト:
NULL
DEFAULT_SECONDARY_ROLES = ( 'ALL' )
ログイン時にユーザーのセッションでアクティブになるセカンダリロールのセットを指定します。セカンダリロールは、 CREATE <オブジェクト> ステートメントの実行 以外 の SQL アクションを承認するロールのセットです。これらのアクションを実行するための権限は、プライマリロール、セカンダリロール、またはロール階層内の下位のロールに付与できます。
ユーザーにデフォルトのセカンダリロールを指定しても、そのロールはユーザーに付与 されません。ロールは、 GRANT ROLE コマンドを使用してユーザーに明示的に付与する必要もあります。
次の値がサポートされています。
ALL
:ユーザーに付与されているすべてのロール。
各 SQL ステートメントが実行されると、ロールのセットが再評価されることに注意してください。追加のロールがユーザーに付与され、そのユーザーが新しい SQL ステートメントを実行する場合、新しく付与されたロールは、新しい SQL ステートメントのアクティブなセカンダリロールです。同じロジックが、ユーザーから取り消されたロールにも適用されます。
デフォルト:
NULL
MINS_TO_BYPASS_MFA = integer
ユーザーの MFA を一時的にバイパスする分数を指定します。
このプロパティを使用すると、MFA 登録ユーザーの MFA デバイスが使用できない場合、ログイン時に MFA を一時的にバイパスできるようになります。
RSA_PUBLIC_KEY = string
ユーザーの RSA 公開キーを指定します。 キーペア認証 に使用されます。
RSA_PUBLIC_KEY_FP = string
ユーザーの RSA 公開キーの指紋を指定します。 キーペア認証 に使用されます。
RSA_PUBLIC_KEY_2 = string
ユーザーの2番目の RSA 公開キーを指定します。組織が設定した有効期限スケジュールに基づいて、 キーペア認証 用の公開キーと秘密キーを交代で使用します。
RSA_PUBLIC_KEY_2_FP = string
ユーザーの2番目の RSA 公開キーの指紋を指定します。組織が設定した有効期限スケジュールに基づいて、 キーペア認証 用の公開キーと秘密キーを交代で使用します。
COMMENT = 'string_literal'
ユーザーのコメントを指定します。
デフォルト:
NULL
オプションのオブジェクトパラメーター(objectParams
)¶
ENABLE_UNREDACTED_QUERY_SYNTAX_ERROR = { TRUE | FALSE }
構文エラーや解析エラーによって失敗したクエリが、クエリ履歴にどのように表示されるかを制御します。FALSE の場合は、クエリ履歴を提供するビュー、ページ、および関数から失敗したクエリのコンテンツがマスキングされます。
このパラメーターは、クエリを実行したユーザー以外の、クエリ履歴を表示しているユーザーの動作を制御します。
AUDIT 権限を付与または継承されたロールを持つユーザーのみが、 ENABLE_UNREDACTED_QUERY_SYNTAX_ERROR パラメーターを設定できます。
NETWORK_POLICY = string
既存の ネットワークポリシー がユーザーに対してアクティブであることを指定します。ネットワークポリシーは、アクセストークンまたは更新トークンの認証コードを交換するとき、および更新トークンを使用して新しいアクセストークンを取得するとき、ユーザー IP アドレスのリストを制限します。
このパラメーターが設定されていない場合、アカウントのネットワークポリシー(存在する場合)が代わりに使用されます。
オプションのセッションパラメーター(sessionParams
)¶
ユーザーに設定する1つ(または複数)のセッションパラメーターの既定値を指定します(空白、コンマ、または改行により区切り)。これらのデフォルトは、ユーザーがSnowflakeにログインしてセッションを開始するたびに設定されます。ユーザーは、セッション内で ALTER SESSION を使用してこれらのデフォルトをいつでも変更できます。
ユーザーに指定できるセッションパラメーターの完全なリスト(デフォルト値を含む)については、 パラメーター をご参照ください。
オプションのパラメーター¶
TAG ( tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ] )
タグ の名前とタグ文字列の値を指定します。
タグ値は常に文字列であり、タグ値の最大文字数は256です。
ステートメントでのタグの指定に関する情報については、 オブジェクトおよび列のタグクォータ をご参照ください。
アクセス制御の要件¶
この SQL コマンドの実行に使用される ロール には、少なくとも次の 権限 が必要です。
権限 |
オブジェクト |
メモ |
---|---|---|
CREATE USER |
アカウント |
Only the USERADMIN role, or a higher role, has this privilege by default. The privilege can be granted to additional roles as needed. |
指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。
セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。
使用上の注意¶
メタデータについて。
注意
Snowflakeサービスを使用する場合、お客様は、個人データ(ユーザーオブジェクト向け以外)、機密データ、輸出管理データ、またはその他の規制されたデータがメタデータとして入力されていないことを確認する必要があります。詳細については、 Snowflakeのメタデータフィールド をご参照ください。
CREATE OR REPLACE <オブジェクト> ステートメントはアトミックです。つまり、オブジェクトが置き換えられると、単一のトランザクションで、古いオブジェクトが削除されて新しいオブジェクトが作成されます。
例¶
すべてのデフォルトプロパティ、既定のロール、および最初のログイン後にユーザーが変更する必要がある基本パスワードを持つユーザーを作成します。
CREATE USER user1 PASSWORD='abc123' DEFAULT_ROLE = myrole DEFAULT_SECONDARY_ROLES = ('ALL') MUST_CHANGE_PASSWORD = TRUE;