本文へスキップ
BecomeCoder

AWSコース · 第7章 セキュリティとコンプライアンス · レッスン34

IAM ― ユーザー・グループ・ロール・ポリシー

導入

「この社員にはS3だけ触らせたい」「このアプリにはDynamoDBへの書き込みだけ許可したい」——そんな細かい権限管理を実現するのがIAMです。

説明

**AWS IAM(Identity and Access Management)**は、「誰が(認証)」「何に対して(認可)」アクセスできるかを管理するサービスです。無料で利用でき、次の4つの要素で構成されます。

  • ユーザー(User) … 人やアプリケーションを表す個別のID。サインイン用のパスワードや、プログラムから使うアクセスキーを持てる。
  • ループ(Group) … ユーザーの集まり。「開発チーム」「経理チーム」のようにまとめておき、グループに権限を付与すれば所属ユーザー全員に一括で適用できる。
  • ロール(Role) … 特定の作業のために一時的に引き受ける権限のセット。パスワードを持たず、EC2インスタンスやLambda関数、あるいは他のAWSアカウントのユーザーに「一時的に借りる」形で割り当てる。
  • ポリシー(Policy) … 「何を許可・拒否するか」をJSON形式で定義したドキュメント。ユーザー・グループ・ロールに** アタッチ(関連付け)**することで実際の権限になる。
flowchart LR
    U["IAMユーザー"] --> G["IAMグループ"]
    G --> P1["ポリシー"]
    U --> R["IAMロール<br/>(一時的な権限)"]
    R --> P2["ポリシー"]
    EC2["EC2インスタンス"] -.引き受け.-> R

ポリシーの実体は、次のようなJSONです。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::sample-bucket/*"
    }
  ]
}

Effect(許可か拒否か)・Action(対象の操作)・Resource(対象のリソース)の3点セットで、「誰が」の部分はこのポリシーをアタッチされた側(ユーザーやロール)によって決まります。IAMの設計では、必要な権限だけを与える**最小権限の原則(Principle of Least Privilege)**が基本方針です。

読んでみよう

「人にはユーザー・グループ、モノや一時的な作業にはロール」という使い分けと、権限の実体はポリシー(JSON)である、という点はセットで覚えておきましょう。