Я пытаюсь создать новый проект в AWS CodeBuild. Каждый раз, когда я пытаюсь, я получаю следующую ошибку:
Not authorized to perform DescribeSecurityGroups
Любая помощь будет принята с благодарностью.
Я пытаюсь создать новый проект в AWS CodeBuild. Каждый раз, когда я пытаюсь, я получаю следующую ошибку:
Not authorized to perform DescribeSecurityGroups
Любая помощь будет принята с благодарностью.
Вероятно, вам не хватает разрешений, связанных с VPC, в вашей сервисной роли. Вам необходимо обновить роль, чтобы иметь следующую политику:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:CreateNetworkInterface",
"ec2:DescribeDhcpOptions",
"ec2:DescribeNetworkInterfaces",
"ec2:DeleteNetworkInterface",
"ec2:DescribeSubnets",
"ec2:DescribeSecurityGroups",
"ec2:DescribeVpcs"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"ec2:CreateNetworkInterfacePermission"
],
"Resource": "arn:aws:ec2:{{region}}:{{account-id}}:network-interface/*",
"Condition": {
"StringEquals": {
"ec2:Subnet": [
"arn:aws:ec2:{{region}}:{{account-id}}:subnet/[[subnets]]"
],
"ec2:AuthorizedService": "codebuild.amazonaws.com"
}
}
}
]
}
Это означает, что связанная роль IAM не имеет прикрепленной политики, позволяющей CodeBuild описывать группы безопасности.
Если вы пытаетесь создать новый проект сборки и выбрали «Новая роль службы» (создайте роль службы в своей учетной записи) и в то же время добавили VPC, подсети и группы безопасности в Раздел «Дополнительная конфигурация» — вы получите сообщение об ошибке «Не разрешено выполнять DescribeSecurityGroups».
По какой-то причине автоматически созданная политика AWS выглядит так:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Action": [
"ssm:GetParameters",
"logs:PutLogEvents",
"logs:CreateLogStream",
"logs:CreateLogGroup",
"ecr:UploadLayerPart",
"ecr:PutImage",
"ecr:InitiateLayerUpload",
"ecr:GetAuthorizationToken",
"ecr:CompleteLayerUpload",
"ecr:BatchCheckLayerAvailability"
],
"Resource": "*"
}
]
}
Это не разрешает ничего, связанного с VPC/EC2, поэтому вы можете либо заранее создать правильную политику и использовать ее, либо позволить AWS создать проект без VPC и изменить новую политику, добавив необходимые службы в блок «Действие»:
"Action": [
"ssm:GetParameters",
"logs:PutLogEvents",
"logs:CreateLogStream",
"logs:CreateLogGroup",
"ecr:UploadLayerPart",
"ecr:PutImage",
"ecr:InitiateLayerUpload",
"ecr:GetAuthorizationToken",
"ecr:CompleteLayerUpload",
"ecr:BatchCheckLayerAvailability",
"ec2:DescribeSecurityGroups",
"ec2:DescribeSubnets"
],
У меня была такая же проблема при использовании cloudformation. Проблема заключалась в том, что роль IAM создавалась до начала создания CodeBuild, но политика, связанная с ролью IAM, создавалась после создания CodeBuild.
Решением этой проблемы было добавление DependsOn
в CodeBuild, указывающее, что сначала необходимо создать политику.
Ex:
CodeBuildIamRole:
Type: 'AWS::IAM::Role'
Properties:
RoleName: 'CodeBuildAutomatedTestingRole'
AssumeRolePolicyDocument:
Statement:
- Action: 'sts:AssumeRole'
Effect: Allow
Principal:
Service: codebuild.amazonaws.com
Path: /
CodeBuildIamPolicy:
Type: 'AWS::IAM::Policy'
Properties:
PolicyName: !Sub 'CodeBuildServiceRolePolicy-${AWS::StackName}'
PolicyDocument:
Statement:
- Action:
- 's3:PutObject'
- 's3:GetObject'
- 's3:GetObjectVersion'
- 's3:ListBucket'
Effect: Allow
Resource: '*'
- Action:
- 'logs:CreateLogGroup'
- 'logs:CreateLogStream'
- 'logs:PutLogEvents'
- 'ec2:CreateNetworkInterface'
- 'ec2:DescribeDhcpOptions'
- 'ec2:DescribeNetworkInterfaces'
- 'ec2:DeleteNetworkInterface'
- 'ec2:DescribeSubnets'
- 'ec2:DescribeSecurityGroups'
- 'ec2:DescribeVpcs'
- 'ec2:CreateNetworkInterfacePermission'
- 'ecr:*'
- ...
Effect: Allow
Resource:
- '*'
Roles:
- !Ref CodeBuildIamRole
CodeBuild:
DependsOn:
- CodeBuildIamPolicy
Type: "AWS::CodeBuild::Project"
Properties:
...
Надеюсь, это полезно