認証ポリシー

認証ポリシーを使用して次の項目を指定することで、クライアントまたはユーザーの認証方法を制御できます。

アカウントまたはアカウント内のユーザーに認証ポリシーを設定できます。アカウントに認証ポリシーを設定すると、その認証ポリシーはアカウント内のすべてのユーザーに適用さます。アカウントとユーザーの両方に認証ポリシーを設定した場合、ユーザーレベルの認証ポリシーがアカウントレベルの認証ポリシーより優先されます。

注釈

すでに識別子優先ログインフローにアクセスできる場合は、 SYSTEM$MIGRATE_SAML_IDP_REGISTRATION 関数を使用して、サポートされていない SAML_IDENTITY_PROVIDER アカウントパラメーターからアカウントを移行する必要があります。

ユースケース

次のリストは、認証ポリシーの非網羅的なユースケースを示しています。

  • 複数のログインオプションがある場合に、ユーザーログインフローを制御する。

  • 特定のユーザーまたはすべてのユーザーが使用できる認証方法、特定のクライアントタイプ、セキュリティ統合を制御する。

  • Snowflakeドライバーを使用してSnowflake上にサービスを構築している顧客がおり、その顧客はユーザーが Snowsight または Classic Console を介してSnowflakeにアクセスすることを望んでいない。

  • 特定のユーザーの認証オプションとして、複数のIDプロバイダーを提供する。

制限事項

認証ポリシーの CLIENT_TYPES プロパティは、特定のクライアントに基づいてユーザーログインをブロックするためのベストエフォート方式です。セキュリティ境界を確立するために単独の制御として使用しないでください。

考慮事項

  • 認証ポリシーにリストされている認証方法とセキュリティ統合が競合しないことを確認します。たとえば、許可されるセキュリティ統合のリストに SAML2 セキュリティ統合を追加し、許可される認証方法として OAuth のみを許可すると、認証ポリシーを作成できません。

  • ユーザーがロックアウトされた場合に備えて、管理者用の追加の非制限的な認証ポリシーを使用します。例については、 ロックアウトを防止する をご参照ください。

セキュリティポリシーの優先順位

複数のタイプのセキュリティポリシーがアクティブ化されると、ポリシー間の優先順位が設定されます。たとえば、 ネットワークポリシー は認証ポリシーより優先されるので、リクエストの IP アドレスがネットワークポリシーのブロックリストにある IP アドレスに一致する場合、認証ポリシーはチェックされず、ネットワークポリシーで評価が停止します。

次のリストは、セキュリティポリシーが評価される順序を示しています。

  1. ネットワークポリシー: IP アドレス、 VPC IDs、 VPCE IDs を許可または拒否します。

  2. 認証ポリシー - クライアント、認証方法、セキュリティ統合を許可または拒否します。

  3. パスワードポリシー (ローカル認証のみ): 文字の長さ、文字数、パスワードの有効期間、再試行回数、ロックアウト時間などのパスワード要件を指定します。

  4. セッションポリシー: 一定時間操作がない場合、ユーザーに再認証を要求します

アカウントと認証するユーザーの両方にポリシーが割り当てられている場合は、ユーザーレベルのポリシーが適用されます。

識別子優先ログインと認証ポリシーの組み合わせ

デフォルトでは、 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');
Copy

詳しい例については、 ログイン設定の例 をご参照ください。

アカウントまたはユーザーに認証ポリシーを設定する

アカウントまたはユーザに認証ポリシーを設定すると、認証ポリシーで指定された制限がそのアカウントまたはユーザに適用されます。 ALTER ACCOUNT または ALTER USER コマンドを使用して、アカウントまたはユーザーに認証ポリシーを設定できます。

Snowsight ワークシートで、次のいずれかのコマンドを使用して、アカウントまたはユーザに認証ポリシーを設定します。

ALTER ACCOUNT SET AUTHENTICATION POLICY my_example_authentication_policy;
Copy
ALTER USER example_user SET AUTHENTICATION POLICY my_example_authentication_policy;
Copy

セキュリティ管理者(SECURITYADMIN ロールを持つユーザー)または APPLY AUTHENTICATION POLICY 権限を持つロールを持つユーザーのみが、アカウントまたはユーザーに認証ポリシーを設定できます。この権限をロールに付与して、ユーザーがアカウントまたはユーザーに認証ポリシーを設定できるようにするには、次のコマンドのいずれかを実行します。

GRANT APPLY AUTHENTICATION POLICY ON ACCOUNT TO ROLE my_policy_admin
Copy
GRANT APPLY AUTHENTICATION POLICY ON USER TO ROLE my_policy_admin
Copy

詳しい例については、 ログイン設定の例 をご参照ください。

認証ポリシーの使用状況を追跡する

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

認証ポリシーでは、次の構文がサポートされています。

POLICY_REFERENCES( POLICY_NAME => '<authentication_policy_name>' )
Copy
POLICY_REFERENCES( REF_ENTITY_DOMAIN => 'USER', REF_ENTITY_NAME => '<username>')
Copy
POLICY_REFERENCES( REF_ENTITY_DOMAIN => 'ACCOUNT', REF_ENTITY_NAME => '<accountname>')
Copy

ここで、 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'
  )
);
Copy

ロックアウトを防止する

アカウントを管理する認証ポリシーが厳格な状況では、セキュリティ統合によってロックアウトが発生した場合に管理者が回復オプションとして使用するための、制限のない認証ポリシーを作成できます。たとえば、管理者のみに PASSWORD 認証方法を含めることができます。ユーザーレベルの認証ポリシーは、より制限の厳しいアカウントレベルのポリシーより優先されます。

CREATE AUTHENTICATION POLICY admin_authentication_policy
  AUTHENTICATION_METHODS = ('SAML', 'PASSWORD')
  CLIENT_TYPES = ('SNOWFLAKE_UI', 'SNOWSQL', 'DRIVERS')
  SECURITY_INTEGRATIONS = ('EXAMPLE_OKTA_INTEGRATION');
Copy

このポリシーを管理者に割り当てることができます。

ALTER USER <administrator_name> SET AUTHENTICATION POLICY admin_authentication_policy
Copy

認証ポリシーを複製する

フェールオーバーと複製グループを使用して、認証ポリシーを複製できます。詳細については、 複製とセキュリティポリシー をご参照ください。

ログイン設定の例

このセクションでは、認証ポリシーと 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';
Copy

ユーザーの認証ポリシーを設定します。

ALTER USER example_user SET AUTHENTICATION POLICY restrict_client_type_policy;
Copy

アカウントで複数のIDプロバイダーからの認証を許可する

Oktaを IdP として使用して SAML からログインできるようにする SAML2 セキュリティ統合を作成します。

CREATE SECURITY INTEGRATION example_okta_integration
  TYPE = SAML2
  SAML2_SSO_URL = 'https://okta.example.com';
  ...
Copy

Microsoft Azureを IdP として使用し、 SAML からログインできるようにするセキュリティ統合を作成します。

CREATE SECURITY INTEGRATION example_azure_integration
  TYPE = SAML2
  SAML2_SSO_URL = 'https://azure-example_acme.com';
  ...
Copy

example_okta_integrationexample_azure_integration の統合に関連する認証ポリシーを作成します。

CREATE AUTHENTICATION POLICY multiple_idps_authentication_policy
  AUTHENTICATION_METHODS = ('SAML')
  SECURITY_INTEGRATIONS = ('EXAMPLE_OKTA_INTEGRATION', 'EXAMPLE_AZURE_INTEGRATION');
Copy

アカウントの認証ポリシーを設定します。

ALTER ACCOUNT SET AUTHENTICATION POLICY multiple_idps_authentication_policy;
Copy

権限とコマンド

認証ポリシー権限参照

Snowflakeは、ユーザーが認証ポリシーを作成、設定、および所有できるかどうかを決定するために、次の認証権限をサポートしています。

スキーマ内の任意のオブジェクトを操作するには、親データベースとスキーマに対する USAGE 権限も必要であることに注意してください。

権限

使用状況

CREATE

スキーマでの新しい認証ポリシーの作成を有効にします。

APPLY AUTHENTICATION POLICY

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

OWNERSHIP

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

認証ポリシー DDL 参照

認証ポリシーの権限とコマンドの詳細については、次の参照ドキュメントをご参照ください。

コマンド

権限

説明

CREATE AUTHENTICATION POLICY

SCHEMA の CREATE AUTHENTICATION POLICY

新しい認証ポリシーを作成します。

ALTER AUTHENTICATION POLICY

AUTHENTICATION POLICY の OWNERSHIP

既存の認証ポリシーを変更します。

DROP AUTHENTICATION POLICY

AUTHENTICATION POLICY の OWNERSHIP

既存の認証ポリシーをシステムから削除します。

DESCRIBE AUTHENTICATION POLICY

AUTHENTICATION POLICY の OWNERSHIP

既存の認証ポリシーのプロパティを説明します。

SHOW AUTHENTICATION POLICIES

AUTHENTICATION POLICY OWNERSHIP または SCHEMA の USAGE

システム内のすべての認証ポリシーを一覧表示します。