SnowflakeからAIエージェントをインポートするには、Snowflakeアカウントで構成タスクを実行する必要があります。
このタスクについて
AIエージェントのインポート用にSnowflakeを構成するには、Snowflakeアカウントでセットアップが必要です。Snowflakeでは、インポートするエージェントへのアクセス権を持つカスタムロールを作成し、接続を承認するユーザーにロールを付与し、 OAuthセキュリティ統合を作成してから、クライアント資格情報を取得します。Oktaはこれらの資格情報を使用して、SnowflakeのREST APIとSQL APIへのリクエストを認証します。
OktaはCortexエージェントをインポートします。Cortexエージェントは、Snowflakeによって管理されるエージェントであり、データベースとスキーマの範囲が指定されています。
手順
Snowflakeでカスタムロールを作成する-
SECURITYADMINロールでSnowsightにサインインします。
-
次の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ステートメントを繰り返します。このロールは、明示的に付与したデータベース、スキーマ、エージェントにのみアクセスできます。
-
次の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;
認可ユーザーにロールを付与する-
Oktaとの接続を承認するSnowflakeユーザーを選択します。
Oktaは名前で特定のロールをリクエストしません。ユーザーのセッションはデフォルトロールで開始され、インポートリクエストではカスタムロールに切り替わります。
-
以下のSQLを実行して、カスタムロールをユーザーに付与します。
USE ROLE SECURITYADMIN;
GRANT ROLE OKTA_AI_AGENT_IMPORT_ROLE TO USER <authorizing_user>;
-
任意。カスタムロールをユーザーのデフォルトロールに設定するには、次のSQLを実行します。
ALTER USER <authorizing_user> SET DEFAULT_ROLE = OKTA_AI_AGENT_IMPORT_ROLE;
SnowflakeでOAuthセキュリティ統合を作成する-
次の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はセッションをカスタムロールに制限します。
-
次のSQLを実行してクライアントIDとクライアントシークレットを取得します。
SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('OKTA_AI_AGENT_IMPORT_OAUTH');
-
クライアントIDとクライアントシークレットをコピーし、安全な場所に保存します。
-
任意。統合を確認するには、
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です。
-
インポート元のクライアントID、クライアントシークレット、データベースとスキーマのペアを記録します。
OktaでAIエージェントのインポートを構成するときは、クライアントID(Client ID)にクライアントIDを、クライアントシークレット(Client Secret)にクライアントシークレットを入力し、プラットフォーム(Platform)でCortex Agentsを選択します。インポートを制限するには、インポート範囲(Import Scopes)にDATABASE.SCHEMAペアを入力します(例:SALES_DB.PUBLIC)。API資格情報をテスト(Test API Credentials)を選択した場合は、認可ユーザーとしてサインインします。