CyberFix Note
防御・ハードニング

最小権限の原則(Least Privilege)。なぜ権限を絞ることが最強の防御の一つなのか

対象の目安: 情報システム担当・インフラ/運用担当・開発者 / 実務レベル

ソウ攻撃・脆弱性リサーチ担当
・ 約18分で読めます
最小権限の原則(Least Privilege)。なぜ権限を絞ることが最強の防御の一つなのか

セキュリティの世界には、流行に左右されず長く通用する基礎原則がいくつかあります。最小権限の原則(Principle of Least Privilege、PoLP)は、その代表格です。新しい製品も高度な検知技術も使わず、「各ユーザーやプログラムに、仕事をこなすのに必要な最小限の権限だけを与える」という、たったそれだけの考え方です。地味に見えますが、攻撃が成立した「あと」に被害がどこまで広がるかを大きく左右するため、防御の効き目という点ではきわめて強力です。

なぜ権限を絞るだけで強い防御になるのか。答えは、現実の攻撃が「一発で終わらない」ことにあります。攻撃者は最初の侵入口を取ったあと、そのアカウントやプロセスが持つ権限を足がかりに、より強い権限へ昇格し、別のサーバーやサービスへと移動して目的(データ窃取やランサムウェアの展開など)を達成しようとします。最初に奪った足場の権限が小さければ、この「次の一手」がことごとく難しくなります。最小権限は、攻撃の連鎖を途中で断つための仕組みなのです。

この記事では、最小権限の原則を NIST などの一次情報に沿って定義から確認し、なぜ効くのかを原理から噛み砕いたうえで、過剰権限が生まれる典型パターンと、RBAC・ジャストインタイム権限・定期棚卸しといった実践、そしてゼロトラストや認可との関係までを、運用・管理者と技術者の双方に向けて整理します。

最小権限とは何か(NISTの定義から)

まず言葉の定義を一次情報で確認します。NIST の用語集(NIST CSRC Glossary)は、最小権限を次のように説明しています。

A security principle that a system should restrict the access privileges of users (or processes acting on behalf of users) to the minimum necessary to accomplish assigned tasks.

噛み砕くと、「割り当てられたタスクを遂行するのに必要な最小限まで、ユーザー(およびユーザーの代わりに動くプロセス)のアクセス権限を制限すべきだ」という原則です。NIST SP 800-53 Rev.5 では、対象を人だけでなくシステムプロセスにも広げ、「各エンティティに、その機能を果たすのに必要な最小限のシステムリソースと認可だけを与える」という表現で定義しています。

ここで押さえたいのは2つです。1つ目は、対象が人間のユーザーに限らないこと。Webサーバーやバッチ処理などのプロセス、API連携のためのサービスアカウントも含みます。2つ目は、「いま必要かどうか」が基準であって、「将来使うかもしれない」は理由にならないこと。最小権限は、必要性を都度問い直す姿勢とセットで初めて機能します。

NIST CSRCの用語集は、最小権限を「割り当てられたタスクの遂行に必要な最小限まで、ユーザー(やその代理プロセス)のアクセス権限を制限すべきという原則」と定義しています。NIST SP 800-53 Rev.5やNIST SP 800-171などが出典として併記されています(執筆時点の記載に基づく)。

なぜ権限を絞ると「最強の防御の一つ」になるのか

最小権限の真価が最も際立つのは、攻撃を未然に防ぐ場面よりも、攻撃が成立した「あと」の被害をどれだけ小さく抑えられるかという場面です。もちろん権限を絞ること自体、通常時の不正アクセスや誤操作でできることを減らす効果もありますが、完璧に侵入を防ぎ続けることは現実には不可能だ、という前提に立ったとき、最後に効いてくる守りとして特に力を発揮します。

1. 被害の局所化(ブラストradiusを小さくする)

ある1つのアカウントやサーバーが乗っ取られたとき、それが持っていた権限の範囲が、そのまま攻撃者が手にできる範囲になります。たとえば、あるWebアプリの脆弱性を突かれてサーバー上でコマンドが実行されたとして、そのアプリがroot(管理者)権限で動いていれば、攻撃者はサーバー全体を自由にできます。一方、そのアプリが必要最小限の権限しか持たない専用ユーザーで動いていれば、攻撃者が奪える権限もその狭い範囲に限られます。これを「ブラストradius(爆発の影響範囲)を小さくする」と表現します。

2. 権限昇格を難しくする

攻撃者は、奪った低い権限から、より高い権限(管理者など)へ昇格しようとします。最小権限が徹底されていると、昇格の足がかりになる「余分な権限」がそこかしこに転がっていない状態を作れます。たとえば、一般ユーザーが不要な管理コマンドを実行できない、アプリ用アカウントにデータベースの管理権限がない、といった状態です。昇格の経路を一本ずつ塞ぐことが、攻撃者の手数を奪います。

3. 横展開(ラテラルムーブメント)の抑止

侵入後、攻撃者は隣のサーバーや別のサービスへと移動して被害を広げます。これが横展開です。多くの横展開は、奪ったアカウントが「あちこちにアクセスできる」状態を利用します。逆に言えば、各アカウント・各サービスアカウントのアクセス先が業務上必要な範囲に絞られていれば、攻撃者は1つ奪っても次へ進めず、足止めを食らいます。

観点過剰権限のとき最小権限のとき
1台が侵害された影響権限が広く、被害が全体に波及しやすい権限の範囲に被害が局所化される
権限昇格余分な権限が足がかりになり昇格しやすい昇格の経路が少なく、手数がかかる
横展開広いアクセス権でほかの資産へ移動しやすいアクセス先が絞られ、移動が止まりやすい
内部不正・誤操作操作できる範囲が広く、影響が大きい操作範囲が限られ、事故の被害も小さい

この表からわかるとおり、最小権限は外部攻撃だけでなく、内部不正や単純な誤操作(消してはいけないものを消す等)に対しても効きます。「やれること」が小さければ、悪意があってもなくても、起こせる被害は小さくなります。

注意

最小権限は「最初に絞る」のが鉄則です。広く与えてから後で減らそうとすると、何が動かなくなるか分からず、結局「動いているから触らない」と広い権限のまま放置されがちです。新規にアカウントやサービスを用意するときに必要権限を洗い出し、最小から始めて足りなければ足す、という順序にすると、安全かつ確実です。

過剰権限はこうして溜まる(典型パターン)

最小権限が崩れる原因の多くは、悪意ではなく「運用の都合」と「放置」です。代表的な3パターンを押さえておくと、自組織のどこに穴があるか見当が付きます。

共有された管理者アカウント

「とりあえず管理者で」と全員が同じ強い権限を使い回す状態です。手軽ですが、誰が何をしたか追えなくなり(証跡が取れない)、1人分の認証情報が漏れただけで全権限が漏れることになります。共有アカウントは最小権限とも証跡管理とも相性が悪く、可能な限り個人アカウントに分け、必要な人にだけ必要な権限を割り当てるのが基本です。

退職者・異動者の残存アカウント

退職や異動で不要になったアカウントや権限が、消されずに残り続けるパターンです。使われていないアカウントは「持ち主が見ていない入口」であり、攻撃者にとって格好の的になります。入退社・異動のプロセスに、アカウントと権限の削除・見直しを必ず組み込むことが要です。

権限の蓄積(privilege creep)

最も見落とされやすいのがこれです。privilege creep(権限クリープ、権限の漸増)とは、人が異動やプロジェクト参加のたびに新しい権限を付与される一方で、古い権限が外されず、結果として一人が業務に不要な権限を大量に抱え込んでいく現象を指します。一つひとつの付与は正当でも、積み重なると「なぜか何でもできる人」が生まれます。これは定期的な棚卸し(後述)でしか発見・是正できません。

「権限を足す依頼はたくさん来るのに、外す依頼はまず来ない」というのが現場の実感です。権限は放っておくと増える一方なので、付与のたびに期限や見直し時期を決めておく、定期的に棚卸しする、といった「減らす仕組み」を意図的に作らないと、いつの間にか全員が過剰権限になります。

ある情報システム担当の声

最小権限と表裏一体なのが「認可(権限付与)」の設計です。そもそも誰に何を許すかを正しく決められなければ最小権限も成立しません。認証(本人確認)と認可の違いがあいまいだと過剰な許可が生まれやすいため、

もあわせて確認しておくと土台が固まります。

実践1: RBAC(役割ベースのアクセス制御)

権限を一人ひとりに直接ひも付けていくと、人数が増えるほど管理が破綻します。そこで広く使われるのが RBAC(Role-Based Access Control、役割ベースのアクセス制御)です。RBAC では、権限を直接ユーザーに付けるのではなく、「役割(ロール)」に権限を束ね、ユーザーにはその役割を割り当てます。たとえば「経理担当」「サーバー運用者」「読み取り専用の監査担当」といった役割を定義し、必要な役割を人に付与する形です。

RBAC の利点は、権限管理の見通しが良くなることと、入退社・異動への対応が役割の付け外しで済むことです。NIST SP 800-53 Rev.5 の AC-6(Least Privilege)でも、最小権限を実現する手段として役割の活用が想定されています。ただし注意点もあります。役割そのものに過剰な権限を盛り込んでしまうと、その役割を持つ全員が一斉に過剰権限になります。役割の定義自体を最小権限で設計し、定期的に見直すことが前提です。

方式権限の与え方向き・注意点
直接付与個々のユーザーに権限を直接割り当て小規模なら単純だが、人数が増えると管理が破綻し権限の漏れ・残存が起きやすい
RBAC(役割ベース)役割に権限を束ね、ユーザーに役割を割り当て管理の見通しが良い。役割自体を最小権限で設計しないと過剰権限が量産される

NIST SP 800-53 Rev.5の管理策AC-6(Least Privilege)は「組織のタスク遂行に必要な認可されたアクセスだけを許可する」最小権限の採用を求め、特権アカウントの限定(AC-6(5))や付与済み権限の定期的な見直し(AC-6(7))などの拡張を定めています(執筆時点の記載に基づく)。

実践2: ジャストインタイム(JIT)権限

強い権限ほど、「常に持っている」こと自体がリスクになります。管理者権限を常時保持しているアカウントは、それが乗っ取られた瞬間にいつでも悪用できる「立ったままの権限(standing privilege)」だからです。この常時保持を減らす考え方が、ジャストインタイム(Just-In-Time、JIT)権限です。

JIT 権限では、普段は強い権限を持たせず、必要になったときに、必要な時間だけ、承認を経て一時的に昇格させ、用が済んだら自動的に権限を返上させます。これにより、攻撃者が悪用できる「窓」を時間的に狭められます。Microsoft の cloud security benchmark でも、特権アクセスの管理として、必要なときだけ一時的に権限を付与し自動で失効させる JIT のアプローチが推奨されています。

実装にあたっての考え方は次のとおりです。

  1. 1

    常時の強い権限を棚卸しする

    管理者権限を常に持っているアカウント・役割を洗い出します。「常時必要か、必要なときだけでよいか」を分けるのが出発点です。

  2. 2

    昇格を申請・承認制にする

    強い権限は普段は外しておき、使うときに目的と時間を添えて申請し、承認を得てから一時的に有効化する流れにします。

  3. 3

    時間で自動失効させる

    一時付与した権限は、作業時間に見合った有効期限で自動的に切れるようにします。返上忘れによる権限の居残りを防げます。

  4. 4

    操作と昇格を記録する

    誰が、いつ、なぜ昇格し、何をしたかを記録します。証跡が残ることで、事後の調査と抑止の両方に効きます。

ヒント

JITは「強い権限ほど常時持たせない」という発想です。まずは影響の大きい管理者権限から対象にすると効果が出やすく、すべての権限を一気にJIT化しようとして現場が回らなくなる失敗も避けられます。

実践3: 定期的な棚卸し(アクセスレビュー)

RBAC で役割を整え、JIT で常時権限を減らしても、時間が経てば権限は必ずずれていきます。前述の privilege creep や退職者アカウントは、定期的に現状を点検する「棚卸し(アクセスレビュー、認可の再認証)」でしか見つけられません。NIST SP 800-53 Rev.5 の AC-6 にも、役割やクラスに割り当てた権限を定期的に見直す拡張(AC-6(7))が含まれており、定期レビューは原則を維持するための標準的な営みとして位置づけられています。

棚卸しで確認したい観点は、おおむね次のとおりです。

  • 各ユーザー・各役割が持つ権限が、いまの業務に照らして本当に必要か
  • 退職者・異動者・長期間ログインのないアカウントが残っていないか
  • 共有アカウントや、誰のものか説明できないアカウントがないか
  • サービスアカウント(後述)が、必要以上の権限を持っていないか
  • 一時的に付与したはずの権限が、返上されずに残っていないか

棚卸しは「やること」を決めるだけでなく、「いつ・誰が」やるかを運用に組み込むことが肝心です。年1回でも形骸化すれば意味がなく、業務を一番よく知る現場の責任者に承認させる(自分の部署のメンバーの権限が妥当かを確認させる)形にすると、実態に即した見直しになりやすくなります。

見落とされがちなサービスアカウントの最小化

人のアカウントは棚卸しの対象になりやすい一方、システム間連携やバッチ処理に使う「サービスアカウント」「APIキー」は見落とされがちです。これらは人の目に触れにくいまま、強い権限を持って動き続けることがあり、漏れたときの被害が大きくなります。サービスアカウントこそ、用途に必要な操作だけに権限を絞り(たとえば読み取りしか必要ないなら書き込み権限を与えない)、認証情報の保管と定期的な見直しを徹底することが重要です。

ゼロトラスト・認可との関係

最小権限は単独の小技ではなく、より大きな防御の考え方の中核に位置します。とくにゼロトラスト(Zero Trust)との関係を押さえると、なぜいま重視されるのかが腑に落ちます。

ゼロトラストは「決して信頼せず、常に検証する」を掲げる考え方で、その基準を示した NIST SP 800-207(Zero Trust Architecture)は、リソースへのアクセスを「セッションごとに、最小権限で」許可することを基本テナントの一つに据えています。つまり最小権限は、ゼロトラストを実現するための土台そのものです。境界(社内ネットワークの内側)を信頼して中では緩める、という発想を捨て、一つひとつのアクセスを必要最小限に絞り続けることが、ゼロトラストの実装の核になります。ゼロトラストを無理なく段階導入する進め方は

で扱っています。

また、最小権限は認可(Authorization、権限付与)の設計を「どこまで許すか」という観点で具体化したものとも言えます。認可で「誰に何を許すか」を決め、その許す範囲を最小限に絞るのが最小権限です。さらに、サーバー単体で見れば、最小権限はハードニング(要塞化)の4本柱の一つでもあります。サービスを専用の低権限ユーザーで動かす、sudo の範囲を限定するといった具体策はサーバー堅牢化の文脈で詳しく扱っているため、

もあわせて読むと、原則と具体策がつながります。

NIST SP 800-207(Zero Trust Architecture)は、認証・認可をセッション確立の前に行う離散的な機能と位置づけ、リソースへのアクセスをセッション単位かつ最小権限で許可することを基本テナントの一つとして示しています(執筆時点の記載に基づく)。

よくある質問

最小権限を徹底すると、現場の業務が遅くなりませんか?
権限の申請・承認に手間が増える面はありますが、それは「強い権限を常に持たせるリスク」とのトレードオフです。実務では、影響の小さい権限は役割(RBAC)であらかじめ過不足なく割り当て、影響の大きい管理者権限だけをJIT(必要なときだけ一時付与)にする、といった軽重の付け方で、現場の負担を抑えつつ守りを固めるのが現実的です。
RBACを入れれば最小権限は達成できますか?
RBACは最小権限を実現しやすくする手段ですが、それ自体が達成を保証するわけではありません。役割に過剰な権限を盛り込めば、その役割を持つ全員が過剰権限になります。役割の定義を最小権限で設計し、定期的に見直すことが前提です。
ジャストインタイム権限は小さな組織でも必要ですか?
規模に関わらず、強い管理者権限ほど常時保持しないという発想は有効です。専用ツールがなくても、強い権限を普段は外しておき、使うときだけ有効化して終わったら戻す、という運用ルールから始められます。まずは影響の大きい権限から対象にするとよいでしょう。
サービスアカウントやAPIキーも最小権限の対象ですか?
対象です。むしろ人の目に触れにくく見落とされやすいため、注意が必要です。用途に必要な操作だけに権限を絞り(読み取りしか不要なら書き込みを与えない等)、認証情報を安全に保管し、定期的に見直してください。
最小権限とゼロトラストはどう違いますか?
最小権限は「各エンティティに必要最小限の権限だけを与える」という原則で、ゼロトラストはその原則を含む、より広い設計思想です。NIST SP 800-207は、アクセスをセッション単位かつ最小権限で許可することをゼロトラストの基本テナントの一つとしており、最小権限はゼロトラストの土台にあたります。

まとめ

最小権限の原則を回すためのチェックリスト

  • 新規のアカウント・サービスは「最小から始めて足りなければ足す」順序になっているか
  • 共有された管理者アカウントを廃し、個人アカウントに必要な権限だけを割り当てているか
  • 退職者・異動者・長期未使用アカウントを削除・見直しする手順が入退社プロセスに組み込まれているか
  • RBACで役割に権限を束ね、その役割自体を最小権限で設計・見直ししているか
  • 影響の大きい管理者権限は常時保持せず、JIT(必要なときだけ一時付与・自動失効)にできているか
  • 権限の棚卸し(アクセスレビュー)を定期的に、現場責任者の承認付きで実施しているか
  • サービスアカウント・APIキーの権限を用途に絞り、認証情報の保管と見直しを徹底しているか

最小権限の原則は、新しい製品を入れる前に、いま手元のアカウントとプロセスから「余分な権限」をそぎ落とすという、地味だが極めて費用対効果の高い守りです。効くのは、完璧な侵入防止が不可能だという前提に立ったとき。侵害されても被害を局所化し、権限昇格と横展開を一段ずつ難しくすることで、攻撃の連鎖を途中で断ち切れます。RBACで権限を整理し、JITで常時権限を減らし、定期的な棚卸しでずれを戻す。この当たり前を回し続けることが、ゼロトラストをはじめとする現代の防御の土台になります。権限は放っておくと必ず増える、という前提に立って、「減らす仕組み」を意図的に運用へ組み込むことが、最小権限を形骸化させない鍵です。

出典・参考

この記事をシェア

関連する記事