IDベースのポリシー(IAM ポリシー) CodeCommit - AWS CodeCommit

IDベースのポリシー(IAM ポリシー) CodeCommit

次のIDベースのポリシーの例は、アカウント管理者が権限ポリシーを IAM ユーザー、グループ、ロールなど、 CodeCommit リソースです。

重要

初めに、CodeCommit リソースへのアクセスを管理するための基本概念と、使用可能なオプションについて説明する概要トピックをお読みになることをお勧めします。詳細については、「」を参照してください。へのアクセス権限の管理の概要 CodeCommit リソース.

以下は、アイデンティティベースのアクセス許可ポリシーの例です。

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "codecommit:BatchGetRepositories" ], "Resource" : [ "arn:aws:codecommit:us-east-2:111111111111:MyDestinationRepo", "arn:aws:codecommit:us-east-2:111111111111:MyDemo*" ] } ] }

このポリシーには、ユーザーが CodeCommit リポジトリ名 MyDestinationRepo すべて CodeCommit 名前で始まるリポジトリ MyDemous-east-2 地域。

を使用するために必要な許可 CodeCommit コンソール

各 CodeCommit API操作、および CodeCommit 操作、を参照 CodeCommit のアクセス許可に関するリファレンス.

ユーザーが CodeCommit 管理者は、 CodeCommit アクション。たとえば、 AWSCodeCommitPowerUser(AWSCodeCommitPowerUser) 管理ポリシー、またはユーザーまたはグループに相当するポリシー。

IDベースのポリシーによってユーザーに付与される権限に加えて、 CodeCommit には権限が必要です AWS Key Management Service (AWS KMS) アクション。A IAM ユーザーに明示的な Allow これらのアクションに対する権限は付与されますが、次の権限を設定するポリシーがユーザーに添付されていない必要があります。 Deny:

"kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlaintext", "kms:DescribeKey"

暗号化と CodeCommit、を参照 AWS KMS および暗号化.

コンソールでのリソースの表示

は、 CodeCommit コンソールには ListRepositories のリポジトリのリストを表示する権限 AWS アカウントの AWS サインインしている地域。コンソールには、 リソースに移動 機能を使用すると、リソースの大文字と小文字を区別しない検索をすばやく実行できます。この検索は、 AWS アカウントの AWS サインインしている地域。次のリソースは、以下のサービス全体で表示されます。

  • AWS CodeBuildプロジェクトを構築する。

  • AWS CodeCommit: リポジトリ

  • AWS CodeDeploy: アプリケーション

  • AWS CodePipeline: パイプライン

この検索をすべてのサービスのリソースにわたって実行するには、次のアクセス権限が必要です。

  • CodeBuild: ListProjects

  • CodeCommit: ListRepositories

  • CodeDeploy: ListApplications

  • CodePipeline: ListPipelines

あるサービスに対するアクセス権限がない場合、そのサービスのリソースに関して結果は返されません。リソースを表示するためのアクセス権限がある場合でも、特定のリソースの表示に対する明示的な Deny がある場合にはそれらのリソースは返されません。

の AWS 管理 (事前定義) ポリシーCodeCommit

は、AWS によって作成され管理されるスタンドアロンの IAM ポリシーが提供する多くの一般的ユースケースに対応します。AWS. これらの AWS 管理ポリシーは、一般的ユースケースに必要なアクセス許可を付与します。管理ポリシー CodeCommit また、 IAM、 Amazon SNS、および Amazon CloudWatch Events、該当するポリシーを付与されたユーザーの責任に必要とされる場合。たとえば、 AWSCodeCommitFullAccess ポリシーは、このポリシーを持つユーザーが CloudWatch イベント リポジトリのルール(名前がプレフィックスされているルール) codecommit)および Amazon SNS リポジトリ関連イベント(名前が先頭に codecommit)、および CodeCommit.

以下 AWS アカウント内のユーザーに添付できる管理ポリシーは、 CodeCommit.

AWSCodeCommitFullAccess

AWSCodeCommitFullAccess – へのフルアクセス権を付与します。CodeCommit. このポリシーは、 CodeCommit リポジトリや関連リソースを AWS アカウント(リポジトリの削除機能を含む)。

は、 AWSCodeCommitFullAccess ポリシーには、次のポリシーステートメントが含まれます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codecommit:*" ], "Resource": "*" }, { "Sid": "CloudWatchEventsCodeCommitRulesAccess", "Effect": "Allow", "Action": [ "events:DeleteRule", "events:DescribeRule", "events:DisableRule", "events:EnableRule", "events:PutRule", "events:PutTargets", "events:RemoveTargets", "events:ListTargetsByRule" ], "Resource": "arn:aws:events:*:*:rule/codecommit*" }, { "Sid": "SNSTopicAndSubscriptionAccess", "Effect": "Allow", "Action": [ "sns:CreateTopic", "sns:DeleteTopic", "sns:Subscribe", "sns:Unsubscribe", "sns:SetTopicAttributes" ], "Resource": "arn:aws:sns:*:*:codecommit*" }, { "Sid": "SNSTopicAndSubscriptionReadAccess", "Effect": "Allow", "Action": [ "sns:ListTopics", "sns:ListSubscriptionsByTopic", "sns:GetTopicAttributes" ], "Resource": "*" }, { "Sid": "LambdaReadOnlyListAccess", "Effect": "Allow", "Action": [ "lambda:ListFunctions" ], "Resource": "*" }, { "Sid": "IAMReadOnlyListAccess", "Effect": "Allow", "Action": [ "iam:ListUsers" ], "Resource": "*" }, { "Sid": "IAMReadOnlyConsoleAccess", "Effect": "Allow", "Action": [ "iam:ListAccessKeys", "iam:ListSSHPublicKeys", "iam:ListServiceSpecificCredentials" ], "Resource": "arn:aws:iam::*:user/${aws:username}" }, { "Sid": "IAMUserSSHKeys", "Effect": "Allow", "Action": [ "iam:DeleteSSHPublicKey", "iam:GetSSHPublicKey", "iam:ListSSHPublicKeys", "iam:UpdateSSHPublicKey", "iam:UploadSSHPublicKey" ], "Resource": "arn:aws:iam::*:user/${aws:username}" }, { "Sid": "IAMSelfManageServiceSpecificCredentials", "Effect": "Allow", "Action": [ "iam:CreateServiceSpecificCredential", "iam:UpdateServiceSpecificCredential", "iam:DeleteServiceSpecificCredential", "iam:ResetServiceSpecificCredential" ], "Resource": "arn:aws:iam::*:user/${aws:username}" }, { "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:codecommit:*" } } }, { "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": "AmazonCodeGuruReviewerFullAccess", "Effect": "Allow", "Action": [ "codeguru-reviewer:AssociateRepository", "codeguru-reviewer:DescribeRepositoryAssociation", "codeguru-reviewer:ListRepositoryAssociations", "codeguru-reviewer:DisassociateRepository", "codeguru-reviewer:DescribeCodeReview", "codeguru-reviewer:ListCodeReviews" ], "Resource": "*" }, { "Sid": "AmazonCodeGuruReviewerSLRCreation", "Action": "iam:CreateServiceLinkedRole", "Effect": "Allow", "Resource": "arn:aws:iam::*:role/aws-service-role/codeguru-reviewer.amazonaws.com/AWSServiceRoleForAmazonCodeGuruReviewer", "Condition": { "StringLike": { "iam:AWSServiceName": "codeguru-reviewer.amazonaws.com" } } }, { "Sid": "CloudWatchEventsManagedRules", "Effect": "Allow", "Action": [ "events:PutRule", "events:PutTargets", "events:DeleteRule", "events:RemoveTargets" ], "Resource": "*", "Condition": { "StringEquals": { "events:ManagedBy": "codeguru-reviewer.amazonaws.com" } } }, { "Sid": "CodeStarNotificationsChatbotAccess", "Effect": "Allow", "Action": [ "chatbot:DescribeSlackChannelConfigurations" ], "Resource": "*" } ] }

AWSCodeCommitPowerUser

AWSCodeCommitPowerUser – ユーザーは、 CodeCommit およびリポジトリ関連リソース (ただし、削除できないリソースを除く) CodeCommit リポジトリを作成または削除したり、 AWS サービス(例: Amazon CloudWatch Events. ほとんどのユーザーにこのポリシーを適用することをお勧めします。

は、 AWSCodeCommitPowerUser ポリシーには、次のポリシーステートメントが含まれます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codecommit:AssociateApprovalRuleTemplateWithRepository", "codecommit:BatchAssociateApprovalRuleTemplateWithRepositories", "codecommit:BatchDisassociateApprovalRuleTemplateFromRepositories", "codecommit:BatchGet*", "codecommit:BatchDescribe*", "codecommit:Create*", "codecommit:DeleteBranch", "codecommit:DeleteFile", "codecommit:Describe*", "codecommit:DisassociateApprovalRuleTemplateFromRepository", "codecommit:EvaluatePullRequestApprovalRules", "codecommit:Get*", "codecommit:List*", "codecommit:Merge*", "codecommit:OverridePullRequestApprovalRules", "codecommit:Put*", "codecommit:Post*", "codecommit:TagResource", "codecommit:Test*", "codecommit:UntagResource", "codecommit:Update*", "codecommit:GitPull", "codecommit:GitPush" ], "Resource": "*" }, { "Sid": "CloudWatchEventsCodeCommitRulesAccess", "Effect": "Allow", "Action": [ "events:DeleteRule", "events:DescribeRule", "events:DisableRule", "events:EnableRule", "events:PutRule", "events:PutTargets", "events:RemoveTargets", "events:ListTargetsByRule" ], "Resource": "arn:aws:events:*:*:rule/codecommit*" }, { "Sid": "SNSTopicAndSubscriptionAccess", "Effect": "Allow", "Action": [ "sns:Subscribe", "sns:Unsubscribe" ], "Resource": "arn:aws:sns:*:*:codecommit*" }, { "Sid": "SNSTopicAndSubscriptionReadAccess", "Effect": "Allow", "Action": [ "sns:ListTopics", "sns:ListSubscriptionsByTopic", "sns:GetTopicAttributes" ], "Resource": "*" }, { "Sid": "LambdaReadOnlyListAccess", "Effect": "Allow", "Action": [ "lambda:ListFunctions" ], "Resource": "*" }, { "Sid": "IAMReadOnlyListAccess", "Effect": "Allow", "Action": [ "iam:ListUsers" ], "Resource": "*" }, { "Sid": "IAMReadOnlyConsoleAccess", "Effect": "Allow", "Action": [ "iam:ListAccessKeys", "iam:ListSSHPublicKeys", "iam:ListServiceSpecificCredentials" ], "Resource": "arn:aws:iam::*:user/${aws:username}" }, { "Sid": "IAMUserSSHKeys", "Effect": "Allow", "Action": [ "iam:DeleteSSHPublicKey", "iam:GetSSHPublicKey", "iam:ListSSHPublicKeys", "iam:UpdateSSHPublicKey", "iam:UploadSSHPublicKey" ], "Resource": "arn:aws:iam::*:user/${aws:username}" }, { "Sid": "IAMSelfManageServiceSpecificCredentials", "Effect": "Allow", "Action": [ "iam:CreateServiceSpecificCredential", "iam:UpdateServiceSpecificCredential", "iam:DeleteServiceSpecificCredential", "iam:ResetServiceSpecificCredential" ], "Resource": "arn:aws:iam::*:user/${aws:username}" }, { "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:codecommit:*" } } }, { "Sid": "CodeStarNotificationsListAccess", "Effect": "Allow", "Action": [ "codestar-notifications:ListNotificationRules", "codestar-notifications:ListTargets", "codestar-notifications:ListTagsforResource", "codestar-notifications:ListEventTypes" ], "Resource": "*" }, { "Sid": "AmazonCodeGuruReviewerFullAccess", "Effect": "Allow", "Action": [ "codeguru-reviewer:AssociateRepository", "codeguru-reviewer:DescribeRepositoryAssociation", "codeguru-reviewer:ListRepositoryAssociations", "codeguru-reviewer:DisassociateRepository", "codeguru-reviewer:DescribeCodeReview", "codeguru-reviewer:ListCodeReviews" ], "Resource": "*" }, { "Sid": "AmazonCodeGuruReviewerSLRCreation", "Action": "iam:CreateServiceLinkedRole", "Effect": "Allow", "Resource": "arn:aws:iam::*:role/aws-service-role/codeguru-reviewer.amazonaws.com/AWSServiceRoleForAmazonCodeGuruReviewer", "Condition": { "StringLike": { "iam:AWSServiceName": "codeguru-reviewer.amazonaws.com" } } }, { "Sid": "CloudWatchEventsManagedRules", "Effect": "Allow", "Action": [ "events:PutRule", "events:PutTargets", "events:DeleteRule", "events:RemoveTargets" ], "Resource": "*", "Condition": { "StringEquals": { "events:ManagedBy": "codeguru-reviewer.amazonaws.com" } } }, { "Sid": "CodeStarNotificationsChatbotAccess", "Effect": "Allow", "Action": [ "chatbot:DescribeSlackChannelConfigurations" ], "Resource": "*" } ] }

AWSCodeCommitReadOnly

AWSCodeCommitReadOnly – への読み取り専用アクセス権を付与 CodeCommit リポジトリ関連のリソースは AWS 独自のサービスを作成・管理できる機能 CodeCommit- 関連リソース(Git認証情報やSSHキーなど) IAM リポジトリにアクセスするときに使用するユーザー)。リポジトリのコンテンツを読み込む機能 (コンテンツを変更させない) を付与したいユーザーにこのポリシーを適用します。

は、 AWSCodeCommitReadOnly ポリシーには、次のポリシーステートメントが含まれます。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "codecommit:BatchGet*", "codecommit:BatchDescribe*", "codecommit:Describe*", "codecommit:EvaluatePullRequestApprovalRules", "codecommit:Get*", "codecommit:List*", "codecommit:GitPull" ], "Resource":"*" }, { "Sid":"CloudWatchEventsCodeCommitRulesReadOnlyAccess", "Effect":"Allow", "Action":[ "events:DescribeRule", "events:ListTargetsByRule" ], "Resource":"arn:aws:events:*:*:rule/codecommit*" }, { "Sid":"SNSSubscriptionAccess", "Effect":"Allow", "Action":[ "sns:ListTopics", "sns:ListSubscriptionsByTopic", "sns:GetTopicAttributes" ], "Resource":"*" }, { "Sid":"LambdaReadOnlyListAccess", "Effect":"Allow", "Action":[ "lambda:ListFunctions" ], "Resource":"*" }, { "Sid":"IAMReadOnlyListAccess", "Effect":"Allow", "Action":[ "iam:ListUsers" ], "Resource":"*" }, { "Sid":"IAMReadOnlyConsoleAccess", "Effect":"Allow", "Action":[ "iam:ListAccessKeys", "iam:ListSSHPublicKeys", "iam:ListServiceSpecificCredentials", "iam:ListAccessKeys", "iam:GetSSHPublicKey" ], "Resource":"arn:aws:iam::*:user/${aws:username}" }, { "Sid":"CodeStarNotificationsReadOnlyAccess", "Effect":"Allow", "Action":[ "codestar-notifications:DescribeNotificationRule" ], "Resource":"*", "Condition":{ "StringLike":{ "codestar-notifications:NotificationsForResource":"arn:aws:codecommit:*" } } }, { "Sid":"CodeStarNotificationsListAccess", "Effect":"Allow", "Action":[ "codestar-notifications:ListNotificationRules", "codestar-notifications:ListEventTypes", "codestar-notifications:ListTargets" ], "Resource":"*" }, { "Sid": "AmazonCodeGuruReviewerReadOnlyAccess", "Effect": "Allow", "Action": [ "codeguru-reviewer:DescribeRepositoryAssociation", "codeguru-reviewer:ListRepositoryAssociations", "codeguru-reviewer:DescribeCodeReview", "codeguru-reviewer:ListCodeReviews" ], "Resource": "*" } ] }

CodeCommit managed policies and notifications

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

Permissions related to notifications in full access managed policies

The AWSCodeCommitFullAccess 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:codecommit:*"} } }, { "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": "CodeStarNotificationsChatbotAccess", "Effect": "Allow", "Action": [ "chatbot:DescribeSlackChannelConfigurations" ], "Resource": "*" }

Permissions related to notifications in read-only managed policies

The AWSCodeCommitReadOnlyAccess 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:codecommit:*"} } }, { "Sid": "CodeStarNotificationsListAccess", "Effect": "Allow", "Action": [ "codestar-notifications:ListNotificationRules", "codestar-notifications:ListEventTypes", "codestar-notifications:ListTargets" ], "Resource": "*" }

Permissions related to notifications in other managed policies

The AWSCodeCommitPowerUser 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:DeleteNotificationRule", "codestar-notifications:Subscribe", "codestar-notifications:Unsubscribe" ], "Resource": "*", "Condition" : { "StringLike" : {"codestar-notifications:NotificationsForResource" : "arn:aws:codecommit*"} } }, { "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 CodeCommit 管理ポリシーと Amazon CodeGuru Reviewer

CodeCommit は、プログラム分析と Machine Learning を使用して一般的な問題を検出し、Java コードの修正を推奨する自動化されたコードレビューサービスである、Amazon CodeGuru Reviewer をサポートしています。のマネージドポリシー CodeCommit 方針声明を含める CodeGuru Reviewer 機能。詳細については、以下を参照してください。 とは Amazon CodeGuru Reviewer.

に関連する権限 CodeGuru Reviewer () AWSCodeCommitFullAccess

は、 AWSCodeCommitFullAccess 管理ポリシーには、次のステートメントが含まれます。 CodeGuru Reviewer 関連あり、関連なし CodeCommit リポジトリです。この管理ポリシーが適用されたユーザーは、 CodeCommit リポジトリおよびリポジトリト CodeGuru Reviewer プルリクエストのレビュージョブのステータスを表示します。

{ "Sid": "AmazonCodeGuruReviewerFullAccess", "Effect": "Allow", "Action": [ "codeguru-reviewer:AssociateRepository", "codeguru-reviewer:DescribeRepositoryAssociation", "codeguru-reviewer:ListRepositoryAssociations", "codeguru-reviewer:DisassociateRepository", "codeguru-reviewer:DescribeCodeReview", "codeguru-reviewer:ListCodeReviews" ], "Resource": "*" }, { "Sid": "AmazonCodeGuruReviewerSLRCreation", "Action": "iam:CreateServiceLinkedRole", "Effect": "Allow", "Resource": "arn:aws:iam::*:role/aws-service-role/codeguru-reviewer.amazonaws.com/AWSServiceRoleForAmazonCodeGuruReviewer", "Condition": { "StringLike": { "iam:AWSServiceName": "codeguru-reviewer.amazonaws.com" } } }, { "Sid": "CloudWatchEventsManagedRules", "Effect": "Allow", "Action": [ "events:PutRule", "events:PutTargets", "events:DeleteRule", "events:RemoveTargets" ], "Resource": "*", "Condition": { "StringEquals": { "events:ManagedBy": "codeguru-reviewer.amazonaws.com" } } }

に関連する権限 CodeGuru Reviewer () AWSCodeCommitPowerUser

は、 AWSCodeCommitPowerUser 管理ポリシーには、ユーザーがリポジトリを CodeGuru Reviewer、関連付けステータスの表示、プルリクエストのレビュージョブのステータスの表示。

{ "Sid": "AmazonCodeGuruReviewerFullAccess", "Effect": "Allow", "Action": [ "codeguru-reviewer:AssociateRepository", "codeguru-reviewer:DescribeRepositoryAssociation", "codeguru-reviewer:ListRepositoryAssociations", "codeguru-reviewer:DisassociateRepository", "codeguru-reviewer:DescribeCodeReview", "codeguru-reviewer:ListCodeReviews" ], "Resource": "*" }, { "Sid": "AmazonCodeGuruReviewerSLRCreation", "Action": "iam:CreateServiceLinkedRole", "Effect": "Allow", "Resource": "arn:aws:iam::*:role/aws-service-role/codeguru-reviewer.amazonaws.com/AWSServiceRoleForAmazonCodeGuruReviewer", "Condition": { "StringLike": { "iam:AWSServiceName": "codeguru-reviewer.amazonaws.com" } } }, { "Sid": "CloudWatchEventsManagedRules", "Effect": "Allow", "Action": [ "events:PutRule", "events:PutTargets", "events:DeleteRule", "events:RemoveTargets" ], "Resource": "*", "Condition": { "StringEquals": { "events:ManagedBy": "codeguru-reviewer.amazonaws.com" } } }

に関連する権限 CodeGuru Reviewer () AWSCodeCommitReadOnly

は、 AWSCodeCommitReadOnlyAccess 管理ポリシーには、以下のステートメントが含まれており、読み取り専用アクセスが許可されます。 CodeGuru Reviewer 関連付けステータスとプルリクエストのレビュージョブのステータスを表示します。このマネージドポリシーが適用されたユーザーは、リポジトリを関連付けたり関連付け解除できません。

{ "Sid": "AmazonCodeGuruReviewerReadOnlyAccess", "Effect": "Allow", "Action": [ "codeguru-reviewer:DescribeRepositoryAssociation", "codeguru-reviewer:ListRepositoryAssociations", "codeguru-reviewer:DescribeCodeReview", "codeguru-reviewer:ListCodeReviews" ], "Resource": "*" }

Amazon CodeGuru Reviewer サービスにリンクされたロール

リポジトリを CodeGuru Reviewerサービスリンクされた役割が作成され、 CodeGuru Reviewer は、プル要求で問題を検出し、Javaコードの修正を提言できます。サービスにリンクされたロールは、 と呼ばれます。AWSServiceRoleForAmazonCodeGuruReviewer. 詳細については、以下を参照してください。 サービス連携ロールの使用 Amazon CodeGuru Reviewer.

詳細については、以下を参照してください。 AWS管理ポリシーIAM ユーザーガイド.

カスタマー管理ポリシーの例

独自のカスタム IAM 権限を許可するポリシー CodeCommit アクションとリソースです これらのカスタムポリシーは、それらのアクセス権限が必要な IAM ユーザーまたはグループにアタッチできます。独自のカスタム IAM のポリシー CodeCommit およびその他 AWS サービス。

顧客管理IDポリシーの例

次の例は、 IAM ポリシーがさまざまな CodeCommit アクション。それらを使って制限する CodeCommit のアクセス IAM ユーザーと役割。これらのポリシーは、 CodeCommit コンソール、API、 AWS SDK、または AWS CLI.

注記

すべての例で、米国西部 (オレゴン) リージョン (us-west-2) リージョンを使用し、架空のアカウント ID を含めています。

例:

例 1 ユーザーに実行を許可 CodeCommit 単一のAWSリージョンにおけるオペレーション

次の権限ポリシーでは、ワイルドカード文字("codecommit:*") を使用して、ユーザーがすべての CodeCommit のアクション us-east-2 地域(他の地域以外) 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 ユーザーに 1 つのリポジトリへの Git の使用を許可

内 CodeCommit、 GitPull IAM ポリシー権限は、データが取得されるすべてのGitクライアントコマンドに適用されます。 CodeCommit、含む git fetchgit cloneなど。同様に、 GitPush IAM ポリシー権限は、データが送信されるすべてのGitクライアントコマンドに適用されます。 CodeCommit. たとえば、 GitPush IAM ポリシー権限が に設定されている Allowでは、ユーザーは Git プロトコルを使用してブランチの削除をプッシュできます。このプッシュは、 DeleteBranch オペレーションを IAM ユーザー。は、 DeleteBranch 権限は、コンソール、 AWS CLI、SDK、および 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 アドレス範囲にある場合にのみ、ユーザーが CodeCommit リポジトリに接続することを許可するポリシーを作成できます。これには、有効なアプローチが 2 つあります。_を作成できます。 Deny 許可しないポリシー CodeCommit ユーザーのIPアドレスが特定のブロック内にない場合の操作、または Allow ポリシーを CodeCommit ユーザーのIPアドレスが特定のブロック内にある場合の操作。

特定の IP 範囲にないすべてのユーザーのアクセスを拒否する Deny ポリシーを作成することができます。たとえば、AWSCodeCommitPowerUser 管理ポリシーとカスタマー管理ポリシーをリポジトリへのアクセスを必要とするすべてのユーザーにアタッチできます。次のポリシーの例では、IP アドレスが指定された IP アドレスのブロック 203.0.113.0/16 にないユーザーの CodeCommit アクセス許可をすべて拒否します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "codecommit:*" ], "Resource": "*", "Condition": { "NotIpAddress": { "aws:SourceIp": [ "203.0.113.0/16" ] } } } ] }

次のポリシー例では、指定したユーザーが CodeCommit リポジトリ名 MyDemoRepo の同等の権限で AWSCodeCommitPowerUser IPアドレスが203.0.113.0/16の指定されたアドレス ブロック内にある場合にのみ管理ポリシー:

{ "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 ブランチのアクションを拒否または許可する

1 つ以上のブランチで、指定したアクションに対するユーザーのアクセス許可を拒否するポリシーを作成できます。あるいは、リポジトリの他のブランチにはないような、1 つ以上のブランチに対してアクションを許可するポリシーを作成することもできます。これらのポリシーは、適切な管理 (事前定義済み) ポリシーとともに使用できます。詳細については、「」を参照してください。プッシュとマージをのブランチに制限 AWS CodeCommit.

たとえば、 Deny ユーザーが、MyDemoRepo。 このポリシーは、 AWSCodeCommitPowerUser 管理ポリシー。これら2つのポリシーを適用したユーザーは、ブランチの作成と削除、プルリクエストの作成、および AWSCodeCommitPowerUserですが、 マスターでファイルを追加または編集します。 マスター のブランチ CodeCommit コンソール、またはブランチやプルリクエストを マスター ブランチ。なぜなら Deny は次に適用されます GitPushNull ポリシー内のステートメントを GitPush ユーザがローカルからプッシュする場合に、妥当性について分析される呼び出し。

ヒント

という名前のすべてのブランチに適用されるポリシーを作成できます。 マスター すべてのリポジトリに AWS アカウント、対象 Resource、アスタリスク( * )を、リポジトリ ARN の代わりに使用します。

{ "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/master" ] }, "Null": { "codecommit:References": false } } } ] }

次のポリシー例では、ユーザーは AWS アカウントのすべてのリポジトリ内の master というブランチに変更を加えることができます。他のブランチへの変更は許可されません。このポリシーを AWSCodeCommitReadOnly 管理ポリシーとともに使用して、マスターブランチにあるリポジトリへの自動プッシュを許可することができます。効果は Allowこのポリシー例は、 AWSCodeCommitPowerUser.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codecommit:GitPush", "codecommit:Merge*" ], "Resource": "*", "Condition": { "StringEqualsIfExists": { "codecommit:References": [ "refs/heads/master" ] } } } ] }

例 5 タグのあるリポジトリのアクションを拒否または許可する

リポジトリに対するアクションを許可または拒否するポリシーは、 AWS これらのリポジトリに関連づけられたタグを適用し、それらのポリシーを IAM 管理用に構成するグループ IAM ユーザー。たとえば、すべての CodeCommit リポジトリ上のアクションを AWS タグキー ステータス および 秘密その後、そのポリシーを一般的な開発者(Developers)。 その後、タグ付けされたリポジトリで作業する開発者が、その一般メンバーではないことを確認する必要があります。Developers グループに属しますが、別のグループに属しています。 IAM 制限ポリシーが適用されていないグループ (シークレット開発者)。

次の例では、すべての CodeCommit キーでタグ付けされたリポジトリ上のアクション ステータス および 秘密:

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Deny", "Action" : "codecommit:*" "Resource" : "*", "Condition" : { "StringEquals" : "aws:ResourceTag/Status": "Secret" } } ] }

リソースとしてすべてのリポジトリではなく特定のリポジトリを指定することで、この戦略をさらに改善できます。また、 CodeCommit 特定のタグでタグ付けされていないすべてのリポジトリ上のアクション。たとえば、次のポリシーは特定のタグによってタグ付けされたものを除くすべてのリポジトリに、AWSCodeCommitPowerUser 権限に相当する許可を行います。

{ "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:TagResource", "codecommit:Test*", "codecommit:UntagResource", "codecommit:Update*" ], "Resource": "*", "Condition": { "StringNotEquals": { "aws:ResourceTag/Status": "Secret", "aws:ResourceTag/Team": "Saanvi" } } } ] }

顧客管理統合ポリシーの例

このセクションでは、 CodeCommit およびその他 AWS サービス。 リポジトリへのクロスアカウントアクセスを許可するポリシーの特定の例については、「CodeCommit」を参照してください。へのクロスアカウントアクセスを設定する AWS CodeCommit ロールを使用するリポジトリ.

注記

すべての例は、 米国西部 (オレゴン) リージョン (us-west-2) を使用して、AWS リージョンが必要になり、架空のアカウント ID を含む必要があります。

例:

例 1 アカウント間のアクセスを可能にするポリシーを作成します。 Amazon SNS トピック

構成できる CodeCommit コードプッシュやその他のイベントがアクションをトリガーするようにします。たとえば、 Amazon Simple Notification Service (Amazon SNS)。_を作成した場合 Amazon SNS 同じアカウントを持つトピックを CodeCommit リポジトリを追加したり、 IAM ポリシーまたは権限。トピックを作成し、リポジトリのトリガーを作成できます。詳細については、「」を参照してください。のトリガーを作成する Amazon SNS トピック.

ただし、 Amazon SNS 別のトピック AWS 設定するには、まずそのトピックを 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:Receive", "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 Simple Notification Service (Amazon SNS)許可するトピックポリシー Amazon CloudWatch Events 公開する CodeCommit トピックへのイベント

構成できる CloudWatch イベント 公開するには Amazon SNS イベント発生時のトピック CodeCommit イベント。そのためには、 CloudWatch イベント には、イベントを公開する権限があります。 Amazon SNS トピックのポリシーを作成するか、トピックの既存のポリシーを変更する方法は次のとおりです。

{ Version":"2012-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 およびポリシー言語については、 IAM JSONポリシー言語の文法.

例 3 のポリシーを作成する AWS Lambda とのインテグレーション CodeCommit トリガー

構成できる 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" } }

手動で構成する場合 CodeCommit トリガーは、 Lambda 機能を使用する場合は、 Lambda 許可の追加 許可を与えるコマンド CodeCommit 関数を呼び出します。例は、 許可する CodeCommit 実行するには Lambda 機能 セクション/ 既存の Lambda 関数のトリガーを作成する.

のリソースポリシーの詳細については、 Lambda 関数、を参照カンスウ、「 許可の追加 および プル/プッシュ・イベント・モデルAWS Lambda 開発者ガイド.