Amazon S3 存储桶策略阻止用户代理

Posted

技术标签:

【中文标题】Amazon S3 存储桶策略阻止用户代理【英文标题】:Amazon S3 Bucket Policy Block User Agent 【发布时间】:2020-06-06 18:37:19 【问题描述】:

我需要阻止来自 amazon s3 的特定用户代理。我对 S3 相当陌生,通常在 .htaccess 文件中执行此操作,据我所知,亚马逊无法做到这一点。

我看到了这个Deny access to user agent to access a bucket in AWS S3。解决方案看起来像这样:

 "Version": "2012-10-17", 
  "Statement": [ 
              "Effect": "Deny", 
              "Principal": "*", 
              "Action": "s3:*",

              "Resource": "arn:aws:s3:::bucket/*", 
              "Condition": 
                       "StringLike":  "aws:UserAgent": "*NSPlayer*"   
] 


但是,我仍然希望允许除该用户代理之外的所有其他用户访问该站点。我的政策目前如下所示:


    "Version": "2012-10-17",
    "Statement": [
        
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::www.examplesite.com/*"
        
    ]


当我尝试实现它时,我得到了无效的 json。所以,我只是好奇格式化它的正确方法是什么?我想拥有公共访问权限,但能够阻止一些不同的用户代理。另外,如果我想阻止多个用户代理,用户代理会用逗号分隔吗?

感谢您的帮助,非常感谢。

【问题讨论】:

【参考方案1】:

  "Version": "2012-10-17",
  "Statement": [
    
      "Sid": "PublicReadGetObject",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::www.examplesite.com/*"
    ,
    
      "Sid": "DenyUserAgents",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::www.examplesite.com/*",
      "Condition": 
        "StringLike": 
          "aws:UserAgent": ["*Firefox*", ... more UserAgents ...]
        
      
    
  ]

【讨论】:

以上是关于Amazon S3 存储桶策略阻止用户代理的主要内容,如果未能解决你的问题,请参考以下文章

Amazon S3 存储桶策略只允许访问特定的 http

Amazon S3 存储桶策略,我做错了啥?

向 Amazon S3 存储桶授予权限

Amazon S3 存储桶:拒绝列表、读取、写入特定文件夹

Cognito / S3 用户特定策略

Amazon S3 存储桶策略引用