gde*_*dev 1 amazon-s3 amazon-ec2 amazon-web-services
我有一个在S3上托管的静态网站,我已将所有文件设置为公开.此外,我有一个带有nginx的EC2实例,它充当反向代理并且可以访问静态网站,因此S3扮演原始角色.
我现在要做的是将S3上的所有文件设置为私有,这样网站只能通过来自nginx(EC2)的流量访问.
到目前为止,我已尝试过以下内容.我已经创建了一个新的策略角色并将其附加到EC2实例
授予权限的策略:AmazonS3ReadOnlyAccess
并重新启动了EC2实例.
然后,我在S3存储桶控制台>权限>存储桶策略中创建了一个策略
{
"Version": "xxxxx",
"Id": "xxxxxxx",
"Statement": [
{
"Sid": "xxxxxxx",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::XXXXXXXXXX:role/MyROLE"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::XXX-bucket/*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
作为主要我已经设置了我在为EC2实例创建角色时获得的ARN.
"Principal": {
"AWS": "arn:aws:iam::XXXXXXXXXX:role/MyROLE"
},
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用,任何帮助表示赞赏.
如果带有nginx的Amazon EC2实例仅仅是向Amazon S3发出通用Web请求,那么问题就变成了如何将来自nginx的请求标识为"允许",同时拒绝所有其他请求.
一种方法是使用VPC Endpoint for S3,它允许从VPC直接通信到Amazon S3(而不是走出Internet网关).
然后,存储桶策略可以限制对存储桶的访问,使其只能通过该端点进行访问.
以下是来自Amazon S3的VPC端点的示例存储桶策略的存储桶策略:
以下是S3存储桶策略的示例,该策略
examplebucket仅允许从具有ID的VPC端点访问特定存储桶vpce-1a2b3c4d.策略使用aws:sourceVpce条件密钥来限制对指定VPC端点的访问.
{
"Version": "2012-10-17",
"Id": "Policy",
"Statement": [
{
"Sid": "Access-to-specific-VPCE-only",
"Action": "s3:*",
"Effect": "Allow",
"Resource": ["arn:aws:s3:::examplebucket",
"arn:aws:s3:::examplebucket/*"],
"Condition": {
"StringEquals": {
"aws:sourceVpce": "vpce-1a2b3c4d"
}
},
"Principal": "*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
那么,完整的设计将是:
| 归档时间: |
|
| 查看次数: |
2107 次 |
| 最近记录: |