パスワードの操作¶
このトピックでは、管理者がパスワード要件を構成し、ユーザーパスワードをリセットする方法について説明します。
パスワードポリシー¶
パスワードポリシーは、Snowflakeに対して認証するためのパスワードを作成およびリセットするときに満たす必要がある要件を指定します。
Snowflakeは、パスワードポリシーに2つのオプションを提供します。
初期ユーザープロビジョニングプロセスを容易にする組み込みパスワードポリシー。
ユースケースとユーザー管理者のニーズに応じて、Snowflakeアカウント、個々のユーザー、またはその両方のレベルで設定できるスキーマレベルのパスワードポリシーオブジェクト。
パスワードポリシーとパスワードのベストプラクティス¶
Snowflakeは、パスワードとパスワードポリシーに関する次のベストプラクティスを推奨しています。
- カスタムパスワードポリシーを作成して適用する
アカウントまたはユーザーにパスワードポリシーが設定されると、パスワードポリシーオブジェクトが適用されます。
これらのプロパティを、内部セキュリティのニーズに合った値に設定します。詳細については、このトピックの ステップ4: パスワードポリシーを作成する をご参照ください。
PASSWORD_HISTORYは、ユーザーがパスワードを頻繁に再利用できないようにし、ユーザーのパスワードを特定するブルートフォース攻撃を防ぐのに役立ちます。PASSWORD_MIN_AGE_DAYSを使用して、ユーザーに新しいパスワードの使用を要求します。0という値は推奨されません。ユーザーがパスワードを変更するとパスワード履歴が使い果たされ、元のパスワード値がすぐに再利用される可能性があるためです。
ユーザーがSnowflakeへの初回または次回のログイン時にパスワードポリシーを満たすようにパスワードを変更することをリクエストするには、 ALTER USER コマンドを使用してユーザーの
MUST_CHANGE_PASSWORDプロパティをTRUEに設定します。詳細については、 ステップ6: パスワードの変更をリクエストする (このトピック内)をご参照ください。
- 強力なパスワードをリクエストする
アカウントレベルのパスワードポリシーを定義して、強力なパスワードをリクエストします。
強力なパスワードは、少なくとも14文字で構成され、大文字と小文字、特殊文字(例:
!や*)、および数字の組み合わせが含まれます。- MFA
多要素認証 (MFA) を使用して、セキュリティを強化してください。
- SCIM の使用
ユーザーが SCIM API リクエストでSnowflakeにアクセスするためのパスワードを設定できます。SCIM 管理者とユーザー管理者は、IDプロバイダーで、 または Snowflakeのパスワードポリシーを使用して、Snowflakeにアクセスするためのユーザーパスワードを管理することを選択する必要があります。
現在、 SCIM でSnowflakeにプロビジョニングされたユーザーには、 デフォルトのSnowflakeパスワードポリシー を満たすパスワードが必要です。このパスワードポリシー機能を使用することを選択した場合は、この要件を回避できます。
デフォルトのパスワードポリシー要件を回避するには、 パスワードポリシーの使用 セクション(このトピック内)の手順に従います。
- パスワードのモニター
パスワードをモニターするには、
Snowflake Account Usage USERS ビューにクエリを実行して、特定のユーザーに対して
HAS_PASSWORD列の値がTRUEを返すかどうかを判断します。Snowflake Account Usage LOGIN_HISTORY ビューにクエリを実行し、
FIRST_AUTHENTICATION_FACTOR列を評価します。ユーザーがSnowflakeにアクセスするためにパスワードを必要としない場合は、 ALTER USER コマンドを実行してpasswordプロパティを NULL に設定します。
新規ユーザーの初期パスワードの設定¶
During the initial user creation, it is possible to set a weak password for the user that does not meet the minimum requirements
of the password policy that is in effect. This gives administrators the option to use generic passwords for the user during the
creation process. If this pathway is chosen, Snowflake strongly recommends setting the MUST_CHANGE_PASSWORD property to
TRUE to require users to change their password on their next login, including the initial login. When a user resets
their password, they must choose one that conforms to the password policy in effect, whether it is a Snowflake-provided policy or a custom
one.
さらに、Snowflakeでは、初期パスワードなしでのユーザー作成を許可し、新しいユーザーがシステムにログインできないようにするビジネスプロセスをサポートします。これが発生した場合、ユーザーの PASSWORD プロパティ値は NULL です。ただし、一般的な規則としてSnowflakeでは、ユーザーが初期パスワードと合わせて作成されることを想定しています。
Snowflakeが提供するパスワードポリシー¶
パスワードには、空白文字や感嘆符(!)、パーセント記号(%)、アスタリスク(*)などの特殊文字(英数字以外の文字)を含め、256文字までの大文字と小文字が区別される文字列を使用できます。
既存のパスワードをリセット (例: 'test12345' を 'q@-*DaC2yjZoq3Re4JYX' に変更)するコンテキストの場合、Snowflakeは、 ALTER USER コマンドとウェブインターフェイスを使用する際に、最小要件として次のパスワードポリシーを適用します。
少なくとも14文字の長さが必要です。
少なくとも数字1つを含める必要があります。
少なくとも1つの大文字と1つの小文字を含める必要があります。
Snowflakeはできるだけ強力なパスワードを作成するために、次のガイドラインを 強く 推奨しています。
Snowflake用に一意のパスワードを作成します(つまり、他のシステムまたはアカウントからのパスワードを再利用しない)。
複数のランダムな大文字、小文字混合の文字、数字、および空白を含む特殊文字を含めます。
推測しやすい一般的なパスワード、名前、数字、または日付は使用しません。
アカウントとユーザーのカスタムパスワードポリシー¶
カスタムパスワードポリシーは、Snowflakeへの認証のためにパスワードを作成およびリセットするときに満たす必要がある要件を指定する、スキーマレベルのオブジェクトです。これには、パスワードを正常に入力するための試行回数や、パスワードを再試行できるまでの分数が含まれます。(つまり、「ロックアウト」時間)。
パスワードのパスワードポリシー要件には、ユーザーとクライアントがSnowflakeへの認証セキュリティ要件を満たすための、大文字または小文字、特殊文字、数字、およびパスワードの長さが含まれます。強力なパスワードをリクエストするパスワードポリシーは、セキュリティのガイドラインと規制を満たすために役立ちます。
Snowflakeは、Snowflakeアカウントおよび個別ユーザーのパスワードポリシーの設定をサポートしています。Snowflakeアカウントまたはユーザーに対して一度に設定できるパスワードポリシーは1つだけです。Snowflakeアカウントにパスワードポリシーが存在し、同じSnowflakeアカウントのユーザーに別のパスワードポリシーが設定されている場合は、ユーザーレベルのパスワードポリシーがアカウントレベルのパスワードポリシーよりも優先されます。
パスワードポリシーは、Snowflakeアカウントに設定された新しいパスワードに適用されます。既存のパスワードを持つユーザーがパスワードポリシーの要件を満たしていることを確認するには、 ステップ6: パスワードの変更をリクエストする (このトピック内)に示すように、Snowflakeへの次回のログイン時にパスワードを変更するようユーザーにリクエストします。
注釈
ほとんどのパスワードポリシープロパティの変更は、ユーザーが次にパスワードを変更したときに有効になります。例えば、 PASSWORD_MAX_LENGTH プロパティを 10 から 16 に変更し、ユーザーに長いパスワードの使用を要求する場合、ユーザーはパスワードを変更するたびにパスワードポリシーの変更に従わなければなりません。ユーザープロパティ MUST_CHANGE_PASSWORD を ALTER USER ステートメントで TRUE に設定することで、ユーザが次回Snowflakeにログインする際にパスワードの変更を要求することができます。
ただし、Snowflakeは現在のセッションでユーザーにパスワードの変更を強制しないため、一部のパスワードポリシープロパティの変更は次のログイン時に有効になります:
PASSWORD_MAX_AGE_DAYS = integerPASSWORD_MAX_RETRIES = integerPASSWORD_LOCKOUT_TIME_MINS = integer
これらのプロパティを変更しても、現在のセッションには 影響しません。例えば、 PASSWORD_MAX_AGE_DAYS プロパティの値を変更しても、ユーザーの現在のパスワードが失効することはありません。ただし、Snowflakeへの次回ログイン時に、ユーザーはパスワードを変更する必要があります。
考慮事項¶
パスワードポリシーに対する権限の 将来の付与 はサポートされていません。
回避策として、カスタムロールに APPLYPASSWORD POLICY 権限を付与して、そのロールがユーザーまたはSnowflakeアカウントにパスワードポリシーを適用できるようにします。
The password policy can be managed with SQL using Snowflake CLI, SnowSQL or a supported driver or connector, or using Snowsight.
When you reset or change a password, Snowflake evaluates the password policy to ensure that the newly created password matches the password policy requirements.
パスワードポリシーの使用状況の追跡:
Account Usage PASSWORD_POLICIES ビューをクエリして、Snowflakeアカウントの各パスワードポリシーの行を返します。
Information Schemaテーブル関数 POLICY_REFERENCES を使用して、指定されたパスワードポリシーに割り当てられた各ユーザーの行と、Snowflakeアカウントに割り当てられたパスワードポリシーの行を返します。
現在、パスワードポリシーでは次の構文のみがサポートされています。
ここで、
password_policy_nameはパスワードポリシーの完全修飾名です。たとえば、次のクエリを実行して、
my_dbという名前のデータベースとmy_schemaという名前のスキーマに格納されている、password_policy_prod_1という名前のパスワードポリシーが割り当てられている各ユーザーの行を返します。
パスワードポリシーのアクセス制御¶
以下のアクセス制御権限により、ユーザーはパスワードポリシーを操作することができます。
権限 |
オブジェクト型 |
使用状況 |
|---|---|---|
CREATE PASSWORD POLICY |
スキーマ |
新しいパスワードポリシーの作成を有効にします。 |
APPLY PASSWORD POLICY |
アカウント、ユーザー |
アカウントまたはユーザーレベルでパスワードポリシーを適用できるようにします。 |
OWNERSHIP |
パスワードポリシー |
パスワードポリシーに対する包括的な制御を付与します。パスワードポリシーのほとんどのプロパティを変更するために必要です。 |
次のテーブルは、パスワードポリシー DDL の操作と、それに必要な権限の関係をまとめたものです。
操作 |
必要な権限 |
|---|---|
パスワードポリシーを作成する |
パスワードポリシーを格納するためのスキーマに対する CREATE PASSWORD POLICY 権限を持つロール。 |
パスワードポリシーを変更する |
パスワードポリシーに対する OWNERSHIP 権限を持つロール。 |
パスワードポリシーをドロップする |
パスワードポリシーに対する OWNERSHIP 権限を持つロール。 |
パスワードポリシーを説明する |
パスワードポリシーの OWNERSHIP 権限 または . アカウントの APPLY PASSWORD POLICY 権限を持つロール。 |
パスワードポリシーを表示する |
パスワードポリシーの OWNERSHIP 権限 または . アカウントの APPLY PASSWORD POLICY 権限を持つロール。 |
パスワードポリシーを設定および設定解除する |
アカウントまたはユーザーに対する APPLY PASSWORD POLICY 権限を持つロール。 |
注釈
スキーマ内のオブジェクトを操作するには、親データベース上で少なくとも1つの権限と、親スキーマ上で少なくとも1つの権限が必要です。
DDL コマンド¶
Snowflakeは、パスワードポリシーオブジェクトを管理するために次の DDL コマンドを提供します。
パスワードポリシーの使用¶
次のステップは、Snowflakeでパスワードポリシーを定義および設定するための代表的なガイドです。
これらのステップは、 policy_admin という名前のカスタムロールがパスワードポリシーを所有し(つまり、パスワードポリシーに対する OWNERSHIP 権限を持っている)、アカウントまたはユーザーにパスワードポリシーを設定する責任がある(つまり、 ステップ2 に示すように APPLY PASSWORD POLICY グローバル権限を持っている)ことを前提としています。
注釈
アカウントにポリシーを設定するには、 policy_admin カスタムロールに、パスワードポリシーを含むデータベースとスキーマに対する USAGE 権限も必要です。
詳細については、 アクセス制御権限 をご参照ください。
ステップ1: カスタムロールを作成する¶
パスワードポリシーの作成と管理を許可するカスタムロールを作成します。このトピック全体を通して、カスタムロールの例には policy_admin という名前が付けられていますが、ロールには適切な名前を付けることができます。
カスタムロールがすでに存在する場合は、次のステップに進みます。
それ以外の場合は、 policy_admin カスタムロールを作成します。
ステップ2: カスタムロールに権限を付与する¶
policy_admin カスタムロールに次の権限がまだない場合は、以下に示すようにこれらの権限を付与します。
パスワードポリシーを含むデータベースとスキーマの USAGE。
パスワードポリシーを格納するスキーマの CREATE PASSWORD POLICY。
アカウントの APPLY PASSWORD POLICY。
ユーザーにパスワードポリシーを設定する場合は、ユーザーに APPLY PASSWORD POLICY 権限を付与します。たとえば、ユーザー名が JSMITH の場合、次のコマンドを実行します。
詳細については、 パスワードポリシーのアクセス制御 をご参照ください。
ステップ3: ユーザーにカスタムロールを付与する¶
パスワードポリシーの管理を担当するユーザーに policy_admin カスタムロールを付与します。
詳細については、 アクセス制御の構成 をご参照ください
ステップ4: パスワードポリシーを作成する¶
policy_admin カスタムロールを使用して、 password_policy_prod_1 という名前のパスワードポリシーを作成します。詳細については、 CREATE PASSWORD POLICY をご参照ください。
注釈
プロパティ
PASSWORD_MAX_AGE_DAYSは最大値999に設定されています。自社内のガイドラインに沿った値を選択します。詳細については、 CREATE PASSWORD POLICY をご参照ください。
ステップ5: アカウントまたは個別ユーザーにパスワードポリシーを設定する¶
ALTER ACCOUNT コマンドを使用して、アカウントにポリシーを設定します。
1人以上のユーザーに対して追加のパスワードポリシーを作成する場合は、 ALTER USER コマンドを使用して、ユーザーレベルのパスワードポリシーをユーザーに設定します。
重要
アカウントまたはユーザーにすでに設定されているパスワードポリシーを置き換えるには、最初にパスワードポリシーの設定を解除してから、アカウントまたはユーザーに新しいパスワードポリシーを設定します。例:
ステップ6: パスワードの変更をリクエストする¶
ALTER USER ステートメントを使用して個別ユーザーの MUST_CHANGE_PASSWORD プロパティを TRUE に設定し、Snowflakeへの次回のログイン時にパスワードポリシーを満たすようにユーザーにパスワードの変更をリクエストします。
ユーザーのパスワードのリセット¶
管理者は、次のインターフェイスからユーザーのパスワードを変更できます。
Snowsight¶
Snowsight にサインインします。
ナビゲーションメニューで Governance & security » Users & roles を選択します。
ユーザーの新しいパスワードを入力し、パスワードを確認します。
Update を選択します。
SQLの使用¶
ALTER USER コマンドを使用して、ユーザーのパスワードを入力します。例:
または、 ALTER USER ... RESET PASSWORD 構文を使用して、 URL を生成し、ユーザーと共有します。URL は、ユーザーが新しいパスワードを入力できるウェブページを開きます。例:
注釈
生成された URL は1回の使用に対してのみ有効であり、4時間後に有効期限が切れます。
ALTER USER ... RESET PASSWORD ステートメントを実行しても、現在のパスワードは無効になりません。ユーザーは、新しいパスワードが設定されるまで、古いパスワードを引き続き使用できます。
Pythonの使用¶
Snowflake Python APIs の UserResource.create_or_alter メソッドは、現在、既存ユーザーの password の変更に対応していません。この方法でパスワードをセットできるのは、新規ユーザーを作成するときだけです。
管理者のパスワードのリセット¶
アカウント管理者(つまり、ACCOUNTADMIN ロールを持つユーザー)は、 ユーザーのパスワードのリセット で説明されている手順を使用して、自分のパスワードをリセットできます。
アカウント管理者がアカウントからロックアウトされた場合は、 ACCOUNTADMIN ロールを持つ別のユーザーが、ロックアウトされた管理者のパスワードをリセットできます。管理者がロックアウトされ、パスワードを変更できる管理者が他にいない場合は、 Snowflakeサポート に連絡してパスワードをリセットします。
