【问题标题】:AWS CodeCommit - list specific repositoriesAWS CodeCommit - 列出特定存储库
【发布时间】:2018-01-15 15:48:35
【问题描述】:

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

目前我的政策如下所示:

{
"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

【问题讨论】:

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


    【解决方案1】:

    我的猜测是,您的政策对于所引用的 AWS 系统(即 CodeCommit)过于严格。它可能需要 List* 和/或 Describe* 对所有存储库的权限,以执行其基本功能,例如生成帐户中所有当前存储库的列表,就像它在概览页面上所做的那样。

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

    {
    "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 控制台中的基本操作正常运行,即使我对一个或多个操作有更多限制这些资源。

    【讨论】:

    • 是的,这是一种解决方法,但实际上不是我需要的。我们有不同的客户,不应允许彼此查看存储库。
    • 您可能无法做到这一点。 AWS 控制台需要这些基本权限才能运行。您可能需要为每个客户创建一个单独的帐户。
    【解决方案2】:

    很遗憾,您现在无法执行此操作。 CodeCommit 中的 ListRepositories 不会按授权过滤结果,这是许多 AWS 服务的 List API 的常见模式。

    【讨论】:

      【解决方案3】:

      AWS ListRepositories 不支持资源级权限。这需要资源的通配符 (*)。

      【讨论】:

        猜你喜欢
        • 2020-06-03
        • 1970-01-01
        • 1970-01-01
        • 2018-06-07
        • 1970-01-01
        • 1970-01-01
        • 2022-09-27
        • 2015-10-28
        • 2020-01-02
        相关资源
        最近更新 更多