信頼境界とポリシー¶
Boundaryは、パッキング時に行う情報フロー上の判断に名前を付けます。項目のラベルは変更せず、データの送信も行いません。
internal = cx.Boundary.internal("application")
external = cx.Boundary.external("openai")
コアポリシーの判定表¶
optional(任意)およびpreferred(優先)の項目が違反した場合は、マニフェストに除外として記録されます。required(必須)の項目で同じ違反が発生した場合は、項目を黙って除外すると保持契約に反するため、PolicyViolationが送出されます。
項目の状態 |
内部境界 |
外部境界 |
|---|---|---|
有効期限切れ |
除外/ |
除外/ |
|
除外/ |
除外/ |
|
許可 |
除外/ |
|
許可 |
除外/ |
組み込みの秘密情報パターンに一致 |
許可 |
除外/ |
出所情報がある |
許可 |
許可 |
機密区分が |
許可 |
コアポリシーでは許可 |
Binary |
v0.1系列ではパッキング不可 |
v0.1系列ではパッキング不可 |
この表が示すのは、組み込みのコアポリシーだけです。機密データ、テナント分離、出所の許可リスト、未信頼コンテンツについては、より厳格なカスタムポリシーが必要になることが一般的です。
Untrustedはラベルであり、拒否を意味しない¶
外部レコードの既定値はuntrusted(未信頼)です。出所情報を持つ未信頼コンテンツは、アプリケーションのポリシーによって拒否または隔離されるまでは選択対象のままです。
import cognoxium as cx
frame = cx.CognitionFrame.from_records([
{"id": "web", "payload": "Public web result", "sources": ["https://example.com"],
"created_at": "2026-01-01T00:00:00Z"}
])
allowed = frame.pack(budget=100, boundary=cx.Boundary.external("provider"))
blocked = frame.quarantine(lambda row: row["trust"] == cx.Trust.UNTRUSTED).pack(
budget=100,
boundary=cx.Boundary.external("provider"),
)
print([item.id for item in allowed.items])
print([(item["id"], item["reason"]) for item in blocked.manifest.excluded])
['web']
[('web', 'quarantined')]
必須項目の違反¶
try:
frame.pack(
budget=100,
boundary=cx.Boundary.external("provider"),
)
except cx.PolicyViolation as error:
print(error.code) # CX_POLICY_001
print(error.item_id)
print(error.rule_id)
print(error.boundary)
print(error.reason_code)
アプリケーション側で別途承認を判断せずに、同じ項目をより弱い境界で再試行しないでください。
カスタムポリシー¶
1つ以上のPolicyオブジェクトをpack(policies=[...])へ渡します。ポリシーは項目を許可する場合はNone、拒否する場合は安定した理由コードを返します。完全な実装例はプラグインの作成を参照してください。