为何AWS CodeCommit策略无法阻止向releases子分支推送变更?
IAM策略失效问题分析与修复
你的策略未生效的核心问题是分支匹配规则错误,具体问题和修复方案如下:
1. 分支匹配模式不正确
当前StringLikeIfExists条件中使用的"refs/heads/releases/"只会精确匹配名称为releases/的分支(注意末尾的斜杠),但你的目标是限制releases/3.4.1、releases/4.1.4这类带版本号的子分支,需要添加通配符*来匹配releases/路径下的所有分支,修正为"refs/heads/releases/*"。
2. 额外检查点
- 确认用户没有其他允许推送的IAM策略:如果用户被其他策略授予了
codecommit:GitPush的允许权限,且该策略未被当前拒绝策略覆盖,会导致拒绝规则不生效。IAM权限判断逻辑是:存在允许策略且无对应拒绝策略时,权限生效。 Null条件部分无需修改:"Null": {"codecommit:References": false}确保只有当推送操作明确指定分支时才触发拒绝,这个逻辑是合理的。
修正后的IAM策略
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "codecommit:GitPush" ], "Resource": "arn:aws:codecommit:(myRegion):(myAccount):(myReposotory)", "Condition": { "StringLikeIfExists": { "codecommit:References": [ "refs/heads/releases/*" ] }, "Null": { "codecommit:References": false } } } ] }
内容的提问来源于stack exchange,提问作者Mauty404
相关产品推荐
相关产品推荐

