CREATE SECURITY INTEGRATION (Snowflake OAuth)

アカウントに新しいSnowflake OAuth セキュリティ統合を作成するか、既存の統合を置き換えます。Snowflake OAuth セキュリティ統合により、 OAuth をサポートするクライアントは、ユーザーを認証ページにリダイレクトし、Snowflakeへのアクセス用のアクセストークン(およびオプションで更新トークン)を生成できます。

他の型のセキュリティ統合(例: 外部 OAuth)の作成については、 CREATE SECURITY INTEGRATION をご参照ください。

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

ALTER SECURITY INTEGRATION (Snowflake OAuth)DROP INTEGRATIONSHOW INTEGRATIONS

構文

パートナーアプリケーション用Snowflake OAuth

CREATE [ OR REPLACE ] SECURITY INTEGRATION [IF NOT EXISTS]
  <name>
  TYPE = OAUTH
  OAUTH_CLIENT = <partner_application>
  OAUTH_REDIRECT_URI = '<uri>'  -- Required when OAUTH_CLIENT=LOOKER
  [ ENABLED = { TRUE | FALSE } ]
  [ OAUTH_ISSUE_REFRESH_TOKENS = TRUE | FALSE ]
  [ OAUTH_REFRESH_TOKEN_VALIDITY = <integer> ]
  [ OAUTH_USE_SECONDARY_ROLES = IMPLICIT | NONE ]
  [ BLOCKED_ROLES_LIST = ( '<role_name>' [ , '<role_name>' , ... ] ) ]
  [ COMMENT = '<string_literal>' ]
Copy

カスタムクライアント用Snowflake OAuth

CREATE [ OR REPLACE ] SECURITY INTEGRATION [IF NOT EXISTS]
  <name>
  TYPE = OAUTH
  OAUTH_CLIENT = CUSTOM
  OAUTH_CLIENT_TYPE = 'CONFIDENTIAL' | 'PUBLIC'
  OAUTH_REDIRECT_URI = '<uri>'
  [ ENABLED = { TRUE | FALSE } ]
  [ OAUTH_ALLOW_NON_TLS_REDIRECT_URI = TRUE | FALSE ]
  [ OAUTH_ENFORCE_PKCE = TRUE | FALSE ]
  [ OAUTH_USE_SECONDARY_ROLES = IMPLICIT | NONE ]
  [ PRE_AUTHORIZED_ROLES_LIST = ( '<role_name>' [ , '<role_name>' , ... ] ) ]
  [ BLOCKED_ROLES_LIST = ( '<role_name>' [ , '<role_name>' , ... ] ) ]
  [ OAUTH_ISSUE_REFRESH_TOKENS = TRUE | FALSE ]
  [ OAUTH_REFRESH_TOKEN_VALIDITY = <integer> ]
  [ NETWORK_POLICY = '<network_policy>' ]
  [ OAUTH_CLIENT_RSA_PUBLIC_KEY = <public_key1> ]
  [ OAUTH_CLIENT_RSA_PUBLIC_KEY_2 = <public_key2> ]
  [ COMMENT = '<string_literal>' ]
Copy

必須パラメーター(すべての OAuth クライアント)

name

統合の識別子(つまり、名前)を指定する文字列。アカウント内で一意である必要があります。

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

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

TYPE = OAUTH

統合のタイプを指定します。

  • OAUTH :Snowflakeと OAuth をサポートするクライアントとの間にセキュリティインターフェイスを作成します。

OAUTH_CLIENT = { CUSTOM | partner_application }

クライアントの型を指定します。

  • CUSTOM :Snowflakeとカスタムクライアントの間に OAuth インターフェイスを作成します。

  • partner_application: Snowflakeとパートナーアプリケーションの間に OAuth インターフェイスを作成します。サポートされる値は次のとおりです。

    • TABLEAU_DESKTOP :Tableau Desktopバージョン2019.1またはそれ以上。

    • TABLEAU_SERVER :Tableau OnlineまたはTableau Server。Tableau ServerがSnowflakeサービスへのプライベート接続を使用してSnowflakeに接続している場合は、代わりに OAUTH_CLIENT = CUSTOM を確実に指定してください。

    • LOOKER :Lookerビジネスインテリジェンスツール。

OAUTH_REDIRECT_URI = 'uri'

クライアント URIを指定します。ユーザーが認証されると、ウェブブラウザーはこの URI にリダイレクトされます。

このパラメーターは、 OAUTH_CLIENT = LOOKER の場合に必要です。詳細については、 Lookerドキュメント の例をご参照ください。

追加の必須パラメーター(カスタムクライアント)

OAUTH_CLIENT = CUSTOM の場合(つまり、カスタムクライアントの統合を作成する場合)にのみ必要

OAUTH_CLIENT_TYPE = { 'CONFIDENTIAL' | 'PUBLIC' }

登録されるクライアントのタイプを指定します。Snowflakeは、機密クライアントとパブリッククライアントの両方をサポートしています。機密クライアントは秘密を保存できます。エンドユーザーがアクセスできない、保護された領域で実行されます。例えば、クラウドに展開されたセキュリティで保護されたサービスが機密クライアントになる可能性があります。一方、デスクトップで実行されているクライアントや、アプリストアを介して配布されているクライアントは、パブリッククライアントになる可能性があります。

OAUTH_REDIRECT_URI = 'uri'

クライアント URIを指定します。ユーザーが認証されると、ウェブブラウザーはこの URI にリダイレクトされます。オプションの OAUTH_ALLOW_NON_TLS_REDIRECT_URI パラメーターが TRUE に設定されていない限り、 URI は TLS (トランスポート層セキュリティ)で保護する必要があります。

認証エンドポイント へのリクエストには、リダイレクト URI とともに送信されるクエリパラメーターを含めないでください。たとえば、認証エンドポイントへのリクエストの redirect_uri クエリパラメーター値が https://www.example.com/connect?authType=snowflake の場合は、 OAUTH_REDIRECT_URI パラメーターが https://www.example.com/connect に設定されていることを確認してください。

オプションのパラメーター(すべての OAuth クライアント)

ENABLED = { TRUE | FALSE }

統合の操作を開始するか、中断するかを指定します。

  • TRUE は、統合を有効にします。

  • FALSE は、メンテナンスのための統合を無効にします。Snowflakeとサードパーティサービスの統合は、いずれの場合も機能しません。

デフォルトは、 FALSE。このパラメーターを TRUE に設定せずにセキュリティ統合を作成した場合、Snowflakeはパラメーターを FALSE に設定します。

追加のオプションパラメーター(パートナーアプリケーション)

OAUTH_CLIENT = <パートナーアプリケーション>の場合(つまり、パートナーアプリケーションの統合を作成する場合)に有効

OAUTH_ISSUE_REFRESH_TOKENS = { TRUE | FALSE }

現在のアクセストークンの有効期限が切れたときに、クライアントがアクセストークンの更新トークンを交換できるようにするかどうかを指定するブール値。 FALSE に設定されている場合、 OAUTH_REFRESH_TOKEN_VALIDITY で整数値が設定されているかどうかにかかわらず、更新トークンは発行されません。ユーザーの同意は取り消され、ユーザーは再度認証を確認する必要があります。

デフォルト: TRUE

注釈

このパラメーターが FALSE に設定されており、セキュリティ統合にも ENABLED = TRUE がある場合、Snowflake OAuth フローが繰り返され、構成できないアクセストークンが発行されます。アクセストークンは、600秒間有効です(10分)。このアクセストークンの有効期限が切れると、ユーザーは再度認証を受ける必要があります。

このパラメーターを FALSE および ENABLED = FALSE に設定すると、トークンは発行されず、統合は無効になります。

OAUTH_REFRESH_TOKEN_VALIDITY = integer

更新トークンの有効期間を秒単位で指定する整数。これを使用して、更新トークンを定期的に失効させることができます。OAUTH_ISSUE_REFRESH_TOKENS を TRUE に設定する必要があることに注意してください。

更新トークンの有効期限が切れると、アプリケーションはユーザーに再度認証フローを指示して、新しい更新トークンを取得する必要があります。

サポートされている最小値、最大値、およびデフォルト値は次のとおりです。

アプリケーション

最小

最大

デフォルト

Tableau Desktop

60 (1分)

36000 (10時間)

36000 (10時間)

Tableau ServerまたはTableau Online

60 (1分)

7776000 (90日)

7776000 (90日)

カスタムクライアント

3600 (1時間)

7776000 (90日)

7776000 (90日)

ビジネスで最小値を下げるか、最大値を上げる必要がある場合は、アカウント管理者に依頼して Snowflakeサポート にリクエストを送信してください。

OAUTH_USE_SECONDARY_ROLES = { IMPLICIT | NONE }
  • IMPLICIT: ユーザープロパティで設定されたデフォルトのセカンダリロールは、開かれているセッション内においてデフォルトでアクティブ化されます。

  • NONE: デフォルトのセカンダリロールは、開かれているセッションではサポートされていません。

デフォルト: NONE

BLOCKED_ROLES_LIST = ( 'role_name' [ , 'role_name' , ... ] )

認証後に、ユーザーが使用に対して明示的に同意 できない Snowflakeロールのコンマ区切りリスト(例: 'BLOCKED_ROLES_LIST = ('custom_role1', 'custom_role2'))。

既定の設定では、Snowflakeは ACCOUNTADMIN、 ORGADMIN、 SECURITYADMIN のロールを認証できないようにしています。これらの権限ロールに認証を許可するには、 ALTER ACCOUNT コマンドを使用して、 OAUTH_ADD_PRIVILEGED_ROLES_TO_BLOCKED_LIST アカウントパラメーターを FALSE に設定します。

COMMENT = 'string_literal'

統合のコメントを指定します。

デフォルト: 値なし

追加のオプションパラメーター(カスタムクライアント)

OAUTH_CLIENT = CUSTOM の場合(つまり、カスタムクライアントの統合を作成する場合)に有効

OAUTH_ALLOW_NON_TLS_REDIRECT_URI = { TRUE | FALSE }

TRUE の場合は、 OAUTH_REDIRECT_URI を TLS で保護されて いない URI に設定できます。フィッシング攻撃で使用される中間者 OAuth リダイレクトを防ぐために、 TLS の使用を強くお勧めします。

デフォルト: FALSE

OAUTH_ENFORCE_PKCE = { TRUE | FALSE }

統合にコード交換の証明キー(PKCE)が必要かどうかを指定するブール値。

デフォルトでは、 PKCE はオプションであり、 code_challenge および code_challenge_method パラメーターが両方とも許可エンドポイント URLに含まれている場合にのみ強制されます。ただし、 OAuth フローをより安全にするために、すべての認証に PKCE をクライアントに要求することを 強く お勧めします。詳細については、 カスタムクライアント用のSnowflake OAuth の構成 をご参照ください。

デフォルト: FALSE

OAUTH_USE_SECONDARY_ROLES = { IMPLICIT | NONE }
  • IMPLICIT: ユーザープロパティで設定されたデフォルトのセカンダリロールは、開かれているセッション内においてデフォルトでアクティブ化されます。

  • NONE: デフォルトのセカンダリロールは、開かれているセッションではサポートされていません。

デフォルト: NONE

PRE_AUTHORIZED_ROLES_LIST = ( 'role_name' [ , 'role_name' , ... ] )

ユーザーが認証後に使用することに明示的に同意する必要がないSnowflakeロールのコンマ区切りリスト(例: PRE_AUTHORIZED_ROLES_LIST = ('custom_role1', 'custom_role2'))。ACCOUNTADMIN、 ORGADMIN、および SECURITYADMIN のロールをこのリストに含めることはできません。

注釈

このパラメーターは機密クライアントでのみサポートされています。

BLOCKED_ROLES_LIST = ( 'role_name' [ , 'role_name' , ... ] )

認証後に、ユーザーが使用に対して明示的に同意 できない Snowflakeロールのコンマ区切りリスト(例: BLOCKED_ROLES_LIST = ('custom_role1', 'custom_role2'))。

ACCOUNTADMIN、ORGADMIN、 および SECURITYADMIN ロールはデフォルトでこのリストに含まれます。ただし、これらのロールをアカウントから削除する必要がある場合は、アカウント管理者に依頼して、 Snowflakeサポート にリクエストを送信してください。

OAUTH_ISSUE_REFRESH_TOKENS = { TRUE | FALSE }

現在のアクセストークンの有効期限が切れたときに、クライアントがアクセストークンの更新トークンを交換できるようにするかどうかを指定するブール値。 FALSE に設定されている場合、リフレッシュトークンは発行されません。ユーザーの同意は取り消され、ユーザーは再度認証を確認する必要があります。

デフォルト: TRUE

OAUTH_REFRESH_TOKEN_VALIDITY = integer

更新トークンの有効期間を秒単位で指定する整数。これを使用して、更新トークンを定期的に失効させることができます。OAUTH_ISSUE_REFRESH_TOKENS を TRUE に設定する必要があることに注意してください。

組織で最小値または最大値をそれぞれ増減する場合は、アカウント管理者に依頼して Snowflakeサポート にリクエストを送信してください。

86400 (1日)から 7776000 (90日)

デフォルト

7776000

NETWORK_POLICY = 'network_policy'

アカウントに対してアクティブな既存の ネットワークポリシー を指定します。ネットワークポリシーは、アクセストークンまたは更新トークンの認証コードを交換するとき、および更新トークンを使用して新しいアクセストークンを取得するとき、ユーザー IP アドレスのリストを制限します。このパラメーターが設定されていない場合は、アカウントのネットワークポリシー(存在する場合)が代わりに使用されます。

OAUTH_CLIENT_RSA_PUBLIC_KEY = public_key1

RSA パブリックキーを指定します。

OAUTH_CLIENT_RSA_PUBLIC_KEY_2 = public_key2

2番目の RSA パブリックキーを指定します。キーのローテーションに使用されます。

COMMENT = 'string_literal'

統合のコメントを指定します。

デフォルト: 値なし

アクセス制御の要件

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

権限

オブジェクト

メモ

CREATE INTEGRATION

アカウント

Only the ACCOUNTADMIN role has this privilege by default. The privilege can be granted to additional roles as needed.

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

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

使用上の注意

  • メタデータについて。

    注意

    Snowflakeサービスを使用する場合、お客様は、個人データ(ユーザーオブジェクト向け以外)、機密データ、輸出管理データ、またはその他の規制されたデータがメタデータとして入力されていないことを確認する必要があります。詳細については、 Snowflakeのメタデータフィールド をご参照ください。

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

Tableau Desktopの例

次の例では、デフォルト設定で OAuth 統合を作成します。

CREATE SECURITY INTEGRATION td_oauth_int1
  TYPE = oauth
  ENABLED = true
  OAUTH_CLIENT = tableau_desktop;
Copy

DESCRIBE INTEGRATION を使用して統合設定を表示します。

DESC SECURITY INTEGRATION td_oauth_int1;
Copy

次の例では、10時間(36000秒)後に期限切れになる更新トークンを使用して OAuth 統合を作成します。統合により、ユーザーは SYSADMIN をアクティブロールとしてセッションを開始できなくなります。

CREATE SECURITY INTEGRATION td_oauth_int2
  TYPE = oauth
  ENABLED = true
  OAUTH_CLIENT = tableau_desktop
  OAUTH_REFRESH_TOKEN_VALIDITY = 36000
  BLOCKED_ROLES_LIST = ('SYSADMIN');
Copy

Tableau OnlineまたはTableau Serverの例

次の例では、デフォルト設定で OAuth 統合を作成します。

CREATE SECURITY INTEGRATION ts_oauth_int1
  TYPE = oauth
  ENABLED = true
  OAUTH_CLIENT = tableau_server;
Copy

DESCRIBE INTEGRATION を使用して統合設定を表示します。

DESC SECURITY INTEGRATION ts_oauth_int1;
Copy

次の例では、1日(86400秒)後に期限切れになる更新トークンを使用して OAuth 統合を作成します。統合により、ユーザーは SYSADMIN をアクティブロールとしてセッションを開始できなくなります。

CREATE SECURITY INTEGRATION ts_oauth_int2
  TYPE = oauth
  ENABLED = true
  OAUTH_CLIENT = tableau_server
  OAUTH_REFRESH_TOKEN_VALIDITY = 86400
  BLOCKED_ROLES_LIST = ('SYSADMIN');
Copy

カスタムクライアントの例

次の例では、キーペア認証を使用する OAuth 統合を作成します。統合では、1日(86400秒)後に期限切れになる更新トークンが許可されます。統合により、ユーザーはアクティブロールとして SYSADMIN のセッション開始ができなくなります。

CREATE SECURITY INTEGRATION oauth_kp_int
  TYPE = oauth
  ENABLED = true
  OAUTH_CLIENT = custom
  OAUTH_CLIENT_TYPE = 'CONFIDENTIAL'
  OAUTH_REDIRECT_URI = 'https://localhost.com'
  OAUTH_ISSUE_REFRESH_TOKENS = TRUE
  OAUTH_REFRESH_TOKEN_VALIDITY = 86400
  PRE_AUTHORIZED_ROLES_LIST = ('MYROLE')
  BLOCKED_ROLES_LIST = ('SYSADMIN');
Copy