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' )特定の各クライアントタイプに対して許可される最小バージョンを設定する認証ポリシー内のポリシーを指定します。
CLIENT_TYPES が空である、
ALLを含む、またはDRIVERSを含む場合、CLIENT_POLICY パラメーターは以下のドライバークライアント(および特定のバージョン文字列)を1つ以上受け入れます。指定されていないドライバークライアントの場合、ポリシーはそのクライアントのすべてのバージョンを暗黙的に許可します。CLIENT_TYPES に、
SNOWFLAKE_CLIなどの別の値が含まれており、DRIVERSは含まれていない場合、次のクライアントタイプのいずれかを指定するとエラーになります。CLIENT_TYPES パラメーターと CLIENT_POLICY パラメーターに互換性がない認証ポリシーを作成(または変更)することはできません。client_type1つ以上の有効なクライアント型の値。これは、CLIENT_TYPES パラメーターが受け入れるものとは別の値のセットです。これらの値には一重引用符を使用しないでください。
JDBC_DRIVER(Snowflake JDBC ドライバー)ODBC_DRIVER(Snowflake ODBC ドライバー)PYTHON_DRIVER(Snowflake Pythonドライバー)JAVASCRIPT_DRIVER(Snowflake Javascriptドライバー)C_DRIVER(Libsnowflakeclient Cドライバー)GO_DRIVER(Snowflake Goドライバー)PHP_DRIVER(Snowflake PHP PDO ドライバー)DOTNET_DRIVER(Snowflake .NETドライバー)SQL_API(SQL API)SNOWPIPE_STREAMING_CLIENT_SDK(Snowpipe Streamingクライアント SDK)PY_CORE(Snowflake Python Coreドライバー)SPROC_PYTHON(Snowflake Pythonストアドプロシージャ)PYTHON_SNOWPARK(Snowflake Python Snowparkドライバー)SQL_ALCHEMY(Snowflake SQLAlchemy)SNOWPARK(Snowpark)SNOWFLAKE_CLIENT(Snowflake Client SDK)
'version'各指定クライアントタイプの最小受け入れバージョン。ピリオドで区切られ、一重引用符で囲まれた3桁のシーケンス。例:
'1.0.0'または'3.14.1'。このポリシーがアカウントまたはユーザーに有効な場合、クライアントバージョンの低い認証試行はブロックされます。
認証ポリシーの CLIENT_POLICY プロパティは、特定のクライアントバージョンに基づいてユーザーログインをブロックするためのベストエフォート方式です。セキュリティ境界を確立するために単独の制御として使用しないでください。
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).MFA_ENROLLMENTパラメーターの値はREQUIRED_SNOWFLAKE_UI_PASSWORD_ONLYにできます。この値は、Snowflakeによる単一要素パスワードの段階的廃止の一部であり、直接設定することはできません。DESCRIBE AUTHENTICATION POLICY コマンドを実行し、MFA_ENROLLMENT = 'REQUIRED_SNOWFLAKE_UI_PASSWORD_ONLYである場合、 Snowsight を使用するパスワードユーザーは MFA への登録が必要です。REQUIREDパスワードまたはシングルサインオン(SSO)認証を使用する人間ユーザーは、MFA に登録する必要があります。
REQUIRED_PASSWORD_ONLYパスワード認証を使用するすべての人間ユーザーは、使用するクライアントに関係なく、MFA に登録する必要があります。SSO 認証を使用するユーザーは、登録の必要はありません。
OPTIONAL下位互換性のためにのみ保持されています。
デフォルト:
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' }ユーザーがシングルサインオン(SSO)で認証する場合に多要素認証(MFA)が必要かどうかを指定します。MFA を必要とするには、
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ユーザーは、プログラムによるアクセストークンを生成・使用するためにネットワークポリシーに従う必要は ありません。
ユーザーがネットワークポリシーの対象である場合、認証時にネットワークポリシーは適用 されません。
REQUIRE_ROLE_RESTRICTION_FOR_SERVICE_USERS = { TRUE | FALSE }If TRUE, when you generate a programmatic access token for a service user, you must restrict the use of that token to a specific role.
If you set this parameter to FALSE, you can generate a programmatic access token for a service user without restricting that token to a specific role.
Changing REQUIRE_ROLE_RESTRICTION_FOR_SERVICE_USERS from FALSE back to TRUE invalidates any programmatic access tokens for service users that were generated without the role restriction.
Default value: TRUE
The following example of the PAT_POLICY clause specifies the following policy:
By default, programmatic access tokens expire in 30 days.
Programmatic access tokens have a maximum expiration time of 365 days.
You can generate a programmatic access token for a user if the user is not subject to a network policy requirement. Any network policy that the user is subject to is still enforced.
When you generate a programmatic access token for a service user, you do not need to restrict to token to use a specific role.
PAT_POLICY=( DEFAULT_EXPIRY_IN_DAYS=30 MAX_EXPIRY_IN_DAYS=365 NETWORK_POLICY_EVALUATION = ENFORCED_NOT_REQUIRED REQUIRE_ROLE_RESTRICTION_FOR_SERVICE_USERS = FALSE );
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 |
認証ポリシー |
|
Operating on an object in a schema requires at least one privilege on the parent database and at least one privilege on the parent schema.
指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。
セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。
使用上の注意¶
認証ポリシーを作成した後、Snowflakeがポリシーを適用する前に、 ALTER ACCOUNT または ALTER USER コマンドを使用して、ポリシーをアカウントまたはユーザーに設定する必要があります。
既存の認証ポリシーを更新し、ポリシーの定義を確認する必要がある場合は、 DESCRIBE AUTHENTICATION POLICY コマンドまたは GET_DDL 関数を実行します。
The OR REPLACE and IF NOT EXISTS clauses are mutually exclusive. They can't both be used in the same statement.
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');
クライアントポリシーを含む認証ポリシーを作成します。このクライアントポリシーでは、2つの特定のドライバークライアントの最小バージョンを設定します。
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';
次の認証ポリシーの作成の試行は、CLIENT_POLICY パラメーターが CLIENT_TYPES で許可されていないドライバーを指定するために失敗します。
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.
その他の例については、 認証ポリシー をご参照ください。