【问题标题】:Having trouble creating a policy in AWS在 AWS 中创建策略时遇到问题
【发布时间】:2020-12-07 07:04:10
【问题描述】:

我的任务是在 AWS 中创建我认为是存储桶策略的任务。我已将视频上传到 S3 存储桶,我必须创建一个策略来限制谁可以根据他们的 IP 地址查看它。目前我需要制作它,以便只有我家庭网络中的人可以观看它。

我还应该根据用户名限制谁可以观看。该存储桶现在可以公开查看,视频文件也是如此。

我尝试了以下两种策略,但它们都不起作用。

第一条政策:我已尝试同时使用我的私有和公共 IP 地址。

{
    "Version": "2012-10-17",
    "Id": "Policy1607205862213",
    "Statement": [
        {
            "Sid": "Stmt1607205861134",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::internshipbucket12",
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": "10.1.10.1"
                }
            }
        }
    ]
}

第二条策略:每当我尝试使用存储桶的 arn 时,都会出现某种错误。当我放入我正在使用的视频文件的 arn 时,它接受它就好了。

{
    "Version": "2012-10-17",
    "Id": "S3PolicyId1",
    "Statement": [
        {
            "Sid": "IPAllow",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::DOC-EXAMPLE-BUCKET;",
                "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
            ],
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": "54.240.143.0/24"
                }
            }
        }
    ]
}

【问题讨论】:

  • 你为什么用他们的截图替换政策?我编辑了您的问题以更早地修复格式。
  • 我不知道你可以这样做,或者我们会这样做,我想如果事情看起来一团糟,发布照片会更容易
  • 您说“根据用户名限制谁可以观看”,但您指的是什么username?这是 AWS 登录(IAM 用户)吗?
  • 尽量避免像您的第一个策略(如果源 IP 不是 10.1.10.1,则明确、全面拒绝)。如果您输入错误的 IP 地址,您将无法访问存储桶。它会拒绝您从除该 IP 之外的任何地方进行访问,并且由于您不拥有输入错误的 IP,这意味着存储桶将无法从您的家庭 IP、AWS 控制台等使用。几乎不需要拥有一个明确的、全面的拒绝(默认情况下权限是隐式拒绝)。

标签: amazon-web-services amazon-s3 bucket


【解决方案1】:

默认情况下,Amazon S3 存储桶是私有的。因此,无需“拒绝”访问,因为默认情况下已拒绝访问。相反,您应该使用“允许”策略来允许访问。

  • 关闭Block S3 Public Access(或至少关闭涉及存储桶策略的两个部分)
  • 添加允许从给定 IP 地址访问对象的策略:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::internshipbucket12/*",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": "54.240.143.0"
                }
            }
        }
    ]
}

请注意,这是授予对公共 IP 地址的访问权限,并且只允许GetObject,因此用户需要知道他们想要的对象的确切文件名(密钥)(因为它不授予列出存储桶内容的权限)。

【讨论】:

    猜你喜欢
    • 2019-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-27
    • 1970-01-01
    • 1970-01-01
    • 2012-11-06
    • 1970-01-01
    相关资源
    最近更新 更多