パスワードの操作

このトピックでは、管理者がパスワード要件を構成し、ユーザーパスワードをリセットする方法について説明します。

パスワードポリシー

パスワードポリシーは、Snowflakeに対して認証するためのパスワードを作成およびリセットするときに満たす必要がある要件を指定します。

Snowflakeは、パスワードポリシーに2つのオプションを提供します。

  • 初期ユーザープロビジョニングプロセスを容易にする組み込みパスワードポリシー。

  • ユースケースとユーザー管理者のニーズに応じて、Snowflakeアカウント、個々のユーザー、またはその両方のレベルで設定できるスキーマレベルのパスワードポリシーオブジェクト。

パスワードポリシーとパスワードのベストプラクティス

Snowflakeは、パスワードとパスワードポリシーに関する次のベストプラクティスを推奨しています。

カスタムパスワードポリシーを作成して適用する

アカウントまたはユーザーにパスワードポリシーが設定されると、パスワードポリシーオブジェクトが適用されます。

これらのプロパティを、内部セキュリティのニーズに合った値に設定します。詳細については、このトピックの ステップ4: パスワードポリシーを作成する をご参照ください。

  • PASSWORD_HISTORY は、ユーザーがパスワードを頻繁に再利用できないようにし、ユーザーのパスワードを特定するブルートフォース攻撃を防ぐのに役立ちます。

  • PASSWORD_MIN_AGE_DAYS を使用して、ユーザーに新しいパスワードの使用を要求します。0という値は推奨されません。ユーザーがパスワードを変更するとパスワード履歴が使い果たされ、元のパスワード値がすぐに再利用される可能性があるためです。

ユーザーがSnowflakeへの初回または次回のログイン時にパスワードポリシーを満たすようにパスワードを変更することをリクエストするには、 ALTER USER コマンドを使用してユーザーの MUST_CHANGE_PASSWORD プロパティを TRUE に設定します。

詳細については、 ステップ6: パスワードの変更をリクエストする (このトピック内)をご参照ください。

強力なパスワードをリクエストする

アカウントレベルのパスワードポリシーを定義して、強力なパスワードをリクエストします。

強力なパスワードは、少なくとも8文字で構成され、大文字と小文字、特殊文字(例: !*)、および数字の組み合わせが含まれます。

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 に設定します。

Snowflakeが提供するパスワードポリシー

パスワードには、空白文字や感嘆符(!)、パーセント記号(%)、アスタリスク(*)などの特殊文字(英数字以外の文字)を含め、256文字までの大文字と小文字が区別される文字列を使用できます。

ユーザーを最初に作成する ときに、以下で説明する最小要件を満たさないユーザーに対して弱いパスワードを設定することができます(例: 'test12345')。この機能により、管理者は作成プロセス中に、ユーザーの汎用パスワードを使用するオプションを利用できるようになります。このパスウェイを選択した場合は、 MUST_CHANGE_PASSWORD プロパティを TRUE に設定して、ユーザーが最初のログインを含むSnowflakeへの次回のログイン時に、パスワードを変更するように要求することを 強く お勧めします。

さらに、Snowflakeでは、初期パスワードなしでのユーザー作成を許可し、新しいユーザーがシステムにログインできないようにするビジネスプロセスをサポートします。これが発生した場合、ユーザーの PASSWORD プロパティ値は NULL です。ただし、一般的な規則としてSnowflakeでは、ユーザーが初期パスワードと合わせて作成されることを想定しています。

既存のパスワードをリセット (例: 'test12345''q@-*DaC2yjZoq3Re4JYX' に変更)するコンテキストの場合、Snowflakeは、 ALTER USER コマンドとウェブインターフェイスを使用する際に、最小要件として次のパスワードポリシーを適用します。

  • 少なくとも8文字の長さが必要です。

  • 少なくとも数字1つを含める必要があります。

  • 少なくとも1つの大文字と1つの小文字を含める必要があります。

Snowflakeはできるだけ強力なパスワードを作成するために、次のガイドラインを 強く 推奨しています。

  • Snowflake用に一意のパスワードを作成します(つまり、他のシステムまたはアカウントからのパスワードを再利用しない)。

  • 8文字以上を使用してください。

  • 複数のランダムな大文字、小文字混合の文字、数字、および空白を含む特殊文字を含めます。

  • 推測しやすい一般的なパスワード、名前、数字、または日付は使用しません。

最後に、ユーザーログインの最高レベルのセキュリティを構成するには、ユーザーを MFA に登録する ことをお勧めします。

アカウントとユーザーのカスタムパスワードポリシー

カスタムパスワードポリシーは、Snowflakeへの認証のためにパスワードを作成およびリセットするときに満たす必要がある要件を指定する、スキーマレベルのオブジェクトです。これには、パスワードを正常に入力するための試行回数や、パスワードを再試行できるまでの分数が含まれます。(つまり、「ロックアウト」時間)。

パスワードのパスワードポリシー要件には、ユーザーとクライアントがSnowflakeへの認証セキュリティ要件を満たすための、大文字または小文字、特殊文字、数字、およびパスワードの長さが含まれます。強力なパスワードをリクエストするパスワードポリシーは、セキュリティのガイドラインと規制を満たすために役立ちます。

Snowflakeは、Snowflakeアカウントおよび個別ユーザーのパスワードポリシーの設定をサポートしています。Snowflakeアカウントまたはユーザーに対して一度に設定できるパスワードポリシーは1つだけです。Snowflakeアカウントにパスワードポリシーが存在し、同じSnowflakeアカウントのユーザーに別のパスワードポリシーが設定されている場合は、ユーザーレベルのパスワードポリシーがアカウントレベルのパスワードポリシーよりも優先されます。

パスワードポリシーは、Snowflakeアカウントに設定された新しいパスワードに適用されます。既存のパスワードを持つユーザーがパスワードポリシーの要件を満たしていることを確認するには、 ステップ6: パスワードの変更をリクエストする (このトピック内)に示すように、Snowflakeへの次回のログイン時にパスワードを変更するようユーザーにリクエストします。

注釈

ほとんどのパスワードポリシープロパティの変更は、ユーザーが次にパスワードを変更したときに有効になります。例えば、 PASSWORD_MAX_LENGTH プロパティを 10 から 16 に変更し、ユーザーに長いパスワードの使用を要求する場合、ユーザーはパスワードを変更するたびにパスワードポリシーの変更に従わなければなりません。ユーザープロパティ MUST_CHANGE_PASSWORDALTER USER ステートメントで TRUE に設定することで、ユーザが次回Snowflakeにログインする際にパスワードの変更を要求することができます。

ただし、Snowflakeは現在のセッションでユーザーにパスワードの変更を強制しないため、一部のパスワードポリシープロパティの変更は次のログイン時に有効になります:

  • PASSWORD_MAX_AGE_DAYS = integer

  • PASSWORD_MAX_RETRIES = integer

  • PASSWORD_LOCKOUT_TIME_MINS = integer

これらのプロパティを変更しても、現在のセッションには 影響しません。例えば、 PASSWORD_MAX_AGE_DAYS プロパティの値を変更しても、ユーザーの現在のパスワードが失効することはありません。ただし、Snowflakeへの次回ログイン時に、ユーザーはパスワードを変更する必要があります。

考慮事項

  • パスワードポリシーに対する権限の 将来の付与 はサポートされていません。

    回避策として、カスタムロールに APPLYPASSWORD POLICY 権限を付与して、そのロールがユーザーまたはSnowflakeアカウントにパスワードポリシーを適用できるようにします。

  • パスワードポリシーは、 SQL を使用して SnowSQL またはサポートされている ドライバーかコネクター を使用して、 または Worksheets で Classic Console または Snowsight を使用して管理できます。

  • パスワードの リセット または 変更:

    • Classic Console、 SnowSQL、およびサポートされているコネクタとドライバー:

      ALTER USER コマンドを実行するか、 Classic Console を使用してパスワードをリセットまたは変更する場合、Snowflakeはパスワードポリシーを評価して、新しく作成されたパスワードがパスワードポリシーの要件と一致することを確認します。

  • パスワードポリシーの使用状況の追跡:

    • Account Usage PASSWORD_POLICIES ビューをクエリして、Snowflakeアカウントの各パスワードポリシーの行を返します。

    • Information Schemaテーブル関数 POLICY_REFERENCES を使用して、指定されたパスワードポリシーに割り当てられた各ユーザーの行と、Snowflakeアカウントに割り当てられたパスワードポリシーの行を返します。

      現在、パスワードポリシーでは次の構文のみがサポートされています。

      POLICY_REFERENCES( POLICY_NAME => '<password_policy_name>' )
      
      Copy

      ここで、 password_policy_name はパスワードポリシーの完全修飾名です。

      たとえば、次のクエリを実行して、 my_db という名前のデータベースと my_schema という名前のスキーマに格納されている、 password_policy_prod_1 という名前のパスワードポリシーが割り当てられている各ユーザーの行を返します。

      SELECT *
      FROM TABLE(
          my_db.information_schema.policy_references(
            POLICY_NAME => 'my_db.my_schema.password_policy_prod_1'
        )
      );
      
      Copy

パスワードポリシーのアクセス制御

以下のアクセス制御権限により、ユーザーはパスワードポリシーを操作することができます。

権限

オブジェクト型

使用状況

CREATE PASSWORD POLICY

スキーマ

新しいパスワードポリシーの作成を有効にします。

APPLY PASSWORD POLICY

アカウント、ユーザー

アカウントまたはユーザーレベルでパスワードポリシーを適用できるようにします。

OWNERSHIP

パスワードポリシー

パスワードポリシーに対する包括的な制御を付与します。パスワードポリシーのほとんどのプロパティを変更するために必要です。

次のテーブルは、パスワードポリシー DDL の操作と、それに必要な権限の関係をまとめたものです。

操作

必要な権限

パスワードポリシーを作成する

パスワードポリシーを格納するためのスキーマに対する CREATE PASSWORD POLICY 権限を持つロール。

パスワードポリシーを変更する

パスワードポリシーに対する OWNERSHIP 権限を持つロール。

パスワードポリシーをドロップする

パスワードポリシーに対する OWNERSHIP 権限を持つロール。

パスワードポリシーを説明する

パスワードポリシーの OWNERSHIP 権限 または . アカウントの APPLY PASSWORD POLICY 権限を持つロール。

パスワードポリシーを表示する

パスワードポリシーの OWNERSHIP 権限 または . アカウントの APPLY PASSWORD POLICY 権限を持つロール。

パスワードポリシーを設定および設定解除する

アカウントまたはユーザーに対する APPLY PASSWORD POLICY 権限を持つロール。

注釈

スキーマ内のオブジェクトに対して操作を実行するには、親データベースとスキーマに対する USAGE 権限が必要です。

DDL コマンド

Snowflakeは、パスワードポリシーオブジェクトを管理するために次の DDL コマンドを提供します。

パスワードポリシーの使用

次のステップは、Snowflakeでパスワードポリシーを定義および設定するための代表的なガイドです。

これらのステップは、 policy_admin という名前のカスタムロールがパスワードポリシーを所有し(つまり、パスワードポリシーに対する OWNERSHIP 権限を持っている)、アカウントまたはユーザーにパスワードポリシーを設定する責任がある(つまり、 ステップ2 に示すように APPLY PASSWORD POLICY グローバル権限を持っている)ことを前提としています。

注釈

アカウントにポリシーを設定するには、 policy_admin カスタムロールに、パスワードポリシーを含むデータベースとスキーマに対する USAGE 権限も必要です。

詳細については、 アクセス制御権限 をご参照ください。

ステップ1: カスタムロールを作成する

パスワードポリシーの作成と管理を許可するカスタムロールを作成します。このトピック全体を通して、カスタムロールの例には policy_admin という名前が付けられていますが、ロールには適切な名前を付けることができます。

カスタムロールがすでに存在する場合は、次のステップに進みます。

それ以外の場合は、 policy_admin カスタムロールを作成します。

USE ROLE USERADMIN;

CREATE ROLE policy_admin;
Copy

ステップ2: カスタムロールに権限を付与する

policy_admin カスタムロールに次の権限がまだない場合は、以下に示すようにこれらの権限を付与します。

  • パスワードポリシーを含むデータベースとスキーマの USAGE。

  • パスワードポリシーを格納するスキーマの CREATE PASSWORD POLICY。

  • アカウントの APPLY PASSWORD POLICY。

USE ROLE SECURITYADMIN;

GRANT USAGE ON DATABASE security TO ROLE policy_admin;

GRANT USAGE ON SCHEMA security.policies TO ROLE policy_admin;

GRANT CREATE PASSWORD POLICY ON SCHEMA security.policies TO ROLE policy_admin;

GRANT APPLY PASSWORD POLICY ON ACCOUNT TO ROLE policy_admin;
Copy

ユーザーにパスワードポリシーを設定する場合は、ユーザーに APPLY PASSWORD POLICY 権限を付与します。たとえば、ユーザー名が JSMITH の場合、次のコマンドを実行します。

GRANT APPLY PASSWORD POLICY ON USER jsmith TO ROLE policy_admin;
Copy

詳細については、 パスワードポリシーのアクセス制御 をご参照ください。

ステップ3: ユーザーにカスタムロールを付与する

パスワードポリシーの管理を担当するユーザーに policy_admin カスタムロールを付与します。

USE ROLE SECURITYADMIN;
GRANT ROLE policy_admin TO USER jsmith;
Copy

詳細については、 アクセス制御の構成 をご参照ください

ステップ4: パスワードポリシーを作成する

policy_admin カスタムロールを使用して、 password_policy_prod_1 という名前のパスワードポリシーを作成します。詳細については、 CREATE PASSWORD POLICY をご参照ください。

USE ROLE policy_admin;

USE SCHEMA security.policies;

CREATE PASSWORD POLICY PASSWORD_POLICY_PROD_1
    PASSWORD_MIN_LENGTH = 14
    PASSWORD_MAX_LENGTH = 24
    PASSWORD_MIN_UPPER_CASE_CHARS = 2
    PASSWORD_MIN_LOWER_CASE_CHARS = 2
    PASSWORD_MIN_NUMERIC_CHARS = 2
    PASSWORD_MIN_SPECIAL_CHARS = 2
    PASSWORD_MIN_AGE_DAYS = 1
    PASSWORD_MAX_AGE_DAYS = 999
    PASSWORD_MAX_RETRIES = 3
    PASSWORD_LOCKOUT_TIME_MINS = 30
    PASSWORD_HISTORY = 5
    COMMENT = 'production account password policy';
Copy

注釈

プロパティ PASSWORD_MAX_AGE_DAYS は最大値999に設定されています。自社内のガイドラインに沿った値を選択します。詳細については、 CREATE PASSWORD POLICY をご参照ください。

ステップ5: アカウントまたは個別ユーザーにパスワードポリシーを設定する

ALTER ACCOUNT コマンドを使用して、アカウントにポリシーを設定します。

ALTER ACCOUNT SET PASSWORD POLICY security.policies.password_policy_prod_1;
Copy

1人以上のユーザーに対して追加のパスワードポリシーを作成する場合は、 ALTER USER コマンドを使用して、ユーザーレベルのパスワードポリシーをユーザーに設定します。

ALTER USER jsmith SET PASSWORD POLICY security.policies.password_policy_user;
Copy

重要

アカウントまたはユーザーにすでに設定されているパスワードポリシーを置き換えるには、最初にパスワードポリシーの設定を解除してから、アカウントまたはユーザーに新しいパスワードポリシーを設定します。例:

ALTER ACCOUNT UNSET PASSWORD POLICY;

ALTER ACCOUNT SET PASSWORD POLICY security.policies.password_policy_prod_2;
Copy

ステップ6: パスワードの変更をリクエストする

ALTER USER ステートメントを使用して個別ユーザーの MUST_CHANGE_PASSWORD プロパティを TRUE に設定し、Snowflakeへの次回のログイン時にパスワードポリシーを満たすようにユーザーにパスワードの変更をリクエストします。

ALTER USER JSMITH SET MUST_CHANGE_PASSWORD = true;
Copy

ユーザーのパスワードのリセット

管理者は、次のインターフェイスからユーザーのパスワードを変更できます。

Snowsight の使用

  1. Snowsight にサインインします。

  2. Admin » Users & Roles を選択します。

  3. パスワードを変更するユーザーを探し、 その他のオプション » Reset Password を選択します。

  4. ユーザーの新しいパスワードを入力し、パスワードを確認します。

  5. Update を選択します。

従来のコンソールの使用

注釈

ユーザーは、 Classic Console からのみ自分のパスワードを変更できます。詳細については、 パスワードの変更/(セッション)ロールの切り替え/ログアウト をご参照ください。

  1. Account アカウントタブ » Users を選択します。

  2. ユーザー行をクリックして選択し、 Reset Password を選択します。 Reset Password ダイアログが開きます。

  3. ユーザーの新しいパスワードを入力し、パスワードを確認します。

  4. Force Password Change チェックボックスを選択したままにして、ユーザーに次回のログイン時にパスワードの変更を強制します。それ以外の場合は、チェックボックスをオフにします。

  5. Finish を選択します。

SQLの使用

ALTER USER コマンドを使用して、ユーザーのパスワードを入力します。例:

ALTER USER janesmith SET PASSWORD = 'H8MZRqa8gEe/kvHzvJ+Giq94DuCYoQXmfbb$Xnt' MUST_CHANGE_PASSWORD = TRUE;
Copy

または、 ALTER USER ... RESET PASSWORD 構文を使用して、 URL を生成し、ユーザーと共有します。URL は、ユーザーが新しいパスワードを入力できるウェブページを開きます。例:

ALTER USER janesmith RESET PASSWORD;
Copy

注釈

  • 生成された URL は1回の使用に対してのみ有効であり、4時間後に有効期限が切れます。

  • ALTER USER ... RESET PASSWORD ステートメントを実行しても、現在のパスワードは無効になりません。ユーザーは、新しいパスワードが設定されるまで、古いパスワードを引き続き使用できます。

Pythonの使用

Snowflake Python APIs の UserResource.create_or_alter メソッドは、現在、既存ユーザーの password の変更に対応していません。この方法でパスワードをセットできるのは、新規ユーザーを作成するときだけです。

管理者のパスワードのリセット

アカウント管理者(つまり、ACCOUNTADMIN ロールを持つユーザー)は、 ユーザーのパスワードのリセット で説明されている手順を使用して、自分のパスワードをリセットできます。

アカウント管理者がアカウントからロックアウトされた場合は、 ACCOUNTADMIN ロールを持つ別のユーザーが、ロックアウトされた管理者のパスワードをリセットできます。管理者がロックアウトされ、パスワードを変更できる管理者が他にいない場合は、 Snowflakeサポート に連絡してパスワードをリセットします。

ユーザーのパスワード変更機能の無効化

ユーザーは、右上(ログイン名の横)のドロップダウンメニューの » Change Password をクリックして、ウェブインターフェイスでSnowflakeのパスワードを変更します。 Select a New Password ダイアログが開きます。ダイアログは現在のパスワードと新しいパスワードを受け入れます。

オプションで、アカウント内のユーザーが自分のパスワードを変更する機能を無効にすることができます。アカウント管理者は、 Account アカウントタブ » Users のウェブインターフェイスを使用して、または SQL を介し ALTER USER コマンドを使用して、引き続きユーザーパスワードを変更できます。

この変更をリクエストするには、 Snowflakeサポート にご連絡ください。