Open7

deny-self-approve の改善

Shunsuke SuzukiShunsuke Suzuki
  • JavaScript Action への書き換え
    • 基本 GitHub Actions で使う前提
    • Go binary のインストールのオーバーヘッドを無視できない
  • ignored-approvers: 雑に管理されている Machine User による approve を無視
  • forbidden-approvers: ignored-approvers より強いオプション。コマンドを失敗させる
  • reliable-users: 信用できる App や Machine User
  • unreliable-users: 管理が雑な Machine User や App
    • approve を無視
    • PR 作成者の場合 2 approve を要求
  • Devin のような App の PR の場合、 2 approve 欲しい
    • ただし、 Renovate や Dependabot のような信頼できる App の場合 1 approve でも OK
  • PR コメント
    • github-comment metadata を付与
Shunsuke SuzukiShunsuke Suzuki
  • reliable-users
    • author: 1 approve
    • committer:
    • approver
  • unreliable-users
    • author: 2 approve
    • committer
    • approver: 無視
Shunsuke SuzukiShunsuke Suzuki
  • 信頼できる App を除き、 App が作成した PR には 2 approve を要求
    • 信頼できる App を指定する --reliable-apps を追加
  • 信頼できない Machine User の PR には 2 approve を要求
  • 信頼できない Machine User の Approve は無視する
    • 信頼できない Machine User を指定する --unreliable-machine-users を追加
deny-self-approve validate \
  --reliable-apps "dependabot[bot],renovate[bot]" \
  --unreliable-machine-users "foo-bot"
Shunsuke SuzukiShunsuke Suzuki
  • 信頼できない App や Machine User がコミットしていたら 2 approve を要求
    • approver が App を悪用して commit を push している可能性があるから
  • 署名を要求 <- これは branch rulesets でやればいいから除外
Shunsuke SuzukiShunsuke Suzuki
  • codeowner 権限を持つ Machine User を悪用して approve

    • 信頼できない machine user の approve を無視すればよい
  • 自分以外が作成した PR に自分で commit を追加して自分で approve

    • committer 以外の approve を要求すれば良い
  • 自分以外が作成した PR に Machine User や bot で commit を追加して自分で approve

    • 信頼できない machine user や app が commit してたら 2 approve 要求すれば良い
  • link してない commit で悪意のあるコードを commit

    • link してない commit が含まれてたら失敗させれば良い
  • 他人へなりすまして commit して approve

    • branch ruleset で署名を必須にし、なりすませないようにする

    deny-self-approve の workflow 改ざん対策

    • workflow の codeowner を設定

    全リポジトリに適用

    • required workflow で実行