はじめに
AWSでのセキュリティ設計の中核を担うのがIAM(Identity and Access Management)です。
本章では、IAMを中心としたアクセス制御の最適化をテーマに、次の3点に焦点を当てて解説します:
- IAMポリシー設計のベストプラクティス
- ロールチェーンとSTSによる一時認証の活用
- OrganizationsによるSCP(Service Control Policies)の全社管理
組織全体のセキュリティ水準を引き上げるための、実践的な設計思想と具体例をご紹介します。
IAMポリシー設計のベストプラクティス
IAMポリシーはAWSリソースへのアクセス権限を定義するJSONベースのドキュメントです。
過剰な権限を与えたり、逆に制限しすぎたりすることで運用リスクが生まれます。以下はセキュアかつ効率的なIAM設計におけるベストプラクティスです。
1. 最小権限の原則(Principle of Least Privilege)
ユーザーやロールには、必要最小限のアクションとリソースのみを許可します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:GetObject"], "Resource": ["arn:aws:s3:::my-bucket/*"] } ] }
2. 明示的拒否を活用する
IAMでは、明示的なDenyがAllowより優先されます。
SCPやバケットポリシーなどと組み合わせて、禁止すべき操作を確実にブロックします。
3. Managed Policyの活用とカスタムポリシーのバランス
AWSが提供するManaged Policy
は保守が不要ですが、権限が広すぎることも。
可能な限りCustomer Managed Policy
で細かく制御することが望ましいです。
4. ポリシーのスコープを明確に
リソースレベルの条件(Resource、Condition)を使って、操作対象を限定しましょう。
{ "Condition": { "StringEquals": { "aws:RequestedRegion": "ap-northeast-1" } } }
ロールチェーンと一時認証(STS)の活用
複数のアカウントやシステムをまたぐアクセスを実現するためには、IAMロールの委任(AssumeRole)とAWS STS(Security Token Service)を活用するのがベストです。
ロールチェーンとは?
あるIAMロールが別のIAMロールをAssumeRole
で引き継ぐ構成をロールチェーンと呼びます。
これにより、直接の権限付与を避けつつ、安全なクロスアカウントアクセスが可能になります。
AssumeRoleの例
# 開発アカウントから本番アカウントのロールにスイッチ
aws sts assume-role \ --role-arn arn:aws:iam::123456789012:role/ProdReadOnlyRole \ --role-session-name DevToProdSession
一時認証(セッション)のメリット
- 期限付きの認証情報のため、漏洩時のリスクが低い
- 権限エスカレーションを防ぎやすい
- 条件付きアクセス(MFA必須など)が適用しやすい
STSを使うことで、ゼロトラストアーキテクチャへの布石も打てます。
Organizationsでの一括管理とSCP(Service Control Policies)
AWS Organizationsを使うことで、複数アカウントを1つの管理単位にまとめ、SCPを用いたガバナンスが可能になります。
SCPとは?
Service Control Policies(サービスコントロールポリシー)は、Organizations配下のアカウントに対して、利用可能なアクションやサービスを制限するための制御手段です。
IAMポリシーと異なり、ユーザーやロールに直接付与されるのではなく、アカウント全体に適用されます。
基本的なSCPの例
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "ec2:TerminateInstances" ], "Resource": "*" } ] }
おすすめのSCP設計指針
- ステージング環境では課金の高いサービスを制限
- 一部リージョン(例:us-east-1以外)へのデプロイ禁止
- アカウント間のロール移動に条件を追加
SCPを戦略的に使うことで、クラウド環境の誤操作・設定ミスの防止が可能になります。
まとめ
IAMとアクセス制御の最適化は、クラウドセキュリティの土台です。
今回紹介した内容を実践することで、「最小権限」「一時認証」「全社的ガバナンス」という3つの観点から、堅牢なAWS環境を構築できます。
- IAMポリシーは常に最小権限で設計
- AssumeRoleとSTSを活用してクロスアカウント管理を柔軟に
- OrganizationsとSCPで全社的な制御と可視化を実現