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

CLI

ninka コマンドラインインターフェースの完全なリファレンスです。各コマンドについて、構文・引数・ 挙動・出力・終了コードを記載します。

概要

  • パッケージ: ninka-authznpm install ninka-authz。CLI とランタイムを同梱します。
  • バイナリ: ninka — 通常は npx ninka <command> として実行します。
  • Node.js: 20 以降。
usage: ninka <command>

init [--bare] Set up authz/ and the agent rules (AGENTS.md); --bare omits the sample policy
compile [files...] Sekisho + Rego + manifest + types + WASM (pinned opa, fetched once)
build compile, but fail when the pinned opa toolchain is unavailable (CI use)
verify Recompile and require byte-identity with authz/out/ (CI gate)
explain <policy> Human-readable summary of a policy

--help--version フラグはありません。

終了コード

状況出力終了コード
成功コマンドの出力0
未知または未指定のコマンドUSAGE を stderr に出力2
例外がスローされた場合error: <message>1

ninka init [--bare]

Ninka 向けにプロジェクトをスキャフォールドします。冪等で、既存ファイルはスキップされ、上書きされません。

フラグ説明
--bareサンプルポリシー(authz/invoice-access.tegata.json)を省略します。

何をするか

以下を作成します。既存のものはスキップします。

パス内容
authz/tegata-0.1.schema.jsonTegata の JSON Schema。
authz/invoice-access.tegata.jsonサンプルポリシー。--bare で省略。
authz/vocabulary.json語彙の初期値: {"roles":["employee"],"actions":["view"],"resource_types":["invoice"],"attributes":{}}
lib/authz.ts型付きの check() 境界。
AGENTS.mdAI コーディングアシスタントと協働するためのエージェントルール。

AGENTS.md については、ファイルが存在し ## Ninka Authorization Rules 見出しがない場合はルールを 追記します。見出しが既にある場合はそのままにします。他のエージェントファイルは編集しません。

スキャフォールド後、authz/*.tegata.json が存在すれば、init はただちに compile を実行し、 authz/out/ が生成された状態にします。


ninka compile [files...]

Tegata ポリシーを Rego・型・(OPA ツールチェーンが利用可能なら)WASM へコンパイルします。

引数説明
[files...]コンパイルする特定の Tegata ファイル。省略時は authz/*.tegata.json をすべてコンパイルします。

何をするか

意味検査器(関所 (Sekisho))をファイル単位で実行し、続いてセット全体で実行し、成果物を authz/out/ へ出力します。意味上の問題が見つかった場合は、1 行の指示的なエラーで拒否します。

何を書き出すか

authz/out/ へ書き出します。

ファイル常に出力
<id>.regoはい
<id>.manifest.jsonはい
input-contract.jsonはい
types.gen.tsはい
<id>.wasmOPA ツールチェーンが利用可能な場合のみ
<id>.build.jsonOPA ツールチェーンが利用可能な場合のみ
<id>.validation.jsonOPA ツールチェーンが利用可能な場合のみ

OPA ツールチェーンがないマシンでは、WASM は note: とともにスキップされます(関所・Rego・型は 成功します)。各ファイルの内容は 生成ファイル を参照してください。

終了コード

関所による拒否、または検証の不一致がある場合は 1、それ以外は 0


ninka build

compile と同じですが、ピン留めされた OPA ツールチェーンを解決できない場合に ハードフェイル します。WASM 成果物を必ず生成する必要のある CI で使用します。

終了コード

OPA ツールチェーンが利用不可の場合、関所による拒否、または検証の不一致がある場合は 1、 それ以外は 0


ninka verify

CI ゲートです。メモリ上で再コンパイルし、コミット済みの authz/out/ との バイト同一性 を要求します。

何をするか

  • 再コンパイルし、Rego・types.gen.ts・検証テーブルをコミット済みファイルとバイト単位で比較します。
  • WASM のハッシュを再チェックします。
  • すべての検証ベクトルをコミット済みの WASM に対して再実行します。

終了コード

いずれかが不一致の場合は 1、それ以外は 0


ninka explain <policy>

ポリシーの人間可読なサマリーを表示します。ファイルは書き出しません。

引数説明
<policy>ポリシー id または Tegata ファイルのパス。

何をするか

各ルールを [effect] id: roles → actions on resource — description として表示し、解釈レポートが あれば併せて表示します。


OPA ツールチェーン

Ninka は OPA 上で動作する WASM を出力します。同じ Tegata が常にバイト同一の WASM を生成するよう、 OPA バージョンはピン留めされています。

  • ピン留めされた OPA バージョン: 0.65.0。WASM のバイト列は OPA バージョンに依存するため、 これを更新することは明示的な新しい ninka-authz リリースになります。
  • Ninka は PATH 上の opa を決して使いません。システムや Homebrew の opa がビルドに紛れ込む ことはありません。

解決順

  1. NINKA_OPA_PATH — OPA バイナリへのパス。エアギャップ環境やプロキシ環境の逃げ道です。
  2. キャッシュ: ~/.cache/ninka/opa-v0.65.0-<platform>-<arch>
  3. openpolicyagent.org からの一度きりのダウンロード(SHA-256 検証済み)。

環境変数

変数効果
NINKA_OPA_PATHこの OPA バイナリを直接使用し、キャッシュとダウンロードをスキップします。
NINKA_CACHE_DIRキャッシュディレクトリを上書きします。

サポートプラットフォーム

darwin-x64darwin-arm64linux-x64linux-arm64win32-x64。これら以外のプラットフォーム では NINKA_OPA_PATH を設定してください。


関連ページ