🔐

Self-Hosted runner with Github App token

に公開

短く

  • self-hosted-runner 用 registration-token 発行は、Appのtokenを使う時、runner scopeが repo単位かorg単位でかなり違う
  • 2024年までは actions: read and write が付いていれば良かったらしいが、そうではない
  • repo単位ならば、App の tokenでやることはほぼ無理、なぜなら repoのadmin:read and write が必要だから、あきらめてPATが現実解
  • org単位ならば、org用の Self-hosted runners: read and write が設定出来るので adminみたいなクソでかい権限は不要

ちょっとだけ説明

  • App自体は、個人 or Orgかどっちかに作る、仕事で使う場合、実質Orgに作るはず
  • Appを上記のどっちに作るかは、今回あんまり関係無くどちらも同じ問題を抱える
  • Runnerは、Orgに登録するか、Repoに登録するか
  • Runner登録時に registration-token というAPIを叩く
  • このAPIは actions下にあるから、Appへの権限としては actions: read and write が必要なのは直感で分かる、が それだけだと足りない
  • Runnerを Repoに個別登録するには、Appが Repo の admin: read and write も無いとだめ、Appが個人かOrg所有かは関係無い
  • Runnerを Orgに登録するには Appが Org の Self-hosted runners: read and write も無いとだめ

結論/たぶん管理者目線

  • 特定のチームが自分でSelf-hosted を立てたいと言った場合は、PATでやれ が第一候補
  • もしくはOrg単位で Self-hosted を立ててるところが要望聞いて代わりに作ってあげる
    • Runner Scopeが Repo でも Orgでも、権限範囲がデカすぎて局所権限とならない
    • RepoならAdminが付いてしまうので、インストール出来る・出来ないである程度抑制は出来るが、Appアクセス出来るユーザーが権限プロモート状態になり得る
    • Org単位ならば、権限譲渡はできるが、余計なことして既存のRunnerを潰すんじゃねーぞ とすごむ程度でいいのか?(俺は良いとは言えない)
  • そのうち repo単位での Self-hosted runners の権限が出来ると期待したい

ちなみに俺はGithubの管理者はやったことないので、もっと別の解はあるかもしれん。PAT絶対、殺すマンにはなれなかった。

Discussion