IAMポリシーとは?権限を決める仕組みを初心者向けに解説

  • URLをコピーしました!

前の記事では、ルートユーザーとIAMユーザーの違いを学びました。

IAMを利用すると、AWSへアクセスするユーザーなどに 必要な権限だけを与えることができます。

では、その「権限」はどのように決めているのでしょうか?

「EC2は操作できる」
「S3は読み取りだけできる」
といった権限はどうやって決める?

AWSでは、このようなアクセス権限を定義するために IAMポリシー(IAM Policy)を使用します。

☁ AWS BEGINNER

この記事はAWS初級講座の一部です。 AWSを基礎から順番に学びたい場合は、講座一覧から学習順を確認できます。

AWS初級講座を見る →
LESSON GOAL この記事のゴール

IAMポリシーが 「誰がAWSで何をできるか」を決める権限ルール であることを理解し、基本的なポリシーを読める状態を目指します。

目次

IAMポリシーとは?

IAMポリシーとは、 AWSリソースに対するアクセス権限を定義するルール です。

簡単に表すと、IAMポリシーでは次のようなことを決めます。

ACTION 何をする?

例:S3のデータを取得する

RESOURCE 何に対して?

例:特定のS3バケット

EFFECT 許可する?拒否する?

Allow / Deny

IAMポリシー = AWSの「権限ルール」 どの操作を、どのリソースに対して、許可・拒否するのかを定義する

IAMポリシーはどのように使われる?

IAMポリシーは、 権限を必要とするIAMのユーザーやグループ、ロールなどと 関連付けて利用します。

IDENTITY IAMユーザーなど
IAM POLICY 権限を定義
AWS AWSリソース

たとえば、 あるIAMユーザーへS3を読み取る権限を持つポリシーを設定すれば、 その権限の範囲でS3へアクセスできます。

IAMポリシーはJSON形式で記述される

IAMポリシーの内容は、 JSON(JavaScript Object Notation)形式 で記述されます。

実際のポリシーを簡単な例で見てみましょう。

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

初めて見ると難しそうですが、 初級段階ではすべての書き方を暗記する必要はありません。

まずは、 Effect・Action・Resource の3つを読めるようになりましょう。

Effect・Action・Resourceを理解しよう

01 EFFECT 許可するか拒否するか

Allow または Deny

02 ACTION どの操作を対象にするか

例:s3:GetObject

03 RESOURCE どのリソースを対象にするか

例:特定のS3バケット

Effect:許可するか拒否するか

Effectでは、 そのポリシーで指定した操作を 許可するのか、拒否するのかを指定します。

ALLOW 操作を許可する
DENY 操作を拒否する

Action:どの操作を対象にするか

Actionでは、 AWSサービスで実行する操作を指定します。

s3:GetObject S3オブジェクトを取得
s3:PutObject S3へオブジェクトを保存
ec2:StartInstances EC2インスタンスを起動

Resource:どのAWSリソースを対象にするか

Resourceでは、 その操作を どのAWSリソースに対して適用するのか を指定します。

RESOURCE example-bucket

このS3バケット内のオブジェクトを対象にする

このように対象を限定することで、 「すべてのS3バケット」ではなく 特定のバケットだけアクセス可能 といった権限制御ができます。

実際にIAMポリシーを読んでみよう

先ほどのポリシーを、 日本語に置き換えてみます。

Effect Allow 許可する
Action s3:GetObject S3オブジェクトの取得を
Resource example-bucket/* このバケットに対して
POLICY MEANING 「example-bucket内のオブジェクトを取得する操作を許可する」

IAMポリシーを見るときは、 JSONを上からすべて読むのではなく、 まず Effect → Action → Resource を見ると内容を理解しやすくなります。

権限を与えていない操作はどうなる?

IAMでは、 基本的に明示的に許可されていない操作は許可されません。

NO PERMISSION 許可なし
DEFAULT アクセスできない

そのため、 IAMユーザーを作成しただけで AWSのすべてのサービスを操作できるわけではありません。

必要な操作について、 IAMポリシーなどを通じて権限を許可する必要があります。

明示的なDenyは強い

IAMのアクセス制御では、 明示的なDeny(拒否)が非常に重要です。

POLICY A Allow

S3操作を許可

POLICY B Deny

特定操作を拒否

RESULT DENY
IMPORTANT 明示的なDenyがある場合は拒否される

別のポリシーでAllowされていても、 該当する操作に明示的なDenyが適用される場合、 そのアクセスは拒否されます。

IAMポリシーでも「最小権限」が重要

前の記事で学んだ 最小権限の原則は、 IAMポリシーを設計するときにも重要です。

× TOO WIDE 必要以上の権限

EC2:すべて

S3:すべて

RDS:すべて

IAM:すべて

✓ LEAST PRIVILEGE 必要な権限だけ

S3:必要な読み取り操作のみ

「できるだけ多く」ではなく「必要な分だけ」 業務に必要な最小限の権限をポリシーで定義する

IAMポリシーにはいくつか種類がある

IAMポリシーには複数の種類がありますが、 初級ではまず次の3つを押さえておきましょう。

AWS MANAGED AWS管理ポリシー

AWSがあらかじめ作成・管理しているポリシー

CUSTOMER MANAGED カスタマー管理ポリシー

利用者が作成・管理する再利用可能なポリシー

INLINE インラインポリシー

特定のIAMユーザー・グループ・ロールに直接埋め込むポリシー

AWS管理ポリシーはあらかじめ用意されているため利用しやすく、 カスタマー管理ポリシーでは 自分たちの要件に合わせて権限を細かく設計できます。

初級段階では、 「既製のポリシー」と「自分で作るポリシー」がある というイメージを持っておけば十分です。

IAMポリシーは誰に設定するの?

IAMポリシーは、 IAMユーザーだけに使用するものではありません。

IAM POLICY 権限
USER IAMユーザー
GROUP IAMグループ
ROLE IAMロール

ここで、 まだ学習していない IAMグループIAMロール が登場しました。

この2つは、 AWSでアクセス権限を管理するときに非常に重要な仕組みです。

詳しい仕組みは次の記事で学びます。

理解度チェック:IAMポリシーを読んでみよう

表示されたポリシーを見て、 何が許可されているのか判断してみましょう。

POLICY READER

このポリシーは何を許可している?

QUESTION 1 / 3


    

    
ポリシーを読んで答えてみましょう

Effect・Action・Resourceに注目してください。

初心者が間違えやすいポイント

① IAMユーザーを作ればAWSを操作できる

× WRONG IAMユーザーを作成したからEC2やS3を操作できる

IAMユーザーなどには、 必要な権限を適切に設定する必要があります。

② ActionとResourceは同じもの

Actionは 「何をするか」、 Resourceは 「何に対して行うか」 です。

ACTION s3:GetObject

何をする?

RESOURCE S3バケット

何に対して?

③ 権限は多いほど便利だから安全

必要以上に広い権限を付与すると、 誤操作や認証情報漏えい時の影響範囲が大きくなります。

IAMポリシーでは 最小権限の原則 を意識しましょう。

確認問題:IAMポリシーを理解できたか確認しよう

QUESTION 01

IAMポリシーの主な役割はどれですか?

正解:B

IAMポリシーは、 AWSリソースに対してどの操作を許可・拒否するのかを定義します。

QUESTION 02

IAMポリシーのActionが表しているものはどれですか?

正解:A

Actionでは、 s3:GetObjectなど対象となるAWS API操作を指定します。

QUESTION 03

IAMポリシーを設計するときに重要な考え方はどれですか?

正解:C

AWSでは最小権限の原則に従い、 必要な操作だけを許可することが重要です。

YOUR SCORE 0 / 3

3問に挑戦してみましょう。

まとめ

01

IAMポリシーは AWSへのアクセス権限を定義するルール

02

基本となる Effect・Action・Resource を理解する

03

Effectでは Allow(許可)とDeny(拒否) を指定する

04

IAMでは 明示的に許可されていない操作は基本的に許可されない

05

権限設計では 最小権限の原則 が重要

次はIAMグループとIAMロールを理解しよう

IAMポリシーによって 「何ができるのか」 を定義できることが分かりました。

では、複数のユーザーへ同じ権限をまとめて設定したい場合や、 EC2などのAWSサービスへ権限を与えたい場合は どうすればよいのでしょうか?

IAM GROUP IAMグループ

複数のIAMユーザーを まとめて管理

IAM ROLE IAMロール

AWSサービスなどへ 一時的な権限を提供

次の記事では、 IAMグループとIAMロールの役割や違い を学んでいきます。

NEXT LESSON

次は「IAMグループとIAMロール」を学びましょう

IAMポリシーで定義した権限を、 実際のAWS環境でどのように管理・利用するのかを理解します。

特に 「グループ」と「ロール」の違い は、AWS IAMを理解するうえで重要なポイントです。

IAMグループとIAMロールを理解する
AWS BEGINNER

AWS初級講座の一覧へ戻る

AWS初級の学習順を確認したい場合は、 講座一覧へ戻りましょう。

← AWS初級講座へ戻る
目次