我目前正在尝试为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
答案 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。