* feat(i18n): add multilingual wiki scaffolding, language switcher, and translation QA pipeline * docs(readme): adopt picoclaw-style multilingual link bar * fix(i18n): repair localized index links and tighten partial-pair QA * ci(i18n): fail on broken markdown links in README/wiki * ci(i18n): add changed-files mode for markdown link checks * i18n(de): use local Argos MT to fill untranslated German sections * i18n(es,fr): fill untranslated sections via local Argos workflow * i18n(ja): fill untranslated sections with scoped local Argos pass * i18n(ko): fill untranslated sections with scoped local Argos pass * fix(i18n): address review feedback --------- Co-authored-by: David Abutbul <David.a@prompt.security>
9.9 KiB
移行記録: 署名されていないフィード → 署名されたフィード (完了)
ツイート 1) 目的とステータス
ClawSec のアドバイザリーディストリビューションが署名されていない feed.json デリバリーから、レガシークライアントの互換性が保持された状態の確認に移行する方法を文書化します。
mainの現在の状態:
- 署名されたフィード・パブリッシングは、アドバイザリー・ワークフローとワークフローのデプロイで有効です。
- スイートおよびNanoClawの消費者は署名された供給のエンドポイントにデフォルトで置きます。
- 署名されていない動作は、明示的な互換性バイパス(
CLAWSEC_ALLOW_UNSIGNED_FEED=1)としてのみ存在します。
ツイート 2)ベースライン(今日、ポストマイグレーション)
アクティブな使用中の現在のフィードパス:
- 真実の源:
advisories/feed.json - ソース署名:
advisories/feed.json.sig - スキルコピー:
skills/clawsec-feed/advisories/feed.json - スキルコピー署名:
skills/clawsec-feed/advisories/feed.json.sig - ページのコピー:
public/advisories/feed.json - ページ署名:
public/advisories/feed.json.sigの特長 - 最も最近のミラーのコピー:
public/releases/latest/download/advisories/feed.json(+.sig)
現在の消費者のデフォルト:
skills/clawsec-suite/hooks/clawsec-advisory-guardian/handler.tsskills/clawsec-suite/scripts/guarded_skill_install.mjsskills/clawsec-nanoclaw/lib/advisories.ts- デフォルトURL:
https://clawsec.prompt.security/advisories/feed.json
ツイート 3) 移行原則
-Dual-publish first:検証の前に署名を公開します。
- 移行中にのみフェイルオープン:一時的な互換性期間が明示され、期限が切れる。
- 測定されたロールアウト:テレメトリーの後で確認を強制して下さい安定した署名された出版を確認します。 -Fast rollback: 根本原因が調査される間、符号なしの行動に戻るパスを保存します。
ツイート 4) フェーズドタイムライン(歴史的)
################################################################################################################################################################################################################################################################ フェーズ0 — 準備(完了)
配達可能:
- 生成されたキーと指紋を記録する署名
- GitHubの秘密作成
- リポジトリに公開鍵を追加
- runbooks が承認(
security-signing-runbook.md、このファイル)
出口の基準:
- レビュアーによって検証される重要な指紋
- 保護された枝/ワークフロー制御は有効にしました
################################################################################################################################################################################################################################################################ フェーズ1 — CI 署名機能、クライアントの執行なし (完了)
実装:
advisories/feed.json.sigを作り出すために供給の印のステップ/ワークフローを加えて下さい- 任意に農産物
advisories/checksums.json+.sigの特長 - CIがアーティファクトを公開する前に署名を検証することを確認してください
また更新の展開:
.sigアーティファクトをpublic/advisories/にコピーするpublic/releases/latest/download/advisories/のミラー.sig
出口の基準:
- すべてのフィード更新パスで正常に生成されたシグネチャ
- アーティファクトには、ペイロードと署名のコンパニオンの両方が含まれている
################################################################################################################################################################################################################################################################ フェーズ 2 — 消費者のデュアル読み取り/デュアル検証サポート(完了)
消費者の実装:
feed.jsonとfeed.json.sigを読みます- ピン留めされた公共のキーと確認して下さい
- migration の窓の間に管理された一時的な署名されていないフォールバックを保って下さい
検証:
- リモート署名されたパスをテストして下さい
- ローカル署名されたフォールバックパスをテストして下さい
- 無効な署名拒否のテスト
出口の基準:
- 検証ロジックのリリースとテスト
- 浸漬期間中に偽陽性検証の失敗はありません
################################################################################################################################################################################################################################################################ フェーズ3 — 強化(完了)
アクション:
- デフォルトパスの一時的な署名されていないフォールバック動作を無効にします
.sigが欠落したときに失敗するCI /公開ゲートを追加します- リリースノートおよび文書の施行日を発表
出口の基準:
- すべてのプロダクションクライアントは、デフォルトでシグネチャを検証します
- 標準的な設置流れの署名されていない供給の依存性無し
################################################################################################################################################################################################################################################################ フェーズ 4 — 安定化(継続)
アクション:
- 最初のキー回転テーブルトップドリルを実行します
- ロールバックテーブルトップドリルを実行
- 簡単なレビューで移行を閉じる
ツイート 5)ロールバックプラン
ロールバックトリガー
以下のいずれかが発生した場合は、ロールバックを初期化します。
- クライアント間でシグネチャ認証の失敗を持続
- ワークフローの署名は、有効な署名を生成できません
- 重要な妥協が疑われるが、置換キーはまだ展開されていない
- 展開パスは、不一致したペイロード/署名ペアを公開します
##ロールバックレベル
レベル 1 (必須): 検証バイパスウィンドウ, 署名された出版を維持
使用時:署名は健康で、クライアント側の修飾子に欠陥があります。
アクション: 1。 クライアントリリースブランチで一時的な署名なしのアクセプタンス動作を再有効。 2。 バイパスの明示的な有効期限でパッチリリースを出荷します。 3。 認証ギャップを避けるためにパイプラインをアクティブに署名し続ける。
回復ターゲット: 24–48h内の厳密な確認を元通りにして下さい。
レベル 2: パイプラインの注入、署名されていない供給を一時的にauthoritative署名しました
いつ使用して下さい: 署名のパイプラインは不安定ですまたは不連続なアーティファクトを作り出します。
アクション:
1。 ワークフローの署名やステップの署名を無効にします。
2. 既存のワークフローを介したadvisories/feed.jsonを公開し続けます。
3。 .sigアーティファクトを必要とするデプロイゲートを反転します。
4。 未署名モードでのインシデントレコードを開き、時刻を追跡します。
回復ターゲット:署名された出版ASAPを、理想的に <72h。
##レベル3:フルリリースフリーズ
いつ使う: リポジトリ/ワークフローの妥協や完全性が疑わしい。
アクション: 1。 フィードのミューテーションとデプロイのワークフローを再利用します。 2。 アドバイザリーファイル/ワークフローの既知のコミットを復元します。 3。 キーと認証情報を回転させます。 4。 セキュリティレビューサインオフ後にパイプラインを再開します。
##ロールバック後のロールフォワード
- 根本原因を特定する
- 回帰テスト/ゲートを追加
- redeployの署名されたアーティファクト
- インシデントの公開 + 修正要約
ツイート 6)コミュニケーション計画
執行およびロールバックのでき事のために、伝達します:
- 変更点
- 期待される演算子/クライアントアクション
- 一時的な互換性モードの持続時間(もしあれば)
- ユーザーの検証コマンド
推奨チャンネル:
- GitHubリリースノート
- リポジトリ README/docsの更新
- リポジトリの発行/インシデントレポート
ツイート 7) ゴー/ノーゴーチェックリスト
すべてが真の場合だけ行く:
- ワークフローの成功率の署名は安定しています
- 署名はすべての文書化されたフィードエンドポイントにミラーリングされます
- リモート+ローカルフォールバックのためにテストされた消費者検証パス
- ロールバック所有者が割り当てられ、到達可能
- キーの回転プロシージャは少なくとも一度に乾燥した操業です
ソース参照
- .github/workflows/poll-nvd-cves.yml
- .github/workflows/community-advisory.yml
- .github/workflows/deploy-pages.yml
- スキル/クローセスイート/ホック/クローセ-アドバイザー/ハンドラー.ts
- スキル/clawsec-suite/scripts/guarded_skill_install.mjs
- アドバイザリー/フィード.json
- wiki/security-signing-runbook.md