トークンスコーピングとは何か? 認証情報ができることを制限する
トークンスコーピングとは、認証情報を必要とされる正確なアクション、リソース、期間に制限し、漏洩してもそれ以上のことに使えないようにするプラクティスです。
トークンは鍵であり、問題はそれがどのドアを開けるかです。トークンスコーピングはその集合を狭めます。何でもできる認証情報の代わりに、与えられた job が必要とすることだけを正確にできるものを発行します。この repo を read し、あの bucket に write し、この期間だけ、というように。スコープされたトークンが漏洩しても、攻撃者はその狭い能力しか引き継げません。
スコープの次元
- 権限: どのアクション (read、write、admin)。
- リソース: どの repo、bucket、サービス。
- オーディエンス: トークンが有効なシステム。
- 有効期間: どれだけの間有効か。
スコーピングが被害を抑える理由
広範にスコープされたトークンはマスターキーです。漏洩すれば、攻撃者はそれができることを何でもできます。狭くスコープされたトークンは単一のドアの鍵です。漏洩はそのリソース上のその一つの能力に封じ込められます。スコープはインシデントと侵害の違いです。
実践におけるスコーピング
GitHub Actions では、組み込みトークンの権限を workflow ごと、job ごとに設定でき、デフォルトは read-only です。OIDC 経由で引き受けるクラウドロールは特定のリソースに制限できます。目標は常に、このトークンは、この job のために、これだけができる、ということです。
スコープと有効期間
スコーピングは「何ができるか?」に答え、有効期間は「どれだけの間?」に答えます。狭くスコープされ、数分で失効するように発行されたトークンが最強の組み合わせであり、盗んでもほぼ無価値なエフェメラルな認証情報です。
スコーピングと OIDC
OIDC token exchange により、パイプラインは自身のアイデンティティを、必要とされる正確なリソースにスコープされた短命なクラウド認証情報と交換でき、保存されるシークレットは一切ありません。これはトークンスコーピングとエフェメラリティを合わせたものであり、常設の認証情報を完全に取り除きます。
重要なポイント
- トークンスコーピングは認証情報を特定のアクション、リソース、期間に制限します。
- スコープされた漏洩は封じ込められますが、広範な漏洩は攻撃者にとってのマスターキーです。
- スコープと短い有効期間 (エフェメラルな認証情報) の組み合わせが最も強固な姿勢です。