Amazon s3 AWS S3 Bucket作为一个内部网站,用于从CI自动更新文档
我想制作一个S3存储桶,在我们构建master时从Travis CI接收内部文档,它在Travis CI上运行良好。但是,我想限制内部文档仅对我们公司的静态IP可见。我尝试使用的策略如下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",
{
"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添加通配符似乎使事情按预期进行。