use*_*402 3 ip-address amazon-s3 amazon-web-services pre-signed-url
客户端应用程序请求S3的预签名URL.目前,我们限制URL有效的时间,但也希望将其限制为客户端的IP地址.
是否可以创建限于特定IP地址的S3预签名URL?
据我所知,只有CloudFront会让我这样做.
是!
首先,值得解释一个预签名URL的概念.
默认情况下,Amazon S3中的对象是私有的.因此,如果有人试图在不提供凭据的情况下访问它,则访问将被拒绝.
例如,这不适用于私有对象:
https://my-bucket.s3.amazonaws.com/foo.json
Run Code Online (Sandbox Code Playgroud)
要授予对对象的临时访问权限,可以生成预签名URL.它看起来类似于:
https://my-bucket.s3.amazonaws.com/x.json?AWSAccessKeyId=AKIAIVJQM12345CY3A3Q&Expires=1531965074&Signature=g7Jz%2B%2FYyqc%2FDeL1rzo7WM61RusM%3D
Run Code Online (Sandbox Code Playgroud)
URL说"我是*这个*特定的访问密钥,我授权临时访问,直到*这个*时间,这是我计算的签名,以证明它是我".
使用预签名URL时,它会临时使用签名实体的权限来访问该对象.这意味着我可以生成,我允许访问的对象的有效预标识的URL,但前期标识的URL将不会如我一般不允许访问对象的工作.
因此,要"创建限制为特定IP地址的S3预签名URL",您应该:
以下是IAM用户的示例策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "IPAllow",
"Effect": "Allow",
"Action": "s3:*",
"Resource": "arn:aws:s3:::my-bucket/*",
"Condition": {
"IpAddress": {
"aws:SourceIp": "54.22.33.44/32"
}
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
结果将是一个预先签名的URL,可以成功访问该对象,但由于不符合IP地址限制,S3会拒绝该URL.用户将收到"拒绝访问"消息.
| 归档时间: |
|
| 查看次数: |
1698 次 |
| 最近记录: |