AWS SAA 学習ノート:IAM
Identity and Access Management (IAM) - アイデンティティとアクセス管理
Overview (概要)
- Global Service - グローバルサービス(リージョンに依存しない)
- Root account created by default - デフォルトでルートアカウントが作成される
- Free service - 無料サービス(使用量に関係なく)
👤 ユーザー
Physical person representation - 物理的なユーザーの表現
- One person = One IAM user - 1人につき1つのIAMユーザー
- Console access with password - パスワードでコンソールアクセス可能
- Programmatic access with access keys - アクセスキーでプログラム的アクセス
- Never share IAM users - IAMユーザーの共有は禁止
- Maximum 5,000 users per account - アカウントあたり最大5,000ユーザー
👥 グループ
Collection of users for easier permission management - 権限管理を簡単にするユーザーの集合
- Contains only users, not other groups - ユーザーのみ含み、他のグループは含まない
- Users can belong to multiple groups - ユーザーは複数グループに所属可能
- Permissions inherited from groups - グループからポリシーを継承
- Maximum 300 groups per account - アカウントあたり最大300グループ
📜 ポリシー
JSON documents defining permissions - 権限を定義するJSONドキュメント
構造
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Principal": "arn:aws:iam::123456789012:user/username",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::bucket/*",
"Condition": {
"StringEquals": {
"s3:prefix": "home/${aws:username}/"
}
}
}
]
}
ポリシーの種類
Type | Description | Use Case |
---|---|---|
Identity-based Policy | IAMエンティティにアタッチ | 通常のアクセス制御 |
Resource-based Policy | リソースにアタッチ | クロスアカウントアクセス |
Permission Boundaries | 最大権限の境界設定 | 権限の上限制御 |
ACL (Access Control List) | 簡易アクセス制御 | 一部サービスのみ対応 |
Session Policies | 一時認証情報の制限 | AssumeRoleと併用 |
👩🏻🚀 ロール
Temporary credentials for services or cross-account access - サービスやクロスアカウントアクセス用の一時認証情報
- Used by AWS services (EC2, Lambda, etc.) - AWSサービスで使用
- Cross-account access - クロスアカウントアクセス
- Federated access - フェデレーションアクセス
- No long-term credentials - 長期認証情報なし
- Trust Policy defines who can assume - 誰が引き受け可能かを定義
一般的なロールタイプ
- Service Role - サービスロール(EC2, Lambda用)
- Cross-account Role - クロスアカウントロール
- Identity Provider Role - IDプロバイダーロール(SAML, OIDC)
🔐 Security Features (セキュリティ機能)
MFA (多要素認証)
- Virtual MFA devices - 仮想MFAデバイス(Google Authenticator等)
- Hardware MFA devices - ハードウェアMFAデバイス
- SMS MFA - SMS MFA(推奨されない)
Password Policy - パスワードポリシー
- Minimum length - 最小文字数
- Character requirements - 文字要件(大文字、小文字、数字、記号)
- Password expiration - パスワード有効期限
- Password reuse prevention - パスワード再利用防止
Access Methods - アクセス方法
AWS Management Console - AWSマネジメントコンソール
- Username + Password - ユーザー名 + パスワード
- MFA if enabled - MFAが有効な場合は追加認証
AWS CLI (Command Line Interface)
- Access Key ID + Secret Access Key - アクセスキーペア
- Session Token (for temporary credentials) - セッショントークン(一時認証情報)
AWS SDK (Software Development Kit)
- Same credentials as CLI - CLIと同じ認証情報
- Available for multiple languages - 複数言語対応(Python, Java, JavaScript等)
🔑 アクセスキー
Programmatic access credentials - プログラム的アクセス用認証情報
- Access Key ID (public) - アクセスキーID(公開情報)
- Secret Access Key (private) - シークレットアクセスキー(秘密情報)
- Maximum 2 access keys per user - ユーザーあたり最大2つ
- Rotate regularly - 定期的にローテーション
- Never hardcode in applications - アプリケーションにハードコーディング禁止
📊 Monitoring & Auditing - 監視と監査
IAM Credential Report - IAM認証情報レポート
- Account-level report - アカウントレベルのレポート
- All users' credentials status - 全ユーザーの認証情報ステータス
- Generated every 4 hours maximum - 最大4時間ごとに生成
IAM Access Advisor - IAMアクセスアドバイザー
- User/role level report - ユーザー/ロールレベルのレポート
- Service usage timestamps - サービス使用タイムスタンプ
- Identify unused permissions - 未使用権限の特定
AWS CloudTrail
- API call logging - API呼び出しログ
- IAM actions tracking - IAMアクション追跡
- Security analysis - セキュリティ分析
🔄 Policy Evaluation Logic - ポリシー評価ロジック
Evaluation Order - 評価順序
- Default Deny - デフォルト拒否
- Explicit Allow - 明示的許可
- Explicit Deny (overrides everything) - 明示的拒否(全てを上書き)
Decision Flow - 決定フロー
Request → Organization SCP → Resource Policy → Identity Policy → Permission Boundary → Final Decision
リクエスト → 組織SCP → リソースポリシー → アイデンティティポリシー → 権限境界 → 最終決定
🏢 Advanced Features - 高度な機能
AWS STS (Security Token Service)
- AssumeRole - ロール引き受け
- GetSessionToken - セッショントークン取得
- AssumeRoleWithSAML - SAMLでのロール引き受け
- AssumeRoleWithWebIdentity - Webアイデンティティでのロール引き受け
Cross-Account Access - クロスアカウントアクセス
- Trust relationships - 信頼関係
- External ID for enhanced security - セキュリティ強化のための外部ID
- Condition keys for access control - アクセス制御の条件キー
Identity Federation - アイデンティティフェデレーション
- SAML 2.0 - Security Assertion Markup Language
- OpenID Connect (OIDC) - OpenID Connect
- Web Identity Federation - Webアイデンティティフェデレーション
ポイント
Practice | Description | 説明 |
---|---|---|
🚫 Avoid root account | Only for initial setup | 初期設定のみに使用 |
👤 One person = One user | No sharing accounts | アカウント共有禁止 |
👥 Use groups | Assign policies to groups | グループにポリシー割り当て |
🔐 Enable MFA | Especially for privileged users | 特に特権ユーザーで有効化 |
🎭 Use roles for services | Not users for applications | アプリケーションにはロール使用 |
🔑 Rotate access keys | Regular rotation schedule | 定期的なローテーション |
📊 Regular auditing | Use credential reports | 認証情報レポートで監査 |
🔒 Least privilege | Grant minimum required permissions | 最小限の権限付与 |
💼 Use permission boundaries | Prevent privilege escalation | 特権昇格防止 |