例 - OAuth および 参照を使用した外部アクセス¶
このトピックでは、参照を使用してプロバイダーがSnowflake外部のエンドポイントへのアクセスを許可できるようにする方法の例を示します。この例では、 OAuth2 シークレットと外部アクセス統合を使用してアクセスを許可します。
重要
この例では、コンシューマーが自分で統合を作成する必要がある場合の参照を使用した手動メソッドを示しています。新しいアプリの場合、Snowflakeでは代わりに アプリ仕様 を使用した 権限の自動付与 を使用することをお勧めします。外部アクセス統合については アプリ仕様を使用した外部アクセス統合のリクエスト(EAIs) を、セキュリティ統合については アプリ仕様を使用したセキュリティ統合のリクエスト を参照してください。
マニフェストファイルへの参照を追加する¶
OAuth を使用して外部エンドポイントへのアクセスを有効にするには、プロバイダーはマニフェストファイルに次のエントリを追加します。
USAGE 権限を使用した EXTERNAL ACCESS INTEGRATION 参照
READ 権限を使用した SECRET 参照
次の例のマニフェストファイルは、これらの参照を定義する方法を示しています。
注釈
これらの参照は、 multi_valued プロパティをtrueに設定することはできません。
シークレットと外部アクセスオブジェクトへの参照には、セットアップスクリプトに configuration_callback 関数も必要です。詳細については、 セットアップスクリプトにconfiguration_callback関数を追加する をご参照ください。
セットアップスクリプトにconfiguration_callback関数を追加する¶
シークレットおよび外部アクセスの統合の参照を追加した後、セットアップスクリプトに configuration_callback 関数を追加する必要があります。外部アクセス統合またはシークレットを作成するには、アプリケーションがホストポート、シークレットタイプ、 OAuth の承認およびトークンエンドポイントなどの値を決定できる必要があります。configuration_callback は、コンシューマーアカウントからアプリケーションにこの情報を提供します。
Snowsight はこのコールバックプロシージャを実行して、ユーザーにオブジェクトを構成するよう求める構成ダイアログを表示します。実行するには、プロシージャをアプリロールに付与する必要があります。
注釈
configuration_callbackは、外部アクセス統合とシークレットオブジェクトに対してのみサポートされます。
コールバック関数には次の要件があります。
コールバック関数は、参照名を含む引数を受け入れる必要があります。これにより、同じコールバック関数で複数の参照を処理できるようになります。
コールバック関数は、整形式の JSON オブジェクトを返す必要があります。JSON オブジェクトには、次のプロパティが含まれています。
typeメッセージの種類を示します。有効な値:
CONFIGURATION: オブジェクトタイプに基づいて、オブジェクトの構成値を含むペイロードを返します。ERROR: Snowsight に表示される関連メッセージとともにエラーを返します。
payloadtypeプロパティの値と構成されているオブジェクトタイプに基づいて、応答の内容が含まれます。
構成コールバックのシグネチャは次のとおりです。
セットアップスクリプト内で、ストアドプロシージャを呼び出す権限を持つように、アプリの構成に使用されるアプリケーションロールに USAGE 権限を付与する必要があります。次の例は、ストアドプロシージャに USAGE 権限を付与する方法を示しています。
コールバック関数は JSON オブジェクトを返します。詳細については、 構成コールバック応答の JSON 形式 をご参照ください。
次の例は、外部アクセスとシークレット参照を処理するための一般的なコールバック関数を示しています。
この関数は次を実行します。
外部アクセス統合への参照の場合、このプロシージャは必要な構成情報を含む JSON オブジェクトを返します。詳細については、 外部アクセス統合の JSON 形式 をご参照ください。
シークレットへの参照の場合、このプロシージャはタイプ OAuth2 のシークレット構成を含む JSON オブジェクトを返します。詳細については、 シークレット参照の JSON 形式 をご参照ください。
シークレットと外部アクセスの統合にPython Permission SDK を使用する¶
Python Permission SDK は、シークレットおよび外部アクセス統合オブジェクトをサポートします。ただし、これらのオブジェクトの動作は若干異なります。
プロバイダーが permission.request_reference() を呼び出し、 object_type 値が SECRET または EXTERNAL ACCESS INTEGRATION である参照の名前を渡すと、 Snowsight は自動的に次の操作を実行します。
セットアップスクリプトの
configuration_callback関数を呼び出します。configuration_callback関数が返す値を検証します。コンシューマーに構成ダイアログを表示します。
注釈
プロバイダーが payload.allow_secrets プロパティを LIST に設定して外部アクセス統合を構成する場合、シークレットの参照を要求するために別の呼び出しを行う必要はありません。シークレット構成は、外部アクセス統合構成の一部として暗黙的に含まれます。