アプリ仕様を使用したセキュリティ統合のリクエスト

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

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

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

注釈

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

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

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

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

    注釈

    アプリの仕様ではマニフェストファイルで manifest_version = 2 に設定します。

  2. Providers add the CREATE SECURITY INTEGRATION privilege to the manifest file.

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

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

    • ジョブ仕様

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

  4. Consumers approve information related to OAuth integration when configuring the app. For more information on how consumers view and approve app specifications, see アプリの仕様を使用した外部リソースへの接続の承認.

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

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

セキュリティ統合タイプ

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

CLIENT_CREDENTIALS

  • OAUTH_TOKEN_ENDPOINT (必須)

  • OAUTH_ALLOWED_SCOPES (必須)

AUTHORIZATION_CODE_GRANT

  • OAUTH_TOKEN_ENDPOINT (必須)

  • OAUTH_AUTHORIZATION_ENDPOINT (オプション)

JWT

  • OAUTH_TOKEN_ENDPOINT (必須)

  • OAUTH_AUTHORIZATION_ENDPOINT (オプション)

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

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

manifest_version: 2
Copy

Add the CREATE SECURITY INTEGRATION privilege to the manifest file

  1. To allow an app to create a security integration, add the CREATE SECURITY INTEGRATION privilege to the manifest file, as shown in the following example:

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

If you set the manifest_version to 2 in the manifest file, Snowflake automatically grants the CREATE SECURITY INTEGRATION privilege to the app during installation or upgrade.

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

セキュリティ統合により、アプリは 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;
Copy

This example shows how to create a security integration to connect to Microsoft Graph using OAuth with client credentials. For other supported methods of connecting to an OAuth provider, see 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');
Copy

注釈

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

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

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

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