CREATE AUTHENTICATION POLICY

新しい 認証ポリシー を現在のスキーマまたは指定したスキーマで作成するか、既存の認証ポリシーを置き換えます。認証ポリシーを使用して、アカウントまたはユーザーの認証制御およびセキュリティ要件を定義することができます。

このコマンドは次のバリアントをサポートしています。

こちらもご参照ください。

ALTER AUTHENTICATION POLICY, DESCRIBE AUTHENTICATION POLICY, DROP AUTHENTICATION POLICY, SHOW AUTHENTICATION POLICIES, CREATE OR ALTER <オブジェクト>

構文

CREATE [ OR REPLACE ] AUTHENTICATION POLICY [ IF NOT EXISTS ] <name>
  [ AUTHENTICATION_METHODS = ( '<string_literal>' [ , '<string_literal>' , ...  ] ) ]
  [ MFA_AUTHENTICATION_METHODS = ( '<string_literal>' [ , '<string_literal>' , ...  ] ) ]
  [ MFA_ENROLLMENT = { REQUIRED | OPTIONAL } ]
  [ MFA_POLICY= ( ALLOWED_METHODS = ( { 'ALL' | 'PASSKEY' | 'TOTP' | 'DUO' } [ , { 'PASSKEY' | 'TOTP' | 'DUO' } ... ] ) ) ]
  [ CLIENT_TYPES = ( '<string_literal>' [ , '<string_literal>' , ...  ] ) ]
  [ SECURITY_INTEGRATIONS = ( '<string_literal>' [ , '<string_literal>' , ... ] ) ]
  [ PAT_POLICY = ( {list_of_properties} ) ]
  [ COMMENT = '<string_literal>' ]
Copy

バリアント構文

CREATE OR ALTER AUTHENTICATION POLICY

認証ポリシーがまだ存在しない場合は新しい認証ポリシーを作成し、既存の認証ポリシーをステートメントで定義されたものに変更します。CREATE OR ALTER AUTHENTICATION POLICY ステートメントは、 CREATE AUTHENTICATION POLICY ステートメントの構文ルールに従い、このステートメントには ALTER AUTHENTICATION POLICY ステートメントと同じ制限があります。

CREATE OR ALTER AUTHENTICATION POLICY <name>
  [ AUTHENTICATION_METHODS = ( '<string_literal>' [ , '<string_literal>' , ...  ] ) ]
  [ MFA_AUTHENTICATION_METHODS = ( '<string_literal>' [ , '<string_literal>' , ...  ] ) ]
  [ MFA_ENROLLMENT = { REQUIRED | OPTIONAL } ]
  [ MFA_POLICY= ( ALLOWED_METHODS = ( { 'ALL' | 'PASSKEY' | 'TOTP' | 'DUO' } [ , { 'ALL' | 'PASSKEY' | 'TOTP' | 'DUO' } ... ] ) ) ]
  [ CLIENT_TYPES = ( '<string_literal>' [ , '<string_literal>' , ...  ] ) ]
  [ SECURITY_INTEGRATIONS = ( '<string_literal>' [ , '<string_literal>' , ... ] ) ]
  [ PAT_POLICY = ( {list_of_properties} ) ]
  [ COMMENT = '<string_literal>' ]
Copy

必須パラメーター

name

認証ポリシーの 識別子 を指定します。

また、識別子はアルファベット文字で始まる必要があり、識別子文字列全体が二重引用符で囲まれていない限り、スペースや特殊文字を含めることはできません(例: "My object")。二重引用符で囲まれた識別子も大文字と小文字が区別されます。

詳細については、 識別子の要件 をご参照ください。

オプションのパラメーター

AUTHENTICATION_METHODS = ( 'string_literal' [ , 'string_literal' , ... ] )

注意

認証方法で制限すると、ドライバー接続やサードパーティの統合をブロックするなど、意図しない結果を招く可能性があります。

ログイン時に許可される認証方法のリスト。このパラメーターは、以下の値を1つ以上受け付けます。

ALL

すべての認証方法を許可します。

SAML

SAML2 セキュリティ統合 を許可します。 SAML がある場合は、 SSO ログインオプションが表示されます。 SAML が存在しない場合は、 SSO ログインオプションは表示されません。

PASSWORD

ユーザー名とパスワードによる認証を許可します。

OAUTH

外部 OAuth を許可します。

KEYPAIR

キーペア認証 を許可します。

PROGRAMMATIC_ACCESS_TOKEN

ユーザーが プログラムによるアクセストークン で認証できるようにします。

デフォルト: ALL

MFA_AUTHENTICATION_METHODS = ( 'string_literal' [ , 'string_literal' , ... ] )

ログイン時に多要素認証(MFA)を実施する認証方法のリストです。このパラメータにリストされていない認証方法では、多要素認証のプロンプトは表示されません。

以下の認証方式は、 MFA をサポートしています。

  • SAML

  • PASSWORD

このパラメーターは、以下の値を1つ以上受け付けます。

SAML

SAML2 セキュリティ統合 で認証する際、MFA に登録されている場合、MFA をユーザーに促します。

PASSWORD

ユーザー名とパスワードによる認証時に、 MFA に登録されている場合は、 MFA をユーザーに要求します。

デフォルト: ('PASSWORD')

MFA_ENROLLMENT = { REQUIRED | OPTIONAL }

ユーザーが多要素認証に登録する必要があるかどうかを決定します。

REQUIRED

ユーザーに MFA への登録を強制します。この値を使用する場合、 CLIENT_TYPES パラメータには、 SNOWFLAKE_UI を含める必要があります。なぜなら、 Snowsight は、ユーザーが 多要素認証(MFA)に登録できる唯一の場所だからです

OPTIONAL

ユーザーは、 MFA に登録するかどうかを選択できます。

デフォルト: REQUIRED

MFA_POLICY= ( ALLOWED_METHODS = ( { 'ALL' | 'PASSKEY' | 'TOTP' | 'DUO' } [ , { 'PASSKEY' | 'TOTP' | 'DUO' } ... ] ) )

ユーザーが第2認証要素として使用できる多要素認証(MFA)方法を指定します。複数のメソッドを指定できます。

ALL

ユーザーはパスキー、認証コードアプリ、またはDuoを第2認証要素として使用できます。

PASSKEY

ユーザーはパスキーを第2認証要素として使用できます。

TOTP

ユーザーは認証コードアプリを第2認証要素として使用できます。

DUO

ユーザーはDuoを第2認証要素として使用できます。

デフォルト: ALL

CLIENT_TYPES = ( 'string_literal' [ , 'string_literal' , ... ] )

Snowflakeで認証できるクライアントのリスト。

クライアントが接続を試みても、そのクライアントが以下にリストされた有効な CLIENT_TYPES 値のいずれでもない場合、ログインは失敗します。

MFA_ENROLLMENTREQUIRED に設定した場合、ユーザーが MFA に登録できるようにするには、 CLIENT_TYPES リストに SNOWFLAKE_UI を含める必要があります。

CLIENT_TYPES リストから SNOWFLAKE_UI を除外したい場合は、 MFA_ENROLLMENTOPTIONAL に設定する必要があります。

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。

このパラメーターは、以下の値を1つ以上受け付けます。

ALL

すべてのクライアントの認証を許可します。

SNOWFLAKE_UI

Snowsight または Classic Console。Snowflakeウェブインターフェイス。

注意

If SNOWFLAKE_UI is not included in the CLIENT_TYPES list while MFA_ENROLLMENT is set to REQUIRED, or MFA_ENROLLMENT is unspecified, MFA enrollment doesn't work。

DRIVERS

ドライバーは、 サポートされた言語 で記述されたアプリケーションからSnowflakeへのアクセスを許可します。例: GoJDBC.NET ドライバー、および Snowpipe Streaming

注意

DRIVERSCLIENT_TYPES リストに含まれていない場合、自動インジェスチョンは機能しなくなる可能性があります。

SNOWFLAKE_CLI

Snowflakeに接続し、開発者中心のワークロードと SQL 運用を管理するための コマンドラインクライアント です。

SNOWSQL

Snowflakeに接続するための コマンドラインクライアント

デフォルト: ALL

SECURITY_INTEGRATIONS = ( 'string_literal' [ , 'string_literal' , ... ] )

認証ポリシーが関連付けられているセキュリティ統合のリスト。このパラメーターは、 SAML または OAUTHAUTHENTICATION_METHODS リストにない場合には効果がありません。

SECURITY_INTEGRATIONS リストの値はすべて AUTHENTICATION_METHODS リストの値と互換性のある必要があります。たとえば、 SECURITY_INTEGRATIONS に SAML セキュリティ統合が含まれ、 AUTHENTICATION_METHODSOAUTH が含まれる場合は、認証ポリシーを作成できません。

ALL

すべてのセキュリティ統合を許可します。

デフォルト: ALL

PAT_POLICY = ( list_of_properties )

プログラムによるアクセストークン のポリシーを指定します。以下の1つ以上のプロパティと値をスペースで区切ったリストにこれを設定します。

DEFAULT_EXPIRY_IN_DAYS = number_of_days

プログラムによるアクセストークンのデフォルトの有効期限(日)を指定します。1から最大時間までの値を指定できます(MAX_EXPIRY_IN_DAYS を設定することで指定できます)。

デフォルトの有効期限は15日間です。

詳細については、 デフォルトの有効期限のセット をご参照ください。

MAX_EXPIRY_IN_DAYS = number_of_days

プログラムによるアクセストークンの有効期限に設定できる最大日数を指定します。1から365までの値を指定できます。

デフォルトの最大有効期限は365日です。

注釈

新しい最大有効期限を超える有効期限のプログラムによるアクセストークンが存在する場合、それらのトークンによる認証は失敗します。

例えば、 my_token という名前のプログラムによるアクセストークンを7日間の有効期限で生成したとします。後ですべてのトークンの最大有効期限を2日に変更すると、トークンの有効期限が新しい最大有効期限を超えるため、 my_token での認証は失敗します。

詳細については、 最大有効期限のセット をご参照ください。

NETWORK_POLICY_EVALUATION = { ENFORCED_REQUIRED | ENFORCED_NOT_REQUIRED | NOT_ENFORCED }

プログラムによるアクセストークンに対するネットワークポリシー要件の処理方法を指定します。

デフォルトでは、ユーザーがプログラムによるアクセストークンを生成または使用するには、1つ以上の ネットワークルール を持つ ネットワークポリシー に従う必要があります。

  • サービスユーザー(TYPE=SERVICE)は、プログラムによるアクセストークンを生成し、使用するためにネットワークポリシーに従う必要があります。

  • 人間ユーザー(TYPE=PERSON)は、プログラムによるアクセストークンを使用するためのネットワークポリシーに従う必要があります。

この動作をオーバーライドするには、このプロパティを以下の値のいずれかに設定します。

ENFORCED_REQUIRED (デフォルトの動作)

ユーザーは、プログラムによるアクセストークンを生成および使用するためのネットワークポリシーに従う必要があります。

ユーザーがネットワークポリシーの対象である場合、認証時にネットワークポリシーが適用されます。

ENFORCED_NOT_REQUIRED

ユーザーは、プログラムによるアクセストークンを生成・使用するためにネットワークポリシーに従う必要は ありません

ユーザーがネットワークポリシーの対象である場合、認証時にネットワークポリシーが適用されます。

NOT_ENFORCED

ユーザーは、プログラムによるアクセストークンを生成・使用するためにネットワークポリシーに従う必要は ありません

ユーザーがネットワークポリシーの対象である場合、認証時にネットワークポリシーは適用 されません

例:

PAT_POLICY=(
  DEFAULT_EXPIRY_IN_DAYS=30
  MAX_EXPIRY_IN_DAYS=365
  NETWORK_POLICY_EVALUATION = ENFORCED_NOT_REQUIRED
);
Copy
COMMENT = 'string_literal'

ポリシーの説明を指定します。

アクセス制御の要件

この操作の実行に使用される ロール には、少なくとも次の 権限 が必要です。

権限

オブジェクト

注意

CREATE AUTHENTICATION POLICY

スキーマ

OWNERSHIP

認証ポリシー

  • スキーマに既存のオブジェクトと同じ名前の仮オブジェクトを作成するには、ロールにオブジェクトの権限(OWNERSHIP)を付与するか継承する必要があります。

  • 既存 の認証ポリシーに対して CREATE OR ALTER AUTHENTICATION POLICY ステートメントを実行するために必要です。

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

指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。

セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。

使用上の注意

  • 認証ポリシーを作成した後、Snowflakeがポリシーを適用する前に、 ALTER ACCOUNT または ALTER USER コマンドを使用して、ポリシーをアカウントまたはユーザーに設定する必要があります。

  • 既存の認証ポリシーを更新し、ポリシーの定義を確認する必要がある場合は、 DESCRIBE AUTHENTICATION POLICY コマンドまたは GET_DDL 関数を実行します。

  • OR REPLACEIF NOT EXISTS 句は互いに排他的です。両方を同じステートメントで使うことはできません。

  • CREATE OR REPLACE <オブジェクト> ステートメントはアトミックです。つまり、オブジェクトが置き換えられると、単一のトランザクションで、古いオブジェクトが削除されて新しいオブジェクトが作成されます。

restrict_client_types_policy という名前の認証ポリシーを作成し、 Snowsight または Classic Console 経由のアクセスのみを許可します。

CREATE AUTHENTICATION POLICY restrict_client_types_policy
  CLIENT_TYPES = ('SNOWFLAKE_UI')
  COMMENT = 'Auth policy that only allows access through the web interface';
Copy

多要素認証を設定し、クライアントリストを更新します。

CREATE OR ALTER AUTHENTICATION POLICY restrict_client_types_policy
  MFA_ENROLLMENT = REQUIRED
  MFA_AUTHENTICATION_METHODS = ('PASSWORD', 'SAML')
  CLIENT_TYPES = ('SNOWFLAKE_UI', 'SNOWFLAKE_CLI');
Copy

その他の例については、 認証ポリシー をご参照ください。