AWS CodeCommit 는 더 이상 신규 고객이 사용할 수 없습니다. AWS CodeCommit 의 기존 고객은 정상적으로 서비스를 계속 이용할 수 있습니다. 자세히 알아보기
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
고객 관리형 정책 예
사용자 지정 IAM 정책을 생성하여 CodeCommit 작업 및 리소스에 대한 권한을 허용할 수 있습니다. 이러한 권한이 필요한 IAM 사용자 또는 그룹에 이러한 사용자 지정 정책을 연결할 수 있습니다. 또한 CodeCommit 와 다른 AWS 서비스 간의 통합을 위한 사용자 지정 IAM 정책을 생성할 수 있습니다.
고객 관리형 자격 증명 정책 예
다음 예제 IAM 정책은 다양한 CodeCommit 작업에 대한 권한을 부여합니다. 이를 사용하여 IAM 사용자 및 역할에 대한 Limit CodeCommit 액세스를 제한합니다. 이러한 정책은 CodeCommit 콘솔, Word,API AWS SDKs 또는를 사용하여 작업을 수행하는 기능을 제어합니다 AWS CLI.
참고
모든 예제는 미국 서부(오레곤) 리전(us-west-2)을 사용하며 가상 계정 IDs를 포함합니다.
예제
예제 1: 사용자가 단일에서 CodeCommit 작업을 수행하도록 허용 AWS 리전
다음 권한 정책은 와일드카드 문자("codecommit:*"
)를 사용하여 사용자가 다른 에서가 아닌 us-east-2 리전에서 모든 CodeCommit 작업을 수행할 수 있도록 허용합니다 AWS 리전.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codecommit:*", "Resource": "arn:aws:codecommit:us-east-2:111111111111:*", "Condition": { "StringEquals": { "aws:RequestedRegion": "us-east-2" } } }, { "Effect": "Allow", "Action": "codecommit:ListRepositories", "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": "us-east-2" } } } ] }
예제 2: 사용자에게 단일 리포지토리에서 Git을 사용하도록 허용
In CodeCommit에서 GitPull
IAM 정책 권한은 , git fetch git clone등을 포함하여 CodeCommit에서 검색되는 모든 Git 클라이언트 명령에 적용됩니다. 마찬가지로 GitPush
IAM 정책 권한은 데이터가 CodeCommit로 전송되는 모든 Git 클라이언트 명령에 적용됩니다. 예를 들어 Word GitPush
IAM 정책 권한이 로 설정된 경우 Allow
사용자는 Git 프로토콜을 사용하여 브랜치 삭제를 푸시할 수 있습니다. 이 푸시는 해당 IAM 사용자의 DeleteBranch
작업에 적용된 권한의 영향을 받지 않습니다. DeleteBranch
권한은 콘솔, , AWS CLI SDKs 및 API로 수행되는 작업에 적용되지만 Git 프로토콜에는 적용되지 않습니다.
다음 예제에서는 지정된 사용자가 라는 CodeCommit 리포지토리를 가져와서 로 푸시할 수 있습니다MyDemoRepo
.
{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "codecommit:GitPull", "codecommit:GitPush" ], "Resource" : "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo" } ] }
예제 3: 지정 IP 주소 범위에서 연결된 사용자에게 리포지토리에 대한 액세스 허용
IP 주소가 특정 IP 주소 범위 내에 있는 경우에만 사용자가 a CodeCommit 리포지토리에 연결할 수 있도록 허용하는 정책을 생성할 수 있습니다. 여기에는 서로 동등하게 타당한 두 가지 접근 방법이 있습니다. 사용자의 IP 주소가 특정 블록 내에 있지 않은 경우 CodeCommit 작업을 허용하지 않는 Deny
정책을 만들거나, 사용자의 IP 주소가 특정 블록 내에 있는 경우 CodeCommit 작업을 허용하는 Allow
정책을 만들 수 있습니다.
특정 IP 주소 범위에 들지 않는 모든 사용자에 대한 액세스를 거부하는 Deny
정책을 생성할 수 있습니다. 예를 들어 리포지토리에 액세스해야 하는 모든 사용자에게 AWSCodeCommitPowerUser 관리형 정책 및 고객 관리형 정책을 연결할 수 있습니다. 다음 예제 정책은 IP 주소가 지정된 IP 주소 블록인 203.0.113.0/16 내에 있지 않은 사용자에 대한 all CodeCommit 권한을 거부합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "codecommit:*" ], "Resource": "*", "Condition": { "NotIpAddress": { "aws:SourceIp": [ "203.0.113.0/16" ] } } } ] }
다음 예제 정책은 지정된 사용자가 지정된 주소 블록인 203 CodeCommit0.113.0/16 내에 IP 주소가 있는 경우에만 AWSCodeCommitPowerUser 관리형 정책의 동등한 권한을 사용하여 MyDemoRepo 리포지토리에 액세스할 수 있도록 허용합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codecommit:BatchGetRepositories", "codecommit:CreateBranch", "codecommit:CreateRepository", "codecommit:Get*", "codecommit:GitPull", "codecommit:GitPush", "codecommit:List*", "codecommit:Put*", "codecommit:Post*", "codecommit:Merge*", "codecommit:TagResource", "codecommit:Test*", "codecommit:UntagResource", "codecommit:Update*" ], "Resource": "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo", "Condition": { "IpAddress": { "aws:SourceIp": [ "203.0.113.0/16" ] } } } ] }
예시 4: 모든 브랜치에서 작업 허용 또는 거부
하나 이상의 브랜치의 지정 작업에 사용자 권한을 거부하는 정책을 생성할 수 있습니다. 또는 리포지토리의 다른 브랜치에 없을 작업을 하나 이상의 브랜치에서 허용하는 정책을 만들 수 있습니다. 이런 정책은 해당 관리형(사전에 정의된) 정책과 함께 사용할 수 있습니다. 자세한 내용은 의 브랜치에 대한 푸시 및 병합 제한 AWS CodeCommit 단원을 참조하십시오.
예를 들어 라는 리포지토리에서 해당 브랜치 삭제를 포함하여 사용자가 라는 브랜치를 변경할 수 있는 기능을 거부하는 Deny
정책을 생성할 수 있습니다.MyDemoRepo
. 이 정책은 AWSCodeCommitPowerUser 관리형 정책과 함께 사용할 수 있습니다. 이 두 정책이 적용된 사용자는 브랜치를 생성 및 삭제하고, 풀 요청을 생성하며, AWSCodeCommitPowerUser에서 허용하는 다른 모든 작업을 수행할 수 있지만, 메인 브랜치에 변경 사항을 푸시하거나, CodeCommit 콘솔의 메인 브랜치에 파일을 추가 또는 편집하거나, 브랜치 또는 풀 요청을 메인 브랜치에 병합할 수 없습니다. Deny
가 GitPush
에 적용되므로 정책에 Null
문을 포함해야 사용자 로컬 리포지토리에서 푸시할 때 최초의 GitPush
호출이 유효성 분석의 대상이 됩니다.
작은 정보
Amazon Web Services 계정의 모든 리포지토리에서 기본이라는 모든 브랜치에 적용되는 정책을 생성하려면에 리포지토리 ARN 대신 별표( *
)를 Resource
지정합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "codecommit:GitPush", "codecommit:DeleteBranch", "codecommit:PutFile", "codecommit:Merge*" ], "Resource": "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo", "Condition": { "StringEqualsIfExists": { "codecommit:References": [ "refs/heads/main" ] }, "Null": { "codecommit:References": "false" } } } ] }
다음 정책 예시에서는 Amazon Web Services 계정의 모든 리포지토리에서 main이라는 브랜치에 대한 사용자의 변경 권한을 허용합니다. 다른 브랜치에 대한 변경은 허용하지 않습니다. AWSCodeCommitReadOnly 관리형 정책과 함께이 정책을 사용하여 기본 브랜치의 리포지토리로 자동 푸시를 허용할 수 있습니다. 효과는 이므로 Allow
이 예제 정책은 AWSCodeCommitPowerUser와 같은 관리형 정책에서는 작동하지 않습니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codecommit:GitPush", "codecommit:Merge*" ], "Resource": "*", "Condition": { "StringEqualsIfExists": { "codecommit:References": [ "refs/heads/main" ] } } } ] }
예제 5: 태그에 따라 리포지토리에 대한 작업 거부 또는 허용
해당 리포지토리와 연결된 AWS 태그를 기반으로 리포지토리에 대한 작업을 허용하거나 거부하는 정책을 생성한 다음 Word 사용자를 관리하기 위해 구성한 IAM IAM 그룹에 해당 정책을 적용할 수 있습니다. 예를 들어 AWS 태그 키 상태 및 보안 암호의 키 값이 있는 모든 리포지토리에서 all CodeCommit 작업을 거부하는 정책을 생성한 다음 일반 개발자를 위해 생성한 IAM 그룹에 해당 정책을 적용할 수 있습니다(Developers
). 그런 다음 태그가 지정된 리포지토리에서 작업하는 개발자가 해당 일반 리포지토리의 멤버가 아닌지 확인해야 합니다.Developers
대신 제한 정책이 적용되지 않는 다른 IAM 그룹에 속합니다(SecretDevelopers).
다음 예제에서는 키 상태 및 키 값 Secret로 태그가 지정된 리포지토리에 대한 all CodeCommit 작업을 거부합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "codecommit:Associate*", "codecommit:Batch*", "codecommit:CancelUploadArchive", "codecommit:CreateBranch", "codecommit:CreateCommit", "codecommit:CreatePullRequest*", "codecommit:CreateRepository", "codecommit:CreateUnreferencedMergeCommit", "codecommit:DeleteBranch", "codecommit:DeleteCommentContent", "codecommit:DeleteFile", "codecommit:DeletePullRequest*", "codecommit:DeleteRepository", "codecommit:Describe*", "codecommit:DisassociateApprovalRuleTemplateFromRepository", "codecommit:EvaluatePullRequestApprovalRules", "codecommit:GetBlob", "codecommit:GetBranch", "codecommit:GetComment*", "codecommit:GetCommit", "codecommit:GetDifferences*", "codecommit:GetFile", "codecommit:GetFolder", "codecommit:GetMerge*", "codecommit:GetObjectIdentifier", "codecommit:GetPullRequest*", "codecommit:GetReferences", "codecommit:GetRepository*", "codecommit:GetTree", "codecommit:GetUploadArchiveStatus", "codecommit:Git*", "codecommit:ListAssociatedApprovalRuleTemplatesForRepository", "codecommit:ListBranches", "codecommit:ListPullRequests", "codecommit:ListTagsForResource", "codecommit:Merge*", "codecommit:OverridePullRequestApprovalRules", "codecommit:Post*", "codecommit:Put*", "codecommit:TagResource", "codecommit:TestRepositoryTriggers", "codecommit:UntagResource", "codecommit:UpdateComment", "codecommit:UpdateDefaultBranch", "codecommit:UpdatePullRequest*", "codecommit:UpdateRepository*", "codecommit:UploadArchive" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/Status": "Secret" } } } ] }
리소스로서 모든 리포지토리보다는 특정 리포지토리를 지정하여 이 전략을 더욱 구체화할 수 있습니다. 특정 태그로 태그가 지정되지 않은 모든 리포지토리에서 CodeCommit 작업을 허용하는 정책을 생성할 수도 있습니다. 예를 들어, 다음 정책은 지정된 태그로 태그가 지정되지 않은 리포지토리에 대한 AWSCodeCommitPowerUser CodeCommit 작업만 허용하는 점을 제외하고 CodeCommit 작업에 대한 Word 권한과 동등한 권한을 허용합니다.
참고
이 정책 예제에는 for CodeCommit 작업만 포함됩니다. AWSCodeCommitPowerUser 관리형 정책에 포함된 다른 AWS 서비스에 대한 작업은 포함되지 않습니다. 자세한 내용은 섹션을 참조하세요AWS 관리형 정책: AWSCodeCommitPowerUser.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codecommit:Associate*", "codecommit:Batch*", "codecommit:CancelUploadArchive", "codecommit:CreateBranch", "codecommit:CreateCommit", "codecommit:CreatePullRequest*", "codecommit:CreateRepository", "codecommit:CreateUnreferencedMergeCommit", "codecommit:DeleteBranch", "codecommit:DeleteCommentContent", "codecommit:DeleteFile", "codecommit:DeletePullRequest*", "codecommit:Describe*", "codecommit:DisassociateApprovalRuleTemplateFromRepository", "codecommit:EvaluatePullRequestApprovalRules", "codecommit:GetBlob", "codecommit:GetBranch", "codecommit:GetComment*", "codecommit:GetCommit", "codecommit:GetDifferences*", "codecommit:GetFile", "codecommit:GetFolder", "codecommit:GetMerge*", "codecommit:GetObjectIdentifier", "codecommit:GetPullRequest*", "codecommit:GetReferences", "codecommit:GetRepository*", "codecommit:GetTree", "codecommit:GetUploadArchiveStatus", "codecommit:Git*", "codecommit:ListAssociatedApprovalRuleTemplatesForRepository", "codecommit:ListBranches", "codecommit:ListPullRequests", "codecommit:ListTagsForResource", "codecommit:Merge*", "codecommit:OverridePullRequestApprovalRules", "codecommit:Post*", "codecommit:Put*", "codecommit:TagResource", "codecommit:TestRepositoryTriggers", "codecommit:UntagResource", "codecommit:UpdateComment", "codecommit:UpdateDefaultBranch", "codecommit:UpdatePullRequest*", "codecommit:UpdateRepository*", "codecommit:UploadArchive" ], "Resource": "*", "Condition": { "StringNotEquals": { "aws:ResourceTag/Status": "Secret", "aws:ResourceTag/Team": "Saanvi" } } }, { "Effect": "Allow", "Action": [ "codecommit:CreateApprovalRuleTemplate", "codecommit:GetApprovalRuleTemplate", "codecommit:ListApprovalRuleTemplates", "codecommit:ListRepositories", "codecommit:ListRepositoriesForApprovalRuleTemplate", "codecommit:UpdateApprovalRuleTemplateContent", "codecommit:UpdateApprovalRuleTemplateDescription", "codecommit:UpdateApprovalRuleTemplateName" ], "Resource": "*" } ] }
고객 관리형 통합 정책 예
이 섹션에서는 CodeCommit 와 다른 AWS 서비스 간의 통합에 대한 권한을 부여하는 고객 관리형 사용자 정책의 예를 제공합니다. a CodeCommit 리포지토리에 대한 교차 계정 액세스를 허용하는 정책의 구체적인 예는 섹션을 참조하세요역할을 사용하여 AWS CodeCommit 리포지토리에 대한 교차 계정 액세스 구성.
참고
모든 예제 AWS 리전 에서는가 필요한 경우 미국 서부(오레곤) 리전(us-west-2)을 사용하고 가상 계정 IDs를 포함합니다.
예제
예제 1: Amazon SNS 주제에 대한 교차 계정 액세스를 활성화하는 정책 생성
코드 푸시 또는 Amazon Simple Notification Service(Amazon SNS)에서 알림 전송과 같은 기타 이벤트가 작업을 트리거하도록 a CodeCommit 리포지토리를 구성할 수 있습니다. SNS CodeCommit리포지토리를 생성하는 데 사용된 것과 동일한 계정으로 Amazon Word 주제를 생성하는 경우 추가 IAM 정책 또는 권한을 구성할 필요가 없습니다. 주제를 생성한 다음 리포지토리 트리거를 생성할 수 있습니다. 자세한 내용은 Amazon SNS 주제에 대한 트리거 생성 단원을 참조하십시오.
그러나 다른 Amazon Web Services 계정에서 Amazon SNS 주제를 사용하도록 트리거를 구성하려면 먼저 CodeCommit 가 해당 주제에 게시할 수 있도록 허용하는 정책을 사용하여 해당 주제를 구성해야 합니다. 다른 계정에서 Amazon SNS 콘솔을 열고 목록에서 주제를 선택하고 다른 주제 작업에서 주제 정책 편집을 선택합니다. 고급 탭에서 주제에 대한 정책을 수정하여 CodeCommit 주제에 게시할 수 있도록 합니다. 예를 들어 정책이 기본 정책인 경우 다음과 같이 정책을 수정하고 red italic text
리포지토리, Amazon SNS 주제 및 계정의 값과 일치시키려면:
{ "Version": "2008-10-17", "Id": "__default_policy_ID", "Statement": [ { "Sid": "__default_statement_ID", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": [ "sns:Subscribe", "sns:ListSubscriptionsByTopic", "sns:DeleteTopic", "sns:GetTopicAttributes", "sns:Publish", "sns:RemovePermission", "sns:AddPermission", "sns:SetTopicAttributes" ], "Resource": "arn:aws:sns:
us-east-2
:111111111111
:NotMySNSTopic
", "Condition": { "StringEquals": { "AWS:SourceOwner": "111111111111
" } } }, { "Sid": "CodeCommit-Policy_ID
", "Effect": "Allow", "Principal": { "Service": "codecommit.amazonaws.com" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:us-east-2
:111111111111
:NotMySNSTopic
", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo
", "AWS:SourceAccount": "111111111111
" } } } ] }
예제 2: Amazon CloudWatch Events가 주제에 CodeCommit 이벤트를 게시하도록 허용하는 Amazon Simple Notification Service(Amazon SNS) 주제 정책 생성
CloudWatch 이벤트를 포함하여 이벤트가 발생할 때 Amazon SNS 주제에 게시하도록 CodeCommit 이벤트를 구성할 수 있습니다. 이렇게 하려면 주제에 대한 정책을 생성하거나 다음과 유사한 주제에 대한 기존 정책을 수정하여 CloudWatch Events가 Amazon SNS 주제에 이벤트를 게시할 수 있는 권한이 있는지 확인해야 합니다.
{ "Version": "2008-10-17", "Id": "__default_policy_ID", "Statement": [ { "Sid": "__default_statement_ID", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:us-east-2:123456789012:MyTopic", "Condition": { "StringEquals": { "AWS:SourceOwner": "123456789012" } } }, { "Sid": "Allow_Publish_Events", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:us-east-2:123456789012:MyTopic" } ] }
CodeCommit 및 CloudWatch 이벤트에 대한 자세한 내용은 지원되는 서비스의 CloudWatch 이벤트 이벤트 예제를 참조하세요. IAM 및 정책 언어에 대한 자세한 내용은 JSON IAM 정책 언어의 문법을 참조하세요.
예제 3: a CodeCommit 트리거와의 AWS Lambda 통합을 위한 정책 생성
코드 푸시 또는 다른 이벤트가 함수 호출과 같은 작업을 트리거하도록 a CodeCommit 리포지토리를 구성할 수 있습니다 AWS Lambda. 자세한 내용은 Lambda 함수를 위한 트리거 생성 단원을 참조하십시오. 이 정보는 트리거에만 적용되며 CloudWatch 이벤트에는 적용되지 않습니다.
트리거가 Lambda 함수를 직접 실행하도록 하고(Amazon SNS 주제를 사용하여 Lambda 함수를 호출하는 대신) Lambda 콘솔에서 트리거를 구성하지 않으려면 함수의 리소스 기반 정책에 다음과 유사한 문을 포함해야 합니다.
{ "Statement":{ "StatementId":"
Id-1
", "Action":"lambda:InvokeFunction", "Principal":"codecommit.amazonaws.com", "SourceArn":"arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo
", "SourceAccount":"111111111111
" } }
Lambda 함수를 호출하는 a CodeCommit 트리거를 수동으로 구성하는 경우 Lambda AddPermission 명령을 사용하여 CodeCommit 가 함수를 호출할 수 있는 권한을 부여해야 합니다. 해당 예제는 가 Lambda 함수를 실행 CodeCommit 하도록 허용하려면의 기존 Lambda 함수를 위한 트리거 생성 단원을 참조하세요.
Lambda 함수의 리소스 정책에 대한 자세한 내용은 AWS Lambda 개발자 안내서의 AddPermission 및 Pull/Push 이벤트 모델을 참조하세요.