Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 AWS S3 Bucket作为一个内部网站,用于从CI自动更新文档_Amazon S3_Travis Ci - Fatal编程技术网

Amazon s3 AWS S3 Bucket作为一个内部网站,用于从CI自动更新文档

Amazon s3 AWS S3 Bucket作为一个内部网站,用于从CI自动更新文档,amazon-s3,travis-ci,Amazon S3,Travis Ci,我想制作一个S3存储桶,在我们构建master时从Travis CI接收内部文档,它在Travis CI上运行良好。但是,我想限制内部文档仅对我们公司的静态IP可见。我尝试使用的策略如下 { "Version": "2012-10-17", "Id": "InternalDocs", "Statement": [ { "Sid": "Docs User", "Effect": "Allow",

我想制作一个S3存储桶,在我们构建master时从Travis CI接收内部文档,它在Travis CI上运行良好。但是,我想限制内部文档仅对我们公司的静态IP可见。我尝试使用的策略如下

{
    "Version": "2012-10-17",
    "Id": "InternalDocs",
    "Statement": [
        {
            "Sid": "Docs User",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::000000000000:user/docs"
            },
            "Action": [
                "s3:AbortMultipartUpload",
                "s3:DeleteObject",
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Resource": [
                "arn:aws:s3:::docs",
                "arn:aws:s3:::docs/*"
            ]
        },
        {
            "Sid": "Whitelisted Read",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "*",
            "Resource": "arn:aws:s3:::docs/*",
            "Condition": {
                "StringNotLike": {
                    "aws:userid": "000000000000"
                },
                "NotIpAddress": {
                    "aws:SourceIp": [
                        "0.0.0.0/32",
                        "0.0.0.0/32"
                    ]
                }
            }
        }
    ]
}
请注意,
0.0.0.0
000000000000
arn:aws:s3::docs
arn:aws:iam::000000000000000000:user/docs
都是占位符,因为我不想显示我们的实际姓名、ID或IP

我最后遇到的问题是,由于
“主体”:“*”
似乎匹配任何用户,无论是公共用户还是非公共用户,它最终都会阻止所有内容。结果是,该公司的静态ip中的任何人都可以访问bucket,但Travis CI被阻止将新版本的文档上传到bucket

我如何允许Travis CI上传到我的S3存储桶,同时仍然只允许特定IP使用
S3:GetObject查看文档,同时阻止其他人?


我在Travis CI上使用deploy函数,为用户使用AWS访问密钥和访问密码
arn:AWS:iam::000000000000:user/docs

AWS:userid
不是数字,而是以
AIDA
开头的字符串。您使用的值正确吗?@Michael sqlbot您似乎是对的,我仍在测试策略,但为userid添加通配符似乎使事情按预期进行。
aws:userid
不是数字,而是以
AIDA
开头的字符串。您是否使用了正确的值?@Michael sqlbot您似乎是对的,我仍在测试策略,但为用户ID添加通配符似乎使事情按预期进行。