ウェブエンジニア問題集
第2章

IAMと最小権限 — ユーザー・グループ・ロール・ポリシーを設計する

4
この章の目次開く
権限設定を確認する人のイラスト
学習者学習者

IAMユーザー、ロール、ポリシーが全部「権限」っぽく見えて、何をどう使い分けるのか混乱します。

AWSのセキュリティ設計は、ほぼ必ず IAM(Identity and Access Management) から始まります。誰が、どのAWSリソースに、どの操作をできるのかを決める仕組みです。

SAA-C03では、IAMユーザー、IAMグループ、IAMロール、IAMポリシー、MFA、ルートユーザーの扱いが頻出です。


IAMの基本構成

要素役割実務での使い方
IAMユーザー人または個別の認証主体直接利用は減らし、必要最小限にする
IAMグループユーザーの集合開発者、運用者などの権限セットに使う
IAMロール一時的に引き受ける権限EC2、Lambda、ECS、クロスアカウントで使う
IAMポリシー許可・拒否のルール最小権限でActionとResourceを絞る

実務では、長期的なアクセスキーを持つIAMユーザーより、IAMロールと一時認証情報を優先します。EC2からS3へアクセスするなら、アクセスキーをサーバーに置くのではなく、EC2インスタンスプロファイルでIAMロールを付与します。


最小権限の考え方

最小権限とは、「必要な操作だけを、必要なリソースにだけ許可する」ことです。

悪い例:

{
  "Effect": "Allow",
  "Action": "*",
  "Resource": "*"
}
json

良い方向性:

{
  "Effect": "Allow",
  "Action": ["s3:GetObject"],
  "Resource": ["arn:aws:s3:::example-bucket/reports/*"]
}
json

実務では最初から完璧な最小権限を書くのは難しいため、AWS IAM Access AnalyzerやCloudTrailの履歴を使って権限を絞り込むことがあります。


IAMロールが正解になりやすい場面

SAA-C03では、次のような要件が出たらIAMロールを疑います。

要件代表的な設計
EC2からS3へアクセスしたいEC2にIAM Roleを付与する
LambdaからDynamoDBへアクセスしたいLambda実行ロールに権限を付与する
別AWSアカウントのリソースを操作したいクロスアカウントIAM Roleを使う
一時的な認証情報を発行したいAWS STSを使う

アクセスキーをアプリケーションに埋め込む構成は避けます。漏洩時の影響が大きく、ローテーションも難しくなるためです。


まとめ

IAMはAWS設計の土台です。

  • ルートユーザーは保護し、日常利用しない
  • 人のアクセスはIAM Identity Centerやフェデレーションを検討する
  • AWSサービス間のアクセスはIAMロールを使う
  • ポリシーは最小権限で設計する
  • 長期アクセスキーより一時認証情報を優先する

次の章では、複数アカウント、IAM Identity Center、Organizations、SCPを使った組織単位のアクセス管理を扱います。

AWSクイズに挑戦するこの章で学んだAWSの知識を、4択クイズでアウトプットして定着させよう