CodeBuild 프로비전 역할 생성 - AWS Proton

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

CodeBuild 프로비전 역할 생성

AWS CloudFormation Terraform과 같은 코드형 인프라 (IAAC) 도구에는 다양한 유형의 리소스에 대한 권한이 필요합니다. AWS 예를 들어, IaaC 템플릿이 S3 버킷을 선언하는 경우 S3 버킷을 생성, 읽기, 업데이트 및 삭제할 수 있는 권한이 필요합니다. 역할을 필요한 최소 권한으로 제한하는 것이 보안 모범 사례로 간주됩니다. AWS 리소스의 범위를 고려할 때 IAAC 템플릿에 대한 최소 권한 정책을 만드는 것은 어렵습니다. 특히 해당 템플릿으로 관리하는 리소스가 나중에 변경될 수 있는 경우에는 더욱 그렇습니다. 예를 들어, 관리 중인 템플릿을 최근에 편집한 내용에 데이터베이스 리소스를 추가합니다. AWS Proton RDS

올바른 권한을 구성하면 IaC를 원활하게 배포하는 데 도움이 됩니다. AWS Proton CodeBuild 프로비저닝은 고객 계정에 있는 CodeBuild 프로젝트에서 고객이 제공한 임의의 CLI 명령을 실행합니다. 일반적으로 이러한 명령은 AWS CDK와 같은 코드형 인프라 (IaaC) 도구를 사용하여 인프라를 생성하고 삭제합니다. CodeBuild Provisioning을 사용하는 템플릿을 포함하는 AWS 리소스를 AWS 배포하면 에서 관리하는 프로젝트에서 빌드가 시작됩니다. CodeBuild AWS명령어를 실행하는 CodeBuild 것으로 가정하는 CodeBuild 역할이 전달됩니다. CodeBuild 프로비저닝 역할이라고 하는 이 역할은 고객이 제공하며 인프라를 프로비저닝하는 데 필요한 권한을 포함합니다. 이는 담당자만 담당할 AWS Proton 수 CodeBuild 있으며 담당할 수도 없습니다.

역할 만들기

CodeBuild 프로비전 역할은 IAM 콘솔이나 에서 만들 수 있습니다. AWS CLI AWS CLI에서 생성하려면:

aws iam create-role --role-name AWSProtonCodeBuildProvisioning --assume-role-policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":"codebuild.amazonaws.com"},"Action":"sts:AssumeRole"}]}' aws iam attach-role-policy --role-name AWSProtonCodeBuildProvisioning --policy-arn arn:aws:iam::aws:policy/AWSProtonCodeBuildProvisioningBasicAccess

여기에는 CodeBuild 서비스에서 빌드를 AWSProtonCodeBuildProvisioningBasicAccess 실행하는 데 필요한 최소 권한이 포함된 도 첨부됩니다.

콘솔을 사용하려는 경우 역할을 생성할 때 다음 사항을 확인합니다.

  1. 신뢰할 수 있는 엔티티의 경우 AWS 서비스를 선택한 다음 선택합니다 CodeBuild.

  2. 권한 추가 단계에서 첨부하려는 AWSProtonCodeBuildProvisioningBasicAccess 및 기타 정책을 선택합니다.

관리자 액세스

AdministratorAccess정책을 CodeBuild 프로비전 역할에 연결하면 권한 부족으로 인해 모든 IAAC 템플릿이 실패하지 않도록 보장됩니다. 또한 환경 템플릿 또는 서비스 템플릿을 만들 수 있는 사용자는 관리자가 아니더라도 누구나 관리자 수준의 작업을 수행할 수 있습니다. AWS Proton 프로비전 AdministatorAccess 역할과 함께 사용하는 것은 권장하지 않습니다. CodeBuild CodeBuild 프로비전 AdministratorAccess 역할과 함께 사용하기로 결정했다면 샌드박스 환경에서 사용하세요.

AdministratorAccessIAM콘솔에서 또는 다음 명령을 실행하여 역할을 만들 수 있습니다.

aws iam create-role --role-name AWSProtonCodeBuildProvisioning --assume-role-policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":"codebuild.amazonaws.com"},"Action":"sts:AssumeRole"}]}' aws iam attach-role-policy --role-name AWSProtonCodeBuildProvisioning --policy-arn arn:aws:iam::aws:policy/AdministratorAccess
최소 범위 지정 역할 생성

최소 권한으로 역할을 생성하려는 경우 다음과 같은 여러 가지 방법이 있습니다.

  • 관리자 권한으로 배포한 다음 역할의 범위를 좁히세요. IAM액세스 분석기를 사용하는 것이 좋습니다.

  • 관리형 정책을 사용하여 사용하려는 서비스에 대한 액세스 권한을 부여하세요.

AWS CDK

AWS CDK 를 AWS Proton사용하고 각 환경 계정/지역에서 실행한 경우 cdk bootstrap 에 대한 역할이 이미 있습니다. cdk deploy 이 경우 CodeBuild 프로비전 역할에 다음 정책을 추가하십시오.

{ "Action": "sts:AssumeRole", "Resource": [ "arn:aws:iam::account-id:role/cdk-*-deploy-role-*", "arn:aws:iam::account-id:role/cdk-*-file-publishing-role-*" ], "Effect": "Allow" }
사용자 지정 VPC

사용자 VPC 지정으로 CodeBuild 실행하기로 결정한 경우 CodeBuild 역할에 다음과 같은 권한이 필요합니다.

{ "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface" ], "Resource": [ "arn:aws:ec2:region:account-id:network-interface/*", "arn:aws:ec2:region:account-id:subnet/*", "arn:aws:ec2:region:account-id:security-group/*" ] }, { "Effect": "Allow", "Action": [ "ec2:DeleteNetworkInterface" ], "Resource": [ "arn:aws:ec2:region:account-id:*/*" ] }, { "Effect": "Allow", "Action": [ "ec2:DescribeDhcpOptions", "ec2:DescribeNetworkInterfaces", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:DescribeVpcs" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterfacePermission" ], "Resource": "arn:aws:ec2:region:account-id:network-interface/*", "Condition": { "StringEquals": { "ec2:AuthorizedService": "codebuild.amazonaws.com" } } }

AmazonEC2FullAccess 관리형 정책을 사용할 수도 있지만 여기에는 필요하지 않을 수 있는 권한이 포함되어 있습니다. 다음을 사용하여 관리형 정책을 연결하려면CLI:

aws iam create-role --role-name AWSProtonCodeBuildProvisioning --assume-role-policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":"codebuild.amazonaws.com"},"Action":"sts:AssumeRole"}]}' aws iam attach-role-policy --role-name AWSProtonCodeBuildProvisioning --policy-arn arn:aws:iam::aws:policy/AdministratorAccess