前提条件
- ロール、サービスユーザー、トークンを作成するための
ACCOUNTADMIN(または同等の権限)。 - そのユーザーに割り当てるネットワークポリシー。ネットワークポリシーが存在するまで、Snowflake はトークン認証を拒否します。
- ロールが使用できるウェアハウス。メタデータクエリはコンピュートを必要としないため、ウェアハウスがなくても接続テストは成功し、実際の分析だけが失敗することがあります。
セットアップ
1
読み取り専用ロールを作成する
ACCOUNTADMIN で実行します。USAGE_VIEWER はメータリングとストレージ、OBJECT_VIEWER はオブジェクトインベントリを対象とし、GOVERNANCE_VIEWER が QUERY_HISTORY を読み取り可能にします:2
サービスユーザーを作成する
SERVICE タイプのユーザーはパスワード、MFA、SSO を持たないため、トークンだけで認証します:3
ネットワークポリシーを割り当てる
テストアカウント以外では、この手順の省略が最も多いセットアップ失敗であり、返るエラー(
ALLOWED_IP_LIST を自社の送信 IP レンジに絞り込んでください:390403)はポリシーについて何も述べません。4
プログラマティックアクセストークンを発行する
DAYS_TO_EXPIRY は厳格な有効期限で、その日から接続は 390318 で失敗し始めるため、新しいトークンを発行します。5
CloudThinker で接続を追加する
Connections → Snowflake を開き、次を入力します:
- Account identifier:
MYORG-MYACCOUNT。Snowsight → Account details で確認できます。完全な URL ではありません。 - Programmatic access token: 前の手順で発行したトークン。アカウントのパスワードではありません。
- Role: 任意。空欄にするとユーザーのデフォルトロールを使用します。
- Warehouse: 任意。空欄にするとユーザーのデフォルトウェアハウスを使用します。
接続の詳細
必要な権限
読み取り専用(デフォルト)
GOVERNANCE_VIEWER は見落としやすい権限です。これがないと、コストとストレージの回答は動作し続ける一方で、低速クエリとエラーの回答はすべて QUERY_HISTORY で失敗します。
書き込みアクセス(有効にする場合のみ)
OPERATE はエージェントが操作してよいウェアハウスにのみ付与し、共有の本番ウェアハウスには決して付与しないでください。リソースモニターを設定した専用のエージェント用ウェアハウスなら、そのコンピュートにプロンプトでは引き上げられない上限を設けられます。
エージェントの機能
接続後、Tony は次のことができます:接続を確認する
プロンプト例
書き込みアクセス
接続は読み取り専用で出荷され、アクセス権は資格情報に従うため、書き込みは接続ごとの判断になります。1 つのワークスペースが読み取り専用トークンと書き込み可能トークンを同時に保持できます。
有効化は Connections → Snowflake → Tool permissions から行います。事前に検討すべき点が 2 つあります:
- ここでの書き込みは正確に 2 つの操作であり、任意の SQL ではありません。 リソースモニターの引き上げ、
DATA_RETENTION_TIME_IN_DAYSの引き下げ、ウェアハウスのサイズ変更は、Snowsight で実行するステートメントとしてユーザーに報告されます。 - グラントの方が強い制御です。 ツール権限は CloudThinker が書き込みを要求するかどうかを決めます。Snowflake が書き込みを許可するかどうかは、トークンの
ROLE_RESTRICTIONとロールのグラントが決めます。
トラブルシューティング
認証が即座に失敗する(390403)
認証が即座に失敗する(390403)
ユーザーにネットワークポリシーがありません。割り当てられるまで Snowflake はトークン認証を拒否します:
ALTER USER SVC_CLOUDTHINKER SET NETWORK_POLICY = CT_POLICY;昨日は動いていたのに失敗する(390318)
昨日は動いていたのに失敗する(390318)
トークンが期限切れまたは取り消されています。
DAYS_TO_EXPIRY は厳格な有効期限です。新しいトークンを発行し、接続を更新してください。Connected なのにすべてのクエリが失敗する(090073)
Connected なのにすべてのクエリが失敗する(090073)
リソースモニターがクォータを超過しているか、ウェアハウスが一時停止していて再開できません。これは権限ではなくアカウントのキャパシティの問題であり、
GRANT では解決しません。アカウント管理者がリソースモニターを引き上げるかリセットします。資格情報は有効であり、テストプローブはコンピュートを必要としないため、接続は Connected のままです。No active warehouse selected(000606)
No active warehouse selected(000606)
サービスユーザーに
DEFAULT_WAREHOUSE がなく、設定もされていません。接続の Warehouse を設定するか、ユーザーにデフォルトを付与してください。セクションが空で返る
セクションが空で返る
エラーではありません。
ACCOUNT_USAGE には数時間の遅延があり、履歴は 1 年分保持されるため、利用の少ないアカウントで狭い期間を指定すると行が返りません。セキュリティ
- 最小権限 — エージェントがユースケースに必要な権限のみを付与します。まず読み取り専用から始め、後から拡張してください。
- デフォルトで読み取り専用 — エージェントにこの接続で変更を行わせる場合を除き、読み取り専用の認証情報を使用してください。
- 認証情報のローテーション — 通常のスケジュールに従ってキーとトークンをローテーションしてください。接続を更新すると、CloudThinker が新しい値を自動的に取得します。
- オフボーディング時に失効 — 接続を削除するか、チームメンバーが退職する際には、プロバイダー側で認証情報を無効化してください。
- 専用のサービスユーザー —
TYPE = SERVICEのユーザーはパスワード、MFA、SSO を持たないため、トークンが唯一の経路となり、監査証跡が読み取りやすく保たれます。 - トークンを制限し期限を設ける —
ROLE_RESTRICTIONが接続の到達範囲すべてを限定し、DAYS_TO_EXPIRYが忘れがちなローテーションを強制します。
関連
Tony エージェント
データベースに特化した最適化エージェント
ClickHouse 接続
ClickHouse クラスタ向けの同様のセットアップ