AIに正しく仕事をさせるために、
破れないポリシーを作りました。

4つのレイヤーで、すべてのデータ入力を制御。
自社システムからアプリ開発まで、必要なガバナンスをすべて提供します。

ガバナンスレイヤー

強制実行からデータベースまで、4つのレイヤーですべてのデータ入力を制御。

データフロー

すべての書き込みは、データベースに到達する前にガバナンスレイヤーを通過します。

無効な仕訳を17件ブロック
重複請求書を5件防止
Policy as Code

Sankaなら、ポリシー作成は数分。

対象オブジェクト、条件、承認者をUIで選ぶだけ。/v1/executeに適用できるポリシーをその場で生成します。

Policy Builder 下書き
対象オブジェクト
Invoice
トリガー
before_write (/v1/execute)
適用範囲
請求更新(update)
必須承認
役員(Director)
1

amount > 1000

条件 金額しきい値
2

currency is required

条件 必須フィールド
3

書き込み拒否 + 理由コード amount_exceeds_limit

アクション 決定論
policy_definition.json
{
  "policy_key": "invoice_update_guard",
  "object_type": "invoice",
  "action": "update",
  "rules": [
    {
      "rule_key": "invoice_amount_limit",
      "status": "active",
      "priority": 10,
      "rule_definition": {
        "type": "max_value",
        "field": "amount",
        "max": 1000
      },
      "reason_code": "amount_exceeds_limit",
      "reason_message": "Amount exceeds policy limit."
    },
    {
      "rule_key": "invoice_required_currency",
      "status": "active",
      "priority": 20,
      "rule_definition": {
        "type": "required_fields",
        "fields": ["currency"]
      },
      "reason_code": "missing_required_fields",
      "reason_message": "Required fields are missing."
    }
  ]
}

実際のポリシーはJSONで保存され(GovernanceRule.rule_definition / GovernancePolicyVersion.rule_snapshot)、/v1/execute で同じ判定ロジックが使われます。

Zero Trust

実行前に、拒否理由まで分かる

ソフトガードレールは文脈を理解し、ハードガードレールはデータベースレベルで不正な書き込みを拒否します。

invoice_approval.py
import json
import requests
JWT = "YOUR_ACCESS_TOKEN"
H = {"Authorization": f"Bearer {JWT}", "Content-Type": "application/json"}
P = {"workspace_id":"12345678","object_type":"invoice","operation":"update","target_id":"0001","payload":{"vendor":"Apple","currency":"USD","line_items":[{"item_name":"MacBook Pro 14-inch","quantity":1,"unit_price":2000}],"notes":"macbook-purchase-request"},"dry_run":True}
run = requests.post("https://api.sanka.com/v1/execute", json=P, headers=H, timeout=15).json()
result = {"decision": run["data"]["decision"], "reasons": run["data"]["reasons"]}
print("decision:", result["decision"])
print("reasons:", result["reasons"])
with open("invoice_approve_dryrun.json", "w", encoding="utf-8") as f:
    json.dump(result, f, ensure_ascii=False, indent=2)
print("saved:", "invoice_approve_dryrun.json")
// invoice_approval.mjs
import { writeFileSync } from "node:fs";
const JWT = process.env.SANKA_JWT;
const H = { Authorization: `Bearer ${JWT}`, "Content-Type": "application/json" };
const P = { workspace_id: "12345678", object_type: "invoice", operation: "update", target_id: "0001", payload: { vendor: "Apple", currency: "USD", line_items: [{ item_name: "MacBook Pro 14-inch", quantity: 1, unit_price: 2000 }], notes: "macbook-purchase-request" }, dry_run: true };
const runRes = await fetch("https://api.sanka.com/v1/execute", { method: "POST", headers: H, body: JSON.stringify(P) });
const run = await runRes.json();
const result = { decision: run.data.decision, reasons: run.data.reasons ?? [] };
writeFileSync("invoice_approve_dryrun.json", JSON.stringify(result, null, 2));
console.log("saved:", "invoice_approve_dryrun.json");
# governance_demo.sh
JWT="YOUR_ACCESS_TOKEN"
curl -sS -X POST "https://api.sanka.com/v1/execute" \
  -H "Authorization: Bearer ${JWT}" \
  -H "Content-Type: application/json" \
  -d '{"workspace_id":"12345678","object_type":"invoice","operation":"update","target_id":"0001","payload":{"vendor":"Apple","currency":"USD","line_items":[{"item_name":"MacBook Pro 14-inch","quantity":1,"unit_price":2000}],"notes":"macbook-purchase-request"},"dry_run":true}' \
  | jq '{decision:.data.decision,reasons:(.data.reasons // [])}' > invoice_approve_dryrun.json
cat invoice_approve_dryrun.json
invoice_approve_dryrun.json
decision denied
reason_count 1

reasons

  • code: approval_required_over_limit
  • message: MacBook Pro 14-inch(USD 2,000)は役員承認が必要です
  • field_path: payload.line_items[0].unit_price

UIにはこの結果がそのまま返るので、ユーザーは修正ポイントを即時に理解できます。

監査証跡

監査のタイムトラベル。標準搭載。

1年後には「なぜこの計算を行ったか」を思い出せないことがあります。 Sankaでは、任意の時点のロジック・権限・文脈を再現できます。

V

バージョン管理ロジック

コンテキストを完全保持したAppLog

v3.2.1 Current 2026-02-12
permissions tax_rates allocation_logic approval_chain
v3.1.0 Jan snapshot 2026-01-15
v2.9.4 Q3 audit 2025-11-03
  • バージョン管理ロジック自体を固定します。その時点の権限、税率、配賦ロジック、承認ログを同時に保存します。
  • 信頼できるタイムスタンプ。 Sankaは「このデータは[日付]時点で封印された」ことを署名し、証拠価値を高めます。
I

不変スナップショット

WORM - Write Once, Read Many

WORM PROTECTED
WRITE 0xa3f8...c21d 2026-01-15T09:00:00Z SEALED
READ 0xa3f8...c21d 2026-02-12T14:32:11Z VERIFIED
DELETE - 2026-02-12T14:33:00Z REJECTED
Sanka(サードパーティ)で署名済み - 保持期間: 7年 - 改ざん防止
  • 改変なし・削除なし。WORM技術により保持期間中の変更を防止します。LLM生成コードもこの記録を迂回できません。
  • サードパーティによる封印。モデルが進化しても、データの意思決定理由(WHY)を失いません。
データシンク

粒度の高いアクセス。ゼロトラスト。

社内チーム、外部パートナー、監査担当者向けの専用ユーザー管理。 あらゆる場所からデータを取り込み、サーバーレスでジョブを実行します。

R

RBAC

ロールベースアクセス制御

ユーザー管理
CFO
read write approve export
全台帳
監査人
read
スナップショット v3.2.1 のみ
AIエージェント
read suggest
ポリシー制御付き書き込み
パートナー
read
割り当てられたプロジェクト
  • 監査人向けReadOnlyポータル。 特定のスナップショットにスコープされた、有効期限付きAPIキーを発行できます。
  • 有効期限付きAPIキー。 外部アクセスを自動的に失効させ、ポリシー制御を維持します。
S

統合とサーバーレス

データを取り込み、ジョブを実行

Snowflake
Databricks
AWS S3
GCP BigQuery
サーバーレスタスク
monthly_reconciliation 0 3 1 * * 4m 32s
tax_calc_batch 0 2 * * 1 12m 08s
audit_snapshot_export on_demand 1m 15s
  • データは持ち込めます。 Snowflake、Databricks、クラウドストレージから取り込んで、Sankaがポリシーと監査レイヤーを適用します。
  • 長時間ジョブとバッチ処理。 請求、税計算、エクスポート処理をサーバーレスで、監査履歴付きで実行できます。

最後のバックエンドとして使える設計です。

プロジェクトごとに認証、監査、アクセス制御を作り直す必要はありません。 Sankaは導入後すぐにエンタープライズグレードの基盤を使えるようにします。

npx create-sanka-app my-project