認証ポリシー¶
認証ポリシーを使用して次の項目を指定することで、クライアントまたはユーザーの認証方法を制御できます。
ユーザーが 多要素認証(MFA)に登録しなければならないかどうか。
どの認証方法が多要素認証を必要とするか。
許可されている認証方法、 SAML、パスワード、 OAuth、 キーペア認証、 プログラムアクセストークン など。
ログイン中にユーザーが利用できる SAML2 セキュリティ統合。たとえば、複数のセキュリティ統合がある場合、どのIDプロバイダー(IdP)を選択して認証に使用するかを指定できます。
認証ポリシーを使用して、ユーザーが認証に使用できる IdP を制御している場合は、 IdPs に関連付けられた SAML2 セキュリティ統合の
ALLOWED_USER_DOMAINSとALLOWED_EMAIL_PATTERNSプロパティを使用して、その制御をさらに細かく調整できます。詳細については、 フェデレーション認証に複数のIDプロバイダーを使用する をご参照ください。Snowsight 、 Snowflake CLI 、 ドライバー 、 SnowSQL (CLI クライアント) など、ユーザーがSnowflakeに接続するために使用できるクライアント。 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. 。認証ポリシー内で「クライアントポリシー」を定義することで、特定のクライアントタイプに許可される最小バージョンを設定することもできます。
デフォルトかつ最大の有効期限 と プログラムアクセストークンの ネットワークポリシー要件。
アカウントまたはアカウント内のユーザーに認証ポリシーを設定できます。アカウントに認証ポリシーを設定すると、その認証ポリシーはアカウント内のすべてのユーザーに適用さます。アカウントとユーザーの両方に認証ポリシーを設定した場合、ユーザーレベルの認証ポリシーがアカウントレベルの認証ポリシーより優先されます。
注釈
すでに識別子優先ログインフローにアクセスできる場合は、 SYSTEM$MIGRATE_SAML_IDP_REGISTRATION 関数を使用して、サポートされていない SAML_IDENTITY_PROVIDER アカウントパラメーターからアカウントを移行する必要があります。
ユースケース¶
次の非網羅的なリストは、認証ポリシーのユースケースを示しています。
あるユーザー、アカウント内の全ユーザー、または特定の認証方法において、 MFA を必要とするかどうかを制御したい。
複数のログインオプションがある場合に、ユーザーログインフローを制御する。
特定のユーザーまたはすべてのユーザーが使用できる認証方法、特定のクライアントタイプ、クライアントの最小バージョン、セキュリティ統合を制御する。
Snowflakeドライバーを使用してSnowflake上にサービスを構築している顧客がおり、その顧客はユーザーが Snowsight を介してSnowflakeにアクセスすることを望んでいない。
特定のユーザーの認証オプションとして、複数の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 を許可または拒否します。
認証ポリシー - クライアント、認証方法、セキュリティ統合を許可または拒否します。
パスワードポリシー (ローカル認証のみ): 文字の長さ、文字数、パスワードの有効期間、再試行回数、ロックアウト時間などのパスワード要件を指定します。
セッションポリシー: 一定時間操作がない場合、ユーザーに再認証を要求します
アカウントと認証するユーザーの両方にポリシーが割り当てられている場合は、ユーザーレベルのポリシーが適用されます。
識別子優先ログインと認証ポリシーの組み合わせ¶
デフォルトでは、 Snowsight は、オプションがユーザーに関連するかどうかに関係なく、ログインするためのいくつかのオプションを提供する一般的なログインエクスペリエンスを提供します。これは、ログインオプションがユーザーにとって有効なオプションであるかどうかに関係なく、認証が試行されることを意味します。
この動作を変更して、 Snowsight の識別子優先ログインフローを有効にできます。このフローでは、Snowflakeは認証オプションを提示する前に、ユーザーにメールアドレスまたはユーザー名の入力を求めます。Snowflakeは、メールアドレスまたはユーザー名を使用してユーザーを識別し、そのユーザーに関連し、アカウントまたはユーザーに設定された認証ポリシーで許可されているログインオプションのみを表示します。
識別子優先ログインフローを有効にする手順については、 識別子優先ログイン をご参照ください。
次の表は、識別子優先ログインと認証ポリシーを組み合わせてユーザーのログインエクスペリエンスを制御する方法の設定例を示しています。
設定 |
結果 |
|---|---|
認証ポリシーの 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.
たとえば、次のコマンドは、カスタム policy_admin ロールと、 Snowsight を使用した認証を許可する認証ポリシーを作成します。ユーザーは SAML またはパスワードで認証する必要があります。
注釈
この例を実行するには、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 は、 単一要素パスワードログインの廃止 を進めています。ロールアウトが完了すると、パスワードで認証するすべてのユーザーは MFA に登録する必要があります。
パスワードユーザー に対して、 Snowsight だけではなく、任意のSnowflakeクライアントを使用する場合に MFA での認証を必須とする認証ポリシーを作成したい場合は、次のコマンドを実行します。シングルサインオン(SSO)ユーザーは MFA を使用する必要がありません。
CREATE AUTHENTICATION POLICY require_mfa_authentication_policy
MFA_ENROLLMENT = 'REQUIRED'
MFA_POLICY= (
ENFORCE_MFA_ON_EXTERNAL_AUTHENTICATION = 'NONE'
);
パスワードおよびシングルサインオンユーザー に対して、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;
注釈
MFA_ENROLLMENT パラメーターを設定した場合、 CLIENT_TYPES パラメーターには SNOWFLAKE_UI を含める必要があります。 Snowsight は、ユーザーが 多要素認証(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.。
restrict_client_type_policy という名前の認証ポリシーを作成し、 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プロバイダーからの認証を許可する¶
Oktaを SAML2 として使用して SAML からログインできるようにする IdP セキュリティ統合を作成します。
CREATE SECURITY INTEGRATION example_okta_integration
TYPE = SAML2
SAML2_SSO_URL = 'https://okta.example.com';
...
SAML を Microsoft Entra ID として使用して 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は、ユーザーが認証ポリシーを作成、設定、および所有できるかどうかを決定するために、次の認証権限をサポートしています。
スキーマ内のオブジェクトを操作するには、親データベースの少なくとも1つの権限と、親スキーマの少なくとも1つの権限が必要です。
権限 |
オブジェクト |
使用状況 |
|---|---|---|
CREATE |
スキーマ |
スキーマでの新しい認証ポリシーの作成を有効にします。 |
APPLY AUTHENTICATION POLICY |
アカウント |
アカウントまたはユーザーレベルで認証ポリシーを適用できるようにします。 |
OWNERSHIP |
認証ポリシー |
認証ポリシーに対する包括的な制御を付与します。認証ポリシーのほとんどのプロパティを変更するために必要です。 |
認証ポリシー DDL 参照¶
認証ポリシーの権限とコマンドの詳細については、次の参照ドキュメントをご参照ください。
コマンド |
権限 |
説明 |
|---|---|---|
SCHEMA の CREATE AUTHENTICATION POLICY |
新しい認証ポリシーを作成します。 |
|
AUTHENTICATION POLICY の OWNERSHIP |
既存の認証ポリシーを変更します。 |
|
AUTHENTICATION POLICY の OWNERSHIP |
既存の認証ポリシーをシステムから削除します。 |
|
AUTHENTICATION POLICY の OWNERSHIP |
既存の認証ポリシーのプロパティを説明します。 |
|
AUTHENTICATION POLICY OWNERSHIP または SCHEMA の USAGE |
システム内のすべての認証ポリシーを一覧表示します。 |