メインコンテンツまでスキップ

OPA からの移行

Ninka は、あなたが既に OPA 上で動かしている Rego/WASM を出力します。移行とは、手書きのポリシーを宣言的な 手形 (Tegata) に捉え直すことです。

1. ルールを手形のフィールドに対応づける

現在のコードでの表現手形での表現
保護される対象の種類resource.type
呼び出し元は誰か / そのロールsubject.roles
何をしようとしているかactions
属性を値と比較するconditions
サブジェクト対リソースの比較(所有)relationships

インラインチェックや同等の手書き Rego:

allow if {
input.action == "approve"
input.subject.roles[_] == "manager"
input.resource.amount <= 500000
}

は、1 つのルールになります。

{
"id": "allow-manager-approve-invoice-within-limit",
"effect": "allow",
"subject": { "roles": ["manager"] },
"actions": ["approve"],
"resource": { "type": "invoice" },
"conditions": [ { "key": "resource.amount", "op": "lte", "value": 500000 } ]
}

所有チェック(input.subject.id == input.resource.owner)は relationship になります。

"relationships": [
{ "label": "ownership", "subject_attribute": "user_id", "op": "eq", "resource_attribute": "submitted_by" }
]

2. コンパイルする

npx ninka compile

書く → コンパイル → 統合のループ全体は ポリシーを追加する を参照してください。

ツールチェーンと表現範囲

  • Ninka は OPA 0.65.0 をピン留めします。PATH 上の見知らぬ opa は決して使いません。エアギャップ環境や既存ツールチェーンでは、検証済みの 0.65.0 バイナリを指すよう NINKA_OPA_PATH を設定します。サポート対象は darwin-x64、darwin-arm64、linux-x64、linux-arm64、win32-x64 です。
  • v0.1 が表現できるのはロール、アクション、リソースタイプ、relationship、列挙された condition 演算子、整数のみ(浮動小数点なし)です。Ninka が表現できないロジックは custom.* キーで Policy Information Point に委譲するか、その部分を OPA に直接残してください。

関連項目