[英]Limit AWS EC2 Instances to Access S3 Buckets in the Same Region ONLY
我需要经常从 EC2 实例中的 S3 存储桶下载数 TB 的数据。 我想避免不必要的跨区域数据传输。
我知道Example 1: Granting a user permission to create a bucket only in a specific Region 。 我尝试了以下内容:
InstanceRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Statement:
- Action: sts:AssumeRole
Effect: Allow
Principal:
Service: ec2.amazonaws.com
Version: "2012-10-17"
Policies:
- PolicyDocument:
Statement:
- Action: s3:*
Condition:
StringLike:
s3:LocationConstraint: sa-east-1
Effect: Allow
Resource: arn:aws:s3:::*
Version: "2012-10-17"
PolicyName: s3
InstanceInstanceProfile:
Type: AWS::IAM::InstanceProfile
Properties:
Roles:
- Ref: InstanceRole
Instance:
Type: AWS::EC2::Instance
Properties:
IamInstanceProfile:
Ref: InstanceInstanceProfile
......
DependsOn:
- InstanceRole
但是,所有 S3 存储桶都拒绝我从sa-east-1
中启动的 EC2 实例进行访问,无论这些存储桶是否在sa-east-1
中。
我的案例是否有完整且有效的示例?
LocationConstraint
仅适用于CreateBucket
和CreateAccessPoint
。 请参阅: Amazon S3 的操作、资源和条件键 - 服务授权参考
最简单的方法可能是:
Allow
所有相关访问 S3 的策略,然后s3:CreateBucket
添加Deny
策略,其中s3:LocationConstraint
不是sa-east-1
尽量避免授予s3:*
,因为这也会授予删除帐户中每个存储桶和所有对象的权限!
感谢bgdnlp多多指教。 在其中的链接aws:RequestedRegion之后,通过将Condition
替换为
"Condition": {
"StringEquals": {
"aws:RequestedRegion": ["sa-east-1"]
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.