💨

AWS IAM基礎知識

2023/02/04に公開

このページについて

AWSのサービスの一つであるIAMについて学習したことをメモしていく。

IAMとは?

IAMの概要

AWSサービスを、安全に操作・実施するための認証・認可の仕組みのこと

具体的にできること

  1. AWSアカウント内のユーザー作成
  2. ユーザーのAWSリソースのアクセス権限を管理
  3. リソース間のアクセス権限を管理
  4. 一時的なアクセスを許可

IAMで登場する概念

  • IAMユーザー

    • AWS上の利用者は、IAMユーザーという権限を付与されたエンティティとして設定される
    • ルートユーザー
      • AWSアカウント作成時のアカウントのことでIAMユーザーとは別物。
    • 管理者権限
      • IAMの操作権限まであるが、ルートユーザーのみ行える操作の権限はない
    • パワーユーザー
      • IAM以外の全てのAWSリソースのフルアクセスの権限を持っている
  • IAMユーザーグループ

    • IAMユーザーをグループとしてまとめて権限を付与する仕組み
  • IAMロール

    • AWSリソースが別リソースに対するアクセス権限を付与する仕組み(例 :EC2 → S3)
    • 別のAWSアカウントのIAMユーザーにアクセス権限を委譲する際にも利用される
  • IAMポリシー

    • アクセス権限を付与するための設定ドキュメント(JSON形式)
{
    "Version": "記述言語のバージョンを記載、基本は「2012-10-17」", 
    "id":"ポリシーの識別子(なくてもいい)"
    "Statement": [
        {
            "Sid": "Statement内の識別子",
            "Effect": "アクセスの許可・拒否の設定",
            "Principal":"適用するアカウント・ユーザ・ロールを指定"
            "Action": "AWSサービスへのアクセス詳細設定 ",
            "Resource": "アクションの設定対象となるリソース",
            "Condition": "ポリシー適用対象を絞るための追加条件(特定のタグやIDに限定など)"
        }
    ]
}

ルートユーザーについて

ルートユーザーのみしかできない作業がある。

  • ルートユーザーの情報変更
  • IAMユーザーの課金情報へのアクセスに関する許可・拒否
  • 他のAWSアカウントへのRoute53のドメイン登録の移行
  • AWSサービス(サポート)のキャンセル
  • AWSアカウントの停止
  • コンソリデイテッドビリングの設定(一括請求のこと)
  • 脆弱性診断フォームの提出
  • 逆引きDNS申請

IAMで使われる用語(似たような意味でわかりづらい)

  • IAMリソース

    • IAMで保存・管理されるユーザー、グループ、ロール、ポリシー、およびIDプロバイダー
  • IAMアイデンティティ

    • ユーザー、グループ、ロール
    • AWSで認証されてグループ化に使用されるIAMリソースオブジェクトのこと
  • IAMエンティティ

    • ユーザーおよびロール
    • AWSに認証されるIAMリソースオブジェクト
  • プリンシバル

    • ルートユーザー、IAMユーザー、IAMロールを使用する人またはアプリのこと
    • フェデレーティッドユーザーと引き受けたロールも含まれる

メモ

複数のポリシーを付与した場合、両方の許可範囲が権限となる

IAMポリシーについて

IAMポリシーの種類

IAMポリシーには2つ種類が存在する

  • 管理ポリシー
    • AWS管理ポリシー
      • AWSがあらかじめ作成および管理しているIAM管理ポリシー
    • カスタマー管理ポリシー
      • AWSアカウントで作成・管理する管理ポリシー
    • 使いまわすことが可能(使用したいポリシーがない場合に自分で作成するポリシー)
    • ポリシーを変更した場合、上書きされずに新しいバージョンが作成される。
  • インラインポリシー
    • 1つのプリンシバルエンティティに埋め込まれた固有ポリシー
      使いまわしができない、誤った相手にポリシーを割り当てないようにしている。

IAMポリシー以外のボリシー

  • ユーザーベースのポリシー(上記記載のIAMポリシーのこと)
    • IAMエンティティにアタッチされているポリシー
    • ユーザーベースのポリシーの中に管理・インラインポリシーが存在する。
  • リソースベースのポリシー
    • AWSリソースにアタッチされるポリシー
    • 主にS3で設定することができる。
      • ユーザーベースでアクセス許可されていてもリソースベースでアクセス不許可にされているアクセスすることができない。

ポリシーの効果

  • 許可ポリシー
    • アクセス許可・拒否を設定するIAMポリシー
  • 信頼ポリシー
    • 外部のアカウントがアクセスする際に必要、リソースを信頼し、アクセスを許すポリシー
    • 監査人などに一時的な権限を委譲する際にも利用される(IAMロールを付与する)

IAMのアクティビティ監視

さまざまなサービスや機能を利用して、ユーザーの利用記録を管理することができる。

  • IAMアクセサスアナライザー(外部アクセスの確認)
    • 外部エンティティなど、組織とアカウントのリソースを識別してセキュリティ上のリスクであるリソースとデータの不適切なアクセスがないか特定する。
  • IAMアクセスアドバイザー(内部アクセスの確認)
    • IAMアイエンティティに許可されているサービスとアクセス日時を表示
  • Credential Report
    • 特定のIAMアイエンティティのIAM認証情報のレポートファイル
  • AWS Config
    • IAMユーザー、グループ、ロール、ポリシーの変更履歴を記録する。
  • AWS CloudTrail
    • 特定のIAMアイデンティティのアクティブやAPIコールをログに記録しモニタリングするサービス

IAM権限のベストプラクティス

IAMの権限を付与する際にAWSからベストプラクティスが公開されている。

  1. 通常はルートアカウントを使用しない
  2. 個々のIAMユーザーを作成して、IAMユーザーで管理を行う
  3. IAMユーザーへのアクセス許可を割り当てにIAMグループを利用する
  4. IAMユーザーやIAMグループには最小限の権限のみ設定する
  5. 新しくポリシーを作成するのではなく、AWS管理ポリシーを使用する
  6. インラインポリシーではなく、カスタマー管理ポリシーを使用する
  7. ユーザーのために強度の高いパスワードポリシーを設定する
  8. MFAを有効化する
  9. AmazonEC2インスタンスで実行するアプリケーションにはIAMロールを使用する
  10. 第三者に一時的に認証を付与する場合、IAMロールを使用してアクセス許可を移譲する
  11. アクセスキーを共有しない
  12. 認証情報を定期的にローテーションする
  13. 不要な認証情報を削除する
  14. AWSアカウントのアクティビティを監視する

IAM設計

IAMユーザーを作成・付与する際は、以下の指針を参考に行うといい。

  1. AWSを利用するユーザーの役割・アクセス権限を自社の組織構造と合わせて設計を行う。
  2. 少数利用の場合、IAMユーザー、中規模の場合IAMグループを利用する。
  3. 今後人数が増えたり、変わったりするのであればIAMグループを使用する。
  4. AWS利用者の特定→同じ役割や利用範囲を1つのグループとしてまとめる
  5. 利用者の役割と利用範囲を整理→グループ名の名称と最小限利用範囲を確定する。

Discussion