Request OAuth connection

このトピックでは、Snowflake Native App を構成し、コンシューマーアカウントでアプリ仕様を使用してセキュリティ統合へのアクセスをリクエストする方法を説明します。セキュリティ統合により、アプリは OAuth などのサードパーティの認証プロバイダーに接続できます。

アプリからのサードパーティ認証プロバイダーへのアクセス

サードパーティの認証サービスを実装するために、Snowflakeは セキュリティ統合を提供します。セキュリティ統合により、アプリは のようなサードパーティの認証サービスに接続できます。OAuth.

注釈

Snowflake Native Apps タイプ API_AUTHENTICATION のセキュリティ統合のみをサポートします。詳細については、 CREATE SECURITY INTEGRATION (外部 API 認証) をご参照ください。

セキュリティ統合のアプリ仕様ワークフロー

セキュリティ統合を使用するようにアプリを構成するための一般的なワークフローは次のとおりです。

  1. プロバイダーは、アプリの :doc:` 権限の自動付与 <requesting-auto-privs>` 構成します。これにより、アプリにセキュリティ統合を作成する権限が付与されます。

    注釈

    App specifications require that manifest_version: 2 be set in the manifest file.

  2. プロバイダーは、マニフェストファイルに CREATE SECURITY 権限 INTEGRATION を追加します。

  3. プロバイダーが追加 必要に応じて、次のオブジェクトを作成するためにセットアップスクリプトに SQL のステートメントを実行します。

    • :doc:` セキュリティ統合 </sql-reference/sql/create-security-integration>`

    • ジョブ仕様

    プロバイダーはこれらのコマンドをセットアップスクリプトに直接追加できます。これにより、アプリのインストール時にこれらのオブジェクトが作成されます。または、これらのコマンドを実行時に呼び出されるストアドプロシージャに追加して、これらのオブジェクトを作成することもできます。

  4. コンシューマーは、アプリの構成時に OAuth 統合に関連する情報を承認します。コンシューマーがアプリ仕様を表示し、承認する方法については、 Approve app specifications をご参照ください。

セキュリティ統合のアプリ仕様定義

セキュリティ統合の場合は、アプリ仕様定義 には、サードパーティプロバイダーへの接続に必要なプロパティが含まれています。OAuth の場合、アプリ仕様定義は OAuth 型に依存します。以下のテーブルは、各タイプのアプリ仕様定義の一覧です。

セキュリティ統合タイプ

アプリ仕様で定義された値

CLIENT_CREDENTIALS

  • OAUTH_TOKEN_ENDPOINT (必須)

  • OAUTH_ALLOWED_SCOPES (必須)

AUTHORIZATION_CODE

  • OAUTH_TOKEN_ENDPOINT (必須)

  • OAUTH_AUTHORIZATION_ENDPOINT (オプション)

  • OAUTH_ALLOWED_SCOPES (optional)

JWT_BEARER

  • OAUTH_TOKEN_ENDPOINT (必須)

  • OAUTH_AUTHORIZATION_ENDPOINT (オプション)

  • OAUTH_ALLOWED_SCOPES (optional)

マニフェストファイルのバージョンを指定します。

アプリに対する権限の自動付与を有効にするには、次の例に示すように、マニフェストファイルの先頭でバージョンを設定します。

manifest_version: 2

マニフェストファイルに CREATESECURITYINTEGRATION 権限を追加する

  • アプリがセキュリティ統合を作成できるようにするには、次の例のように CREATE SECURITY INTEGRATION 権限をマニフェストファイルに追加します。

    manifest_version: 2
    ...
    privileges:
      - CREATE SECURITY INTEGRATION:
          description: "Allows the app to create security integrations to access external auth providers"
    ...
    

マニフェストファイルで manifest_version を2に設定した場合、Snowflakeは、インストールまたはアップグレード中にアプリに CREATE SECURITY INTEGRATION 権限を自動的に付与します。

セットアップスクリプトにセキュリティ統合を追加する

セキュリティ統合により、アプリは OAuth のようなサードパーティの認証サービスに接続できます。アプリのセキュリティ統合を作成するには、次の例に示すように、セットアップスクリプトに CREATE SECURITY INTEGRATION (外部 API 認証) コマンドを追加します。

CREATE SECURITY INTEGRATION external_oauth_provider
  TYPE = API_AUTHENTICATION
  AUTH_TYPE = OAUTH2
  OAUTH_CLIENT_AUTH_METHOD = CLIENT_SECRET_POST
  OAUTH_CLIENT_ID = 'YOUR_CLIENT_ID'
  OAUTH_CLIENT_SECRET = 'YOUR_CLIENT_SECRET'
  OAUTH_GRANT = 'CLIENT_CREDENTIALS'
  OAUTH_TOKEN_ENDPOINT = 'https://login.microsoftonline.com/YOUR_TENANT_ID/oauth2/v2.0/token'
  OAUTH_ALLOWED_SCOPES = ('https://graph.microsoft.com/.default')
  ENABLED = TRUE;

この例は、クライアント認証情報を使用して、OAuth を使用してMicrosoft Graph に接続するセキュリティ統合を作成する方法を示しています。他の OAuth プロバイダーへサポートされている接続方法については CREATE SECURITY INTEGRATION (外部 API 認証) を参照してください。

セキュリティ統合のアプリ仕様を作成する

次の例は、CLIENT_CREDENTIALSOAuth タイプを使用して、セキュリティ統合のアプリ仕様を作成する方法を示しています:

ALTER APPLICATION SET SPECIFICATION oauth_app_spec
  TYPE = SECURITY_INTEGRATION
  LABEL = 'Connection to an external OAuth provider'
  DESCRIPTION = 'Integrates an external identity provider in the app'
  OAUTH_TYPE = 'CLIENT_CREDENTIALS'
  OAUTH_TOKEN_ENDPOINT = 'https://login.microsoftonline.com/YOUR_TENANT_ID/oauth2/v2.0/token'
  OAUTH_ALLOWED_SCOPES = ('https://graph.microsoft.com/.default');

注釈

アプリ仕様を作成するときに提供する値は、セキュリティ統合の作成 セットアップスクリプトの場合に使用する値と同じである必要があります。

他の OAuth タイプの使用については、ALTER APPLICATION SET SPECIFICATION をご参照ください。

Authorization code grant flow

For security integrations that use the AUTHORIZATION_CODE grant type, you can use the SECRET_AUTHORIZATION application configuration to enable consumers to complete the OAuth consent flow directly. This allows the app to obtain tokens on behalf of the consumer without the consumer sharing any credentials with the app provider.

For the full setup and consumer authentication steps, see コンシューマーからの OAuth 認証リクエスト.

コンシューマーアカウントでアプリ仕様を承認する

プロバイダーがアプリを構成して、セキュリティ統合とアプリ仕様を作成すると、コンシューマーはアプリ仕様を表示し、アプリの構成時に必要に応じて承認または拒否することができます。詳細については、 Approve app specifications をご参照ください。