同一RegionのS3汎用バケットamzn-s3-demo-allowedとamzn-s3-demo-otherに、同じEC2ロールからGetObjectできている。既存Gateway VPC EndpointはFull Access policyで、対象サブネットのS3経路、IAM・バケット側の許可、DNSと通信は確認済みである。
このEndpointを通るGetObjectだけをallowedバケットのオブジェクトに限定する。Endpointを通らない経路やListBucketは対象外とし、他にこのEndpointを利用する業務はない。
既存の広い許可を残さず、Endpoint policyをどう置き換えるか。
広い既定Allowを、対象オブジェクトへのGetObjectだけを許可するEndpoint policyへ置き換える。
詳細解説
ルートはS3への経路を選ぶもので、バケット単位のAPI認可ではない。サービスへの到達性とEndpoint policyの操作・リソース制限を分ける。
既存の広いAllowが他バケットにも一致するため、限定したAllowを足しても制限にならない。許可文全体を確認して置き換える。
GetObjectの対象はオブジェクトARNである。Endpoint側の既定の広いAllowを置き換え、他バケットへのGetObjectをこのEndpointで許可しない。IAMやバケット側の許可も引き続き必要である。
GetObjectはオブジェクト操作なので、バケットARNだけでは対象オブジェクトを許可できない。ListBucket等のバケット操作と必要なARNを区別する。
公式資料で確認する
以下の項目を公式資料の記述と照合して確認します。
承認された同一Regionの検証バケットで、同じロールから同じEndpoint経由のGetObjectを両バケットへ実行する。policy更新の反映を待ち、実policy・対象ARN・経路と成功/拒否を照合する。
参考にした公式資料
確認できる内容
allowedのオブジェクトは読めてotherはEndpointで拒否される。Endpointを通らない要求まで制限した証拠とはせず、IAMやバケット側の許可をEndpoint policyが新設したとも扱わない。
理解のポイント
- Gateway VPC Endpoint
- Endpoint policy
- オブジェクトARN
確認時の注意
- 確認環境: AWS公式SOA-C03試験ガイドとAWS公式ドキュメントの確認
- AWS公式SOA-C03試験ガイドと各サービスの公式ドキュメントを確認する。
基礎のおさらい
広いAllowを残さない
既定policyは全操作・全リソースを許可する。対象バケット向けのAllowを追加するだけでは既存Allowを打ち消せない。本問ではpolicy全体を対象GetObjectのAllowへ置き換え、Gateway EndpointのPrincipalは*を使う。
操作とリソースの粒度を合わせる
s3:GetObjectにはarn:aws:s3:::amzn-s3-demo-allowed/*というオブジェクトARNを指定する。バケットARNのみはGetObjectの対象にならない。ListBucketも必要なら別途バケットARNの許可を検討するが、本問は対象外である。
経路と権限と適用範囲を分ける
S3 prefix listへの経路がEndpointを選び、policyがその経路の操作を制限する。Endpoint policyはIAMやbucket policyを置き換えず、別経路の要求も制限しない。更新は即時とは限らないため、反映後に同じ条件で許可・拒否の両方を確認する。