限制对两个存储区的代码构建/管道访问,访问被拒绝

时间:2018-09-19 15:13:37

标签: amazon-web-services amazon-s3 amazon-iam aws-codebuild aws-iam

当前具有S3Full访问权限,我的代码构建正常运行。但是,当我尝试通过下面列出的策略限制codebuild的访问时,收到一条错误消息,提示我需要访问的专用仓库中的文件夹。 S3存储桶之一是常用的代码管道存储桶,另一个是我们托管的私有Maven存储库(需要AWS访问密钥)。

这是IAM政策:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:ListAllMyBuckets",
"Resource": "*"
},
{
"Action": [
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::codepipeline-us-east-1-etcetc/*",
"arn:aws:s3::: labs-maven-repo"
]
},
{
"Action": [
"s3:*"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::codepipeline-us-east-1-etcetc/*",
"arn:aws:s3:::labs-maven-repo"
]
}
]
}

以下是我在代码构建的构建阶段遇到的错误。同样有趣的是,也许值得注意的是,以下错误消息中列出了Maven存储库中的文件夹,但未列出S3存储桶本身。

WARNING Could not transfer metadata com.project.metadata:data-model:1.0-SNAPSHOT/maven-metadata.xml from/to -server name given in settings.xml file- (s3://labs-maven-repo/release): Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; 

WARNING Could not transfer metadata com.project.metadata:data-model:1.0-SNAPSHOT/maven-metadata.xml from/to -server name given in settings.xml file- (s3://labs-maven-repo/snapshot): Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; 

提前感谢大家!

P.S。这是我最早的Stack Overflow帖子之一,因此,如果有其他信息或我可以提供的任何信息,请告诉我。

2 个答案:

答案 0 :(得分:1)

如果您要从存储桶中检索数据,则只需在IAM策略中添加该存储桶的读取权限。 如果您要将数据上传到该存储桶,则需要在IAM策略中添加该存储桶的写入权限。 然后,请重试。

答案 1 :(得分:0)

对于s3:ListBucket,将存储桶指定为不带通配符的资源。因此:

  

“ arn:aws:s3 :::: codepipeline-us-east-1-etcetc”

代替

  

“ arn:aws:s3 :::: codepipeline-us-east-1-etcetc / *”

对于对象操作(您具有s3:*),请使用

  

“ arn:aws:s3 ::: labs-maven-repo / *”

代替

  

“ arn:aws:s3 ::: labs-maven-repo”。

对于S3,要考虑三种不同的操作:

  1. 所有存储桶上的操作:将多个存储桶指定为资源。
      

    例如“资源”:“ *”

  2. 存储桶本身的操作将存储桶指定为资源。
      

    例如“资源”:[“ arn:aws:s3 :::: codepipeline-us-east-1-etcetc”,“ arn:aws:s3 :::: labs-maven-repo”]

  3. 存储桶中对象的操作指定存储桶的任何前缀。
      

    例如“资源”:[“ arn:aws:s3 :::: codepipeline-us-east-1-etcetc / ”,“ arn:aws:s3 ::: labs-maven-repo / ”]