GitHubはSecret Scanningのcustom patternをREST APIから作成・一覧・更新・削除できるようにした。repository、organization、enterpriseの各scopeで利用できる。独自credential形式をSecurity as Codeへ近づけられるが、dry runと最終publishは引き続きUIで行うため、APIだけで本番有効化まで完結する設計ではない。
何が変わったか
GET、POST、PATCH、DELETEのcustom patterns endpointがGAになった。pattern name、secret formatなどの定義をAPIで管理できる。GitHub公式発表では、基本CRUDが対象で、select repositoryを使ったdry runと最終publishはUIに残ると明記されている。
変更前後の差
従来はcustom patternの作成・変更を主にGitHub UIで行い、複数scopeの設定差を人手で追跡する必要があった。API追加後は、desired stateとの比較、backup、棚卸し、複数organizationへのdraft配布を自動化できる。ただしpublish approvalをAPIへ置き換えることはできない。
誰に影響するか
自社発行token、legacy API key、接続文字列、署名付きURL、社内service credentialなど、GitHub既定detectorにないsecretを検出する組織が対象である。enterprise security team、organization owner、platform engineering、internal developer platformの運用へ影響する。
期限
強制移行期限はない。既存UI運用は継続できる。まずread-only inventoryから導入し、APIによる一括変更は承認とdry runを設計してから行う。
必要な対応
pattern定義をrepositoryでversion管理し、scope、regex、前後条件、test sample、owner、目的を一つのmanifestにする。API tokenの権限を最小化し、enterprise・organization・repositoryを取り違えないようresource IDを固定する。publish前にはfalse positiveを確認し、既存history全体へalertが発生する可能性を見積もる。
実装・移行手順
- APIで現行custom patternを全scopeから取得する
- ID、name、regex、scope、publish状態をinventory化する
- desired stateとの差分を生成する
- 新patternをAPIでdraft作成する
- UIでdry runを実行し、最大結果とfalse positiveを確認する
- security approverがpublishする
- alert急増、owner割当、rotation capacityを監視する
- 変更履歴とAPI responseをaudit logへ保存する
失敗しやすい点
API作成が即publishだと誤解する、dry runを省略する、正規表現を広くしすぎる、sample stringだけで精度を判断する、同名patternを複数scopeへ重複作成する、削除をalert削除と誤認する、といった問題が起きやすい。
リスク
誤ったregexによる大量alert、API tokenの過大権限、scope誤指定、pattern削除による検出coverage低下がある。custom patternをpublishするとGit history全体が対象になるため、incident response capacityを超える可能性もある。
評価方法
- pattern別alert件数
- valid secret率とfalse positive率
- dry run結果とpublish後結果の差
- owner未割当率
- rotation完了時間
- scope間の定義差分
- API同期失敗率
- pattern変更の承認lead time
ロールバック
誤検出が多い場合はpatternをunpublishまたは削除する前に、現在定義とalert IDを保存する。修正版をdraftで作りdry runし、旧patternから切り替える。設定repositoryのcommitをrevertし、同期jobはdry-run modeへ戻す。
編集部分析
API化の価値は大量作成ではなく、設定差分を見えるようにする点にある。custom patternはcodeと同じく変更reviewが必要だが、publish後は過去historyまでscanされるため、通常のconfiguration deploymentよりblast radiusが大きい。UIに残るdry runとpublishは欠点ではなく、安全弁として扱うべきである。
実務チェックリスト
- [ ] 全scopeの既存patternをinventory化した
- [ ] pattern定義をversion管理した
- [ ] API tokenを最小権限にした
- [ ] UI dry runを必須にした
- [ ] false positiveをreviewした
- [ ] publish後の対応capacityを見積もった
- [ ] rollback用に旧定義を保存した