AWS CodeBuild에 대한 자격 증명 기반 정책 사용 - AWS CodeBuild

AWS CodeBuild에 대한 자격 증명 기반 정책 사용

이 주제에서는 자격 증명 기반 정책의 예를 통해 계정 관리자가 IAM 자격 증명(사용자, 그룹, 역할)에 권한 정책을 연결함으로써 AWS CodeBuild 리소스에 대한 작업 수행 권한을 부여하는 방법을 보여 줍니다.

중요

CodeBuild 리소스에 대한 액세스 관리를 위해 제공되는 기본 개념과 옵션 설명에 대한 소개 주제 부분을 먼저 읽어 보십시오. 자세한 정보는 AWS CodeBuild 리소스에 대한 액세스 권한 관리 개요 단원을 참조하십시오.

다음은 us-east-2라는 이름으로 시작하는 빌드 프로젝트에 대해 사용자가 123456789012 계정의 my 리전에 있는 빌드 프로젝트에 대해서만 정보를 가져오도록 허용하는 권한 정책의 예입니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:BatchGetProjects", "Resource": "arn:aws:codebuild:us-east-2:123456789012:project/my*" } ] }

AWS CodeBuild 콘솔 사용에 필요한 권한

AWS CodeBuild 콘솔을 사용하는 사용자에게는 사용자가 AWS 계정의 다른 AWS 리소스를 설명하도록 허용하는 최소 권한이 있어야 합니다. 사용자에게는 다음 서비스에 대한 권한이 있어야 합니다.

  • AWS CodeBuild

  • Amazon CloudWatch

  • CodeCommit(AWS CodeCommit 리포지토리에 소스 코드를 저장하는 경우)

  • Amazon ECR(Amazon Elastic Container Registry)(Amazon ECR 리포지토리의 도커 이미지에 따라 달라지는 빌드 환경을 사용하는 경우)

  • Amazon ECS(Amazon Elastic Container Service)(Amazon ECR 리포지토리의 도커 이미지에 따라 달라지는 빌드 환경을 사용하는 경우)

  • AWS Identity and Access Management (IAM)

  • AWS Key Management Service (AWS KMS)

  • Amazon Simple Storage Service (Amazon S3)

최소 필수 권한보다 더 제한적인 IAM 정책을 만들면 콘솔이 의도대로 작동하지 않습니다.

AWS CodeBuild 콘솔이 소스 공급자에 연결하는 데 필요한 권한

AWS CodeBuild 콘솔은 다음 API 작업을 사용하여 소스 공급자(예: GitHub 리포지토리)에 연결합니다.

  • codebuild:ListConnectedOAuthAccounts

  • codebuild:ListRepositories

  • codebuild:PersistOAuthToken

  • codebuild:ImportSourceCredentials

AWS CodeBuild 콘솔을 사용하여 소스 공급자(예: GitHub 리포지토리)를 빌드 프로젝트에 연결할 수 있습니다. 이렇게 하려면 먼저 AWS CodeBuild 콘솔에 액세스하는 데 사용하는 IAM 사용자와 연결된 IAM 액세스 정책에 이전 API 작업을 추가해야 합니다.

ListConnectedOAuthAccounts, ListRepositoriesPersistOAuthToken API 작업은 코드로 호출되는 것이 아닙니다. 따라서 이러한 API 작업은 AWS CLI 및 AWS SDK에 포함되지 않습니다.

AWS CodeBuild에 대한 AWS 관리형(미리 정의된) 정책

AWS는 AWS에서 생성하고 관리하는 독립형 IAM 정책을 제공하여 많은 일반 사용 사례를 처리합니다. 이러한 AWS 관리형 정책은 사용자가 필요한 권한을 조사할 필요가 없도록 일반 사용 사례에 필요한 권한을 부여합니다. CodeBuild에 대한 관리형 정책은 IAM, AWS CodeCommit,Amazon EC2, Amazon ECR, Amazon SNS 및 Amazon CloudWatch Events 같은 다른 서비스에서 작업을 수행할 수 있는 권한도 제공합니다. 해당 정책이 부여된 사용자의 책임에 필요하기 때문입니다. 예를 들면 AWSCodeBuildAdminAccess 정책은 관리 수준의 사용자 정책으로, 이 정책을 통해 사용자가 프로젝트 관련 이벤트(이름에 arn:aws:codebuild:라는 접두사가 붙은 주제)에 대한 알림을 위한 프로젝트 빌드 및 Amazon SNS 주제에 대한 CloudWatch 이벤트 규칙을 생성 및 관리하고 CodeBuild에서 프로젝트 및 보고서 그룹을 관리할 수 있습니다. 자세한 정보는 IAM 사용 설명서의 AWS 관리형 정책 단원을 참조하십시오.https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies

계정의 사용자에게 연결할 수 있는 다음 AWS 관리형 정책은 AWS CodeBuild에 고유합니다.

  • AWSCodeBuildAdminAccess – CodeBuild 빌드 프로세스를 관리하는 데 필요한 권한을 비롯하여 CodeBuild에 대한 전체 액세스 권한을 제공합니다.

  • AWSCodeBuildDeveloperAccess – CodeBuild에 대한 액세스 권한을 제공하지만 빌드 프로젝트 관리는 허용하지 않습니다.

  • AWSCodeBuildReadOnlyAccess – CodeBuild에 대한 읽기 전용 액세스 권한을 제공합니다.

CodeBuild가 생성하는 빌드 출력 아티팩트에 액세스하려면 AmazonS3ReadOnlyAccess라는 AWS 관리형 정책도 연결해야 합니다.

CodeBuild 서비스 역할을 생성 및 관리하려면 IAMFullAccess라는 AWS 관리형 정책도 연결해야 합니다.

CodeBuild 작업 및 리소스에 대한 권한을 허용하는 고유한 사용자 지정 IAM 정책을 생성할 수도 있습니다. 해당 권한이 필요한 IAM 사용자 또는 그룹에 이러한 사용자 지정 정책을 연결할 수 있습니다.

AWSCodeBuildAdminAccess

AWSCodeBuildAdminAccess – CodeBuild 빌드 프로세스를 관리하는 데 필요한 권한을 비롯하여 CodeBuild에 대한 전체 액세스 권한을 제공합니다. 이 정책은 프로젝트 및 보고서 그룹 삭제 기능을 비롯하여 AWS 계정 내 CodeBuild 프로젝트, 보고서 그룹 및 관련 리소스에 대한 모든 제어 권한을 부여할 관리 수준의 사용자에게만 적용하십시오.

AWSCodeBuildAdminAccess 정책에는 다음 정책 설명이 포함되어 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "codebuild:*", "codecommit:GetBranch", "codecommit:GetCommit", "codecommit:GetRepository", "codecommit:ListBranches", "codecommit:ListRepositories", "cloudwatch:GetMetricStatistics", "ec2:DescribeVpcs", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ecr:DescribeRepositories", "ecr:ListImages", "events:DeleteRule", "events:DescribeRule", "events:DisableRule", "events:EnableRule", "events:ListTargetsByRule", "events:ListRuleNamesByTarget", "events:PutRule", "events:PutTargets", "events:RemoveTargets", "logs:GetLogEvents", "s3:GetBucketLocation", "s3:ListAllMyBuckets" ], "Effect": "Allow", "Resource": "*" }, { "Action": [ "logs:DeleteLogGroup" ], "Effect": "Allow", "Resource": "arn:aws:logs:*:*:log-group:/aws/codebuild/*:log-stream:*" }, { "Effect": "Allow", "Action": [ "ssm:PutParameter" ], "Resource": "arn:aws:ssm:*:*:parameter/CodeBuild/*" }, { "Sid": "CodeStarNotificationsReadWriteAccess", "Effect": "Allow", "Action": [ "codestar-notifications:CreateNotificationRule", "codestar-notifications:DescribeNotificationRule", "codestar-notifications:UpdateNotificationRule", "codestar-notifications:DeleteNotificationRule", "codestar-notifications:Subscribe", "codestar-notifications:Unsubscribe" ], "Resource": "*", "Condition": { "StringLike": { "codestar-notifications:NotificationsForResource": "arn:aws:codebuild:*" } } }, { "Sid": "CodeStarNotificationsListAccess", "Effect": "Allow", "Action": [ "codestar-notifications:ListNotificationRules", "codestar-notifications:ListEventTypes", "codestar-notifications:ListTargets", "codestar-notifications:ListTagsforResource" ], "Resource": "*" }, { "Sid": "CodeStarNotificationsSNSTopicCreateAccess", "Effect": "Allow", "Action": [ "sns:CreateTopic", "sns:SetTopicAttributes" ], "Resource": "arn:aws:sns:*:*:codestar-notifications*" }, { "Sid": "SNSTopicListAccess", "Effect": "Allow", "Action": [ "sns:ListTopics", "sns:GetTopicAttributes" ], "Resource": "*" } ] }

AWSCodeBuildDeveloperAccess

AWSCodeBuildDeveloperAccess – CodeBuild의 모든 기능과 프로젝트 및 보고서 그룹 관련 리소스에 액세스할 수 있습니다. 이 정책은 사용자가 CodeBuild 프로젝트, 보고서 그룹 또는 CloudWatch 이벤트와 같은 다른 AWS 서비스의 관련 리소스를 삭제하도록 허용하지 않습니다. 이 정책은 대부분의 사용자에게 적용하는 것이 좋습니다.

AWSCodeBuildDeveloperAccess 정책에는 다음 정책 설명이 포함되어 있습니다.

{ "Statement": [ { "Action": [ "codebuild:StartBuild", "codebuild:StopBuild", "codebuild:BatchGet*", "codebuild:GetResourcePolicy", "codebuild:DescribeTestCases", "codebuild:List*", "codecommit:GetBranch", "codecommit:GetCommit", "codecommit:GetRepository", "codecommit:ListBranches", "cloudwatch:GetMetricStatistics", "events:DescribeRule", "events:ListTargetsByRule", "events:ListRuleNamesByTarget", "logs:GetLogEvents", "s3:GetBucketLocation", "s3:ListAllMyBuckets" ], "Effect": "Allow", "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssm:PutParameter" ], "Resource": "arn:aws:ssm:*:*:parameter/CodeBuild/*" }, { "Sid": "CodeStarNotificationsReadWriteAccess", "Effect": "Allow", "Action": [ "codestar-notifications:CreateNotificationRule", "codestar-notifications:DescribeNotificationRule", "codestar-notifications:UpdateNotificationRule", "codestar-notifications:Subscribe", "codestar-notifications:Unsubscribe" ], "Resource": "*", "Condition": { "StringLike": { "codestar-notifications:NotificationsForResource": "arn:aws:codebuild:*" } } }, { "Sid": "CodeStarNotificationsListAccess", "Effect": "Allow", "Action": [ "codestar-notifications:ListNotificationRules", "codestar-notifications:ListEventTypes", "codestar-notifications:ListTargets", "codestar-notifications:ListTagsforResource" ], "Resource": "*" }, { "Sid": "SNSTopicListAccess", "Effect": "Allow", "Action": [ "sns:ListTopics", "sns:GetTopicAttributes" ], "Resource": "*" } ], "Version": "2012-10-17" }

AWSCodeBuildReadOnlyAccess

AWSCodeBuildReadOnlyAccess – CodeBuild 및 다른 AWS 서비스의 관련 리소스에 대한 읽기 전용 액세스 권한을 부여합니다. 빌드를 보고 실행하고 프로젝트를 보고 보고서 그룹을 볼 수 있지만 변경할 수 없는 사용자에게 이 정책을 적용하십시오.

AWSCodeBuildReadOnlyAccess 정책에는 다음 정책 설명이 포함되어 있습니다.

{ "Statement": [ { "Action": [ "codebuild:BatchGet*", "codebuild:GetResourcePolicy", "codebuild:List*", "codebuild:DescribeTestCases", "codecommit:GetBranch", "codecommit:GetCommit", "codecommit:GetRepository", "cloudwatch:GetMetricStatistics", "events:DescribeRule", "events:ListTargetsByRule", "events:ListRuleNamesByTarget", "logs:GetLogEvents" ], "Effect": "Allow", "Resource": "*" }, { "Sid": "CodeStarNotificationsPowerUserAccess", "Effect": "Allow", "Action": [ "codestar-notifications:DescribeNotificationRule" ], "Resource": "*", "Condition": { "StringLike": { "codestar-notifications:NotificationsForResource": "arn:aws:codebuild:*" } } }, { "Sid": "CodeStarNotificationsListAccess", "Effect": "Allow", "Action": [ "codestar-notifications:ListNotificationRules", "codestar-notifications:ListEventTypes" ], "Resource": "*" } ], "Version": "2012-10-17" }

CodeBuild managed policies and notifications

CodeBuild supports notifications, which can notify users of important changes to build projects. Managed policies for CodeBuild include policy statements for notification functionality. For more information, see What are notifications?.

Permissions related to notifications in full access managed policies

The AWSCodeBuildFullAccess managed policy includes the following statements to allow full access to notifications. Users with this managed policy applied can also create and manage Amazon SNS topics for notifications, subscribe and unsubscribe users to topics, list topics to choose as targets for notification rules, and list AWS Chatbot clients configured for Slack.

{ "Sid": "CodeStarNotificationsReadWriteAccess", "Effect": "Allow", "Action": [ "codestar-notifications:CreateNotificationRule", "codestar-notifications:DescribeNotificationRule", "codestar-notifications:UpdateNotificationRule", "codestar-notifications:DeleteNotificationRule", "codestar-notifications:Subscribe", "codestar-notifications:Unsubscribe" ], "Resource": "*", "Condition" : { "StringLike" : {"codestar-notifications:NotificationsForResource" : "arn:aws:codebuild:*"} } }, { "Sid": "CodeStarNotificationsListAccess", "Effect": "Allow", "Action": [ "codestar-notifications:ListNotificationRules", "codestar-notifications:ListTargets", "codestar-notifications:ListTagsforResource", "codestar-notifications:ListEventTypes" ], "Resource": "*" }, { "Sid": "CodeStarNotificationsSNSTopicCreateAccess", "Effect": "Allow", "Action": [ "sns:CreateTopic", "sns:SetTopicAttributes" ], "Resource": "arn:aws:sns:*:*:codestar-notifications*" }, { "Sid": "SNSTopicListAccess", "Effect": "Allow", "Action": [ "sns:ListTopics" ], "Resource": "*" }, { "Sid": "CodeStarNotificationsChatbotAccess", "Effect": "Allow", "Action": [ "chatbot:DescribeSlackChannelConfigurations" ], "Resource": "*" }

Permissions related to notifications in read-only managed policies

The AWSCodeBuildReadOnlyAccess managed policy includes the following statements to allow read-only access to notifications. Users with this managed policy applied can view notifications for resources, but cannot create, manage, or subscribe to them.

{ "Sid": "CodeStarNotificationsPowerUserAccess", "Effect": "Allow", "Action": [ "codestar-notifications:DescribeNotificationRule" ], "Resource": "*", "Condition" : { "StringLike" : {"codestar-notifications:NotificationsForResource" : "arn:aws:codebuild:*"} } }, { "Sid": "CodeStarNotificationsListAccess", "Effect": "Allow", "Action": [ "codestar-notifications:ListNotificationRules", "codestar-notifications:ListEventTypes", "codestar-notifications:ListTargets" ], "Resource": "*" }

Permissions related to notifications in other managed policies

The AWSCodeBuildDeveloperAccess managed policy includes the following statements to allow users to create, edit, and subscribe to notifications. Users cannot delete notification rules or manage tags for resources.

{ "Sid": "CodeStarNotificationsReadWriteAccess", "Effect": "Allow", "Action": [ "codestar-notifications:CreateNotificationRule", "codestar-notifications:DescribeNotificationRule", "codestar-notifications:UpdateNotificationRule", "codestar-notifications:Subscribe", "codestar-notifications:Unsubscribe" ], "Resource": "*", "Condition" : { "StringLike" : {"codestar-notifications:NotificationsForResource" : "arn:aws:codebuild*"} } }, { "Sid": "CodeStarNotificationsListAccess", "Effect": "Allow", "Action": [ "codestar-notifications:ListNotificationRules", "codestar-notifications:ListTargets", "codestar-notifications:ListTagsforResource", "codestar-notifications:ListEventTypes" ], "Resource": "*" }, { "Sid": "SNSTopicListAccess", "Effect": "Allow", "Action": [ "sns:ListTopics" ], "Resource": "*" }, { "Sid": "CodeStarNotificationsChatbotAccess", "Effect": "Allow", "Action": [ "chatbot:DescribeSlackChannelConfigurations" ], "Resource": "*" }

For more information about IAM and notifications, see Identity and Access Management for AWS CodeStar Notifications.

고객 관리형 정책 예

이 섹션에서는 AWS CodeBuild 작업에 대한 권한을 부여하는 사용자 정책의 예를 제공합니다. 이러한 정책은 CodeBuild API, AWS SDK 또는 AWS CLI를 사용하는 경우에 유효합니다. 콘솔을 사용하는 경우 콘솔별 추가 권한을 부여해야 합니다. 자세한 내용은 AWS CodeBuild 콘솔 사용에 필요한 권한 단원을 참조하십시오.

다음 샘플 IAM 정책을 사용하여 IAM 사용자 및 역할에 대한 CodeBuild 액세스를 제한할 수 있습니다.

주제

사용자가 빌드 프로젝트에 대한 정보를 가져오도록 허용

다음은 us-east-2라는 이름으로 시작하는 빌드 프로젝트에 대해 사용자가 123456789012 계정의 my 리전에 있는 빌드 프로젝트에 대한 정보를 가져오도록 허용하는 정책 설명의 예입니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:BatchGetProjects", "Resource": "arn:aws:codebuild:us-east-2:123456789012:project/my*" } ] }

사용자가 보고서 그룹에 대한 정보를 가져오도록 허용

다음 예제 정책 설명을 통해 사용자는 계정 123456789012us-east-2 리전에서 보고서 그룹에 대한 정보를 가져올 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:BatchGetReportGroups", "Resource": "arn:aws:codebuild:us-east-2:123456789012:report-group/*" } ] }

사용자가 보고서에 대한 정보를 가져오도록 허용

다음 예제 정책 설명을 통해 사용자는 계정 123456789012us-east-2 리전에서 보고서에 대한 정보를 가져올 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:BatchGetReports", "Resource": "arn:aws:codebuild:us-east-2:123456789012:report-group/*" } ] }

사용자가 빌드 프로젝트를 생성하도록 허용

다음은 사용자에게 모든 이름의 빌드 프로젝트를 생성하도록 허용하지만, 123456789012 계정의 us-east-2 리전에만 있어야 하며, 지정된 CodeBuild 서비스 역할만 사용해야 하는 정책 설명의 예입니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:CreateProject", "Resource": "arn:aws:codebuild:us-east-2:123456789012:project/*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam:123456789012:role/CodeBuildServiceRole" } ] }

사용자가 보고서 그룹을 생성하도록 허용

다음 예제 정책 설명을 통해 사용자는 계정 123456789012us-east-2 리전에서 보고서 그룹을 생성할 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:CreateReportGroup", "Resource": "arn:aws:codebuild:us-east-2:123456789012:report-group/*" } ] }

사용자가 보고서 그룹을 삭제하도록 허용

다음 예제 정책 설명을 통해 사용자는 계정 123456789012us-east-2 리전에서 보고서 그룹을 삭제할 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:DeleteReportGroup", "Resource": "arn:aws:codebuild:us-east-2:123456789012:report-group/*" } ] }

사용자가 보고서를 삭제하도록 허용

다음 예제 정책 설명을 통해 사용자는 계정 123456789012us-east-2 리전에서 보고서를 삭제할 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:DeleteReport", "Resource": "arn:aws:codebuild:us-east-2:123456789012:report-group/*" } ] }

사용자가 빌드 프로젝트를 삭제하도록 허용

다음은 us-east-2라는 이름으로 시작하는 빌드 프로젝트에 대해 사용자가 123456789012 계정의 my 리전에 있는 빌드 프로젝트를 삭제하도록 허용하는 정책 설명의 예입니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:DeleteProject", "Resource": "arn:aws:codebuild:us-east-2:123456789012:project/my*" } ] }

사용자가 빌드 프로젝트 이름 목록을 가져오도록 허용

다음은 사용자가 동일한 계정의 빌드 프로젝트 이름 목록을 가져오도록 허용하는 정책 설명의 예입니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:ListProjects", "Resource": "*" } ] }

사용자가 빌드 프로젝트에 대한 정보를 변경하도록 허용

다음은 사용자에게 모든 이름의 빌드 프로젝트에 대한 정보를 변경하도록 허용하지만, 123456789012 계정의 us-east-2 리전에만 있어야 하며, 지정된 AWS CodeBuild 서비스 역할만 사용해야 하는 정책 설명의 예입니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:UpdateProject", "Resource": "arn:aws:codebuild:us-east-2:123456789012:project/*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam:123456789012:role/CodeBuildServiceRole" } ] }

사용자가 보고서 그룹을 변경하도록 허용

다음 예제 정책 설명을 통해 사용자는 계정 123456789012us-east-2 리전에서 보고서 그룹을 변경할 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:UpdateReportGroup", "Resource": "arn:aws:codebuild:us-east-2:123456789012:report-group/*" } ] }

사용자가 빌드에 대한 정보를 가져오도록 허용

다음은 us-east-2123456789012라는 이름의 빌드 프로젝트에 대해 사용자가 my-build-project 계정의 my-other-build-project 리전에 있는 빌드에 대한 정보를 가져오도록 허용하는 정책 설명의 예입니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:BatchGetBuilds", "Resource": [ "arn:aws:codebuild:us-east-2:123456789012:project/my-build-project", "arn:aws:codebuild:us-east-2:123456789012:project/my-other-build-project" ] } ] }

사용자가 빌드 프로젝트의 빌드 ID 목록을 가져오도록 허용

다음은 us-east-2123456789012라는 이름의 빌드 프로젝트에 대해 사용자가 my-build-project 계정의 my-other-build-project 리전에 있는 빌드 ID 목록을 가져오도록 허용하는 정책 설명의 예입니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:ListBuildsForProject", "Resource": [ "arn:aws:codebuild:us-east-2:123456789012:project/my-build-project", "arn:aws:codebuild:us-east-2:123456789012:project/my-other-build-project" ] } ] }

사용자가 빌드 ID 목록을 가져오도록 허용

다음은 사용자가 동일한 계정의 모든 빌드 ID 목록을 가져오도록 허용하는 정책 설명의 예입니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:ListBuilds", "Resource": "*" } ] }

사용자가 보고서 그룹 목록을 가져오도록 허용

다음 예제 정책 설명을 통해 사용자는 계정 123456789012us-east-2 리전에서 보고서 그룹 목록을 가져올 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:ListReportGroups", "Resource": "*" } ] }

사용자가 보고서 목록을 가져오도록 허용

다음 예제 정책 설명을 통해 사용자는 계정 123456789012us-east-2 리전에서 보고서 목록을 가져올 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:ListReports", "Resource": "*" } ] }

사용자가 보고서 그룹에 대한 보고서 목록을 가져오도록 허용

다음 예제 정책 설명을 통해 사용자는 계정 123456789012us-east-2 리전에서 보고서 그룹에 대한 보고서 목록을 가져올 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:ListReportsForReportGroup", "Resource": "arn:aws:codebuild:us-east-2:123456789012:report-group/*" } ] }

사용자가 보고서에 대한 테스트 케이스 목록을 가져오도록 허용

다음 예제 정책 설명을 통해 사용자는 계정 123456789012us-east-2 리전에서 보고서에 대한 테스트 케이스 목록을 가져올 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:DescribeTestCases", "Resource": "arn:aws:codebuild:us-east-2:123456789012:report-group/*" } ] }

사용자가 빌드 실행을 시작하도록 허용

다음은 us-east-2라는 이름으로 시작하는 빌드 프로젝트에 대해 사용자가 123456789012 계정의 my 리전에 있는 빌드를 실행하도록 허용하는 정책 설명의 예입니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:StartBuild", "Resource": "arn:aws:codebuild:us-east-2:123456789012:project/my*" } ] }

사용자가 빌드 중지를 시도하도록 허용

다음은 us-east-2라는 이름으로 시작하는 빌드 프로젝트에 대해 사용자가 123456789012 계정의 my 리전에 있는 빌드만 실행 중지를 시도하도록 허용하는 정책 설명의 예입니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:StopBuild", "Resource": "arn:aws:codebuild:us-east-2:123456789012:project/my*" } ] }

사용자가 빌드 삭제를 시도하도록 허용

다음은 이름이 my로 시작하는 빌드 프로젝트에 대해 사용자가 123456789012 계정의 us-east-2 리전에 있는 빌드만 삭제하려고 시도하는 것을 허용하는 정책 설명의 예입니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:BatchDeleteBuilds", "Resource": "arn:aws:codebuild:us-east-2:123456789012:project/my*" } ] }

사용자가 CodeBuild에서 관리하는 도커 이미지에 대한 정보를 가져오도록 허용

다음은 사용자가 CodeBuild가 관리하는 모든 Docker 이미지에 대한 정보를 가져오도록 허용하는 정책 설명의 예입니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:ListCuratedEnvironmentImages", "Resource": "*" } ] }

CodeBuild가 VPC 네트워크 인터페이스를 생성하는 데 필요한 AWS 서비스에 액세스하도록 허용

다음은 2개의 서브넷이 있는 VPC에 네트워크 인터페이스를 생성하는 데 필요한 권한을 AWS CodeBuild에 부여하는 정책 설명의 예제입니다.

{ "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/subnet-id-1", "arn:aws:ec2:region:account-id:subnet/subnet-id-2" ], "ec2:AuthorizedService": "codebuild.amazonaws.com" } } } ] }

거부문을 사용하여 AWS CodeBuild가 소스 공급자 연결을 해제하지 않도록 방지

다음 예제 정책 명령문은 거부문을 사용하여 AWS CodeBuild가 소스 공급자 연결을 해제하지 않도록 합니다. codebuild:PersistOAuthTokencodebuild:ImportSourceCredentials의 역인 codebuild:DeleteOAuthToken을 사용하여 소스 공급자와 연결합니다. 자세한 정보는 AWS CodeBuild 콘솔이 소스 공급자에 연결하는 데 필요한 권한 단원을 참조하십시오.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "codebuild:DeleteOAuthToken", "Resource": "*" } ] }