기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
CodeBuild가 다른 AWS 서비스와 상호 작용하도록 허용
의 단계에 따라 AWS CodeBuild 에 처음 콘솔을 사용하여 시작하기 액세스하는 경우이 주제의 정보가 필요하지 않을 가능성이 높습니다. 그러나 CodeBuild를 계속 사용하면 CodeBuild가 다른 AWS 서비스와 상호 작용하도록 허용하는 등의 작업을 수행할 수 있습니다.
CodeBuild가 사용자를 대신하여 종속 AWS 서비스와 상호 작용하도록 허용하려면 AWS CodeBuild 서비스 역할이 필요합니다. CodeBuild 또는 AWS CodePipeline 콘솔을 사용하면 CodeBuild 서비스 역할을 생성할 수 있습니다. 자세한 내용은 다음을 참조하세요.
이러한 콘솔을 사용하지 않을 사용자를 위해 이 섹션에서는 IAM 콘솔 또는 AWS CLI를 사용하여 CodeBuild 서비스 역할을 생성하는 방법을 설명합니다.
중요
CodeBuild에서는 사용자를 대신하여 수행되는 모든 작업에 대해 서비스 역할을 사용합니다. 역할에 사용자에게 불필요한 권한이 포함되어 있는 경우 사용자의 권한을 실수로 에스컬레이션할 수 있습니다. 이 역할은 최소한의 권한을 부여해야 합니다.
이 페이지에서 설명하는 서비스 역할에는 CodeBuild를 사용하기 위해 필요한 최소한의 권한을 부여하는 정책이 포함되어 있습니다. 사용 사례에 따라 다른 권한을 추가해야 할 수 있습니다.
CodeBuild 서비스 역할을 생성하려면(콘솔)
https://console.aws.amazon.com/iam/
에서 IAM 콘솔을 엽니다. 다음 중 하나를 사용하여 콘솔에 이미 로그인되어 있어야 합니다.
-
AWS 루트 계정. 이는 권장하지 않습니다. 자세한 내용은 사용 설명서의 AWS 계정 루트 사용자를 참조하세요.
-
AWS 계정의 관리자 사용자입니다. 자세한 내용은 사용 설명서의 첫 번째 AWS 계정 루트 사용자 및 그룹 생성을 참조하세요.
-
AWS 계정에서 다음과 같은 최소 작업 세트를 수행할 수 있는 권한이 있는 사용자입니다.
iam:AddRoleToInstanceProfile iam:AttachRolePolicy iam:CreateInstanceProfile iam:CreatePolicy iam:CreateRole iam:GetRole iam:ListAttachedRolePolicies iam:ListPolicies iam:ListRoles iam:PassRole iam:PutRolePolicy iam:UpdateAssumeRolePolicy
자세한 내용은 사용 설명서의 IAM 정책 개요를 참조하세요.
-
-
탐색 창에서 Policies를 선택합니다.
-
정책 생성(Create Policy)을 선택합니다.
-
[Create Policy] 페이지에서 [JSON]을 선택합니다.
-
JSON 정책에 대해 다음을 입력한 다음 정책 검토를 선택합니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CloudWatchLogsPolicy", "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" }, { "Sid": "CodeCommitPolicy", "Effect": "Allow", "Action": [ "codecommit:GitPull" ], "Resource": "*" }, { "Sid": "S3GetObjectPolicy", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "*" }, { "Sid": "S3PutObjectPolicy", "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": "*" }, { "Sid": "ECRPullPolicy", "Effect": "Allow", "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "*" }, { "Sid": "ECRAuthPolicy", "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken" ], "Resource": "*" }, { "Sid": "S3BucketIdentity", "Effect": "Allow", "Action": [ "s3:GetBucketAcl", "s3:GetBucketLocation" ], "Resource": "*" } ] }
참고
이 정책에는 잠재적으로 많은 수의 AWS 리소스에 대한 액세스를 허용하는 문이 포함되어 있습니다. 가 특정 AWS 리소스에 액세스 AWS CodeBuild 하도록 제한하려면
Resource
배열의 값을 변경합니다. 자세한 내용은 AWS 서비스에 대한 보안 설명서를 참조하세요. -
정책 검토 페이지의 정책 이름에 정책의 이름(예:
CodeBuildServiceRolePolicy
)을 입력한 후 정책 생성을 선택합니다.참고
다른 이름을 사용하는 경우 이 절차 전체에서 해당 이름을 사용해야 합니다.
-
탐색 창에서 Roles를 선택합니다.
-
Create role(역할 생성)을 선택합니다.
-
역할 생성 페이지에서 AWS 서비스가 이미 선택되어 있으면 CodeBuild를 선택하고 다음: 권한을 선택합니다.
-
권한 정책 연결 페이지에서 CodeBuildServiceRolePolicy를 선택한 후 다음: 검토를 선택합니다.
-
역할 생성 및 검토 페이지의 역할 이름에 역할의 이름(예:
CodeBuildServiceRole
)을 입력한 후 역할 생성을 선택합니다.
CodeBuild 서비스 역할을 생성하려면(AWS CLI)
-
이전 절차에 설명된 대로 IAM 엔터티 중 하나에 해당하는 AWS 액세스 키와 AWS 보안 액세스 키 AWS CLI 로를 구성했는지 확인합니다. 자세한 내용은AWS Command Line Interface 사용 설명서의 AWS Command Line Interface설정을 참조하세요.
-
AWS CLI 가 설치된 로컬 워크스테이션 또는 인스턴스의 빈 디렉터리에서
create-role.json
및 라는 두 개의 파일을 생성합니다put-role-policy.json
. 다른 파일 이름을 선택하는 경우 이 절차 전체에서 해당 이름으로 바꿉니다.create-role.json
:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "codebuild.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
참고
혼동된 대리자 문제로부터 자신을 보호하기 위하여
aws:SourceAccount
및aws:SourceArn
조건 키를 사용할 것을 권장합니다. 예를 들어 다음 조건 블록을 사용해서 이전 신뢰 정책을 편집할 수 있습니다.aws:SourceAccount
는 CodeBuild 프로젝트의 소유자이고aws:SourceArn
은 CodeBuild 프로젝트 ARN입니다.서비스 역할을 AWS 계정으로 제한하려는 경우는 다음과 비슷할
create-role.json
수 있습니다.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "codebuild.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": [ "
account-ID
" ] } } } ] }서비스 역할을 특정 CodeBuild 프로젝트로 제한하려는 경우
create-role.json
이 다음과 비슷할 수 있습니다.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "codebuild.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:codebuild:
region-ID
:account-ID
:project/project-name
" } } } ] }참고
CodeBuild 프로젝트의 이름을 모르거나 아직 결정하지 않은 상태에서 특정 ARN 패턴에 대한 신뢰 정책 제한을 적용하려면 ARN의 해당 부분을 와일드카드(*)로 바꿀 수 있습니다. 프로젝트를 생성한 후 신뢰 정책을 업데이트할 수 있습니다.
put-role-policy.json
:{ "Version": "2012-10-17", "Statement": [ { "Sid": "CloudWatchLogsPolicy", "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" }, { "Sid": "CodeCommitPolicy", "Effect": "Allow", "Action": [ "codecommit:GitPull" ], "Resource": "*" }, { "Sid": "S3GetObjectPolicy", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "*" }, { "Sid": "S3PutObjectPolicy", "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": "*" }, { "Sid": "S3BucketIdentity", "Effect": "Allow", "Action": [ "s3:GetBucketAcl", "s3:GetBucketLocation" ], "Resource": "*" } ] }
참고
이 정책에는 잠재적으로 많은 수의 AWS 리소스에 대한 액세스를 허용하는 문이 포함되어 있습니다. 가 특정 AWS 리소스에 액세스 AWS CodeBuild 하도록 제한하려면
Resource
배열의 값을 변경합니다. 자세한 내용은 AWS 서비스에 대한 보안 설명서를 참조하세요. -
앞의 파일을 저장한 디렉터리로 전환한 다음, 다음 두 가지 명령을 다음 순서로 한 번에 하나씩 실행합니다.
CodeBuildServiceRole
과CodeBuildServiceRolePolicy
에 다른 값을 사용하려면 여기에서 사용해야 합니다.aws iam create-role --role-name CodeBuildServiceRole --assume-role-policy-document file://create-role.json
aws iam put-role-policy --role-name CodeBuildServiceRole --policy-name CodeBuildServiceRolePolicy --policy-document file://put-role-policy.json