gpt4 book ai didi

amazon-web-services - Amazon s3 预签名 URL 受 IP 地址限制

转载 作者:行者123 更新时间:2023-12-03 13:44:01 26 4
gpt4 key购买 nike

客户端应用程序请求 S3 的预签名 URL。目前我们限制了 URL 的有效时间,但也希望将其限制为客户端的 IP 地址。

是否可以创建限制为特定 IP 地址的 S3 预签名 URL?

据我所知,只有 CloudFront 会让我这样做。

最佳答案

是的!

首先,有必要解释一下预签名 URL 的概念。

Amazon S3 中的对象为 默认私有(private) .因此,如果有人试图在不提供凭据的情况下访问它,访问将被拒绝。

例如,这不适用于私有(private)对象:

https://my-bucket.s3.amazonaws.com/foo.json

授予 临时访问 到对象,一个 预签名网址 可以生成。它看起来类似于:
https://my-bucket.s3.amazonaws.com/x.json?AWSAccessKeyId=AKIAIVJQM12345CY3A3Q&Expires=1531965074&Signature=g7Jz%2B%2FYyqc%2FDeL1rzo7WM61RusM%3D

该 URL 显示“我是 *this* 特定的访问 key ,我授权临时访问直到 *this* 时间,这是我计算的签名以证明它是我”。

使用预签名 URL 时, 暂时使用签名实体的权限以访问该对象。这意味着我可以为我被允许访问的对象生成一个有效的预签名 URL,但如果我通常不被允许访问该对象,则预签名 URL 将不起作用。

因此,要“创建限制为特定 IP 地址的 S3 预签名 URL”,您应该:
  • 创建 IAM 实体 (例如 IAM 用户)有权访问具有 IP 地址限制的对象(或整个存储桶),以及
  • 使用该实体 生成预签名 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"
    }
    }
    }
    ]
    }

    结果将是一个预签名的 URL,该 URL 可以成功访问对象,但随后被 S3 拒绝,因为不满足 IP 地址限制。用户将收到 访问被拒绝 信息。

    关于amazon-web-services - Amazon s3 预签名 URL 受 IP 地址限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51407211/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com