🔐 セキュリティ & 権限
Saviのセキュリティモデルと権限管理について。
OAuth認証フロー
Saviは標準的なSalesforce OAuth 2.0認証を使用します。クレデンシャルをSlackやローカルに保存することはありません。
接続フロー
- ユーザーが
/savi connectコマンドを実行 - Salesforce認証ページにリダイレクト
- ユーザーがSalesforceで認証(OAuth同意)
- アクセストークンが発行される
- トークンはAES-256-GCMで暗号化されて保存される
- ユーザーがSaviコマンドを実行する際、暗号化されたトークンを復号化して使用
重要: トークンはSlackに送信されず、UndertheEdgeのセキュアなサーバーで管理されます。
トークン管理
暗号化
- すべてのOAuthアクセストークンはAES-256-GCMで暗号化
- 暗号化キーはサーバー環境変数で管理
- トークンはデータベースに暗号化された状態で保存
トークンリフレッシュ
Salesforceのアクセストークンの有効期限切れを自動検出し、リフレッシュトークンを使用して新しいアクセストークンを取得します。ユーザー操作は不要です。
権限モデル
Saviは標準的なSalesforce権限モデルを遵守します。実行できる操作は、接続したユーザーの権限に基づいて制限されます。
例
- メタデータ検索: ユーザーがアクセスできるメタデータのみ検索可能
- コード生成: デプロイ権限が必要(Salesforce標準の権限チェック)
- SOQL実行: ユーザーのデータアクセス権限に基づいてレコード表示
- デプロイ: Metadata API権限が必要
データ保護
Saviが保存するもの
- インストール情報(Slack ワークスペースID、チーム名)
- Org接続情報(org ID、alias、最終接続時刻)
- メタデータキャッシュ(検索・キャッシュ用に Apexクラス、トリガー、LWC定義など)
- 会話履歴(ユーザーとSaviの会話)
- 操作ログ(誰がいつどの操作を実行したか、結果のサマリーのみ)
- 暗号化されたOAuthトークン
ビジネスデータについて
Saviは、Salesforceレコード(取引先、商談など)のビジネスデータは保存しません。ただしSOQL実行結果の表示には、一時的にメモリ上で処理されます。
AI学習について(最重要)
Saviが保存・処理するすべての情報(メタデータ、会話履歴、操作ログ)は、Claude AI(Anthropic)の学習に使用されません。
- API呼び出しはStateless(状態保持なし)で処理
- メタデータやコード内容はAnthropicのサーバーに保存されない
- 会話内容が将来のモデル学習に使用されることはない
- 特定顧客の業務プロセスがAIモデルに影響を与えることはない
対応するSalesforce Edition
- Enterprise Edition
- Unlimited Edition
- Developer Edition
- Performance Edition
- Professional Edition(APIアドオンが必須)
注意: Professional Editionでは、Metadata APIアクセスのアドオンを購入・有効化する必要があります。
ネットワークセキュリティ
- すべての通信はHTTPS/TLS 1.2以上で暗号化
- Slack APIとSalesforce APIは安全な接続のみ使用
- IPホワイトリストの設定にも対応(Enterprise版)
監査ログとコンプライアンス
Saviのすべての操作(検索、コード生成、デプロイなど)は操作ログとして記録され、Audit Canvasで可視化できます。
記録される情報
- 実行者(Slackユーザー)
- 実行日時
- 操作種別(検索、デプロイなど)
- 対象org
- 操作結果(成功/失敗)
セキュリティに関するご質問やご報告: app-support@under-the-edge.com にお問い合わせください。