다른 AWS 서비스와 상호 작용할 수 CodeBuild 있도록 허용 - AWS CodeBuild

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

다른 AWS 서비스와 상호 작용할 수 CodeBuild 있도록 허용

처음 액세스하는 AWS CodeBuild 단계를 따르는 경우 이 항목의 정보가 필요하지 않을 가능성이 큽니다. 콘솔을 사용하여 시작하기 하지만 계속 CodeBuild 사용하면서 다른 AWS 서비스와의 상호 작용을 허용하는 등의 작업을 CodeBuild 하고 싶을 수도 있습니다.

자신을 대신하여 종속 AWS 서비스와 상호 작용할 수 있게 CodeBuild 하려면 AWS CodeBuild 서비스 역할이 필요합니다. CodeBuild 또는 AWS CodePipeline 콘솔을 사용하여 CodeBuild 서비스 역할을 생성할 수 있습니다. 자세한 내용은 다음을 참조하세요.

이러한 콘솔을 사용하지 않으려는 경우 이 섹션에서는 콘솔 또는 에서 CodeBuild 서비스 역할을 생성하는 방법을 설명합니다. IAM AWS CLI

중요

CodeBuild 사용자를 대신하여 수행되는 모든 작업에 대해 서비스 역할을 사용합니다. 역할에 사용자에게 불필요한 권한이 포함되어 있는 경우 사용자의 권한을 실수로 에스컬레이션할 수 있습니다. 이 역할은 최소한의 권한을 부여해야 합니다.

이 페이지에 설명된 서비스 역할에는 사용에 필요한 최소 권한을 부여하는 정책이 포함되어 CodeBuild 있습니다. 사용 사례에 따라 다른 권한을 추가해야 할 수 있습니다.

CodeBuild 서비스 역할을 만들려면 (콘솔)
  1. 에서 IAM 콘솔을 엽니다 https://console.aws.amazon.com/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 정책 개요를 참조하십시오.

  2. 탐색 창에서 Policies를 선택합니다.

  3. 정책 생성(Create Policy)을 선택합니다.

  4. 정책 생성 페이지에서 원하는 항목을 선택합니다 JSON.

  5. 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 서비스의 보안 설명서를 참조하십시오.

  6. 정책 검토 페이지의 정책 이름에 정책의 이름(예: CodeBuildServiceRolePolicy)을 입력한 후 정책 생성을 선택합니다.

    참고

    다른 이름을 사용하는 경우 이 절차 전체에서 해당 이름을 사용해야 합니다.

  7. 탐색 창에서 Roles를 선택합니다.

  8. Create role(역할 생성)을 선택합니다.

  9. AWS 서비스가 이미 선택된 상태에서 역할 만들기 페이지에서 원하는 것을 선택하고 CodeBuild다음:권한을 선택합니다.

  10. 권한 정책 연결 페이지에서 을 선택하고 다음: 검토를 선택합니다 CodeBuildServiceRolePolicy.

  11. 역할 생성 및 검토 페이지의 역할 이름에 역할의 이름(예: CodeBuildServiceRole)을 입력한 후 역할 생성을 선택합니다.

CodeBuild 서비스 역할을 만들려면 (AWS CLI)
  1. 이전 절차에서 설명한 대로 IAM 엔티티 중 하나에 해당하는 AWS 액세스 키와 AWS 비밀 액세스 키로 를 구성했는지 확인하십시오. AWS CLI 자세한 내용은AWS Command Line Interface 사용 설명서의 AWS Command Line Interface설정을 참조하세요.

  2. 가 설치된 로컬 워크스테이션이나 인스턴스의 빈 디렉터리에 create-role.jsonput-role-policy.json 라는 이름의 파일 두 개를 생성합니다. AWS CLI 다른 파일 이름을 선택하는 경우 이 절차 전체에서 해당 이름으로 바꿉니다.

    create-role.json:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "codebuild.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    참고

    혼동된 대리자 문제로부터 자신을 보호하기 위하여 aws:SourceAccountaws:SourceArn 조건 키를 사용할 것을 권장합니다. 예를 들어 다음 조건 블록을 사용해서 이전 신뢰 정책을 편집할 수 있습니다. aws:SourceAccount는 프로젝트 소유자이고 aws:SourceArn 는 CodeBuild 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 서비스의 보안 설명서를 참조하십시오.

  3. 앞의 파일을 저장한 디렉터리로 전환한 다음, 다음 두 가지 명령을 다음 순서로 한 번에 하나씩 실행합니다. CodeBuildServiceRoleCodeBuildServiceRolePolicy에 다른 값을 사용하려면 여기에서 사용해야 합니다.

    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