S3 のバケットポリシーで Auto Scaling で自動起動した EC2 インスタンスから以外はオブジェクトの操作を許可しない、というような指定はできますか?

質問・問題

S3 のバケットポリシーで Auto Scaling で自動起動した EC2 インスタンスから以外はオブジェクトの操作を許可しない、というような指定はできますか?

回答・解決方法

はい、可能です。EC2 に付与されているロール の UserID を利用して絞る方法がございます。はじめに以下のコマンドで EC2 に付与されるロールのロール ID を取得してください。

aws iam get-role --role-name [ロール名]

ロール ID は、以下のような形式の値になっております。

"RoleId": "AROAXXXXXXXXXXXXXXXXB"

該当の EC2 インスタンスから、aws sts get-caller-identity でも EC2 に付与されているロール ID を確認します。結果の UserId にロール ID が入っているのをご確認いただけます。

以下の「:」以下は、インスタンス ID となっておりますので、バケットポリシーの aws:userId で絞る際にインスタンス ID を * とする形です。

"UserId": "AROAXXXXXXXXXXXXXXXXB:i-XXXXXXXXXXXXXXXXX"

バケットポリシーの Resource と Condition は、以下のように記載いたします。

"Resource": "arn:aws:s3:::[Bucket Name]/*",
"Condition": {
"StringNotLike": {
"aws:userId": "AROAXXXXXXXXXXXXXXXXB:*"
}
}


【参考記事】
get-role — AWS CLI 2.7.7 Command Reference
https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/get-role.html

get-caller-identity — AWS CLI 2.7.7 Command Reference
https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sts/get-caller-identity.html

この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています
他にご質問がございましたら、リクエストを送信してください