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}/"
        }
      }
    }
  ]
}

ポリシーの種類

TypeDescriptionUse Case
Identity-based PolicyIAMエンティティにアタッチ通常のアクセス制御
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 - 評価順序

  1. Default Deny - デフォルト拒否
  2. Explicit Allow - 明示的許可
  3. 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アイデンティティフェデレーション

ポイント

PracticeDescription説明
🚫 Avoid root accountOnly for initial setup初期設定のみに使用
👤 One person = One userNo sharing accountsアカウント共有禁止
👥 Use groupsAssign policies to groupsグループにポリシー割り当て
🔐 Enable MFAEspecially for privileged users特に特権ユーザーで有効化
🎭 Use roles for servicesNot users for applicationsアプリケーションにはロール使用
🔑 Rotate access keysRegular rotation schedule定期的なローテーション
📊 Regular auditingUse credential reports認証情報レポートで監査
🔒 Least privilegeGrant minimum required permissions最小限の権限付与
💼 Use permission boundariesPrevent privilege escalation特権昇格防止