カテゴリ: AWS 更新日: 2026/03/06

AWS IAMポリシーのJSONで細かくアクセス制御する方法を初心者向けに完全解説

AWS IAMポリシーのJSONで細かくアクセス制御する方法
AWS IAMポリシーのJSONで細かくアクセス制御する方法

先生と生徒の会話形式で理解しよう

生徒

「AWSでユーザーごとに操作できる範囲を変えたいんですが、どうやって設定するんですか?」

先生

「AWSではIAMポリシーという仕組みを使って、誰が・どのサービスに・どんな操作ができるかを細かく制御できます。」

生徒

「IAMポリシーってJSONって聞いたんですが、難しそうで不安です…」

先生

「大丈夫です。JSONは決まった形を覚えれば、パズルのように組み立てるだけです。順番に見ていきましょう。」

1. AWS IAMポリシーとは何か

1. AWS IAMポリシーとは何か
1. AWS IAMポリシーとは何か

AWS IAMポリシーとは、AWSのリソースに対するアクセス権限を定義するルール集です。IAMは「Identity and Access Management」の略で、ユーザーやロール、グループの権限管理を行うサービスです。

IAMポリシーを使うことで、「誰が」「どのAWSサービスに」「どんな操作を」「どの範囲で」実行できるかを制御できます。セキュリティ対策として非常に重要で、AWS運用の基本中の基本です。

2. JSON形式で書かれる理由

2. JSON形式で書かれる理由
2. JSON形式で書かれる理由

IAMポリシーはJSON形式で記述されます。JSONは設定内容を人間にもコンピュータにも読みやすく表現できる形式です。AWSでは多くの設定がJSONで統一されており、IAMポリシーもその一つです。

最初はカッコやコロンが多くて戸惑いますが、「項目名」と「内容」がセットになっているだけなので、構造を理解すれば難しくありません。

3. IAMポリシーJSONの基本構造

3. IAMポリシーJSONの基本構造
3. IAMポリシーJSONの基本構造

IAMポリシーには決まった構造があります。まずは全体像を見てみましょう。


{
  "Version": "2012-10-17",
  "Statement": []
}

Versionはポリシーの仕様バージョンです。現在はこの値を指定しておけば問題ありません。Statementの中に、実際のアクセス制御ルールを書いていきます。

4. Statementでアクセス権限を定義する

4. Statementでアクセス権限を定義する
4. Statementでアクセス権限を定義する

Statementは配列になっており、複数のルールを記述できます。1つのルールには、Effect、Action、Resourceなどの要素があります。


{
  "Effect": "Allow",
  "Action": "s3:ListBucket",
  "Resource": "*"
}

Effectは許可か拒否かを表します。Actionは実行できる操作、Resourceは対象となるAWSリソースです。これらを組み合わせることで、細かい制御が可能になります。

5. Actionで操作内容を絞り込む

5. Actionで操作内容を絞り込む
5. Actionで操作内容を絞り込む

Actionでは、どの操作を許可または拒否するかを指定します。たとえばS3なら、一覧表示、アップロード、削除など操作ごとに分かれています。


"Action": [
  "s3:GetObject",
  "s3:PutObject"
]

このように配列で書くことで、複数の操作をまとめて指定できます。必要最小限の操作だけを許可することが、安全なAWS運用につながります。

6. Resourceで対象を限定する

6. Resourceで対象を限定する
6. Resourceで対象を限定する

Resourceでは、どのリソースに対する操作なのかを指定します。S3バケットやEC2インスタンスなど、ARNという識別子を使います。


"Resource": "arn:aws:s3:::example-bucket/*"

Resourceを絞ることで、「特定のバケットだけ操作できる」といった制御が可能になります。すべてを許可する「*」は便利ですが、使いすぎには注意が必要です。

7. Conditionでさらに細かく制御する

7. Conditionでさらに細かく制御する
7. Conditionでさらに細かく制御する

Conditionを使うと、「特定の条件を満たしたときだけ許可する」といった制御ができます。たとえば、特定のIPアドレスからのアクセスだけを許可する設定などです。


"Condition": {
  "IpAddress": {
    "aws:SourceIp": "203.0.113.0/24"
  }
}

Conditionは少し難しく感じますが、セキュリティを高めるために非常に重要な要素です。

8. よくある失敗と注意点

8. よくある失敗と注意点
8. よくある失敗と注意点

初心者がやりがちな失敗として、「とりあえず全部許可する」設定があります。一時的には動いて便利ですが、セキュリティリスクが高くなります。

IAMポリシーは最小権限の考え方が基本です。必要な操作だけを許可し、不要な権限は与えないようにしましょう。

9. 実務での活用イメージ

9. 実務での活用イメージ
9. 実務での活用イメージ

実際の現場では、IAMポリシーはユーザー単位だけでなく、ロールと組み合わせて使われることが多いです。EC2やLambdaにロールを付与することで、安全にAWSリソースへアクセスできます。

IAMポリシーのJSONを理解すると、AWSのセキュリティ設計が一気に見えるようになります。

カテゴリの一覧へ
新着記事
New1
ファイル操作コマンド
pwdコマンドの使い方を完全ガイド!初心者でもわかるLinuxで現在のディレクトリを確認する方法
New2
AWS Shield
AWS Shieldの課金体系とコスト対策を徹底解説!初心者でもわかるDDoS対策の料金構造
New3
S3(オブジェクトストレージ)
AWS S3のクロスリージョンレプリケーションを設定する方法を初心者向けにやさしく解説!
New4
RDS(データベース)
AWS RDSのメンテナンスウィンドウの設定方法を解説!初心者でもできるクラウドデータベースの管理
人気記事
No.1
Java&Spring記事人気No1
S3(オブジェクトストレージ)
AWS S3の料金体系をわかりやすく解説
No.2
Java&Spring記事人気No2
シェルとターミナル基礎
findコマンドの使い方を完全ガイド!初心者でもわかるLinuxのファイル検索の基本
No.3
Java&Spring記事人気No3
ファイル・ディレクトリ構造
Linuxの/homeディレクトリとは?役割と構造を初心者向けに徹底解説!
No.4
Java&Spring記事人気No4
AWS 基本
AWSのサービスのステータス確認方法(AWS Health Dashboard)
No.5
Java&Spring記事人気No5
プロセス・ジョブ管理
LinuxのプロセスID(PID)とは?仕組みと管理方法を初心者向けに徹底解説
No.6
Java&Spring記事人気No6
ELB(ロードバランサー)
AWS ELBでターゲットグループを設定する方法を初心者向けに解説!
No.7
Java&Spring記事人気No7
RDS(データベース)
AWS RDSのセキュリティグループ設定方法を解説!初心者でも安心のクラウドデータベース対策
No.8
Java&Spring記事人気No8
シェルとターミナル基礎
findコマンドの使い方を完全ガイド!初心者でもわかるLinuxのファイル検索の基本