最小権限の原則とは何か?必要なものだけを
最小権限の原則とは、すべてのアイデンティティが、その役割を果たすために必要な最小限のアクセス権のみを持ち、それ以上は持たないべきだという考え方です。
最小権限の原則は、セキュリティにおいて最も長く通用してきた考え方の一つです。アイデンティティが人であれ、サービスであれ、パイプラインのジョブであれ、必要なアクセス権をちょうど付与し、余分なものは付与しません。その見返りは封じ込めです。何かが侵害されたとき、最小権限は攻撃者がすべての鍵ではなく、ごくわずかなアクセス権のみを引き継ぐことを保証します。
最小権限が意味すること
既定でアクセスを拒否し、その上で特定のタスクに対して特定の権限を付与します。テストを実行するだけのbuildジョブがdeployできてはなりません。読み取り専用の統合が書き込みできてはなりません。余分な権限はすべて、アイデンティティが侵害された場合の余分なリスクです。
なぜ有効なのか
- 侵害されたアイデンティティは、許可されたことしか実行できません。
- 狭い権限は、あらゆる侵害の影響範囲を縮小します。
- 厳密なスコープ設定により、異常な活動を見つけやすくなります。
CI/CDにおける最小権限
パイプラインは、実際の権限を持って無人で動作するため、格好の対象です。workflowトークンのスコープをジョブごとに絞り、クラウドロールを特定のアクションとリソースに制限し、どこでも使い回される一つのマスター認証情報を避けましょう。スコープ設定の一つひとつが、潜在的な漏洩を封じ込めます。
利便性とのトレードオフ
広い権限はその場では簡単です。何でもできる一つのトークンはただ機能します。最小権限にはより多くのセットアップが必要ですが、それは認証情報が漏洩したときに、封じ込められたインシデントで済むか、完全な侵害になるかの違いです。
あらゆる場所への適用
最小権限は、トークン、クラウドロール、データベースアカウント、そして人間のアクセスにも同様に適用されます。短命の認証情報と自然に組み合わさります。最小のスコープに加えて最小の寿命が、あらゆるパイプライン認証情報にとって最も強力な組み合わせです。
最小権限とrunner
runnerはジョブに許可されたことしか実行できないため、厳密なスコープ設定は侵害されたrunnerが到達できる範囲を制限します。エフェメラルで隔離されたrunner(Latchkeyのマネージドrunnerなど)は、あるジョブから次のジョブへ特権的なコンテキストを持ち越さないことで、これをさらに強化します。
重要なポイント
- 最小権限は、各アイデンティティに必要なアクセス権のみを付与し、それ以上は付与しません。
- 侵害されたアイデンティティが到達できる範囲を制限することで、侵害を封じ込めます。
- CI/CDでは、スコープを絞った短命のトークンと、厳密に境界を定めたクラウドロールを意味します。