仕事でAWSを触ることになり、IAM周りが分からんと何もならんので調べた。 参考書

  • AWSアカウント: AWSにサインアップすることで作られるユーザ。ルートユーザとも呼ばれる。管理するリソースに対して何でもできるし、制限をかけることもできない。危険過ぎるので、必要時以外はルートユーザでアクセスすることはしない
    • 厳密には、上記のとおり、まさに「アカウント」なんだろうけど、GCPのプロジェクトのように「リソース管理の基本単位」的な意味合いで使われることが多いような気がする
  • IAMユーザ: 適宜、利用可能な機能・操作を設定できる認証主体。プログラムがこれで認証することもできるが、基本、人間が操作するとき用と思っておく。プログラムに使わせるのはIAMロールにした方が良いぽい
  • AWS Organization: 複数のアカウントを束ねて、請求を束ねたり、設定を共通化したりすることができる
    • これのおかげで、一つの会社の中に複数のアカウントを作り、本番用・開発用など分けることができる
  • IAMポリシー: Action(どのサービスか), Resource(どの機能・範囲か), Effect(許可/拒否)のセット。これをIAMユーザー・IAMグループ・IAMロールに設定することで、それらが行える操作を制御する
  • インラインポリシー: 対象(IAMユーザーなど)ごとにアドホックに設定されてるもの。基本、使わないんかな
  • 管理ポリシー: 複数のポリシーをまとめてあるもの。GCPでいうロールだと思う。AWSが設定しているものとユーザーが自分で設定するものがあるのも同じ
  • IAMユーザーの認証方法: ID/パスワード or アクセスキー/シークレット
  • IAMグループ: IAMユーザーの集合。まとめて権限を付与できる
  • IAMロール: IAMユーザーの認証状態には有効期限がない(永遠)。IAMロールでは、期間を限定した認証状態を作れる。こっちを使った方がセキュア。アカウントをまたいだアクセスなどに利用することもできる
    • EC2にロールをアサインすることで、その中で動くプログラムが、そのロールの権限で動けるようになる
  • IAMアイデンティティセンター: 複数アカウントにsingle sign onできるようにする。認証情報の提供元として、IDセンターディレクトリ(デフォルト。AWSが管理するディレクトリサービス)、Active Diretory、外部IdPなどが使える
    • 権限セット: IAMロールの雛形。ユーザー(or グループ)に、権限セット + 対象となるアカウントをアサインすることができる。これで、誰がどこで何ができるかを一元管理できる