認証ポリシー¶
認証ポリシーを使用して次の項目を指定することで、クライアントまたはユーザーの認証方法を制御できます。
Snowsight または Classic Console、 ドライバー、 SnowSQL (CLI クライアント) など、ユーザーがSnowflakeに接続するために使用できるクライアント。詳細については、 制限事項 をご参照ください。
ログイン中にユーザーが利用できる SAML2 セキュリティ統合。たとえば、複数のセキュリティ統合がある場合、どのIDプロバイダー(IdP)を選択して認証に使用するかを指定できます。
認証ポリシーを使用して、ユーザーが認証に使用できる IdP を制御している場合は、 IdPs に関連付けられた SAML2 セキュリティ統合の
ALLOWED_USER_DOMAINS
とALLOWED_EMAIL_PATTERNS
プロパティを使用して、その制御をさらに細かく調整できます。詳細については、 フェデレーション認証に複数のIDプロバイダーを使用する をご参照ください。
アカウントまたはアカウント内のユーザーに認証ポリシーを設定できます。アカウントに認証ポリシーを設定すると、その認証ポリシーはアカウント内のすべてのユーザーに適用さます。アカウントとユーザーの両方に認証ポリシーを設定した場合、ユーザーレベルの認証ポリシーがアカウントレベルの認証ポリシーより優先されます。
注釈
すでに識別子優先ログインフローにアクセスできる場合は、 SYSTEM$MIGRATE_SAML_IDP_REGISTRATION 関数を使用して、サポートされていない SAML_IDENTITY_PROVIDER アカウントパラメーターからアカウントを移行する必要があります。
ユースケース¶
次のリストは、認証ポリシーの非網羅的なユースケースを示しています。
複数のログインオプションがある場合に、ユーザーログインフローを制御する。
特定のユーザーまたはすべてのユーザーが使用できる認証方法、特定のクライアントタイプ、セキュリティ統合を制御する。
Snowflakeドライバーを使用してSnowflake上にサービスを構築している顧客がおり、その顧客はユーザーが Snowsight または Classic Console を介してSnowflakeにアクセスすることを望んでいない。
特定のユーザーの認証オプションとして、複数のIDプロバイダーを提供する。
制限事項¶
認証ポリシーの CLIENT_TYPES
プロパティは、特定のクライアントに基づいてユーザーログインをブロックするためのベストエフォート方式です。セキュリティ境界を確立するために単独の制御として使用しないでください。
考慮事項¶
認証ポリシーにリストされている認証方法とセキュリティ統合が競合しないことを確認します。たとえば、許可されるセキュリティ統合のリストに SAML2 セキュリティ統合を追加し、許可される認証方法として OAuth のみを許可すると、認証ポリシーを作成できません。
ユーザーがロックアウトされた場合に備えて、管理者用の追加の非制限的な認証ポリシーを使用します。例については、 ロックアウトを防止する をご参照ください。
セキュリティポリシーの優先順位¶
複数のタイプのセキュリティポリシーがアクティブ化されると、ポリシー間の優先順位が設定されます。たとえば、 ネットワークポリシー は認証ポリシーより優先されるので、リクエストの IP アドレスがネットワークポリシーのブロックリストにある IP アドレスに一致する場合、認証ポリシーはチェックされず、ネットワークポリシーで評価が停止します。
次のリストは、セキュリティポリシーが評価される順序を示しています。
ネットワークポリシー: IP アドレス、 VPC IDs、 VPCE IDs を許可または拒否します。
認証ポリシー - クライアント、認証方法、セキュリティ統合を許可または拒否します。
パスワードポリシー (ローカル認証のみ): 文字の長さ、文字数、パスワードの有効期間、再試行回数、ロックアウト時間などのパスワード要件を指定します。
セッションポリシー: 一定時間操作がない場合、ユーザーに再認証を要求します
アカウントと認証するユーザーの両方にポリシーが割り当てられている場合は、ユーザーレベルのポリシーが適用されます。
識別子優先ログインと認証ポリシーの組み合わせ¶
デフォルトでは、 Snowsight または Classic Console は、オプションがユーザーに関連するかどうかに関係なく、ログインするためのいくつかのオプションを提供する一般的なログインエクスペリエンスが提供されます。これは、ログインオプションがユーザーにとって有効なオプションであるかどうかに関係なく、認証が試行されることを意味します。
この動作を変更して、 Snowsight または Classic Console の識別子優先ログインフローを有効にできます。このフローでは、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に接続できます。 See client type limitations in authentication policies
たとえば、次のコマンドを使用して、カスタム policy_admin
ロールと、 Snowsight または Classic Console を使用した認証のみを許可し、 OAuth またはパスワードを使用したアカウントまたはユーザの認証のみを許可する認証ポリシーを作成できます。
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;
USE ROLE policy_admin;
CREATE AUTHENTICATION POLICY my_example_authentication_policy
CLIENT_TYPES = ('SNOWFLAKE_UI')
AUTHENTICATION_METHODS = ('OAUTH', '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;
セキュリティ管理者(SECURITYADMIN ロールを持つユーザー)または APPLY AUTHENTICATION POLICY 権限を持つロールを持つユーザーのみが、アカウントまたはユーザーに認証ポリシーを設定できます。この権限をロールに付与して、ユーザーがアカウントまたはユーザーに認証ポリシーを設定できるようにするには、次のコマンドのいずれかを実行します。
GRANT APPLY AUTHENTICATION POLICY ON ACCOUNT TO ROLE my_policy_admin
GRANT APPLY AUTHENTICATION POLICY ON USER TO ROLE my_policy_admin
詳しい例については、 ログイン設定の例 をご参照ください。
認証ポリシーの使用状況を追跡する¶
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', 'SNOWSQL', 'DRIVERS')
SECURITY_INTEGRATIONS = ('EXAMPLE_OKTA_INTEGRATION');
このポリシーを管理者に割り当てることができます。
ALTER USER <administrator_name> SET AUTHENTICATION POLICY admin_authentication_policy
認証ポリシーを複製する¶
フェールオーバーと複製グループを使用して、認証ポリシーを複製できます。詳細については、 複製とセキュリティポリシー をご参照ください。
ログイン設定の例¶
このセクションでは、認証ポリシーと SAML2 セキュリティ統合を使用して組み合わせ、ログインフローとセキュリティを制御する方法の例を示します。
クライアントタイプによるSnowflakeへのユーザーアクセスの制限¶
See client type limitations in authentication policies.
restrict_client_type_policy
という名前の認証ポリシーを作成し、 Snowsight または Classic Console 経由のアクセスのみを許可します。
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を IdP として使用して SAML からログインできるようにする SAML2 セキュリティ統合を作成します。
CREATE SECURITY INTEGRATION example_okta_integration
TYPE = SAML2
SAML2_SSO_URL = 'https://okta.example.com';
...
Microsoft Azureを IdP として使用し、 SAML からログインできるようにするセキュリティ統合を作成します。
CREATE SECURITY INTEGRATION example_azure_integration
TYPE = SAML2
SAML2_SSO_URL = 'https://azure-example_acme.com';
...
example_okta_integration
と example_azure_integration
の統合に関連する認証ポリシーを作成します。
CREATE AUTHENTICATION POLICY multiple_idps_authentication_policy
AUTHENTICATION_METHODS = ('SAML')
SECURITY_INTEGRATIONS = ('EXAMPLE_OKTA_INTEGRATION', 'EXAMPLE_AZURE_INTEGRATION');
アカウントの認証ポリシーを設定します。
ALTER ACCOUNT SET AUTHENTICATION POLICY multiple_idps_authentication_policy;
権限とコマンド¶
認証ポリシー権限参照¶
Snowflakeは、ユーザーが認証ポリシーを作成、設定、および所有できるかどうかを決定するために、次の認証権限をサポートしています。
スキーマ内の任意のオブジェクトを操作するには、親データベースとスキーマに対する 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 |
システム内のすべての認証ポリシーを一覧表示します。 |