0:00 0:00
記事
GitHub CLI、期限付きOAuthトークンをパブリックプレビュー公開——流出しても数時間で無効化
GitHubがCLIツール「gh」向けに、自動更新される期限付きOAuth認証情報をパブリックプレビューとして公開しました。漏えいしたトークンが数時間で使えなくなる仕組みで、opt-inで有効化できます。
GitHubは現地時間21日、コマンドラインツール「GitHub CLI」(gh)向けに、期限付きで自動更新されるOAuth認証情報をパブリックプレビューとして公開したと発表しました。従来の無期限トークンと異なり、短時間で失効する仕組みを導入することで、認証情報が漏えいした際の被害を抑える狙いがあります。GitHub Changelogが明らかにしました。
漏えいしても「数時間で無効化」される仕組み
今回の変更のポイントは、ghが短期間で失効するアクセストークンと、それを自動で更新するためのリフレッシュトークンをセットで保存するようになる点です。GitHubは今回の発表の中で、漏えいしたアクセストークンが「無期限に使われ続けるのではなく、数時間以内に使えなくなる」と説明しており、仮に認証情報が外部に流出しても悪用できる時間を大幅に短縮できるとしています。CLIツールやCI/CD環境では認証情報がログやキャッシュに意図せず残ってしまうケースが少なくないため、こうした期限切れの仕組みは実運用上のリスク低減に直結する変更といえます。

画像引用元: GitHub Changelog
有効化の方法と対応バージョン
この機能を使うにはghのバージョン2.103.0以降が必要です。1回のサインインだけ期限付き認証情報を試したい場合はgh auth login --expiringを実行し、今後のサインインすべてで既定にしたい場合はgh config set expiring_credentials enabledを実行します。現在の認証情報の状態や、アクセストークンの有効期限を確認したい場合はgh auth statusで確認できます。また、HTTPS経由のGit操作でもこの仕組みを使いたい場合はgh auth setup-gitを実行し、ghをGitの認証情報ヘルパーとして設定することで、Git操作時にも認証情報を自動更新できるようになります。GitHubはGit 2.46以降の利用を推奨しており、それより古いバージョンでは動作はするものの、アップグレードを促す案内が一度だけ表示されるとしています。
既存の運用への影響と注意点
期限付き認証情報はあくまでopt-inの機能であり、既存のサインインや手動で設定したトークンには影響しません。接続先のサーバーが更新可能な認証情報に対応していない場合は、ghは自動的に従来の無期限トークンにフォールバックします。一方で注意が必要なのは、gh auth tokenで取得したトークンをスクリプトやツール側で保存して使い回している場合です。期限付き認証情報ではトークンがいずれ失効してしまうため、GitHubは保存せずその都度gh auth tokenを呼び出すよう推奨しています。長時間動作し続けるトークンに依存するワークフローについては、現時点ではまだopt-inすべきではないともアナウンスされています。
なぜ無期限トークンがリスクになるのか
開発者向けCLIのアクセストークンは、誤って公開リポジトリにコミットしてしまったり、CIのログに平文で残ってしまったりといった形で、意図せず外部に流出するケースが後を絶ちません。従来の無期限トークンは、一度漏えいすると持ち主が手動で失効させるまで有効であり続けるため、発見が遅れるほど被害が広がりやすいという課題がありました。今回のように短時間で自動失効する仕組みを標準の選択肢として用意することは、CLIやCI/CDパイプラインを日常的に使う開発チームにとって、漏えい時の被害範囲をあらかじめ縮小しておける現実的な防御策になります。GitHubはここ数年、Dependabotによるシークレットスキャンの強化やサプライチェーン攻撃対策を相次いで打ち出しており、今回の変更もそうした認証情報まわりのセキュリティ強化策の一環と位置づけられます。
提供状況とGitHub Enterprise Serverへの展開
この機能はすでにgithub.comおよびghe.comで利用可能です。GitHub Enterprise ServerについてはGHES 3.23以降で対応しており、それより前のバージョンでは期限付き認証情報を有効にしようとしても無期限トークンへフォールバックする仕様になっています。GitHubは今回のパブリックプレビューの告知の中で、将来的なリリースでは新規サインイン時に期限付き認証情報をデフォルトにする方針も明らかにしており、開発者向けツールチェーン全体でのセキュリティ強化を段階的に進めていく考えとみられます。
GitHub CLI: Opt in to expiring, auto-refreshing OAuth tokens
You can now use expiring, automatically refreshing OAuth credentials in GitHub CLI as part of a public preview. When you opt in, gh stores an expiring access token alongside a…