Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.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
Git AWS IAM策略限制对名称中带有通配符的CodeCommit分支的访问_Git_Amazon Web Services_Amazon Iam_Aws Codecommit - Fatal编程技术网

Git AWS IAM策略限制对名称中带有通配符的CodeCommit分支的访问

Git AWS IAM策略限制对名称中带有通配符的CodeCommit分支的访问,git,amazon-web-services,amazon-iam,aws-codecommit,Git,Amazon Web Services,Amazon Iam,Aws Codecommit,Amazon现在支持通过IAM策略逐个分支限制对CodeCommit存储库的访问。 我已经使用下面的策略形式成功地拒绝了对特定分支的访问,但找不到拒绝访问以特定名称开头的所有分支的方法。 Ie:master和develop是特定的分支,但我还有release-1、release-2等,我也想否认这一点。 我想要的是能够使用通配符。我试过释放-*但没用。 它们的格式是否可以在codecommit:References中包含通配符 { "Version": "2012-10-17",

Amazon现在支持通过IAM策略逐个分支限制对CodeCommit存储库的访问。 我已经使用下面的策略形式成功地拒绝了对特定分支的访问,但找不到拒绝访问以特定名称开头的所有分支的方法。 Ie:master和develop是特定的分支,但我还有release-1、release-2等,我也想否认这一点。 我想要的是能够使用通配符。我试过释放-*但没用。 它们的格式是否可以在codecommit:References中包含通配符

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "codecommit:GitPush",
                "codecommit:DeleteBranch",
                "codecommit:PutFile",
                "codecommit:MergePullRequestByFastForward"
            ],
            "Resource": "arn:aws:codecommit:us-east-2:80398EXAMPLE:MyDemoRepo",
            "Condition": {
                "StringEqualsIfExists": {
                    "codecommit:References": [
                        "refs/heads/master",
                        "refs/heads/develop",
                        "refs/heads/release-[now what]"
                    ]
                },
            "Null": {
                "codecommit:References": false
                }
            }
        }
    ]
}

这是一个IAM策略,假设它支持此处列出的所有条件运算符:。但由于“GitPush”操作本身在幕后涉及两个单独的操作,为了实现预期的行为,应该使用..IfExists条件运算符族。也就是说,为了在这种情况下使用通配符,应该使用StringLikeIfExists。您的政策可以是这样的:

{ 版本:2012-10-17, 声明:[ { 效果:否认, 行动:[ codecommit:GitPush ], 参考资料:arn:aws:codecommit:us-east-2:80398示例:MyDemoRepo, 条件:{ Stringlike不存在:{ codecommit:参考:[ 参考文献/标题/发布-* ] }, 空值:{ codecommit:引用:false } } }, { 效果:否认, 行动:[ codecommit:GitPush, codecommit:DeleteBranch, codecommit:PutFile, codecommit:MergePullRequestByFastForward ], 参考资料:arn:aws:codecommit:us-east-2:80398示例:MyDemoRepo, 条件:{ StringEqualsIfExists:{ codecommit:参考:[ 参考/主管/主管, 参考文献/标题/产品 ] }, 空值:{ codecommit:引用:false } } } ] }


这样,通配符匹配和精确匹配都应该得到支持。

非常有用,谢谢。StringlikeiExists是它的关键。