gNSI 設定と運用¶
このページは gNSI(概要ハブ) の派生で、設定経路と運用イメージ に絞る。概念は gnsi-hld-concepts.md、内部実装は gnsi-hld-internals.md、制限と HLD 乖離は gnsi-hld-limitations.md を参照。
実装状況の境界(partially implemented)
本ページが扱うフラグ / YANG / 運用フローのうち、Certz 系の設定経路(EnableCrl / CertCRLConfig など)と Rotate / Finalize 運用は master に取り込み済 で動作する。一方 Authz / Pathz / Credentialz 系のフラグ(EnableAuthzPolicy / EnablePathzPolicy / SshCredMetaFile など)は未実装 で対応 PR が未取り込み。詳細は gnsi-hld-limitations.md を参照。
1. gNMI / sonic-gnmi 側のフラグ追加¶
HLD は gNMI server に以下のフラグを追加する想定1:
| フラグ | 用途 |
|---|---|
EnableAuthzPolicy / AuthzPolicyFile |
Authz ポリシー有効化と JSON ファイルパス |
EnablePathzPolicy / PathzPolicyFile |
Pathz 同上 |
CertCRLConfig |
CRL ディレクトリ。空で無効化 |
SshCredMetaFile / ConsoleCredMetaFile |
Credentialz メタデータ JSON |
CredEntitiesMetaFile |
gRPC クレデンシャルメタ |
AuthzMetaFile / PathzMetaFile |
各サービスのメタデータ JSON |
state の保管先として STATE_DB にプロファイルの freshness / state を入れる(OpenConfig gNSI モデル準拠)1。
実装側のフラグ名は HLD と異なる
実装での flag 名は AuthzPolicy / PathzPolicy(bool)+ AuthzPolicyFile / PathzPolicyFile(path)、CRL は CertCRLConfig。詳細は gnsi-hld-limitations.md を参照。
2. 関連する CONFIG_DB¶
CONFIG_DB スキーマの追加は HLD 上「None」1。状態は STATE_DB のみ。
3. 関連する CLI¶
該当する CLI は HLD で言及無し。gnoi_client 系のような専用 CLI は HLD 内で未定義。
4. 関連する YANG¶
OpenConfig 公開モデル(openconfig-gnsi-certz / -authz / -pathz / -credentialz)のパスを通す1。
5. 運用イメージ¶
# Certz: gnxi profile に新証明書を流し込む
gnsi_client certz rotate --profile gnxi \
--cert ./new.pem --bundle ./root.pem --crl-dir ./crls/
# 検証 OK で finalize
gnsi_client certz finalize
# Credentialz: SSH 認可鍵更新
gnsi_client credentialz rotate-account \
--account root --keys ./new_authorized_keys.json
6. トラブルシューティング¶
Rotate後に証明書が古いまま:Finalizeを送らずに stream を閉じた可能性。サーバ側のチェックポイント有無を確認- sshd が再起動ループ:
ssh_mgmt.setで投入したauthorized_keys/sshd_configが壊れている。restore_checkpointで巻き戻す Pathzの評価が遅い: gNMI request 冒頭で policy processor が呼ばれる仕様。policy 規模に対するレイテンシを観測
確認コマンド例:
# gNOI/gNSI/gNMI クライアント疎通と server 状態
gnmi_cli -a 127.0.0.1:8080 -capabilities -insecure
docker exec gnmi ps aux | grep -E 'telemetry|gnmi'
docker logs gnmi 2>&1 | tail
redis-cli -n 4 hgetall 'GNMI|certs'
実装フェーズ境界¶
Phase 別の実装済 / 未実装 サマリ
本ページは monitor: partially_implemented で、HLD で示された一連の機能
が 段階的に取り込まれている 状態を扱う。フェーズ毎の実装境界を
1 枚の表に集約する (詳細は本ページ上部の diff admonition および
discrepancy-index を参照)。
| Phase | 範囲 (機能 / 段階) | 実装済 (master 取り込み済) | 未実装 (HLD 提案のみ) |
|---|---|---|---|
| Phase 1 — 基本機能 | HLD §概要 / §設計の中核ユースケース | 取り込み済 — 本ページの「実装の概観」「実装詳細」節および diff admonition の現状側を参照 |
— (Phase 1 は実装済) |
| Phase 2 — 拡張機能 | HLD §拡張 / §追加要件 / §周辺統合 | 一部のみ取り込み済 — 本ページ「実装詳細」の補足参照 | 未実装 / 未マージ — HLD §未対応箇所、本ページ「制限事項」および diff admonition の差分側に列挙 |
| Phase 3 — 将来拡張 | HLD §Future Work / §将来課題 | — | 未実装 — HLD 提案段階。対応 PR は確認されていない (last_verified 時点) |
凡例: 「実装済」=現行 master で動作確認できる範囲 / 「未実装」=HLD には記載があるが対応 PR が未マージまたは設計のみで code が存在しない範囲。