AIエージェントのインポート用にSnowflakeを構成する

SnowflakeからAIエージェントをインポートするには、Snowflakeアカウントで構成タスクを実行する必要があります。

このタスクについて

AIエージェントのインポート用にSnowflakeを構成するには、Snowflakeアカウントでセットアップが必要です。Snowflakeでは、インポートするエージェントへのアクセス権を持つカスタムロールを作成し、接続を承認するユーザーにロールを付与し、 OAuthセキュリティ統合を作成してから、クライアント資格情報を取得します。Oktaはこれらの資格情報を使用して、SnowflakeのREST APIとSQL APIへのリクエストを認証します。

OktaはCortexエージェントをインポートします。Cortexエージェントは、Snowflakeによって管理されるエージェントであり、データベースとスキーマの範囲が指定されています。

始める前に

  • SnowflakeにACCOUNTADMINロールがある、またはグローバルなCREATE INTEGRATION権限を持つロールがあること。
  • SnowflakeにSECURITYADMINロールがある、またはロールを作成して付与できる同等のロールがあること。
  • Oktaでアプリを管理する権限があること。
  • Snowflakeアプリをorgに統合し、一般(General)タブにSnowflakeアカウントのサブドメインを入力済みであること。「アプリ統合の追加」を参照してください。

手順

  • Snowflakeでカスタムロールを作成する
    1. SECURITYADMINロールでSnowsightにサインインします。
    2. 次のSQLを実行してカスタムロールを作成し、データベースとスキーマへのアクセス権を付与します。
      USE ROLE SECURITYADMIN;
      CREATE ROLE IF NOT EXISTS OKTA_AI_AGENT_IMPORT_ROLE;
      GRANT USAGE ON DATABASE <your_database> TO ROLE OKTA_AI_AGENT_IMPORT_ROLE;
      GRANT USAGE ON SCHEMA <your_database>.<your_schema> TO ROLE OKTA_AI_AGENT_IMPORT_ROLE;

      インポート元のすべてのデータベースとスキーマに対して、GRANT USAGEステートメントを繰り返します。このロールは、明示的に付与したデータベース、スキーマ、エージェントにのみアクセスできます。

    3. 次のSQLを実行して、スキーマ内のCortex Agentsへのロールアクセス権を付与します。
      GRANT USAGE ON ALL AGENTS IN SCHEMA <your_database>.<your_schema> TO ROLE OKTA_AI_AGENT_IMPORT_ROLE;
      GRANT USAGE ON FUTURE AGENTS IN SCHEMA <your_database>.<your_schema> TO ROLE OKTA_AI_AGENT_IMPORT_ROLE;
  • 認可ユーザーにロールを付与する
    1. Oktaとの接続を承認するSnowflakeユーザーを選択します。
      Oktaは名前で特定のロールをリクエストしません。ユーザーのセッションはデフォルトロールで開始され、インポートリクエストではカスタムロールに切り替わります。
    2. 以下のSQLを実行して、カスタムロールをユーザーに付与します。
      USE ROLE SECURITYADMIN;
      GRANT ROLE OKTA_AI_AGENT_IMPORT_ROLE TO USER <authorizing_user>;
    3. 任意。カスタムロールをユーザーのデフォルトロールに設定するには、次のSQLを実行します。
      ALTER USER <authorizing_user> SET DEFAULT_ROLE = OKTA_AI_AGENT_IMPORT_ROLE;
  • SnowflakeでOAuthセキュリティ統合を作成する
    1. 次のSQLを実行して、セキュリティ統合を作成します。<your_okta_domain>をOkta orgのドメインに置き換えます(例: example.okta.com)。
      USE ROLE ACCOUNTADMIN;
      CREATE SECURITY INTEGRATION OKTA_AI_AGENT_IMPORT_OAUTH
        TYPE = OAUTH
        ENABLED = TRUE
        OAUTH_CLIENT = CUSTOM
        OAUTH_CLIENT_TYPE = 'CONFIDENTIAL'
        OAUTH_REDIRECT_URI = 'https://<your_okta_domain>/oauth2/v1/sts/callback'
        OAUTH_ISSUE_REFRESH_TOKENS = TRUE
        OAUTH_REFRESH_TOKEN_VALIDITY = 7776000
        OAUTH_ANY_ROLE_MODE = 'ENABLE'
        ALLOWED_ROLES_LIST = ('OKTA_AI_AGENT_IMPORT_ROLE');

      Oktaがsession:role-anyスコープをリクエストするため、OAUTH_ANY_ROLE_MODE = 'ENABLE'が必要です。ALLOWED_ROLES_LISTはセッションをカスタムロールに制限します。

    2. 次のSQLを実行してクライアントIDとクライアントシークレットを取得します。
      SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('OKTA_AI_AGENT_IMPORT_OAUTH');
    3. クライアントIDとクライアントシークレットをコピーし、安全な場所に保存します。
    4. 任意。統合を確認するには、DESC SECURITY INTEGRATION OKTA_AI_AGENT_IMPORT_OAUTH;を実行します。
      出力では、OAUTH_ALLOWED_AUTHORIZATION_ENDPOINTSはhttps://<your_account>.snowflakecomputing.com/oauth/authorizeで、OAUTH_ALLOWED_TOKEN_ENDPOINTSはhttps://<your_account>.snowflakecomputing.com/oauth/token-requestです。
    5. インポート元のクライアントID、クライアントシークレット、データベースとスキーマのペアを記録します。
      OktaでAIエージェントのインポートを構成するときは、クライアントID(Client ID)にクライアントIDを、クライアントシークレット(Client Secret)にクライアントシークレットを入力し、プラットフォーム(Platform)でCortex Agentsを選択します。インポートを制限するには、インポート範囲(Import Scopes)にDATABASE.SCHEMAペアを入力します(例:SALES_DB.PUBLIC)。API資格情報をテスト(Test API Credentials)を選択した場合は、認可ユーザーとしてサインインします。