CREATE AUTHENTICATION POLICY¶
新しい 認証ポリシー を現在のスキーマまたは指定したスキーマで作成するか、既存の認証ポリシーを置き換えます。認証ポリシーを使用して、アカウントまたはユーザーの認証制御およびセキュリティ要件を定義することができます。
このコマンドは次のバリアントをサポートしています。
CREATE OR ALTER 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>' , ... ] ) ]
[ CLIENT_TYPES = ( '<string_literal>' [ , '<string_literal>' , ... ] ) ]
[ CLIENT_POLICY = ( <client_type> = ( MINIMUM_VERSION = '<version>' ) [ , ... ] ) ]
[ SECURITY_INTEGRATIONS = ( '<string_literal>' [ , '<string_literal>' , ... ] ) ]
[ MFA_ENROLLMENT = { 'REQUIRED' | 'REQUIRED_PASSWORD_ONLY' } ]
[ MFA_POLICY= ( <list_of_properties> ) ]
[ PAT_POLICY = ( <list_of_properties> ) ]
[ WORKLOAD_IDENTITY_POLICY = ( <list_of_properties> ) ]
[ COMMENT = '<string_literal>' ]
バリアント構文¶
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>' , ... ] ) ]
[ CLIENT_TYPES = ( '<string_literal>' [ , '<string_literal>' , ... ] ) ]
[ CLIENT_POLICY = ( <client_type> = ( MINIMUM_VERSION = '<version>' ) [ , ... ] ) ]
[ SECURITY_INTEGRATIONS = ( '<string_literal>' [ , '<string_literal>' , ... ] ) ]
[ MFA_ENROLLMENT = { 'REQUIRED' | 'REQUIRED_PASSWORD_ONLY' | 'OPTIONAL' } ]
[ MFA_POLICY= ( <list_of_properties> ) ]
[ PAT_POLICY = ( <list_of_properties> ) ]
[ WORKLOAD_IDENTITY_POLICY = ( <list_of_properties> ) ]
[ COMMENT = '<string_literal>' ]
必須パラメーター¶
オプションのパラメーター¶
AUTHENTICATION_METHODS = ( 'string_literal' [ , 'string_literal' , ... ] )注意
認証方法で制限すると、ドライバー接続やサードパーティの統合をブロックするなど、意図しない結果を招く可能性があります。
ログイン時に許可される認証方法のリスト。このパラメーターは、以下の値を1つ以上受け付けます。
ALLすべての認証方法を許可します。
SAMLSAML2 セキュリティ統合 を許可します。
SAMLがある場合は、 SSO ログインオプションが表示されます。SAMLが存在しない場合は、 SSO ログインオプションは表示されません。PASSWORDユーザー名とパスワードによる認証を許可します。
OAUTH外部 OAuth を許可します。
KEYPAIRキーペア認証 を許可します。
PROGRAMMATIC_ACCESS_TOKENユーザーが プログラムによるアクセストークン で認証できるようにします。
WORKLOAD_IDENTITYユーザーが ワークロードIDフェデレーション で認証できるようにします。
デフォルト:
ALL。CLIENT_TYPES = ( 'string_literal' [ , 'string_literal' , ... ] )Snowflakeで認証できるクライアントのリスト。
クライアントが接続を試みても、そのクライアントが以下にリストされた有効な
CLIENT_TYPES値のいずれでもない場合、ログインは失敗します。MFA_ENROLLMENTをREQUIREDに設定した場合、ユーザーが MFA に登録できるようにするには、CLIENT_TYPESリストにSNOWFLAKE_UIを含める必要があります。CLIENT_TYPESリストからSNOWFLAKE_UIを除外したい場合は、MFA_ENROLLMENTをOPTIONALに設定する必要があります。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.このパラメーターは、以下の値を1つ以上受け付けます。
ALLすべてのクライアントの認証を許可します。
SNOWFLAKE_UISnowsight または Classic Console。Snowflakeウェブインターフェイス。
注意
If
SNOWFLAKE_UIis not included in theCLIENT_TYPESlist whileMFA_ENROLLMENTis set toREQUIRED, orMFA_ENROLLMENTis unspecified, MFA enrollment doesn't work。DRIVERSドライバーは、 サポートされた言語 で記述されたアプリケーションからSnowflakeへのアクセスを許可します。例:Go、 JDBC、 .NET ドライバー、および Snowpipe Streaming。
注意
DRIVERSがCLIENT_TYPESリストに含まれていない場合、自動インジェスチョンは機能しなくなる可能性があります。SNOWFLAKE_CLISnowflakeに接続し、開発者中心のワークロードと SQL 運用を管理するための コマンドラインクライアント です。
SNOWSQLSnowflakeに接続するための コマンドラインクライアント。
デフォルト:
ALL。
CLIENT_POLICY = client_type = ( MINIMUM_VERSION = 'version' )Specifies a policy within the authentication policy that sets the minimum version allowed for each specified client type.
If CLIENT_TYPES is empty, contains
ALL, or containsDRIVERS, the CLIENT_POLICY parameter accepts one or more of the following driver clients (and a specific version string). For any driver client that is not specified, the policy implicitly allows any version of that client.If CLIENT_TYPES contains another value, such as
SNOWFLAKE_CLI, and does not also containDRIVERS, specifying any of the following client types results in an error. You can't create (or alter) an authentication policy such that the CLIENT_TYPES and CLIENT_POLICY parameters aren't compatible.client_typeOne or more valid client type values. This is a different set of values from those that the CLIENT_TYPES parameter accepts. Do not use single quotes for these values.
JDBC_DRIVER(Snowflake JDBC Driver)ODBC_DRIVER(Snowflake ODBC Driver)PYTHON_DRIVER(Snowflake Python Driver)JAVASCRIPT_DRIVER(Snowflake Javascript Driver)C_DRIVER(Libsnowflakeclient C Driver)GO_DRIVER(Snowflake Go Driver)PHP_DRIVER(Snowflake PHP PDO Driver)DOTNET_DRIVER(Snowflake .NET Driver)SQL_API(SQL API)SNOWPIPE_STREAMING_CLIENT_SDK(Snowpipe Streaming Client SDK)PY_CORE(Snowflake Python Core Driver)SPROC_PYTHON(Snowflake Python Stored Procedure)PYTHON_SNOWPARK(Snowflake Python Snowpark Driver)SQL_ALCHEMY(Snowflake SQLAlchemy)SNOWPARK(Snowpark)SNOWFLAKE_CLIENT(Snowflake Client SDK)
'version'The minimum accepted version for each specified client type: a sequence of three digits delimited by periods and enclosed by single quotation marks. For example:
'1.0.0'or'3.14.1'. Authentication attempts with lower client versions are blocked when this policy is in effect for an account or a user.
The CLIENT_POLICY property of an authentication policy is a best-effort method to block user logins based on specific client versions. It should not be used as the sole control to establish a security boundary.
SECURITY_INTEGRATIONS = ( 'string_literal' [ , 'string_literal' , ... ] )認証ポリシーが関連付けられているセキュリティ統合のリスト。このパラメーターは、
SAMLまたはOAUTHがAUTHENTICATION_METHODSリストにない場合には効果がありません。SECURITY_INTEGRATIONSリストの値はすべてAUTHENTICATION_METHODSリストの値と互換性のある必要があります。たとえば、SECURITY_INTEGRATIONSに SAML セキュリティ統合が含まれ、AUTHENTICATION_METHODSにOAUTHが含まれる場合は、認証ポリシーを作成できません。ALLすべてのセキュリティ統合を許可します。
デフォルト:
ALL。MFA_ENROLLMENT = { 'REQUIRED' | 'REQUIRED_PASSWORD_ONLY' | 'OPTIONAL' }Determines whether a user must enroll in multi-factor authentication. If this value is used, then the
CLIENT_TYPESparameter must includeSNOWFLAKE_UI, because Snowsight is the only place users can enroll in multi-factor authentication (MFA).It's possible for the value of the
MFA_ENROLLMENTparameter to beREQUIRED_SNOWFLAKE_UI_PASSWORD_ONLY. This value is part of Snowflake's gradual deprecation of single-factor passwords, and cannot be set directly. If you run a DESCRIBE AUTHENTICATION POLICY command andMFA_ENROLLMENT = 'REQUIRED_SNOWFLAKE_UI_PASSWORD_ONLY, then password users must enroll in MFA if they are using Snowsight.REQUIREDHuman users who are using password or single-sign on (SSO) authentication must enroll in MFA.
REQUIRED_PASSWORD_ONLYAll human users who are using password authentication must enroll in MFA, regardless of the client they are using. Users using SSO authentication are not required to enroll.
OPTIONALRetained for backwards compatibility only.
デフォルト:
OPTIONAL。下位互換性のため、MFA_ENROLLMENTの値を指定せずに認証ポリシーを作成することもできますが、Snowflakeはすべての人間ユーザーに対して MFA を要求する方向に進んでいるため、実際に強制される値はOPTIONALにはなりません。既存の認証ポリシーでどの値が強制されているかを調べるには、 DESCRIBE AUTHENTICATION POLICY コマンドを実行します。
MFA_POLICY= ( list_of_properties )Specifies the policies that affect how multi-factor authentication (MFA) is enforced. Set this to a space-delimited list of one or more of the following properties and values:
ALLOWED_METHODS = ( { 'ALL' | 'PASSKEY' | 'TOTP' | 'OTP' | 'DUO' } [ , { 'PASSKEY' | 'TOTP' | 'OTP' | 'DUO' } ... ] )Specifies the multi-factor authentication (MFA) methods that users can use as a second factor of authentication. You can specify more than one method as a comma-delimited list.
ALLユーザーはパスキー、認証コードアプリ、またはDuoを第2認証要素として使用できます。
PASSKEYユーザーはパスキーを第2認証要素として使用できます。
TOTPユーザーは認証コードアプリを第2認証要素として使用できます。
OTPUser can use a one-time passcode as their second factor of authentication. For more information, see ブレイクグラス アクセス管理者のセットアップ.
DUOユーザーはDuoを第2認証要素として使用できます。
デフォルト:
ALL。ENFORCE_MFA_ON_EXTERNAL_AUTHENTICATION = { 'ALL' | 'NONE' }Specifies whether multi-factor authentication (MFA) is required when users authenticate with single sign-on (SSO). To require MFA, specify
ALL.Default:
NONE
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プログラムのアクセストークンの有効期限に設定できる最大日数を指定します。デフォルトの有効期限(DEFAULT_EXPIRY_IN_DAYS を設定することで指定できます)から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 );
WORKLOAD_IDENTITY_POLICY = ( list_of_properties ):doc:`ワークロードIDフェデレーション </user-guide/workload-identity-federation>`のポリシーを指定します。これを、次のプロパティと値の1つ以上を含むスペース区切りのリストに設定します。
ALLOWED_PROVIDERS = ( { ALL | AWS | AZURE | GCP | OIDC } [ , { AWS | AZURE | GCP | OIDC } ... ] )ワークロードID認証中に認証ポリシーによって許可されるワークロードIDプロバイダーを指定します。このパラメーターを省略すると、すべてのワークロードIDプロバイダーが許可されます。
ALLユーザーは、サポートおよび構成されたワークロードIDプロバイダーで認証できます。
AWSユーザーは AWSIAM ロールまたはユーザーで認証できます。
AZUREユーザーはAzure Entra ID アクセストークンで認証できます。
GCPユーザーはGoogle署名付き ID トークンで認証できます。
OIDCユーザーは構成された OIDC プロバイダーの ID トークンで認証できます。
ALLOWED_AWS_ACCOUNTS = ( 'string_literal' [ , 'string_literal' , ... ] )タイプ
AWSのワークロードID認証中に認証ポリシーによって許可される AWSアカウントIDs のリストを指定します。デフォルトでは、Snowflakeサービスユーザーが
AWS型のWORKLOAD_IDENTITYを持っている場合、ARN は任意の AWS アカウントを参照できます。このパラメーターが設定されている場合、指定された AWSアカウントIDs の ARNs のみが認証することを許可されています。各要素は、AWSアカウントID を表す12桁の文字列である必要があります。
詳細については、`AWSアカウント識別子<https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-identifiers.html>の表示`_をご参照ください。
ALLOWED_AZURE_ISSUERS = ( 'string_literal' [ , 'string_literal' , ... ] )AZURE型のワークロードID認証中に認証ポリシーによって許可されるAzure Entra ID 発行者のリストを指定します。デフォルトでは、Snowflakeサービスユーザーが
AZURE型のWORKLOAD_IDENTITYを持っている場合、発行者はEntra ID テナントである可能性があります。このパラメーターが設定されている場合、指定された発行者のAzureトークンのみが認証することを許可されています。各要素は以下の形式を持つ有効な機関 URL である必要があります。
https://login.microsoftonline.com/tenantId/v2.0
ALLOWED_OIDC_ISSUERS = ( 'string_literal' [ , 'string_literal' , ... ] )OIDC型のワークロードID認証中に認証ポリシーによって許可される OIDC 発行者のリストを指定します。デフォルトでは、Snowflakeサービスユーザーが
OIDC型のWORKLOAD_IDENTITYを持っている場合、発行者は有効なOIDC 発行者である可能性があります。このパラメーターが設定されている場合、指定された OIDC 発行者のトークンのみが認証することを許可されています。各要素は、スキーム、ホスト、さらに任意でポート番号とパスコンポーネントを含み、クエリまたはフラグメントコンポーネントを含まない有効な HTTPSURL である必要があります。URL にはスペースを含めることはできません。また、長さは2048文字を超えてはいけません。
例:
WORKLOAD_IDENTITY_POLICY=( ALLOWED_PROVIDERS = (AWS, AZURE, GCP, OIDC) ALLOWED_AWS_ACCOUNTS = ('123456789012', '210987654321') ALLOWED_AZURE_ISSUERS = ('https://login.microsoftonline.com/8c7832f5-de56-4d9f-ba94-3b2c361abe6b/v2.0', 'https://login.microsoftonline.com/9ebd1ec9-9a78-4429-8f53-5cf870a812d1/v2.0') ALLOWED_OIDC_ISSUERS = ('https://my.custom.oidc.issuer/', 'https://another.custom/oidc/issuer') );
COMMENT = 'string_literal'ポリシーの説明を指定します。
アクセス制御の要件¶
この操作の実行に使用される ロール には、少なくとも次の 権限 が必要です。
権限 |
オブジェクト |
注意 |
|---|---|---|
CREATE AUTHENTICATION POLICY |
スキーマ |
|
OWNERSHIP |
認証ポリシー |
|
スキーマ内のオブジェクトに対して操作を実行するには、親データベースとスキーマに対する USAGE 権限が必要です。スキーマに対する 任意の権限を付与されたロールは、そのロールがスキーマを解決できることに注意してください。たとえば、スキーマに対するCREATE権限を付与されたロールは、そのスキーマにオブジェクトを作成できますが、そのスキーマに対するUSAGE*も*付与されている必要はありません。
指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。
セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。
使用上の注意¶
認証ポリシーを作成した後、Snowflakeがポリシーを適用する前に、 ALTER ACCOUNT または ALTER USER コマンドを使用して、ポリシーをアカウントまたはユーザーに設定する必要があります。
既存の認証ポリシーを更新し、ポリシーの定義を確認する必要がある場合は、 DESCRIBE AUTHENTICATION POLICY コマンドまたは GET_DDL 関数を実行します。
OR REPLACE 句と IF NOT EXISTS 句は互いに排他的です。この2つを同じステートメントで使うことはできません。
CREATE OR REPLACE <オブジェクト> ステートメントはアトミックです。つまり、オブジェクトが置き換えられると、単一のトランザクションで、古いオブジェクトが削除されて新しいオブジェクトが作成されます。
Examples¶
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';
多要素認証を設定し、クライアントリストを更新します。
CREATE OR ALTER AUTHENTICATION POLICY restrict_client_types_policy
MFA_ENROLLMENT = REQUIRED
CLIENT_TYPES = ('SNOWFLAKE_UI', 'SNOWFLAKE_CLI');
Create an authentication policy that includes a client policy. The client policy sets the minimum version for two specific driver clients:
CREATE AUTHENTICATION POLICY two_driver_policy
CLIENT_TYPES = ('DRIVERS')
CLIENT_POLICY = (
GO_DRIVER = (MINIMUM_VERSION = '1.14.1'),
JDBC_DRIVER = (MINIMUM_VERSION = '3.25.0')
)
COMMENT = 'JDBC and Go Driver minimum versions';
The following attempt to create an authentication policy fails because the CLIENT_POLICY parameter specifies drivers that are not permitted by the CLIENT_TYPES parameter:
CREATE AUTHENTICATION POLICY go_driver_policy_test
CLIENT_TYPES = ('SNOWFLAKE_UI', 'SNOWFLAKE_CLI')
CLIENT_POLICY = (GO_DRIVER = (MINIMUM_VERSION = '1.14.1'));
004800 (22023): Authentication policy can not contain CLIENT_POLICY of 'GO_DRIVER' without including 'DRIVERS' in CLIENT_TYPES.
その他の例については、 認証ポリシー をご参照ください。