セキュリティモデルと制約¶
Cognoxiumは、明示されたパッキング境界で決定論的なデータフロー規則を適用します。モデル入力を構築する前に、出所、機密区分、保持要件、有効期限、ポリシー判断をアプリケーションが構造化して表現できる場所を提供します。
コアが強制すること¶
有効期限切れまたは隔離済みの項目は、パックへ入りません。
外部向けパックには出所情報が必要です。
restricted(制限付き)および秘密情報らしいコンテンツは、外部向けパックへ入りません。必須項目でポリシー違反が発生した場合は、呼び出し側の契約を黙って弱めず例外を送出します。
予算へ収めるために、必須コンテンツを自動で除外または降格することはありません。
未対応のBinaryコンテンツを、黙ってテキストへ変換することはありません。
選択と除外に成功したすべての判断は、マニフェストへ記録されます。
コアライブラリには、ネットワーククライアント、モデル呼び出し、APIキー処理、アカウント要件、テレメトリがありません。
任意項目と必須項目の正確な動作の違いは、信頼境界とポリシーを参照してください。
Cognoxiumが保証しないこと¶
Cognoxiumは、次のことを行いません。
コンテンツが真実であることを証明する。
sourcesURIがあるという理由だけで、その出所を認証する。untrusted(未信頼)を自動的に拒否する。ユーザー、ツール呼び出し、購入、ファイル変更、その他の副作用を伴う操作を認可する。
ホストアプリケーションに代わって、テナントや認証情報を分離する。
秘密情報を確実に検出する。
プロファイルが概算の場合に、コンテキストパックがプロバイダーの上限内へ確実に収まることを保証する。
v0.1系列でプロンプトインジェクションを検出または防止する。
ホストアプリケーションは、ユーザーと出所を認証し、モデル外で結果を伴うすべての操作を認可し、ツール引数を検証し、認証情報を分離し、最小権限を適用したうえで、各境界に適したポリシーを選択する必要があります。
秘密情報パターンの対象範囲¶
v0.1系列の外部境界チェックは、少数のパターンだけを認識します。長いsk-形式のトークン、AWSアクセスキーID、秘密鍵ヘッダー、api_key=...、client_secret=...、password=...などの一般的な代入形式です。
これは多層防御のための補助情報であり、DLPシステムではありません。エンコードされた秘密、分割された秘密、新しい形式、短い値、文脈に依存する秘密を見逃す場合があります。通常の文章が誤って一致することもあります。機密データを扱うアプリケーションでは、Cognoxiumでパッキングする前に、専用の秘密情報スキャナーまたはカスタムPolicyを使用してください。
信頼区分の設定¶
trust="trusted"は、出所を認証し、その信頼表明を行う権限がアプリケーションにあることを確認した後にのみ設定してください。sources=["https://example.com"]は出所を記録しますが、URLの認証や内容の取得は行いません。
安定しておりテナントを識別できる項目IDと出所URIを使用してください。ペイロードをスキャンする機能があるという理由で、出所URIやメタデータへ認証情報を入れてはいけません。
構造化診断¶
プログラムの分岐には、翻訳済み文字列ではなく、安定したコードとフィールドを使用してください。
with cx.locale("ja"):
try:
frame.pack(...)
except cx.PolicyViolation as error:
print(error.code)
print(error.reason_code)
print(error.render("ja"))
print(error.render("en"))
未対応のロケールや、破損または欠落したカタログでは英語へフォールバックします。ローカライズ自体が障害経路になってはいけません。
監査情報の保存¶
マニフェストには、項目識別子、ハッシュ、出所URI、除外理由、メタデータの競合値が含まれる場合があります。組織の保持規則とプライバシー規則で許可される場合に限り保存し、対象リクエストと同じアクセス制御で保護してください。
セキュリティ上の脆弱性は公開issueではなく、リポジトリのSECURITY.mdに記載された非公開の手順で報告してください。