コントロールプレーンは1つの Go バイナリ olivares であり、serve サブコマンドの少数のフラグといくつかの環境変数で設定されます — 膨大な設定ファイルではありません。デフォルトはフェイルクローズドに選択されています: ループバックバインド、TLS オン、クレデンシャルなし。以下はすべてバイナリ自身のコマンド定義とコンポジションルートから取得されています。ソースで確認できない設定はここには記載されていません。
実際のソースを接続し鍵を管理するシークレットは、環境変数で参照されるオペレーター保持のファイルまたはマウントされたシークレットに留まります — ストアには保存されません。実行可能なエンドツーエンドのパスについてはセルフホストガイド、完全なフラグ一覧についてはCLI リファレンスを参照してください。
serve サブコマンド
olivares serve は REST/Web HTTP サーバーと gRPC サーバーを1つのプロセスで実行し、Web コンソールは API と同じオリジンから提供されます。以下が一般的な設定入力です。
| フラグ | デフォルト | 目的 |
|---|---|---|
--listen | 127.0.0.1:8443 | HTTP リッスンアドレス(REST API + 組み込み Web コンソール)。 |
--grpc-listen | 127.0.0.1:8444 | gRPC リッスンアドレス(コントロールプレーン / コレクターインジェスト)。 |
--data-dir | $OLIVARES_DATA_DIR または ./olivares-data | 監査署名鍵、TLS マテリアル、SQLite の場合はストアファイル。 |
--engine | sqlite | ストアエンジン: sqlite または postgres。 |
--dsn | 空(データディレクトリ内の SQLite ファイル) | ストア接続文字列。 |
--checkpoint-interval | 1h | すべてのテナントチェーン上に署名付き監査チェックポイントを書き込む頻度。0 で無効。 |
--insecure | オフ | プレーンテキスト HTTP/gRPC で提供。localhost 開発専用。 |
--seed-demo | オフ | 合成サンプルエステートをロード。非ループバックバインドでは起動を拒否。 |
TLS はデフォルトオンです。--tls-cert/--tls-key が提供されない場合、エンジンはリスナーが接続を受け入れる前に、データディレクトリに自己署名証明書を一度、事前に確保します — HTTP と gRPC サーバーが同じ証明書を使用し、どちらもプレーンテキストにフォールバックしません。証明書を生成する際に SHA-256 フィンガープリントをログに記録するため、クライアントはそれを信頼またはピンできます。
--insecure がプレーンテキストを提供する唯一の方法であり、gRPC パスはフェイルクローズドです: --insecure 外ではサーバーは暗黙的にダウングレードするのではなくプレーンテキストリスナーの構築を拒否します。ローカル開発時に 127.0.0.1 に対してのみ使用してください。
--seed-demo は公開のソースツリーパスワードと捏造されたエステートデータを持つデモ管理者をプロビジョニングします — デモと E2E 専用です。いずれかのリスナーが非ループバックの場合、エンジンは起動を拒否します。使い捨てのデータディレクトリを使用してください。
分散および相互 TLS トポロジー向けの第二ティアのフラグ — --admin-dsn と --allow-privileged-db-role(Postgres)、--grpc-client-ca(コレクター相互 TLS)、--region/--known-regions(データレジデンシー) — は以下と CLI リファレンスでカバーされています。
環境変数
エンジンは起動時に少数の環境変数を読み取ります。以下はコンポジションルートと接続で確認されたものです。
データディレクトリとソース
| 変数 | 効果 |
|---|---|
OLIVARES_DATA_DIR | --data-dir が指定されない場合のデフォルトデータディレクトリ(./olivares-data にフォールバック)。監査署名鍵、TLS マテリアル、SQLite ストアファイルを保持。再起動間で永続化してください。 |
OLIVARES_SOURCES_CONFIG | エンジン起動前に実際の観測ソース、IDロスタープロバイダー、ナレッジドキュメントソースを接続する JSON ファイルへのパス。 |
OLIVARES_SOURCES_CONFIG は、非デモのシグナルソースとロスタープロバイダーが解決される単一の入力です。オペレーターのシークレットを含む設定であり、意図的にストアから除外されています。エンジンは起動時にこれを読み取り、ランタイム開始前にすべてのソースを登録します。
処理はフェイルファストではなく正直です。変数の欠落、読み取り不能または無効な JSON ファイル、設定されたが空のソースリストはすべて警告を出し空の設定を生成します — エンジンは起動を中止しません。未設定のソースはクラッシュや動作しているふりではなく警告を表面化します: 何も接続されていなければ、アクセスマップは単に空のままです。それを実装するには、少なくとも1つのソースを設定してください — ソースの接続と、協調的な Claude Code パスについては Claude Code の接続を参照してください。
認可決定ポイント
ネイティブの属性ベースとロールベースのアクセス制御が常にガバナンスします。外部のポリシー決定ポイント(PDP)は、選択された場合、組み込み RBAC が既に行った決定を狭めることのみが可能な追加の制限専用レイヤーです — 拡大することはありません。
| 変数 | 効果 |
|---|---|
OLIVARES_PDP_ENGINE | 外部 PDP を選択: cedar、opa、または none(空/none = ネイティブ ABAC のみ)。 |
OLIVARES_PDP_CEDAR_FILE | Cedar エンジン: オペレーターのポリシーファイルへのパス。 |
OLIVARES_PDP_OPA_URL / _OPA_PATH / _OPA_TOKEN | OPA エンジン: Open Policy Agent エンドポイントのベース URL、決定パス、ベアラートークン。 |
2つのアダプターが1つのシームの背後にあります — 組み込み Cedar エバリュエーター(純粋 Go パス)と OPA-over-HTTP アダプター。OLIVARES_PDP_ENGINE がエンジンを選択するが設定が無効な場合(読み取り不能な Cedar ファイル、不正な OPA ターゲット)、エンジンは外部 PDP のみを無効化し、ネイティブ ABAC エンジンと RBAC の施行を維持し、大きくログに記録します。壊れたポリシーファイルがリクエストをガバナンスなしにすることも、プレーンをクラッシュさせることもありません。deny-by-default モデルについてはガバナンスを参照してください。
監査署名鍵
監査台帳は追記専用、ハッシュチェーン化され、Ed25519 署名付きチェックポイントで固定されています。イベントごとの署名鍵は起動時に解決され、すべてのカストディされたソースに対してフェイルクローズドです。
| 変数 | 効果 |
|---|---|
OLIVARES_AUDIT_SIGNING_KEY | お客様がプロビジョニングした署名鍵、base64、インライン。 |
OLIVARES_AUDIT_SIGNING_KEY_FILE | 鍵を保持するマウントされたシークレットへのパス(推奨 — 値がプロセス環境に入りません)。 |
OLIVARES_KEY_CUSTODY | 宣言されたカストディ姿勢(byok または cmek)。実際の鍵カストディが宣言と一致しない起動は拒否されます。 |
これらが設定されていない場合、鍵はデータディレクトリに初回起動時に生成されます — 正直なシングルノード / 開発用フォールバックです。レプリカ間で1つの鍵を共有すること(env 値またはマウントされたシークレット経由)は、高可用性に必須です: そうしないと各ノードが独自の鍵を生成し、フェイルオーバー時に台帳がフォークします。イベントごとの署名は常にオンボックスのままです。KMS ラップ(お客様管理鍵)カストディは OLIVARES_KEY_WRAP を通じて設定される追加の姿勢です。CLI リファレンスを参照してください。
ストア選択
エンジンは --engine からストアを選択します。
| エンジン | 使用場面 | 注記 |
|---|---|---|
sqlite(デフォルト) | 単一バイナリ、シングルノード、エアギャップインストール。 | 純粋 Go 組み込みストア、外部依存ゼロ。--dsn なしの場合、ストアファイルはデータディレクトリに配置。 |
postgres | マルチテナントおよびスケールアウトデプロイメント。 | 行レベルセキュリティによるテナント分離を追加。最小権限のアプリケーションロールが必要。 |
SQLite がデフォルトであり、外部サービスは不要です — シングルノードトポロジー向けのエアギャップ対応、ゼロ依存ストアであり、ワンコマンド Docker Compose デプロイメントが実行するものです。マルチテナント分離または水平スケールが必要になるまで Postgres に移行しないでください。
postgres を選択すると、テナントを分離する行レベルセキュリティバックストップにオプトインします。エンジンは Postgres のスーパーユーザーまたは BYPASSRLS ロールに対して起動を拒否します — そのバックストップを無効にするため — --allow-privileged-db-role が明示的にガードをオーバーライドしない限り(シングルテナント / 使い捨てのみ)。完全なクロステナント System 読み取り(組織リスト、マルチテナントチェックポイントカバレッジ)には --admin-dsn 経由で専用の NOSUPERUSER BYPASSRLS admin ロールを提供してください。なしの場合、それらの読み取りは RLS 制限されて空を返す場合があります。OLIVARES_DB_MAX_CONNS がノードあたりのアプリケーションプールを制限します。
テナンシーとレジデンシー
単一インスタンスは Postgres 上で構造的にマルチテナントであり、行レベルセキュリティが各テナントのデータを分離します。データレジデンシーは --region の上にレイヤーされます。
- シングルリージョン(デフォルト、
--regionなし): レジデンシー施行なし。 - リージョンスコープ(
--region eu、--region usなど): インスタンスはそのホームリージョンに固定されたテナントのみを提供し、クロスリージョンアクセスをフェイルクローズドで拒否します。--known-regionsはデプロイメント全体で有効なリージョンコードを列挙します。テナントのピンはそれらの1つでなければならず、不正なリージョン設定はストアが開く前に起動を失敗させます。
監査チェックポイント
--checkpoint-interval は、すべてのテナントチェーン上に署名付きチェックポイントを書き込む頻度を制御します(デフォルト 1h。0 で無効)。クリーンシャットダウン時にストアが閉じる前に最終チェックポイントが書き込まれるため、間隔だけでなくシャットダウン時にもチェーンが固定されます。署名付きチェーンの下流での検証方法についてはリリースの検証を参照してください。
セキュアなデフォルト
以下の姿勢は serve 以外の設定なしで有効です。これは製品のデフォルトの姿勢であり、オプションのハードニングではありません。
| 領域 | デフォルト | 意味 |
|---|---|---|
| クレデンシャル | 出荷なし | デフォルトのユーザー名やパスワードなし。ユーザーなしの初回起動時、エンジンはシングルユースのセットアップトークンを生成し標準出力のみに出力 — ログには出力されません。 |
| トランスポート | TLS オン | HTTP と gRPC は TLS 経由で提供。提供されない場合、自己署名証明書がデータディレクトリに生成され、フィンガープリントがログに記録されます。 |
| バインドアドレス | ループバック | --listen と --grpc-listen は 127.0.0.1 がデフォルト。オフホストの到達可能性は意図的なオペレーターの決定です。 |
| プレーンテキストモード | オフ | --insecure がプレーンテキストを提供する唯一の方法であり、gRPC パスはフェイルクローズド。localhost 開発専用。 |
| デモシーディング | オフ | --seed-demo はオフであり、公開パスワードのデモ管理者を生成するため非ループバックバインドを拒否します。 |
| テレメトリホーム | オフ | エンジンはフォンホームしません。アウトバウンド接続は設定されたソースに対してのみ存在 — これがゼロエグレスのエアギャップコントロールプレーンを可能にします。 |
ループバックバインドは、変更するまでエンジンがオフホストから到達不能であることを意味します。公開する場合 — 例えば Docker Compose でホストポートをマッピングすることで — TLS は既にオンであるため保護されます。公開バインドと --insecure を組み合わせないでください。新規インストールではエンジンがワンタイムセットアップトークン付きの FIRST-BOOT SETUP ブロックを標準出力に出力します(Compose ではコンテナログから読み取り)。管理者はそれを使用して最初のユーザーを作成し、認証します。
製品が観測するもの、ガバナンスする場所、カバレッジが段階的な場所については正直さと制限事項を読んでください。