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>' , ... ] ) ]
[ 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> ) ]
[ 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>' , ... ] ) ]
[ 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} ) ]
[ 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。
MFA_AUTHENTICATION_METHODS = ( 'string_literal' [ , 'string_literal' , ... ] )ログイン時に多要素認証(MFA)を実施する認証方法のリストです。このパラメータにリストされていない認証方法では、多要素認証のプロンプトは表示されません。
以下の認証方式は、 MFA をサポートしています。
SAMLPASSWORD
このパラメーターは、以下の値を1つ以上受け付けます。
SAMLSAML2 セキュリティ統合 で認証する際、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_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。SECURITY_INTEGRATIONS = ( 'string_literal' [ , 'string_literal' , ... ] )認証ポリシーが関連付けられているセキュリティ統合のリスト。このパラメーターは、
SAMLまたはOAUTHがAUTHENTICATION_METHODSリストにない場合には効果がありません。SECURITY_INTEGRATIONSリストの値はすべてAUTHENTICATION_METHODSリストの値と互換性のある必要があります。たとえば、SECURITY_INTEGRATIONSに SAML セキュリティ統合が含まれ、AUTHENTICATION_METHODSにOAUTHが含まれる場合は、認証ポリシーを作成できません。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プログラムのアクセストークンの有効期限に設定できる最大日数を指定します。デフォルトの有効期限(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句は互いに排他的です。両方を同じステートメントで使うことはできません。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';
多要素認証を設定し、クライアントリストを更新します。
CREATE OR ALTER AUTHENTICATION POLICY restrict_client_types_policy
MFA_ENROLLMENT = REQUIRED
MFA_AUTHENTICATION_METHODS = ('PASSWORD', 'SAML')
CLIENT_TYPES = ('SNOWFLAKE_UI', 'SNOWFLAKE_CLI');
その他の例については、 認証ポリシー をご参照ください。