AWS CodeCommit - 列出特定存储库

时间:2018-01-15 15:48:36

标签: amazon-web-services resources policy aws-codecommit

我目前正在尝试为CodeCommit配置AWS策略,以便AWS GUI中的存储库概述页面上只显示一个特定的repo。

目前我的政策如下:

{
"Version": "2012-10-17",
"Statement": [
    {
        "Sid": "VisualEditor0",
        "Effect": "Allow",
        "Action": [
            "codecommit:Merge*",
            "codecommit:Post*",
            "codecommit:Describe*",
            "codecommit:Update*",
            "codecommit:Get*",
            "codecommit:Test*",
            "codecommit:BatchGet*",
            "codecommit:GitPull",
            "codecommit:Create*",
            "codecommit:Put*",
            "codecommit:GitPush",
            "codecommit:DeleteBranch",
            "codecommit:List*"
        ],
        "Resource": "arn:aws:codecommit:eu-central-1:12345678:mycompany.drupal.myrepo.website"
    }
]

}

但是在概述页面上,我总是遇到这个错误:

Error
User: arn:aws:iam::123456789:user/myuser@mycompany.de is not authorized to perform: codecommit:ListRepositories

2 个答案:

答案 0 :(得分:0)

我的猜测是您的策略对于被引用的AWS系统(即CodeCommit)的限制性太强。它可能需要List*和/或Describe*所有repos的权限,以便执行其基本功能,例如生成帐户中所有当前存储库的列表,就像在概述页面上一样。 / p>

作为测试,仅将codecommit:List*codecommit:Describe*权限授予Resource: "*",作为第二个策略声明,将引用特定资源的限制性更强的权限作为第一个语句:

{
"Version": "2012-10-17",
"Statement": [
    {
        "Sid": "RestrictCodeCommitAccessToSingleRepo",
        "Effect": "Allow",
        "Action": [
            "codecommit:Merge*",
            "codecommit:Post*",
            "codecommit:Update*",
            "codecommit:Get*",          
            "codecommit:Test*",
            "codecommit:BatchGet*",
            "codecommit:GitPull",
            "codecommit:Create*",
            "codecommit:Put*",
            "codecommit:GitPush",
            "codecommit:DeleteBranch"
        ],
        "Resource": "arn:aws:codecommit:eu-central-1:12345678:mycompany.drupal.myrepo.website"
    },
    {
        "Sid": "AllowBasicCodeCommitAccess",
        "Effect": "Allow",
        "Action": [
            "codecommit:Describe*",
            "codecommit:List*"  
        ],
        "Resource": "arn:aws:codecommit:eu-central-1:12345678:*"    
    }
]

我知道这不符合您列出仅授权的特定仓库的目标,但您仍然拒绝所有其他仓库的所有Create*Put*Update*等类型操作。这应该符合限制除mycompany.drupal.myrepo.website之外的所有其他回购的R / W访问的主要安全目标。

在我的用户/群组权限设置中,我经常允许用户Get* List* Describe*等基本操作允许AWS控制台中的基本操作正常运行,即使我是使用这些资源中的一个或多个限制性更强。

答案 1 :(得分:0)

不幸的是,你现在无法做到这一点。 CodeCommit中的ListRepositories不会通过授权过滤结果,这是许多AWS服务的常见模式。列出API。

相关问题