기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
CodeBuild 프로비저닝 역할 생성
AWS CloudFormationTerraform과 같은 코드형 인프라 (IaaC) 도구에는 다양한 유형의AWS 리소스에 대한 권한이 필요합니다. 예를 들어 iAAC 템플릿에서 Amazon S3 버킷을 선언하는 경우 Amazon S3 버킷을 생성, 읽기, 업데이트 및 삭제할 권한이 필요합니다. 역할을 필요한 최소 권한으로 제한하는 것이 보안 모범 사례로 간주됩니다. AWS리소스가 다양하기 때문에 IaAC 템플릿에 대한 최소 권한 정책을 만드는 것은 어렵습니다. 특히 해당 템플릿에서 관리하는 리소스가 나중에 변경될 수 있는 경우에는 더욱 그렇습니다. 예를 들어, 에서 관리하는 템플릿을 최근에 편집한AWS Proton 경우 RDS 데이터베이스 리소스를 추가합니다.
적절한 권한을 구성하면 IaC를 원활하게 배포하는 데 도움이 됩니다. AWS Proton CodeBuild 프로비저닝은 고객 계정에 있는 CodeBuild 프로젝트에서 고객이 제공한 임의의 CLI 명령을 실행합니다. 일반적으로 이러한 명령은 다음과 같은 IaAC (코드형 인프라) 도구를 사용하여 인프라를 생성하고 삭제합니다AWS CDK. 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
콘솔을 사용하려는 경우 역할을 생성할 때 다음 사항을 확인하십시오.
-
신뢰할 수 있는 엔티티의 경우AWS 서비스를 선택한 다음 선택합니다 CodeBuild.
-
권한 추가 단계에서 연결하려는 다른 정책을 선택합니다
AWSProtonCodeBuildProvisioningBasicAccess
.
관리자 액세스
AdministratorAccess
정책을 CodeBuild 프로비저닝 역할에 연결하면 권한 부족으로 인해 모든 IaAC 템플릿이 실패하지 않도록 보장됩니다. 또한 환경 템플릿이나 서비스 템플릿을 만들 수 있는 사용자는 관리자가 아니더라도 관리자 수준의 작업을 수행할 수 있습니다. AWS Proton CodeBuild 프로비저닝AdministatorAccess
역할과 함께 사용하지 않는 것이 좋습니다. CodeBuild 프로비저닝AdministratorAccess
역할과 함께 사용하기로 결정했다면 샌드박스 환경에서 사용하십시오.
IAMAdministratorAccess
콘솔에서 또는 다음 명령을 실행하여 역할을 생성할 수 있습니다.
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 CDKwithAWS 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