・・・AWSリソースへのアクセスを管理するサービス。
・サービスのジャンル:セキュリティ・アイデンティティ管理
・特徴:
- ユーザーがアクセスできるAWSリソースを、アクセス許可(ポリシー)によって管理する
- IAMロールを使って、AWSサービスが他のAWSリソースへアクセスできる権限を管理する
- IAMユーザーの認証情報を共有することなく、AWSアカウント内で個別のIAMユーザーを作成できる
- 追加料金なしで利用できる
・使用用途:
- 開発者ごと、チームごとにAWSリソースへのアクセス権限を細かく分ける
- EC2インスタンスなどのAWSリソースに、他のAWSリソース(S3など)へのアクセス権限を一時的に付与する
- 外部のIDプロバイダー(会社のディレクトリなど)と連携して、既存のIDでAWSにアクセスできるようにする
AWS IAM の機能
IAMユーザー・・・AWSとやり取りをする「人」または「アプリケーション」を表すエンティティ。
- 各ユーザーは一意の名前と認証情報(パスワード、アクセスキー)を持つ
グループ・・・IAMユーザーの集まり。
- グループにポリシーを適用することで、グループ内の全ユーザーに一括で権限を付与できる
- 同一ユーザーは最大10個のグループのメンバーになれる
- グループの中にグループやロールを所属させることはできない
ロール・・・特定の権限を持つ、IAMアイデンティティの一種。
- 特定の人に紐づくものではなく、必要なときに誰か(またはAWSサービス)が一時的に「引き受ける(assume)」ことを前提に作られる
ポリシー・・・JSON形式のドキュメントで、アイデンティティ(IAMユーザー、グループ、ロール)またはAWSリソースにアタッチして、アクセス権限を定義する
ポリシーの種類
- アイデンティティベースのポリシー(IAMポリシー):IAMユーザー・グループ・ロールにアタッチするポリシー
- リソースベースのポリシー:S3バケットポリシーのように、AWSリソース側にアタッチするポリシー
ルートユーザー
・・・AWSアカウントを最初に作成する際に、自動的に発行される、すべてのAWSサービスとリソースへの完全なアクセス権を持つサインインアイデンティティ。
- 日常的な作業をルートユーザーで行うことは推奨されておらず、適切な権限を持つIAMユーザーを作成して使用するのがベストプラクティス
アクセス許可の評価ロジック
- IAMでは、明示的な許可がない限り、デフォルトではすべてのリクエストが暗黙の拒否となる
- 適用されるポリシーの中に明示的な拒否が1つでもあれば、他に許可があっても最終的な結果は「拒否」となる(明示的な拒否が最優先)
特権エスカレーションの防止
- 完全なIAM権限を持つプリンシパル(ユーザーなど)は、他の権限が付与されていなくても、実質的にIAMポリシーを自ら書き換えることで、あらゆる権限を得られてしまう可能性がある
- そのため、IAMに関する強い権限を付与する際は、対象を最小限に絞るなどの配慮が必要
サービスコスト
- IAM自体は無料
- IAMと統合された分析ツール「IAM Access Analyzer」には、無料の機能と有料の機能が混在する