認証ポリシー¶
認証ポリシーを使用して次の項目を指定することで、クライアントまたはユーザーの認証方法を制御できます。
ユーザーが 多要素認証(MFA)に登録しなければならないかどうか。
どの認証方法が多要素認証を必要とするか。
許可されている認証方法、 SAML、パスワード、 OAuth、 キーペア認証、 プログラムアクセストークン など。
ログイン中にユーザーが利用できる SAML2 セキュリティ統合。たとえば、複数のセキュリティ統合がある場合、どのIDプロバイダー(IdP)を選択して認証に使用するかを指定できます。
認証ポリシーを使用して、ユーザーが認証に使用できる IdP を制御している場合は、 IdPs に関連付けられた SAML2 セキュリティ統合の
ALLOWED_USER_DOMAINSとALLOWED_EMAIL_PATTERNSプロパティを使用して、その制御をさらに細かく調整できます。詳細については、 フェデレーション認証に複数のIDプロバイダーを使用する をご参照ください。The clients that users can use to connect to Snowflake, such as Snowsight, Snowflake CLI, drivers, or SnowSQL (CLI クライアント). The
CLIENT_TYPESproperty of an authentication policy is a best-effort method to block user logins based on specific clients. It should not be used as the sole control to establish a security boundary. Notably, it does not restrict access to the Snowflake REST APIs..By defining a "client policy" within an authentication policy, you can also set the minimum version that is allowed for specific client types.
デフォルトかつ最大の有効期限 と プログラムアクセストークンの ネットワークポリシー要件。
アカウントまたはアカウント内のユーザーに認証ポリシーを設定できます。アカウントに認証ポリシーを設定すると、その認証ポリシーはアカウント内のすべてのユーザーに適用さます。アカウントとユーザーの両方に認証ポリシーを設定した場合、ユーザーレベルの認証ポリシーがアカウントレベルの認証ポリシーより優先されます。
注釈
すでに識別子優先ログインフローにアクセスできる場合は、 SYSTEM$MIGRATE_SAML_IDP_REGISTRATION 関数を使用して、サポートされていない SAML_IDENTITY_PROVIDER アカウントパラメーターからアカウントを移行する必要があります。
ユースケース¶
The following non-exhaustive list describes use cases for authentication policies:
あるユーザー、アカウント内の全ユーザー、または特定の認証方法において、 MFA を必要とするかどうかを制御したい。
複数のログインオプションがある場合に、ユーザーログインフローを制御する。
You want to control the authentication methods, specific client types, minimum versions of clients, and security integrations available to specific users or all users.
You have customers building services on top of Snowflake using Snowflake drivers, but the customers do not want their users accessing Snowflake through Snowsight.
特定のユーザーの認証オプションとして、複数のIDプロバイダーを提供する。
制限事項¶
The
CLIENT_TYPESproperty of an authentication policy is a best-effort method to block user logins based on specific clients. It should not be used as the sole control to establish a security boundary. Notably, it does not restrict access to the Snowflake REST APIs.。
考慮事項¶
認証ポリシーにリストされている認証方法とセキュリティ統合が競合しないことを確認します。たとえば、許可されるセキュリティ統合のリストに SAML2 セキュリティ統合を追加し、許可される認証方法として OAuth のみを許可すると、認証ポリシーを作成できません。
ユーザーがロックアウトされた場合に備えて、管理者用の追加の非制限的な認証ポリシーを使用します。例については、 ロックアウトを防止する をご参照ください。
セキュリティポリシーの優先順位¶
複数のタイプのセキュリティポリシーがアクティブ化されると、ポリシー間の優先順位が設定されます。たとえば、 ネットワークポリシー は認証ポリシーより優先されるので、リクエストの IP アドレスがネットワークポリシーのブロックリストにある IP アドレスに一致する場合、認証ポリシーはチェックされず、ネットワークポリシーで評価が停止します。
次のリストは、セキュリティポリシーが評価される順序を示しています。
ネットワークポリシー: IP アドレス、 VPC IDs、 VPCE IDs を許可または拒否します。
認証ポリシー - クライアント、認証方法、セキュリティ統合を許可または拒否します。
パスワードポリシー (ローカル認証のみ): 文字の長さ、文字数、パスワードの有効期間、再試行回数、ロックアウト時間などのパスワード要件を指定します。
セッションポリシー: 一定時間操作がない場合、ユーザーに再認証を要求します
アカウントと認証するユーザーの両方にポリシーが割り当てられている場合は、ユーザーレベルのポリシーが適用されます。
識別子優先ログインと認証ポリシーの組み合わせ¶
By default, Snowsight provides a generic login experience that provides several options for logging in, regardless if the options are relevant to users. This means that authentication is attempted regardless of whether the login option is a valid option for the user.
You can alter this behavior to enable a identifier-first login flow for Snowsight. In this flow, Snowflake prompts the user for an email address or username before presenting authentication options. Snowflake uses the email address or username to identify the user, and then only displays the login options that are relevant to the user, and are allowed by the authentication policy set on the account or user.
識別子優先ログインフローを有効にする手順については、 識別子優先ログイン をご参照ください。
次の表は、識別子優先ログインと認証ポリシーを組み合わせてユーザーのログインエクスペリエンスを制御する方法の設定例を示しています。
設定 |
結果 |
|---|---|
認証ポリシーの AUTHENTICATION_METHODS パラメーターには PASSWORD のみが含まれます。 |
Snowflakeは、ユーザーにメールアドレスまたはユーザー名とパスワードの入力を求めます。 |
認証ポリシーの AUTHENTICATION_METHODS パラメーターには SAML のみが含まれ、アクティブな SAML2 セキュリティ統合が存在します。 |
メールアドレスまたはユーザー名が1つの SAML2 セキュリティ統合のみと一致する場合、SnowflakeはユーザーをIDプロバイダーのログインページにリダイレクトします。 |
認証ポリシーの AUTHENTICATION_METHODS パラメーターには PASSWORD と SAML の両方が含まれており、アクティブな SAML2 セキュリティ統合が存在します。 |
メールアドレスまたはユーザー名が1つの SAML2 セキュリティ統合のみと一致する場合、Snowflakeは SAML SSO ボタンを表示し、メールアドレスまたはユーザー名とパスワードでログインするオプションを表示します。 |
認証ポリシーの AUTHENTICATION_METHODS パラメーターには SAML のみが含まれ、アクティブな SAML2 セキュリティ統合が複数存在します。 |
メールアドレスまたはユーザー名が複数の SAML2 セキュリティ統合に一致する場合、Snowflakeは複数の SAML SSO ボタンを表示します。 |
認証ポリシーの AUTHENTICATION_METHODS パラメーターには PASSWORD と SAML の両方が含まれ、アクティブな SAML2 セキュリティ統合が複数存在します。 |
Snowflake は、メールアドレスまたはユーザー名が複数の SAML2 セキュリティ統合と一致する場合、複数の SAML SSO ボタンを表示し、メールアドレスまたはユーザー名とパスワードでログインするオプションを表示します。 |
認証ポリシーを作成する¶
管理者は CREATE AUTHENTICATION POLICY コマンドを使用して新しい認証ポリシーを作成し、Snowflakeに接続できるクライアント、使用できる認証方法、ユーザーが使用できるセキュリティ統合を指定できます。デフォルトでは、すべてのクライアントタイプ、認証方法、セキュリティ統合を使用してSnowflakeに接続できます。The CLIENT_TYPES property of an authentication policy is a best-effort method to block user logins based on specific clients. It should not be used as the sole control to establish a security boundary. Notably, it does not restrict access to the Snowflake REST APIs.
For example, the following commands create a custom policy_admin role and an authentication policy that allows
authentication using Snowsight. The user must authenticate with SAML or a password.
注釈
この例を実行するには、GRANT ROLE コマンドの <username> を実際のユーザー名に置き換えます。
USE ROLE ACCOUNTADMIN;
CREATE OR REPLACE DATABASE my_database;
USE DATABASE my_database;
CREATE OR REPLACE SCHEMA my_schema;
USE SCHEMA my_schema;
CREATE ROLE policy_admin;
GRANT USAGE ON DATABASE my_database TO ROLE policy_admin;
GRANT USAGE ON SCHEMA my_database.my_schema TO ROLE policy_admin;
GRANT CREATE AUTHENTICATION POLICY ON SCHEMA my_database.my_schema TO ROLE policy_admin;
GRANT APPLY AUTHENTICATION POLICY ON ACCOUNT TO ROLE policy_admin;
GRANT ROLE policy_admin TO USER <username>;
USE ROLE policy_admin;
CREATE AUTHENTICATION POLICY my_example_authentication_policy
CLIENT_TYPES = ('SNOWFLAKE_UI')
AUTHENTICATION_METHODS = ('SAML', 'PASSWORD');
詳しい例については、 ログイン設定の例 をご参照ください。
アカウントまたはユーザーに認証ポリシーを設定する¶
アカウントまたはユーザに認証ポリシーを設定すると、認証ポリシーで指定された制限がそのアカウントまたはユーザに適用されます。ALTER ACCOUNT または ALTER USER コマンドを使用して、アカウントまたはユーザーに認証ポリシーを設定できます。
Snowsight ワークシートで、次のいずれかのコマンドを使用して、アカウントまたはユーザに認証ポリシーを設定します。
ALTER ACCOUNT SET AUTHENTICATION POLICY my_example_authentication_policy;
ALTER USER example_user SET AUTHENTICATION POLICY my_example_authentication_policy;
特定のタイプ のすべてのユーザーに対して認証ポリシーを設定することもできます。たとえば、アカウント内のタイプ SERVICE のすべてのユーザーに認証ポリシーを設定し、タイプ PERSON のユーザーには設定しない場合、次のコマンドを実行します。
ALTER ACCOUNT SET AUTHENTICATION POLICY my_example_authentication_policy
FOR ALL SERVICE USERS;
セキュリティ管理者(SECURITYADMIN ロールを持つユーザー)または APPLY AUTHENTICATION POLICY 権限を持つロールを持つユーザーのみが、アカウントまたはユーザーに認証ポリシーを設定できます。この権限をロールに付与して、ユーザーがアカウントまたはユーザーに認証ポリシーを設定できるようにするには、次のコマンドのいずれかを実行します。
GRANT APPLY AUTHENTICATION POLICY ON ACCOUNT TO ROLE my_policy_admin;
GRANT APPLY AUTHENTICATION POLICY ON USER example_user TO ROLE my_policy_admin;
詳しい例については、 ログイン設定の例 をご参照ください。
MFA を使用してユーザーまたはアカウントの認証を強化します。¶
ユーザーログインのセキュリティを向上させるために 、 MFA に登録することをユーザーに要求する認証ポリシーを作成し、認証ポリシーを個々のユーザーまたはアカウントに適用することができます。ユーザーがMFAに登録を行った後は、認証ポリシーでユーザーによるMFA認証が求められます。
注釈
Snowflake is deprecating single-factor password logins. When the rollout is complete, all users who authenticate with a password must enroll in MFA.
Run the following command if you want to create an authentication policy that requires password users to authenticate with MFA when using any Snowflake client, not just Snowsight. Single sign-on (SSO) users won't be required to use MFA.
CREATE AUTHENTICATION POLICY require_mfa_authentication_policy
MFA_ENROLLMENT = 'REQUIRED'
MFA_POLICY= (
ENFORCE_MFA_ON_EXTERNAL_AUTHENTICATION = 'NONE'
);
Run the following command if you want to create an authentication policy that requires password and single sign-on users to authenticate with MFA.
CREATE AUTHENTICATION POLICY require_mfa_authentication_policy
MFA_ENROLLMENT = 'REQUIRED'
MFA_POLICY= (
ENFORCE_MFA_ON_EXTERNAL_AUTHENTICATION = 'ALL'
);
この認証ポリシーをアカウント内のすべてのユーザーにセットするには、次のSQLステートメントを実行します。
ALTER ACCOUNT SET AUTHENTICATION POLICY require_mfa_authentication_policy;
注釈
If you set the MFA_ENROLLMENT parameter, then the CLIENT_TYPES parameter must include
SNOWFLAKE_UI, because Snowsight is the only place users can
enroll in multi-factor authentication (MFA).
認証ポリシーの使用状況を追跡する¶
Information Schemaテーブル関数 POLICY_REFERENCES を使用して、指定された認証ポリシーに割り当てられた各ユーザーの行と、Snowflakeアカウントに割り当てられた認証ポリシーの行を返します。
認証ポリシーでは、次の構文がサポートされています。
POLICY_REFERENCES( POLICY_NAME => '<authentication_policy_name>' )
POLICY_REFERENCES( REF_ENTITY_DOMAIN => 'USER', REF_ENTITY_NAME => '<username>')
POLICY_REFERENCES( REF_ENTITY_DOMAIN => 'ACCOUNT', REF_ENTITY_NAME => '<accountname>')
ここで、 authentication_policy_name は認証ポリシーの完全修飾名です。
たとえば、次のクエリを実行して、 my_db という名前のデータベースと my_schema という名前のスキーマに格納されている、 authentication_policy_prod_1 という名前の認証ポリシーが割り当てられている各ユーザーの行を返します。
SELECT *
FROM TABLE(
my_db.INFORMATION_SCHEMA.POLICY_REFERENCES(
POLICY_NAME => 'my_db.my_schema.authentication_policy_prod_1'
)
);
ロックアウトを防止する¶
アカウントを管理する認証ポリシーが厳格な状況では、セキュリティ統合によってロックアウトが発生した場合に管理者が回復オプションとして使用するための、制限のない認証ポリシーを作成できます。たとえば、管理者のみに PASSWORD 認証方法を含めることができます。ユーザーレベルの認証ポリシーは、より制限の厳しいアカウントレベルのポリシーより優先されます。
CREATE AUTHENTICATION POLICY admin_authentication_policy
AUTHENTICATION_METHODS = ('SAML', 'PASSWORD')
CLIENT_TYPES = ('SNOWFLAKE_UI', 'SNOWFLAKE_CLI', SNOWSQL', 'DRIVERS')
SECURITY_INTEGRATIONS = ('EXAMPLE_OKTA_INTEGRATION');
このポリシーを管理者に割り当てることができます。
ALTER USER <administrator_name> SET AUTHENTICATION POLICY admin_authentication_policy
認証ポリシーを複製する¶
フェールオーバーと複製グループを使用して、認証ポリシーを複製できます。詳細については、 複製とセキュリティポリシー をご参照ください。
ログイン設定の例¶
このセクションでは、認証ポリシーと SAML2 セキュリティ統合を使用して組み合わせ、ログインフローとセキュリティを制御する方法の例を示します。
クライアントタイプによるSnowflakeへのユーザーアクセスの制限¶
The CLIENT_TYPES property of an authentication policy is a best-effort method to block user logins based on specific clients. It should not be used as the sole control to establish a security boundary. Notably, it does not restrict access to the Snowflake REST APIs.。
Create an authentication policy named restrict_client_type_policy that only allows access through Snowsight:
CREATE AUTHENTICATION POLICY restrict_client_type_policy
CLIENT_TYPES = ('SNOWFLAKE_UI')
COMMENT = 'Only allows access through the web interface';
ユーザーの認証ポリシーを設定します。
ALTER USER example_user SET AUTHENTICATION POLICY restrict_client_type_policy;
アカウントで複数のIDプロバイダーからの認証を許可する¶
Create a SAML2 security integration that allows users to log in through SAML using Okta as an IdP:
CREATE SECURITY INTEGRATION example_okta_integration
TYPE = SAML2
SAML2_SSO_URL = 'https://okta.example.com';
...
Create a security integration that allows users to log in through SAML using Microsoft Entra ID as an IdP:
CREATE SECURITY INTEGRATION example_entra_integration
TYPE = SAML2
SAML2_SSO_URL = 'https://entra-example_acme.com';
...
example_okta_integration と example_entra_integration の統合に関連する認証ポリシーを作成します。
CREATE AUTHENTICATION POLICY multiple_idps_authentication_policy
AUTHENTICATION_METHODS = ('SAML')
SECURITY_INTEGRATIONS = ('EXAMPLE_OKTA_INTEGRATION', 'EXAMPLE_ENTRA_INTEGRATION');
アカウントの認証ポリシーを設定します。
ALTER ACCOUNT SET AUTHENTICATION POLICY multiple_idps_authentication_policy;
権限とコマンド¶
認証ポリシー権限参照¶
Snowflakeは、ユーザーが認証ポリシーを作成、設定、および所有できるかどうかを決定するために、次の認証権限をサポートしています。
スキーマ内のオブジェクトに対して操作を実行するには、親データベースとスキーマに対する USAGE 権限が必要です。スキーマに対する任意の権限を付与されたロールは、そのロールがスキーマを解決できることに注意してください。たとえば、スキーマに対する CREATE 権限を付与されたロールは、そのスキーマにオブジェクトを作成できますが、そのスキーマに対する USAGE も 付与されている必要はありません。
権限 |
オブジェクト |
使用状況 |
|---|---|---|
CREATE |
スキーマ |
スキーマでの新しい認証ポリシーの作成を有効にします。 |
APPLY AUTHENTICATION POLICY |
アカウント |
アカウントまたはユーザーレベルで認証ポリシーを適用できるようにします。 |
OWNERSHIP |
認証ポリシー |
認証ポリシーに対する包括的な制御を付与します。認証ポリシーのほとんどのプロパティを変更するために必要です。 |
認証ポリシー DDL 参照¶
認証ポリシーの権限とコマンドの詳細については、次の参照ドキュメントをご参照ください。
コマンド |
権限 |
説明 |
|---|---|---|
SCHEMA の CREATE AUTHENTICATION POLICY |
新しい認証ポリシーを作成します。 |
|
AUTHENTICATION POLICY の OWNERSHIP |
既存の認証ポリシーを変更します。 |
|
AUTHENTICATION POLICY の OWNERSHIP |
既存の認証ポリシーをシステムから削除します。 |
|
AUTHENTICATION POLICY の OWNERSHIP |
既存の認証ポリシーのプロパティを説明します。 |
|
AUTHENTICATION POLICY OWNERSHIP または SCHEMA の USAGE |
システム内のすべての認証ポリシーを一覧表示します。 |