You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修正AWS CodeCommit IAM策略以阻止分支/仓库删除操作

修正后的IAM策略及说明

问题根源

你当前的策略只限制了codecommit:DeleteBranch API动作,但通过git push origin --delete命令删除分支时,实际触发的是codecommit:GitPush动作(本质是推送空引用覆盖目标分支),因此原策略无法拦截该操作。

修正后的策略

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codecommit:*",
      "Resource": "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo"
    },
    {
      "Effect": "Deny",
      "Action": [
        "codecommit:DeleteBranch",
        "codecommit:GitPush"
      ],
      "Resource": "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo",
      "Condition": {
        "ForAnyValue:StringEquals": {
          "codecommit:References": "refs/heads/*"
        },
        "Null": {
          "codecommit:DeletedReferences": "false"
        }
      }
    },
    {
      "Effect": "Deny",
      "Action": "codecommit:DeleteRepository",
      "Resource": "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo"
    }
  ]
}

策略说明

  1. 允许所有CodeCommit操作:保留原有的Allow语句,确保除被禁止的删除操作外,其他所有操作正常执行。
  2. 拦截分支删除的两种场景:
    • 禁止codecommit:DeleteBranch API动作,防止通过AWS控制台或CLI直接删除分支。
    • 禁止带删除引用的codecommit:GitPush动作:通过codecommit:DeletedReferences条件判断是否为删除分支的推送操作,匹配所有分支(refs/heads/*)。
  3. 拦截仓库删除:新增codecommit:DeleteRepository的禁止语句,防止删除整个CodeCommit仓库。

验证步骤

  • 尝试通过git push origin --delete <分支名>执行删除,应收到权限拒绝提示。
  • 尝试通过AWS CLI执行aws codecommit delete-branch --repository-name MyDemoRepo --branch-name <分支名>,同样会被拒绝。
  • 测试其他操作(如git push、创建分支、提交代码等),确认可正常执行。

内容的提问来源于stack exchange,提问作者Venkatesh Gorige

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 15:22:20