セキュリティアーキテクチャ

認可とIAM ― 最小権限を貫く実務 ― 生成AI時代のアーキテクチャ超入門

認可とIAM ― 最小権限を貫く実務 ― 生成AI時代のアーキテクチャ超入門

本記事について

当サイトを閲覧いただきありがとうございます。 本記事はシリーズ『生成AI時代のアーキテクチャ超入門』の「セキュリティアーキテクチャ」カテゴリ第3弾として、認可とIAMについて解説する記事です。

認証で鍵穴を通しても、認可でどこまで入れるかを絞らなければシステムは常時丸裸(Capital One事件の1億人流出が典型)。本記事ではRBACABACReBACの3モデル、最小権限の原則、IAM運用、サービスアカウント、そしてAI時代に人間より機械の権限を厳しくすべき理由を解説します。

このカテゴリの他の記事

この記事の守備範囲

記事扱う範囲
本記事(認可とIAM)RBAC / ABAC / ReBAC / 最小権限 / IAM運用 / Service Account
50/01 認証設計認証強度 / MFA / Passkey / IDaaS / SSO
20/07 認証・セッションセッション技術 / JWT / OAuth実装
30/07 認証認可ブラウザ側の認可UI / XSS / CSRF

本記事の問いは誰に何を許すか本人確認ではなく、権限の設計と運用の話です。

鍵を配る相手が増えるほど、家は危うくなる

認証で「本人」を確認できても、権限設計が雑だと全員管理者と同じ状態になります。認可は最小権限の原則に基づき、必要最小限の権限だけを付与するのが鉄則です。

全員にadmin権限最も多いインシデントの温床。最小権限を貫きます。

なぜ必要か

① 内部不正・事故の被害を限定する

必要のない権限を持たせると、内部不正・誤操作で大きな被害が出ます。退職者が引き続きアクセスできる事件も頻発します。

② 規制・監査対応

SOX法(米国企業改革法)・個人情報保護法・HIPAA(米国医療情報保護法)──多くの規制で誰が何にアクセスできるかの管理と監査が要求されます。IAMが整備されていないと監査に落ちます。

③ クラウド時代は権限が爆発する

AWS だけで数百種類のAPIがあり、マイクロサービスSaaSが増えるほど権限管理が複雑化します。手動管理は破綻するため、体系的なIAM設計が必須です。

認証と認可の違い

よく混同される2つの概念ですが、役割は明確に違います。認証で「誰か」を確認し、認可で「何ができるか」を決めます。両方が揃って初めて安全なアクセス制御になります。

認証(AuthN)認可(AuthZ)
目的本人確認権限判定
問い「あなたは誰?」「それをする権限ある?」
タイミングログイン時各操作時
パスワード・MFAファイル読取・管理画面

認証は1回、認可は毎回行われます。認可のロジックを軽量かつ正確に設計できるかが、システムのスケーラビリティとセキュリティを左右します。

flowchart LR
    subgraph RBAC_BLOCK["RBAC (ロールベース)"]
        U1[ユーザー] --> R1[ロール]
        R1 --> P1[権限]
    end
    subgraph ABAC_BLOCK["ABAC (属性ベース)"]
        U2[ユーザー属性] --> POL[ポリシー]
        RES[リソース属性] --> POL
        ENV[環境属性<br/>時間/場所] --> POL
        POL --> P2[権限判定]
    end
    subgraph REBAC_BLOCK["ReBAC (関係ベース)"]
        U3[ユーザー] -.|owner of| DOC1[Doc]
        U3 -.|member of| TEAM[Team]
        TEAM -.|access to| DOC2[Doc]
    end
    classDef rbac fill:#dbeafe,stroke:#2563eb;
    classDef abac fill:#fef3c7,stroke:#d97706;
    classDef rebac fill:#fae8ff,stroke:#a21caf;
    class RBAC_BLOCK,U1,R1,P1 rbac;
    class ABAC_BLOCK,U2,RES,ENV,POL,P2 abac;
    class REBAC_BLOCK,U3,DOC1,DOC2,TEAM rebac;

RBAC(ロールベース認可)

RBAC は、役割(ロール)に権限をまとめ、ユーザーにロールを付与する方式です。「営業部」「経理」「管理者」といったロールに必要な権限を定義し、ユーザーにロールを割り当てるだけで権限管理ができます。管理がシンプルで、90%以上のシステムがRBACベースです。

メリットデメリット
管理がシンプル例外ケースが苦手
監査しやすいロール爆発(数百ロールに)
一括変更が容易粒度が粗い

ロール数が100を超えると破綻の兆候で、ABACへの移行を検討すべきサインです。

ABAC(属性ベース認可)

ABAC は、ユーザー・リソース・環境の属性を使って動的に権限を判定する方式です。「営業部かつ東京支店の担当者は、自部署の顧客情報だけ見られる」のようなきめ細かい制御が可能で、RBACでは表現できない複雑なルールを記述できます。

メリットデメリット
柔軟で粒度が細かい設計が難しい
ロール爆発を回避監査が複雑
時間・場所で制御可能実装コストが高い

AWS IAM ポリシーは実質ABACで、Condition句で属性による制御ができます。OSSの実装としては Open Policy Agent(OPA)Cedar(AWS製)が注目されています。

ReBAC(関係ベース認可)

ReBAC は、リソース間の関係を使って権限を判定する方式で、Google の Zanzibar が有名です。「このドキュメントの所有者のメンバーは編集できる」のようなグラフ構造の権限管理ができ、SaaS・ソーシャル系サービスで威力を発揮します。

適する場面
階層構造組織階層の権限継承
所有関係ドキュメント・フォルダ所有
メンバーシップグループ・チーム単位
共有リンク外部公開・招待

OSSの実装:SpiceDB・OpenFGA(Auth0)・Permify──これらが現代の ReBAC の実装です。Google Docs のような柔軟な共有が必要なら ReBAC を検討する価値があります。

Google Docs的な共有機能があるならReBAC。通常の業務システムはRBACで十分です。

最小権限の原則

セキュリティの最も重要な原則の1つで、業務に必要な最小限の権限だけを付与する考え方です。「とりあえず管理者権限」は最悪のアンチパターンで、侵害時の被害を最小化するためにも、権限は必ず絞ります。

やってはいけない正しい設計
全員admin役割別ロール
無期限のAPI Key短命トークン・ローテーション
全リソースアクセスリソース単位で絞る
本番と開発の権限共通化環境別にロール分離

定期的な権限棚卸しも重要で、退職者・異動者の権限は即座に削除、使っていない権限は定期的に縮小するのが運用の基本です。2019年7月の Capital One 情報流出事件は、過剰に設定された IAM ロールと WAF の設定ミスが突かれ、約1億600万件の顧客データが S3 から持ち出されました。最小権限を貫いていれば、WAF が破られても S3 までは届かなかった事例です。

IAMの主要概念

IAM は複数の概念の組み合わせで設計されます。クラウド(AWS・GCP・Azure)の IAM は若干用語が違いますが、構造はほぼ同じです。

概念意味
Identity(アイデンティティ)人・サービス・デバイスなどの主体
Principal権限を付与される実体
Role権限のまとまり
Policy具体的な許可/拒否のルール
Resource保護対象(データ・API等)
Action操作(読取・書込・削除)
Condition条件(時間・場所・MFA有無)

クラウドIAMの比較

クラウド3社のIAMは設計思想が少しずつ違い、それぞれに癖があります。複数クラウドを使う場合は、両方を正しく理解する必要があります。

特徴AWS IAMGCP IAMAzure AD
基本モデルPolicy中心・細かいRole中心・シンプルRBAC中心・階層
粒度極めて細かい中程度細かい
学習コスト高い低い
ベストプラクティス最小権限・ロール分離組み込みロール優先グループ中心

AWS IAMは粒度細かいが難しいため、ポリシー設計を専門家に任せる企業も多いです。

サービスアカウントと機械間認証

人ではなくシステム同士の認証・認可IAMの重要な領域です。マイクロサービス間通信・バッチジョブ・AIエージェントなど、非人間のアクセスが爆発的に増えています。

認証方式用途
Service Accountクラウド内のサービス同士
Workload IdentityK8s(Kubernetes)Pod → クラウドAPI
mTLS(相互TLS)マイクロサービス間
OAuth Client Credentials外部システム連携
SPIFFE / SPIRE汎用ID基盤(OSS標準)

永続的なAPI Keyは極力避け、短命のトークンを発行する設計が現代の標準です。

権限の委譲と代理アクセス

「AさんのPermissionでBさんが作業する」「サービスAがサービスBの権限で呼び出す」という権限の委譲も設計論点です。誤った実装は横取り攻撃(Confused Deputy、権限を持つ仲介役を騙して攻撃者の操作を代行させる手口)を招きます。

パターン方式
Role Assumption(AWS)STS(Security Token Service、一時認証トークン発行)で一時的に別ロールに変身
Impersonation(GCP)サービスアカウントの代理実行
On-Behalf-Of(OAuth)認可済ユーザーの代理操作
Delegation(委譲)明示的な権限の付与

委譲は監査ログで「誰が誰の権限で何をしたか」を追跡可能にしておくのが必須です。

判断基準

① システム規模

IAMの複雑さはシステム規模で決まります。小規模でABACReBACを採用すると過剰で、運用が追いつきません。

規模推奨
小規模・数ロールRBAC(シンプルに)
中規模・条件分岐ありRBAC + 属性条件
大規模・権限が複雑ABAC(OPA・Cedar)
ソーシャル・共有多いReBAC(SpiceDB・OpenFGA)

② 規制要件

監査対応が必要な業種では、権限の付与・変更・利用の全てを記録できる仕組みが必須です。

業種必須IAM要件
金融職務分掌・承認フロー・監査ログ
医療アクセスログ・最小権限・患者別制御
政府系多段階承認・物理隔離・クリアランス
一般企業退職者処理・定期棚卸し

ケース別の選び方

一般的な業務SaaS(部署と役割が主軸)

RBAC + クラウドIAM組み込みロール。部署・職種でロールを切り、Okta/Entra IDで一元管理。複雑化したら条件(Condition)で補強。

Google Docs系の共有モデル(所有者・閲覧者)

ReBAC(SpiceDB / OpenFGA)。所有・共有・階層の関係をグラフで表現できるため、「ユーザーがフォルダを共有すると配下ファイルも自動共有」といった振る舞いを自然に実装できる。

金融・医療の厳格なアクセス制御

ABAC(OPA / Cedar)+ 強い監査。部署 × データ種別 × 時間帯 × MFA有無 のような多次元条件を制御可能。承認フロー・職務分掌をIAMに組み込む。

マイクロサービス間・AIエージェント

Workload Identity + 短命トークン + mTLS。永続API Keyは禁止。エージェントごとに専用サービスアカウントを発行し、スコープを最小化。

権限設計の段階別ロードマップ

IAM「いきなりABACでは運用が止まるため、規模と複雑度で段階的に昇格させます。

フェーズ人数・規模推奨モデル実装例ロール数目安
スタートアップ〜10人素のRBACadmin / editor / viewer3〜5個
成長期〜30人RBAC + 部署属性RBAC + Department条件10〜30個
中規模SaaS〜300人ABAC(属性ベース)OPA / Cedarで条件付き30〜100個
共有機能あり規模不問ReBAC(関係ベース)OpenFGA / SpiceDBグラフ関係
大企業・規制業種3000人〜ABAC + 職務分掌承認フロー + 監査ログ数百個

ロール数が100個を超えると破綻の兆候で、ABACへの移行を検討すべきサインです。「とりあえずAdmin」は侵害時の被害を最大化する最悪のアンチパターン。1ロールに絞ることから始めて、必要が出たときに権限を広げるのが唯一安全な設計です。

権限はReadOnly + 明示的Actionで始める。後から広げるのは簡単、絞るのはほぼ不可能です。

IAM運用の鬼門・禁じ手

IAMで事故る典型パターンを整理します。どれも過剰権限 → 侵害時に被害最大化という構造を持ちます。

禁じ手なぜダメか
とりあえずAdminで開発・運用後で絞る日は来ない。Capital One 2019年事件(過剰IAMロールで1億600万件流出)のパターン
永続API Keyをアプリ埋め込み漏洩で即アクセス。OIDC Federation + 一時認証 + Service Accountへ
退職者のアクセス権限を数ヶ月放置2019年米大手銀行の内部不正事例。退職当日のプロビジョニング自動化が必須
ロール棚卸しを実施しない権限が累積してAdminだらけに。四半期1回の棚卸しを運用
Root / Adminアカウントの日常利用最大権限での操作ミスで全消失。MFA必須 + IAMユーザーに分離
サービスアカウントを人間ユーザー扱いMFA困難、権限管理不透明。Service Account専用ロールに分離
本番・開発・ステージングの権限共通化開発ミスが本番に伝播。環境別にロール分離
ポリシーをGUIで手作業管理変更履歴が残らない・再現不能。OPA / Cedarでコード化 + Git
AIエージェントに管理者権限付与高速大量操作で被害甚大。エージェントごとに専用・最小権限
監査ログを本番アカウント内に保管侵害時にログごと消される。別アカウント + WORM

Capital One 2019年事件IAMロールの1行の甘さが数十億円の損害に化ける典型例(詳細は本記事の業界事例セクションと付録「重大インシデント事例集」)。

IAM地味な運用こそ最強の防御。最小権限 + 定期棚卸し + ポリシーのコード化です。

AI時代の視点

AI駆動開発(バイブコーディング)とAI活用が前提になると、IAMはAIエージェントの権限境界として極めて重要になります。AIが自律的にシステムを操作する時代には、「AIがどこまでやっていいか」を権限で制御しないと、暴走時の被害が甚大です。

AI時代に有利AI時代に不利
短命トークン・スコープ限定永続API Key・全権限
OPA・Cedarでポリシーをコード化設定画面で手動管理
エージェントごとに別ロール全エージェント共通ロール
操作ログ・監査が完備ログなし・履歴追跡不可

AIエージェントは人間より危険です。高速で大量の操作を行うため、誤った認可は分単位で大損害を生みます。エージェントの権限は人間より厳しくがAI時代の新常識です。

AI時代のIAM人間より機械の権限を厳しく。暴走時の被害範囲を限定します。

筆者メモ — 「過剰権限」が企業を一撃で沈めた事例

IAM設計の怠りが一撃で企業を沈める、という話はセキュリティ業界の定番の語り草になっています。

最も有名なのが2019年のCapital One情報流出事件で、元AWSエンジニアによるWAFの設定ミス経由のSSRF攻撃」を入口に、EC2インスタンスのIAMロールが過剰権限を持っていたことが致命傷となり、約1億600万件の顧客情報がS3から持ち出されました。最小権限を貫いていれば、WAFが破られてもS3までは届かなかったはずで、「IAMロールの一行の甘さ」が8,000万ドル規模の制裁金に化けた事例として語り継がれています。

もう一つ、2019年に米大手銀行で発覚した事案では、「退職した元エンジニアのAWSアカウントが数か月間削除されずに残っていた」ことが、内部不正による顧客情報持ち出しの踏み台に使われました。退職処理のチェックリストに AWS IAM の行が1行抜けていただけという地味なミスが、数千万ドル規模の損害に繋がった典型例です。

筆者も過去、検証用に付与した強い権限をうっかり本番用ユーザーに広げてしまい、監査で指摘されるまで気づかなかった経験があります。どちらも派手なゼロデイ攻撃ではなく「最小権限と棚卸しの怠り」が根本原因で、地味な運用こそが最強の防御だという教訓を突きつけます。

IAM事故は1行の甘さで起きる。棚卸しとポリシーのコード化が最強の防御です。

よくある勘違い

  • とりあえずadmin権限で動かして後で絞る → 後で絞る日は来ない、というのはIAM運用の定番の教訓です。AdministratorAccessで走り始めたサービスが2年経っても一度も絞られず、CloudTrailを眺めても「この権限は削っていいか」の判断がつかなくなり、誰も触れなくなった、という事例はいくらでも聞かれます
  • ロール数は少ない方が管理しやすい → 少なすぎると権限が粗くなります。ただし100超える場合はABAC移行を検討。バランスが重要
  • 認可は後回しでOK → 後から入れるのが最も難しい機能。初期設計で必ず組み込む。リファクタが最悪の展開になります
  • IAMはインフラチームの仕事 → アプリケーション層の認可は開発チームの仕事です。インフラIAMとアプリ認可は別物

決めるべきこと — あなたのプロジェクトでの答えは?

以下の項目について、あなたのプロジェクトの答えを1〜2文で言語化してみてください。曖昧なまま着手すると、必ず後から「なぜそう決めたんだっけ」が問われます。

  • 認可モデルRBAC / ABAC / ReBAC
  • ロール設計(業務ロールの棚卸し)
  • ポリシー管理方法(コード化・GitOps(Git管理のファイルから自動反映する運用手法))
  • 最小権限の運用(棚卸し頻度・承認フロー)
  • 機械間認証(Service Account・mTLS
  • 監査ログ(誰がいつ何をしたか)
  • AIエージェントの権限境界(スコープ・期限)

最終的な判断の仕方

認可とIAMの核心は最小権限の原則を貫くことであり、「とりあえずadmin」は最悪のアンチパターンです。認証で本人確認できても、権限設計が雑なら全員管理者と同じ状態になります。小規模ならRBAC、複雑化したらABAC、共有関係が主役ならReBACという段階設計が合理的で、最初から過剰な仕組みを入れると運用が止まります。権限の棚卸しと退職者処理を組み込んだ運用プロセスが、技術選定と同じくらい重要になります。

もう一つの決定的な軸は人間より機械(AIエージェント)の権限を厳しくすることです。AIは高速で大量の操作を行うため、誤った認可は分単位で大損害を生みます。永続API Keyを禁止し、エージェントごとに別サービスアカウント + 短命トークン + スコープ限定で閉じ込め、OPA / Cedarでポリシーをコード化してGit管理するのが、AI時代のIAM設計の形になります。

選定の優先順位

  1. 最小権限を貫く — adminデフォルト禁止、必要最小限だけ付与し、定期的に棚卸し
  2. 規模に応じてモデルを選択 — 小はRBAC、中〜大はABAC、共有主役ならReBAC
  3. ポリシーをコードで管理 — OPA / Cedar + Gitを使い、GUI手動管理は属人化の罠
  4. エージェント権限は人間より厳しく — 短命トークン・スコープ限定・操作ログ完備

人間より機械の権限を厳しく最小権限をコードで管理し、暴走時の被害範囲を限定します。

まとめ

本記事は認可とIAMについて、RBACABACReBACの3モデル・最小権限・IAM運用・Service Account・AI時代に人間より機械の権限を厳しくする理由まで含めて解説しました。如何だったでしょうか。

最小権限を貫き、規模に応じてモデルを選択し、ポリシーをコードで管理し、エージェント権限を人間より厳しくする。これが2026年の認可とIAMの現実解です。

次回は暗号化TLS・AES・KMS・鍵管理)について解説します。

シリーズ目次に戻る → 『生成AI時代のアーキテクチャ超入門』の歩き方

それでは次の記事も閲覧いただけると幸いです。