IAM (概念)
Identity and Access Management の一般概念で、認証と認可を管理する仕組み
セキュリティ認証
IAM とは
IAM (Identity and Access Management) は、「誰が (認証)」「何に (リソース)」「何をできるか (認可)」を管理する仕組みの総称である。AWS IAM は AWS 固有の実装だが、IAM の概念はクラウド、OS、アプリケーション全般に適用される。
認証 vs 認可
認証 (Authentication) は「あなたは誰?」を確認する仕組みで、ログインや MFA が該当する。認可 (Authorization) は「何をしていい?」を制御する仕組みで、管理者は削除可能、一般ユーザーは閲覧のみといった権限管理が該当する。
認証の方式
| 方式 | 説明 | 用途 |
|---|---|---|
| パスワード | 知識ベース | Web ログイン |
| MFA | 複数要素 | セキュリティ強化 |
| OAuth 2.0 / OIDC | トークンベース | SSO、ソーシャルログイン |
| API キー | 静的トークン | サーバー間通信 |
| IAM ロール | 一時的な認証情報 | AWS サービス間 |
| mTLS | 証明書ベース | マイクロサービス間 |
認可のモデル
| モデル | 説明 | 例 |
|---|---|---|
| RBAC (Role-Based) | ロールに権限を割り当て | 管理者、編集者、閲覧者 |
| ABAC (Attribute-Based) | 属性に基づく動的な権限 | 部署=営業 AND 地域=東京 |
| PBAC (Policy-Based) | ポリシーで権限を定義 | AWS IAM ポリシー |
最小権限の原則
❌ 全権限を付与
{ "Effect": "Allow", "Action": "*", "Resource": "*" }
✅ 必要最小限の権限
{ "Effect": "Allow", "Action": "dynamodb:GetItem", "Resource": "arn:aws:dynamodb:...:table/users" }
Web アプリケーションでの IAM
ユーザー → Cognito (認証) → API Gateway → Lambda
↓ JWT トークン
API Gateway が JWT を検証 (認可)
↓ 有効なトークン
Lambda が実行
ゼロトラストとの関係
従来: ネットワーク境界で信頼 (VPN 内は安全) ゼロトラスト: 全リクエストを検証 (ネットワーク位置に関係なく認証・認可)
現場での応用を知るには関連書籍も役立つ。