1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【勉強会メモ】IAM(アイデンティティとアクセス管理)の基本

1
Posted at

【勉強会メモ】IAM(アイデンティティとアクセス管理)の基本

AWSを使う上で避けては通れないのが IAM(AWS Identity and Access Management) です。
AWS初学者の私が社外勉強会で学んできた知識を共有します。


1. なぜIAMが必要なのか?

チームでAWSを使う場合、全員が同じ権限で操作すると「誰かが誤って重要なサーバーを削除してしまう」「セキュリティリスクが高まる」といった問題が発生します。

IAM運用における鉄則は 「最小権限の原則(PoLP : Principle of Least Privilege)」 です。
業務に必要な「最小限の権限」だけを付与し、「誰に」「どのリソースに対して」「何の権限(操作)」を与えるかを適切にコントロールします。

[ 誰に ]  ──( ポリシー )──>  [ どのリソースに対して ] ──> [ 何の権限を行使できるか ]
 (Who)                             (Resource)                   (Action)

2. 「ルートユーザー」のルール

  • ルートユーザー:AWSアカウント作成時に作られる、すべての権限を持った最強のアカウント。
  • 運用上の基本ルール
    • 日常作業でルートユーザーを使ってはいけない。
      • ルートユーザーはIAMユーザーの作成や支払い情報の確認など、最小限の利用にとどめる。
    • 多要素認証(MFA)の設定が強く推奨される(パスワードが漏洩しても安全性を保つため)。

3. IAMアイデンティティ(操作する主体)

IAMで操作を行う主体をまとめてアイデンティティと呼びます。主に以下の3つがあります。

アイデンティティ 説明 利用イメージ
IAMユーザー AWSを利用する「人やアプリケーション」ごとのアカウント 開発者A用アカウント
IAMグループ 複数のIAMユーザーをまとめたグループ 「DevOpsチーム」「インフラチーム」
IAMロール 一時的に権限を貸し出すための仕組み EC2からS3へアクセスする際や、外部連携

💡 ポイント(ロールを経由)
リソース(EC2など)が他のAWSサービスにアクセスする際は、ポリシーをアタッチした IAMロールをリソースに付与(経由) して安全にアクセスさせます。また、リソース自体に認可情報を直接付与する(リソースベースポリシー)仕組みもあります。


4. ポリシー(権限の定義)

権限の中身を定義した設定シートのようなものをIAMポリシーと呼びます。

ポリシーの3つの種類

  1. AWS管理ポリシー
    • AWSが最初から用意してくれている標準ポリシー(例:ReadOnlyAccess, AdministratorAccess)。
  2. カスタマー管理ポリシー
    • 自分で独自に作成して再利用できるポリシー。複数のユーザーやグループに使い回しが可能。
  3. インラインポリシー
    • 単一のユーザーやロールに直接埋め込むポリシー。
    • 特徴:対象のユーザー等と一元管理され、取り外しができない(ユーザーとともに存在する)。
      • ユーザーの刺青のようなもの。

5. JSONポリシーの読み方

ポリシーはJSON形式で記述します。基本構造を押さえれば簡単に読めるようになります。
コツは下から読むことです。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:ListBucket"
      ],
      "Resource": "arn:aws:s3:::my-bucket-name/*",
      "Condition": {
        "IpAddress": {
          "aws:SourceIp": "203.0.113.0/24"
        }
      }
    }
  ]
}

主要要素の意味

  • Effect:許可(Allow)するか、拒否(Deny)するか。
  • Action:どんな操作を許可/拒否するか(例:S3のファイル取得 s3:GetObject)。
  • Resource:どのリソースに対して適用するか。
  • Condition:適用される条件(例:特定のIPアドレスからのアクセスのみ許可するなど)。

6. 矛盾した条件(Deny / Allow)の優先順位

複数のポリシーが設定され、条件が矛盾・バッティングした場合は以下のルールで判定されます。

 [明示的な拒否 (Explicit Deny)] ──(最優先)──> 絶対拒否!
         │
         ▼(ない場合)
 [明示的な許可 (Explicit Allow)] ──> 許可!
         │
         ▼(どちらもない場合)
 [指定なし (Implicit Deny)] ──(デフォルト)──> 拒否扱い!
  • 最優先は「明示拒否(Explicit Deny)」
    • たとえ Allow(許可)があっても、どこかに1つでも Deny(拒否)があれば拒否が優先されます。
  • デフォルトは「指定なし=拒否扱い(Implicit Deny)」
    • 明示的に Allow されていない操作は、すべて拒否されます(最小権限の原則)。

まとめ

  • AWSはルートユーザーのMFA設定日常利用の禁止からスタートする。
  • ユーザー・グループ・ロール(アイデンティティ)に、JSON形式のポリシーを適用して権限をコントロールする。
  • 評価ロジックは 「明示拒否が最優先」 で、 「指定がなければ原則拒否」

これらを意識して、セキュリティの保たれたAWS環境を構築しましょう!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?