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 Elastic Container Registry(Amazon ECR)(Amazon ECR 리포지토리의 도커 이미지를 사용하는 빌드 환경을 사용하는 경우)

    참고

    2022년 7월 26일부로 기본 IAM 정책이 업데이트되었습니다. 자세한 내용은 Amazon Elastic 컨테이너 레지스트리에 연결하는 AWS CodeBuild 데 필요한 권한 단원을 참조하십시오.

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

  • AWS Identity and Access Management (IAM)

  • AWS Key Management Service (AWS KMS)

  • Amazon Simple Storage Service(S3)

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

Amazon Elastic 컨테이너 레지스트리에 연결하는 AWS CodeBuild 데 필요한 권한

2022년 7월 26일부터 Amazon ECR 권한에 대한 기본 IAM 정책이 AWS CodeBuild 업데이트되었습니다. 다음 권한은 기본 정책에서 제거되었습니다.

"ecr:PutImage", "ecr:InitiateLayerUpload", "ecr:UploadLayerPart", "ecr:CompleteLayerUpload"

2022년 7월 26일 이전에 생성된 CodeBuild 프로젝트의 경우 다음 Amazon ECR 정책으로 정책을 업데이트하는 것이 좋습니다.

"Action": [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ]

정책 업데이트에 대한 자세한 내용은 사용자가 CodeBuild와 상호 작용하도록 허용 섹션을 참조하세요.

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

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

  • codebuild:ListConnectedOAuthAccounts

  • codebuild:ListRepositories

  • codebuild:PersistOAuthToken

  • codebuild:ImportSourceCredentials

AWS CodeBuild 콘솔을 사용하여 소스 공급자(예: GitHub 리포지토리)를 빌드 프로젝트에 연결할 수 있습니다. 이렇게 하려면 먼저 AWS CodeBuild 콘솔에 액세스하는 데 사용하는 사용자와 연결된 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 관리형 정책을 참조하세요.

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

AWSCodeBuildAdminAccess

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

AWSCodeBuildDeveloperAccess

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

AWSCodeBuildReadOnlyAccess

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

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

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

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

AWSCodeBuildAdminAccess

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

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

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSServicesAccess", "Action": [ "codebuild:*", "codecommit:GetBranch", "codecommit:GetCommit", "codecommit:GetRepository", "codecommit:ListBranches", "codecommit:ListRepositories", "cloudwatch:GetMetricStatistics", "ec2:DescribeVpcs", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ecr:DescribeRepositories", "ecr:ListImages", "elasticfilesystem:DescribeFileSystems", "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": "*" }, { "Sid": "CWLDeleteLogGroupAccess", "Action": [ "logs:DeleteLogGroup" ], "Effect": "Allow", "Resource": "arn:aws:logs:*:*:log-group:/aws/codebuild/*:log-stream:*" }, { "Sid": "SSMParameterWriteAccess", "Effect": "Allow", "Action": [ "ssm:PutParameter" ], "Resource": "arn:aws:ssm:*:*:parameter/CodeBuild/*" }, { "Sid": "SSMStartSessionAccess", "Effect": "Allow", "Action": [ "ssm:StartSession" ], "Resource": "arn:aws:ecs:*:*:task/*/*" }, { "Sid": "CodeStarConnectionsReadWriteAccess", "Effect": "Allow", "Action": [ "codestar-connections:CreateConnection", "codestar-connections:DeleteConnection", "codestar-connections:UpdateConnectionInstallation", "codestar-connections:TagResource", "codestar-connections:UntagResource", "codestar-connections:ListConnections", "codestar-connections:ListInstallationTargets", "codestar-connections:ListTagsForResource", "codestar-connections:GetConnection", "codestar-connections:GetIndividualAccessToken", "codestar-connections:GetInstallationUrl", "codestar-connections:PassConnection", "codestar-connections:StartOAuthHandshake", "codestar-connections:UseConnection" ], "Resource": [ "arn:aws:codestar-connections:*:*:connection/*", "arn:aws:codeconnections:*:*:connection/*" ] }, { "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": "*" }, { "Sid": "CodeStarNotificationsChatbotAccess", "Effect": "Allow", "Action": [ "chatbot:DescribeSlackChannelConfigurations", "chatbot:ListMicrosoftTeamsChannelConfigurations" ], "Resource": "*" } ] }

AWSCodeBuildDeveloperAccess

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

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

{ "Statement": [ { "Sid": "AWSServicesAccess", "Action": [ "codebuild:StartBuild", "codebuild:StopBuild", "codebuild:StartBuildBatch", "codebuild:StopBuildBatch", "codebuild:RetryBuild", "codebuild:RetryBuildBatch", "codebuild:BatchGet*", "codebuild:GetResourcePolicy", "codebuild:DescribeTestCases", "codebuild:DescribeCodeCoverages", "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": "*" }, { "Sid": "SSMParameterWriteAccess", "Effect": "Allow", "Action": [ "ssm:PutParameter" ], "Resource": "arn:aws:ssm:*:*:parameter/CodeBuild/*" }, { "Sid": "SSMStartSessionAccess", "Effect": "Allow", "Action": [ "ssm:StartSession" ], "Resource": "arn:aws:ecs:*:*:task/*/*" }, { "Sid": "CodeStarConnectionsUserAccess", "Effect": "Allow", "Action": [ "codestar-connections:ListConnections", "codestar-connections:GetConnection" ], "Resource": [ "arn:aws:codestar-connections:*:*:connection/*", "arn:aws:codeconnections:*:*:connection/*" ] }, { "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": "*" }, { "Sid": "CodeStarNotificationsChatbotAccess", "Effect": "Allow", "Action": [ "chatbot:DescribeSlackChannelConfigurations", "chatbot:ListMicrosoftTeamsChannelConfigurations" ], "Resource": "*" } ], "Version": "2012-10-17" }

AWSCodeBuildReadOnlyAccess

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

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

{ "Statement": [ { "Sid": "AWSServicesAccess", "Action": [ "codebuild:BatchGet*", "codebuild:GetResourcePolicy", "codebuild:List*", "codebuild:DescribeTestCases", "codebuild:DescribeCodeCoverages", "codecommit:GetBranch", "codecommit:GetCommit", "codecommit:GetRepository", "cloudwatch:GetMetricStatistics", "events:DescribeRule", "events:ListTargetsByRule", "events:ListRuleNamesByTarget", "logs:GetLogEvents" ], "Effect": "Allow", "Resource": "*" }, { "Sid": "CodeStarConnectionsUserAccess", "Effect": "Allow", "Action": [ "codestar-connections:ListConnections", "codestar-connections:GetConnection" ], "Resource": [ "arn:aws:codestar-connections:*:*:connection/*", "arn:aws:codeconnections:*:*:connection/*" ] }, { "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": "*" } ], "Version": "2012-10-17" }

CodeBuild 관리형 정책 및 알림

CodeBuild에서는 프로젝트를 빌드하는 데 중요한 변경 사항을 사용자에게 알릴 수 있는 알림을 지원합니다. CodeBuild에 대한 관리형 정책에는 알림 기능에 대한 정책 설명이 포함되어 있습니다. 자세한 내용은 알림이란 무엇입니까?를 참조하세요.

전체 액세스 관리형 정책의 알림과 관련된 권한

AWSCodeBuildFullAccess 관리형 정책에는 알림에 대한 전체 액세스를 허용하는 다음 설명이 포함되어 있습니다. 또한 이러한 관리형 정책이 적용된 사용자는 알림에 대한 Amazon SNS 주제를 생성 및 관리하고, 주제에 대해 사용자를 구독 및 구독 취소하고, 알림 규칙의 대상으로 선택할 주제를 나열하고, Slack에 대해 구성된 AWS Chatbot 클라이언트를 나열할 수 있습니다.

{ "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", "chatbot:ListMicrosoftTeamsChannelConfigurations" ], "Resource": "*" }

읽기 전용 관리형 정책의 알림과 관련된 권한

AWSCodeBuildReadOnlyAccess 관리형 정책에는 알림에 대한 읽기 전용 액세스를 허용하는 다음 설명이 포함되어 있습니다. 이 관리형 정책이 적용된 사용자는 리소스에 대한 알림을 볼 수 있지만 리소스를 생성, 관리 또는 구독할 수는 없습니다.

{ "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": "*" }

다른 관리형 정책의 알림과 관련된 권한

AWSCodeBuildDeveloperAccess 관리형 정책에는 사용자가 알림을 생성, 편집 및 구독할 수 있도록 허용하는 다음 설명이 포함되어 있습니다. 사용자는 알림 규칙을 삭제하거나 리소스에 대한 태그를 관리할 수는 없습니다.

{ "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", "chatbot:ListMicrosoftTeamsChannelConfigurations" ], "Resource": "*" }

IAM 및 알림에 대한 자세한 내용은 AWS CodeStar 알림에 대한 Identity and Access Management를 참조하세요.

AWS 관리형 정책으로 CodeBuild 업데이트

이 서비스가 해당 변경 사항을 추적하기 시작한 이후 CodeBuild용 AWS 관리형 정책 업데이트에 대한 세부 정보를 조회합니다. 이 페이지의 변경 사항에 대한 자동 알림을 받아보려면 AWS CodeBuild 사용자 설명서 문서 기록 에서 RSS 피드를 구독하세요.

변경 사항 설명 날짜

AWSCodeBuildAdminAccess, AWSCodeBuildDeveloperAccessAWSCodeBuildReadOnlyAccess - 기존 정책 업데이트

CodeBuild는 AWS CodeConnections 리브랜딩을 지원하기 위해 이러한 정책에 리소스를 추가했습니다.

AWSCodeBuildAdminAccess, AWSCodeBuildDeveloperAccessAWSCodeBuildReadOnlyAccess 정책이 arn:aws:codeconnections:*:*:connection/* 리소스를 추가하도록 변경되었습니다.

2024년 4월 18일

AWSCodeBuildAdminAccessAWSCodeBuildDeveloperAccess – 기존 정책에 대한 업데이트

CodeBuild는 이러한 정책에 권한을 추가하여 AWS Chatbot를 사용하는 추가 알림 유형을 지원합니다.

AWSCodeBuildAdminAccessAWSCodeBuildDeveloperAccess 정책이 권한, chatbot:ListMicrosoftTeamsChannelConfigurations를 추가하도록 변경되었습니다.

2023년 5월 16일

CodeBuild가 변경 내용 추적을 시작함

CodeBuild가 AWS 관리형 정책에 대한 변경 내용 추적을 시작했습니다.

2021년 5월 16일

고객 관리형 정책 예제

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

다음 샘플 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*" } ] }

사용자가 플릿에 대한 정보를 가져오도록 허용

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

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

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

다음 예제 정책 설명을 통해 사용자는 계정 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" } ] }

다음은 사용자에게 모든 이름의 빌드 프로젝트를 생성하도록 허용하지만, 123456789012 계정의 us-east-2 리전에만 있어야 하며, 지정된 CodeBuild 서비스 역할만 사용해야 하는 정책 설명의 예입니다. 또한 사용자가 다른 AWS 서비스가 아닌 AWS 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", "Condition": { "StringEquals": {"iam:PassedToService": "codebuild.amazonaws.com"} } } ] }}

사용자가 플릿을 생성하도록 허용

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

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

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

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

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

사용자가 플릿을 삭제하도록 허용

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

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

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

다음 예제 정책 설명을 통해 사용자는 계정 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" } ] }

사용자가 플릿을 변경하도록 허용

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

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

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

다음 예제 정책 설명을 통해 사용자는 계정 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": "*" } ] }

사용자가 플릿 목록을 가져오도록 허용

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

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:ListFleets", "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가 관리하는 모든 도커 이미지에 대한 정보를 가져오도록 허용하는 정책 설명의 예입니다.

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

사용자가 플릿 서비스 역할에 대한 권한 정책을 추가하도록 허용

다음 리소스 정책 문 예제에서는 사용자가 플릿 서비스 역할에 대한 VPC 권한 정책을 추가할 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CodeBuildFleetVpcCreateNI", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface" ], "Resource": [ "arn:aws:ec2:region:account-id:subnet/subnet-id-1", "arn:aws:ec2:region:account-id:security-group/security-group-id-1", "arn:aws:ec2:region:account-id:network-interface/*" ] }, { "Sid": "CodeBuildFleetVpcPermission", "Effect": "Allow", "Action": [ "ec2:DescribeDhcpOptions", "ec2:DescribeNetworkInterfaces", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:ModifyNetworkInterfaceAttribute", "ec2:DeleteNetworkInterface" ], "Resource": "*" }, { "Sid": "CodeBuildFleetVpcNIPermission", "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" ] } } } ] }

다음 예제 리소스 정책 문을 사용하면 사용자가 플릿 서비스 역할에 대한 사용자 지정 Amazon Managed Image(AMI) 권한 정책을 추가할 수 있습니다.

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

다음 신뢰 정책 문 예제에서는 사용자가 플릿 서비스 역할에 대한 권한 정책을 추가할 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CodeBuildFleetVPCTrustPolicy", "Effect": "Allow", "Principal": { "Service": "codebuild.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "account-id" } } } ] }

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

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

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

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