EXPLORINEER
ja

Hatena

GitHub CLI が短命 token をサポートしても ghtkn が必要な理由

ソフトウェア初登場 32ポイント


GitHub CLI(gh)が短命 token を自動 refresh に対応しました。それでも、GitHub App の User Access Token を扱う CLI「ghtkn」は、セキュリティ面で優位性があるため必要だ、と開発者が説明する記事です。

何が起きたのか

GitHub CLI(gh)が、自動で更新される短命 token に対応しました。現在は opt-in(自分で選んで有効にする方式)ですが、今後はデフォルトになる予定です。筆者は、これで ghtkn は不要になるのかという疑問に答えるため、この記事を書いています。筆者は ghtkn を使い続け、開発も続けると述べています。

ghtkn とは

ghtkn は、ローカル開発のために GitHub App から User Access Token を安全に作る CLI(文字だけで操作するツール)です。access token は一定時間で使えなくなる短い期限のトークンです。一方、refresh token は access token を作り直すための長持ちするトークンです。ghtkn は access token を自動で更新する機能を持っています。

押さえたい数字と事実

  • access token は 8 時間で失効する
  • refresh token は 6 ヶ月使われないと失効する
  • refresh のたびに新しい refresh token が発行される
  • gh の macOS 版は、一度信頼されると確認なしで Keychain の secret を読み書きできる
  • ghtkn の agent backend では、一定期間使われていない app の token が自動で削除される

なぜ大事なのか

access token は短命でも、refresh token が漏れると、攻撃者はそれを使って access token を何度も作れます。そうなると、短命にした意味がほとんどなくなります。筆者は、gh は refresh token を OS の keyring に保存するため、マルウェアに盗まれやすいと指摘しています。ghtkn は refresh token を暗号化して保存し、agent からは access token しか取り出せない設計になっています。さらに、アクセスできる範囲を GitHub App のインストール先で絞れる点や、用途ごとに app を使い分けられる点も、ghtkn の強みだとしています。

今後注目したい点

  • gh の短命 token が opt-in からデフォルトに変わる時期
  • gh の token にアクセス範囲を絞る仕組みが追加されるか
  • ghtkn の v0.4.2 以上で使える ghtkn docs コマンドや agent skill の広がり

用語解説

GitHub CLI
GitHub を コマンドラインから操作するための公式ツール。
ghtkn
GitHub App から User Access Token を安全に作るための CLI ツール。
User Access Token
ユーザーの代わりに GitHub を操作するための鍵(トークン)。
refresh token
access token を作り直すための、より長持ちするトークン。
GitHub App
GitHub の機能を拡張する仕組みで、権限を細かく決めて使える。

出典: Hatenaで原文を読む ↗

この記事は原文をもとにAIがやさしい言葉で書き直した解説です。事実関係は原文をご確認ください。