ある企業が、EC2 インスタンスで動作するアプリケーションが AWS API を呼び出す際に、特定のリージョンと特定のサービスにのみアクセスを制限したい。また、アプリケーションチームが誤って本番データを変更しないよう、読み取り専用に制限したい。最小権限の原則に従った最も適切な IAM 設定はどれか。
- A. カスタム IAM ポリシーを作成し、許可するサービス・アクション・リージョンを Condition ブロックの aws:RequestedRegion と具体的な Action で制限する。EC2 インスタンスのロールにこのポリシーをアタッチする。
- B. AWS Organizations の SCP で対象の EC2 インスタンスのロールに適用する制限を設定する。
- C. EC2 インスタンスに ReadOnlyAccess の AWS マネージドポリシーをアタッチし、アクセスを制限する。
- D. EC2 インスタンスのセキュリティグループで AWS API のエンドポイントへのアウトバウンドを制限する。
解答と解説を見る
正解: A
カスタム IAM ポリシーで、許可するサービスのアクション(例: s3:Get*、s3:List*)のみを Action に列挙し、Condition ブロックで aws:RequestedRegion 条件キーを使って特定リージョン(例: ap-northeast-1)のみを許可することで、リージョン制限と読み取り専用制限を組み合わせて実装できる。これが最小権限の原則に最も沿った設定である。選択肢CのReadOnlyAccess マネージドポリシーはリージョン制限がなく、すべてのサービス・すべてのリージョンの読み取りが許可されてしまう。特定リージョン・特定サービスへの制限要件を満たさない。選択肢BのSCP はアカウント単位の制御で、特定の EC2 インスタンスのロールのみに適用する細かい制御には IAM ポリシーの方が適している。選択肢DのセキュリティグループはL4 のネットワーク制御であり、IAM 認証の制御(どのサービスにアクセスできるか)とは別の層の制御。IAM ポリシーで行うべき制限をネットワーク層で代替することはできない。
📚 関連サービスの解説: AWS IAM ・ Amazon EC2