

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menggunakan kebijakan berbasis identitas (Kebijakan IAM) untuk CodeCommit
<a name="auth-and-access-control-iam-identity-based-access-control"></a>

Contoh kebijakan berbasis identitas berikut menunjukkan bagaimana administrator akun dapat melampirkan kebijakan izin ke identitas IAM (pengguna, grup, dan peran) untuk memberikan izin untuk melakukan operasi pada sumber daya. CodeCommit 

**penting**  
Kami menyarankan Anda terlebih dahulu meninjau topik pengantar yang menjelaskan konsep dasar dan opsi yang tersedia untuk mengelola akses ke CodeCommit sumber daya Anda. Untuk informasi selengkapnya, lihat [Ikhtisar mengelola izin akses ke sumber daya Anda CodeCommit](auth-and-access-control.md#auth-and-access-control-iam-access-control-identity-based).

**Topics**
+ [Izin yang diperlukan untuk menggunakan konsol CodeCommit](#console-permissions)
+ [Menampilkan sumber daya di konsol](#console-resources)
+ [AWS kebijakan terkelola untuk CodeCommit](security-iam-awsmanpol.md)
+ [Contoh kebijakan yang dikelola pelanggan](customer-managed-policies.md)

Berikut ini adalah contoh kebijakan izin berbasis identitas: 

------
#### [ JSON ]

****  

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

------

Kebijakan ini memiliki satu pernyataan yang memungkinkan pengguna untuk mendapatkan informasi tentang CodeCommit repositori bernama `MyDestinationRepo` dan semua CodeCommit repositori yang dimulai dengan nama `MyDemo` di Wilayah. **us-east-2** 

## Izin yang diperlukan untuk menggunakan konsol CodeCommit
<a name="console-permissions"></a>

Untuk melihat izin yang diperlukan untuk setiap operasi CodeCommit API, dan untuk informasi selengkapnya tentang CodeCommit operasi, lihat[CodeCommit referensi izin](auth-and-access-control-permissions-reference.md).

Untuk memungkinkan pengguna menggunakan CodeCommit konsol, administrator harus memberi mereka izin untuk CodeCommit tindakan. Misalnya, Anda dapat melampirkan kebijakan [AWSCodeCommitPowerUser](security-iam-awsmanpol.md#managed-policies-poweruser)terkelola atau yang setara dengan pengguna atau grup.

Selain izin yang diberikan kepada pengguna berdasarkan kebijakan berbasis identitas, CodeCommit memerlukan izin untuk tindakan (). AWS Key Management Service AWS KMS Pengguna IAM tidak perlu izin `Allow` eksplisit untuk tindakan ini, tetapi pengguna tidak boleh memiliki kebijakan terlampir yang menetapkan izin berikut untuk `Deny`:

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

Untuk informasi selengkapnya tentang enkripsi dan CodeCommit, lihat[AWS KMS dan enkripsi](encryption.md).

## Menampilkan sumber daya di konsol
<a name="console-resources"></a>

 CodeCommit Konsol memerlukan `ListRepositories` izin untuk menampilkan daftar repositori untuk akun Amazon Web Services Anda di Wilayah AWS tempat Anda masuk. Konsol juga termasuk fungsi **Pergi ke sumber daya** untuk secara cepat melakukan pencarian sensitif huruf besar/kecil untuk sumber daya. Pencarian ini dilakukan di akun Amazon Web Services Anda di Wilayah AWS tempat Anda masuk. Sumber daya berikut ditampilkan di seluruh layanan berikut:
+ AWS CodeBuild: Bangun proyek
+ AWS CodeCommit: Repositori
+ AWS CodeDeploy: Aplikasi
+ AWS CodePipeline: Alur

Untuk melakukan pencarian ini di sumber daya di semua layanan, Anda harus memiliki izin berikut:
+ CodeBuild: `ListProjects`
+ CodeCommit: `ListRepositories`
+ CodeDeploy: `ListApplications`
+ CodePipeline: `ListPipelines`

Hasil tidak dikembalikan untuk sumber daya layanan jika Anda tidak memiliki izin untuk layanan tersebut. Bahkan jika Anda memiliki izin untuk melihat sumber daya, sumber daya tertentu tidak akan dikembalikan jika ada `Deny` eksplisit untuk melihat sumber daya tersebut.

# AWS kebijakan terkelola untuk CodeCommit
<a name="security-iam-awsmanpol"></a>

Untuk menambahkan izin ke pengguna, grup, dan peran, lebih mudah menggunakan kebijakan AWS terkelola daripada menulis kebijakan sendiri. Dibutuhkan waktu dan keahlian untuk [membuat kebijakan yang dikelola pelanggan IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html) yang hanya memberi tim Anda izin yang mereka butuhkan. Untuk memulai dengan cepat, Anda dapat menggunakan kebijakan AWS terkelola kami. Kebijakan ini mencakup kasus penggunaan umum dan tersedia di Akun AWS Anda. Untuk informasi selengkapnya tentang kebijakan AWS [AWS terkelola, lihat kebijakan terkelola](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) di *Panduan Pengguna IAM*.

AWS layanan memelihara dan memperbarui kebijakan AWS terkelola. Anda tidak dapat mengubah izin dalam kebijakan AWS terkelola. Layanan terkadang menambahkan izin tambahan ke kebijakan yang dikelola AWS untuk mendukung fitur-fitur baru. Jenis pembaruan ini akan memengaruhi semua identitas (pengguna, grup, dan peran) di mana kebijakan tersebut dilampirkan. Layanan kemungkinan besar akan memperbarui kebijakan yang dikelola AWS saat ada fitur baru yang diluncurkan atau saat ada operasi baru yang tersedia. Layanan tidak menghapus izin dari kebijakan AWS terkelola, sehingga pembaruan kebijakan tidak akan merusak izin yang ada.

Selain itu, AWS mendukung kebijakan terkelola untuk fungsi pekerjaan yang mencakup beberapa layanan. Misalnya, kebijakan **ReadOnlyAccess** AWS terkelola menyediakan akses hanya-baca ke semua AWS layanan dan sumber daya. Saat layanan meluncurkan fitur baru, AWS tambahkan izin hanya-baca untuk operasi dan sumber daya baru. Untuk melihat daftar dan deskripsi dari kebijakan fungsi tugas, lihat [kebijakan yang dikelola AWS untuk fungsi tugas](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html) di *Panduan Pengguna IAM*.

AWS mengatasi banyak kasus penggunaan umum dengan menyediakan kebijakan IAM mandiri yang dibuat dan dikelola oleh. AWS Kebijakan AWS terkelola ini memberikan izin yang diperlukan untuk kasus penggunaan umum. Kebijakan terkelola CodeCommit juga memberikan izin untuk melakukan operasi di layanan lain, seperti IAM, Amazon SNS, dan CloudWatch Amazon Events, sebagaimana diperlukan untuk tanggung jawab bagi pengguna yang telah diberikan kebijakan tersebut. Misalnya, AWSCode CommitFullAccess kebijakan tersebut adalah kebijakan pengguna tingkat administratif yang memungkinkan pengguna dengan kebijakan ini membuat dan mengelola aturan CloudWatch Acara untuk repositori (aturan yang namanya diawali) dan topik `codecommit` Amazon SNS untuk pemberitahuan tentang peristiwa terkait repositori (topik yang namanya diawali), serta mengelola repositori di. `codecommit` CodeCommit 

Kebijakan AWS terkelola berikut, yang dapat Anda lampirkan ke pengguna di akun Anda, khusus untuk CodeCommit.

**Topics**
+ [AWS kebijakan terkelola: AWSCode CommitFullAccess](#managed-policies-full)
+ [AWS kebijakan terkelola: AWSCode CommitPowerUser](#managed-policies-poweruser)
+ [AWS kebijakan terkelola: AWSCode CommitReadOnly](#managed-policies-read)
+ [CodeCommit kebijakan dan pemberitahuan terkelola](#notifications-permissions)
+ [AWS CodeCommit kebijakan terkelola dan Amazon CodeGuru Reviewer](#codeguru-permissions)
+ [CodeCommit pembaruan kebijakan AWS terkelola](#security-iam-awsmanpol-updates)

## AWS kebijakan terkelola: AWSCode CommitFullAccess
<a name="managed-policies-full"></a>

Anda dapat melampirkan kebijakan `AWSCodeCommitFullAccess` ke identitas IAM Anda. Kebijakan ini memberikan akses penuh ke CodeCommit. Terapkan kebijakan ini hanya untuk pengguna tingkat administratif yang ingin Anda berikan kontrol penuh atas CodeCommit repositori dan sumber daya terkait di akun Amazon Web Services Anda, termasuk kemampuan untuk menghapus repositori.

 AWSCodeCommitFullAccess Kebijakan tersebut berisi pernyataan kebijakan berikut:

------
#### [ JSON ]

****  

```
    {
      "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": {
            "ArnLike": {
              "codestar-notifications:NotificationsForResource": "arn:aws:iam::*:role/Service*"
            }
          }
        },
        {
          "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",
            "chatbot:ListMicrosoftTeamsChannelConfigurations"
          ],
          "Resource": "*"
        },
        {
            "Sid": "CodeStarConnectionsReadOnlyAccess",
            "Effect": "Allow",
            "Action": [
                "codestar-connections:ListConnections",
                "codestar-connections:GetConnection"
            ],
            "Resource": "arn:aws:codestar-connections:*:*:connection/*"
        }
      ]
    }
```

------

## AWS kebijakan terkelola: AWSCode CommitPowerUser
<a name="managed-policies-poweruser"></a>

Anda dapat melampirkan kebijakan `AWSCodeCommitPowerUser` ke identitas IAM Anda. Kebijakan ini memungkinkan pengguna mengakses semua fungsi CodeCommit dan sumber daya terkait repositori, kecuali tidak memungkinkan mereka untuk menghapus repositori atau membuat atau menghapus sumber daya terkait CodeCommit repositori di layanan lain, seperti Amazon Events. AWS CloudWatch Kami merekomendasikan bahwa Anda menerapkan kebijakan ini untuk sebagian besar pengguna.

 AWSCodeCommitPowerUser Kebijakan tersebut berisi pernyataan kebijakan berikut:

------
#### [ JSON ]

****  

```
    {
      "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": {
            "ArnLike": {
              "codestar-notifications:NotificationsForResource": "arn:aws:iam::*:role/Service*"
            }
          }
        },
        {
          "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",
            "chatbot:ListMicrosoftTeamsChannelConfigurations"
          ],
          "Resource": "*"
        },
        {
            "Sid": "CodeStarConnectionsReadOnlyAccess",
            "Effect": "Allow",
            "Action": [
                "codestar-connections:ListConnections",
                "codestar-connections:GetConnection"
            ],
            "Resource": "arn:aws:codestar-connections:*:*:connection/*"
        }
      ]
    }
```

------

## AWS kebijakan terkelola: AWSCode CommitReadOnly
<a name="managed-policies-read"></a>

Anda dapat melampirkan kebijakan `AWSCodeCommitReadOnly` ke identitas IAM Anda. Kebijakan ini memberikan akses hanya-baca ke CodeCommit dan sumber daya terkait repositori di AWS layanan lain, serta kemampuan untuk membuat dan mengelola sumber daya terkait mereka sendiri (seperti kredensi Git dan kunci SSH untuk digunakan pengguna CodeCommit IAM mereka saat mengakses repositori). Terapkan kebijakan ini kepada pengguna yang ingin Anda beri kemampuan untuk membaca konten repositori, tetapi tidak membuat perubahan apa pun pada kontennya.

 AWSCodeCommitReadOnly Kebijakan tersebut berisi pernyataan kebijakan berikut:

------
#### [ JSON ]

****  

```
    { 
       "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:GetSSHPublicKey"
             ],
             "Resource":"arn:aws:iam::*:user/${aws:username}"
          },
          { 
             "Sid":"CodeStarNotificationsReadOnlyAccess",
             "Effect":"Allow",
             "Action":[ 
                "codestar-notifications:DescribeNotificationRule"
             ],
             "Resource":"*",
             "Condition":{ 
                "ArnLike":{ 
                   "codestar-notifications:NotificationsForResource":"arn:aws:codecommit:us-east-2:111122223333:*"
                }
             }
          },
          { 
             "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": "*"
          },
          {
            "Sid": "CodeStarConnectionsReadOnlyAccess",
            "Effect": "Allow",
            "Action": [
                "codestar-connections:ListConnections",
                "codestar-connections:GetConnection"
            ],
            "Resource": "arn:aws:codestar-connections:*:*:connection/*"
        }
    ]
}
```

------

## CodeCommit kebijakan dan pemberitahuan terkelola
<a name="notifications-permissions"></a>

AWS CodeCommit mendukung notifikasi, yang dapat memberi tahu pengguna tentang perubahan penting pada repositori. Kebijakan terkelola untuk CodeCommit menyertakan pernyataan kebijakan untuk fungsionalitas notifikasi. Untuk informasi selengkapnya, lihat [Apa itu notifikasi?](https://docs.aws.amazon.com/codestar-notifications/latest/userguide/welcome.html).

### Izin yang terkait dengan notifikasi dalam kebijakan terkelola akses penuh
<a name="notifications-fullaccess"></a>

Kebijakan terkelola `AWSCodeCommitFullAccess` mencakup pernyataan berikut untuk mengizinkan akses penuh ke notifikasi. Pengguna dengan kebijakan terkelola ini diterapkan juga dapat membuat dan mengelola topik Amazon SNS untuk notifikasi, berlangganan dan berhenti berlangganan pengguna ke topik, mencantumkan topik untuk dipilih sebagai target aturan notifikasi, dan daftar Pengembang Amazon Q di aplikasi obrolan klien yang dikonfigurasi untuk 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",
            "chatbot:ListMicrosoftTeamsChannelConfigurations"
          ],
       "Resource": "*"
    }
```

### Izin yang terkait dengan notifikasi dalam kebijakan terkelola hanya-baca
<a name="notifications-readonly"></a>

Kebijakan terkelola `AWSCodeCommitReadOnlyAccess` mencakup pernyataan berikut untuk mengizinkan akses penuh ke notifikasi. Pengguna yang menerapkan kebijakan terkelola ini dapat melihat pemberitahuan untuk sumber daya, tetapi tidak dapat membuat, mengelola, atau berlangganan ke sumber daya tersebut. 

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

### Izin terkait notifikasi dalam kebijakan terkelola lainnya
<a name="notifications-otheraccess"></a>

Kebijakan terkelola `AWSCodeCommitPowerUser` mencakup pernyataan berikut untuk mengizinkan pengguna membuat, mengedit, dan berlangganan notifikasi. Mereka tidak dapat menghapus aturan notifikasi atau mengelola tag untuk sumber daya.

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

Untuk informasi selengkapnya tentang IAM dan notifikasi, lihat [Identity and Access Management for AWS CodeStar Notifications](https://docs.aws.amazon.com/codestar-notifications/latest/userguide/security-iam.html).

## AWS CodeCommit kebijakan terkelola dan Amazon CodeGuru Reviewer
<a name="codeguru-permissions"></a>

CodeCommit mendukung Amazon CodeGuru Reviewer, layanan peninjauan kode otomatis yang menggunakan analisis program dan pembelajaran mesin untuk mendeteksi masalah umum dan merekomendasikan perbaikan dalam kode Java atau Python Anda. Kebijakan terkelola untuk CodeCommit menyertakan pernyataan kebijakan untuk fungsionalitas CodeGuru Peninjau. Untuk informasi selengkapnya, lihat [Apa Itu Amazon CodeGuru Reviewer](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html).

### Izin terkait dengan CodeGuru Reviewer di AWSCode CommitFullAccess
<a name="codeguru-fullaccess"></a>

Kebijakan `AWSCodeCommitFullAccess` terkelola mencakup pernyataan berikut untuk memungkinkan CodeGuru Reviewer dikaitkan dan dipisahkan dengan CodeCommit repositori. Pengguna dengan kebijakan terkelola ini diterapkan juga dapat melihat status asosiasi antara CodeCommit repositori dan CodeGuru Peninjau dan melihat status pekerjaan peninjauan untuk permintaan tarik.

```
    {
      "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"
        }
      }
    }
```

### Izin terkait dengan CodeGuru Reviewer di AWSCode CommitPowerUser
<a name="codeguru-poweruser"></a>

Kebijakan `AWSCodeCommitPowerUser` terkelola mencakup pernyataan berikut untuk memungkinkan pengguna mengaitkan dan memisahkan repositori dengan CodeGuru Peninjau, melihat status asosiasi, dan melihat status pekerjaan peninjauan untuk permintaan tarik.

```
    {
      "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"
        }
      }
    }
```

### Izin terkait dengan CodeGuru Reviewer di AWSCode CommitReadOnly
<a name="codeguru-readonly"></a>

Kebijakan `AWSCodeCommitReadOnlyAccess` terkelola mencakup pernyataan berikut untuk mengizinkan akses hanya-baca ke status asosiasi CodeGuru Peninjau dan melihat status pekerjaan peninjauan untuk permintaan tarik. Pengguna yang menerapkan kebijakan terkelola ini tidak dapat mengaitkan atau memisahkan repositori. 

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

### Peran terkait layanan Amazon CodeGuru Reviewer
<a name="codeguru-slr"></a>

Saat Anda mengaitkan repositori dengan CodeGuru Reviewer, peran terkait layanan dibuat sehingga CodeGuru Reviewer dapat mendeteksi masalah dan merekomendasikan perbaikan untuk kode Java atau Python dalam permintaan tarik. Peran terkait layanan diberi nama. AWSService RoleForAmazonCodeGuruReviewer Untuk informasi selengkapnya, lihat [Menggunakan Peran Tertaut Layanan untuk Amazon CodeGuru Reviewer](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/using-service-linked-roles.html).

Untuk informasi selengkapnya, lihat [Kebijakan Terkelola AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) dalam *Panduan Pengguna IAM*.

## CodeCommit pembaruan kebijakan AWS terkelola
<a name="security-iam-awsmanpol-updates"></a>



Lihat detail tentang pembaruan kebijakan AWS terkelola CodeCommit sejak layanan ini mulai melacak perubahan ini. Untuk peringatan otomatis tentang perubahan pada halaman ini, berlangganan RSS feed on. [AWS CodeCommit Riwayat dokumen Panduan Pengguna](history.md)




| Ubah | Deskripsi | Date | 
| --- | --- | --- | 
|  [AWS kebijakan terkelola: AWSCode CommitFullAccess](#managed-policies-full)dan [AWS kebijakan terkelola: AWSCode CommitPowerUser](#managed-policies-poweruser) — Perbarui ke kebijakan yang ada  |  CodeCommit menambahkan izin ke kebijakan ini untuk mendukung jenis pemberitahuan tambahan menggunakan Pengembang Amazon Q di aplikasi obrolan.  AWSCodeCommitFullAccess Kebijakan AWSCode CommitPowerUser dan telah diubah untuk menambahkan izin,`chatbot:ListMicrosoftTeamsChannelConfigurations`.  | 16 Mei 2023 | 
|  [AWS kebijakan terkelola: AWSCode CommitReadOnly](#managed-policies-read) – Pembaruan ke kebijakan yang ada  |  CodeCommit menghapus izin duplikat dari kebijakan.  AWSCodeCommitReadOnly Telah diubah untuk menghapus izin duplikat,`"iam:ListAccessKeys"`.  | 18 Agustus 2021 | 
|  CodeCommit mulai melacak perubahan  |  CodeCommit mulai melacak perubahan untuk kebijakan yang AWS dikelola.  | 18 Agustus 2021 | 

# Contoh kebijakan yang dikelola pelanggan
<a name="customer-managed-policies"></a>

Anda dapat membuat kebijakan IAM kustom Anda sendiri untuk mengizinkan izin CodeCommit tindakan dan sumber daya. Anda dapat melampirkan kebijakan-kebijakan kustom ini ke pengguna IAM atau grup yang memerlukan izin-izin tersebut. Anda juga dapat membuat kebijakan IAM kustom Anda sendiri untuk integrasi antara CodeCommit dan AWS layanan lainnya.

**Topics**
+ [Contoh kebijakan identitas yang dikelola pelanggan](#customer-managed-policies-identity)

## Contoh kebijakan identitas yang dikelola pelanggan
<a name="customer-managed-policies-identity"></a>

Contoh berikut kebijakan IAM memberikan izin untuk berbagai CodeCommit tindakan. Gunakan mereka untuk membatasi CodeCommit akses bagi pengguna dan peran IAM Anda. Kebijakan ini mengontrol kemampuan untuk melakukan tindakan dengan CodeCommit konsol, API AWS SDKs, atau AWS CLI.



**catatan**  
Semua contoh menggunakan Wilayah Barat AS (Oregon) (us-west-2) dan berisi akun fiktif. IDs

 **Contoh**
+ [Contoh 1: Izinkan pengguna untuk melakukan CodeCommit operasi dalam satu Wilayah AWS](#identity-based-policies-example-1)
+ [Contoh 2: Izinkan pengguna menggunakan Git untuk repositori tunggal](#identity-based-policies-example-2)
+ [Contoh 3: Izinkan pengguna terhubung dari rentang alamat IP tertentu untuk mengakses repositori](#identity-based-policies-example-3)
+ [Contoh 4: Tolak atau izinkan tindakan di cabang](#identity-based-policies-example-4)
+ [Contoh 5: Tolak atau izinkan tindakan pada repositori dengan tag](#identity-based-policies-example-5)

### Contoh 1: Izinkan pengguna untuk melakukan CodeCommit operasi dalam satu Wilayah AWS
<a name="identity-based-policies-example-1"></a>

Kebijakan izin berikut menggunakan karakter wildcard (`"codecommit:*"`) untuk memungkinkan pengguna melakukan semua CodeCommit tindakan di Wilayah us-east-2 dan bukan dari yang lain. Wilayah AWS

------
#### [ JSON ]

****  

```
{
    "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"
                }
            }
        }
    ]
}
```

------

### Contoh 2: Izinkan pengguna menggunakan Git untuk repositori tunggal
<a name="identity-based-policies-example-2"></a>

Dalam CodeCommit, izin kebijakan `GitPull` IAM berlaku untuk setiap perintah klien Git di mana data diambil dari CodeCommit, termasuk, **git fetch****git clone**, dan sebagainya. Demikian pula, izin kebijakan `GitPush` IAM berlaku untuk setiap perintah klien Git di mana data dikirim ke. CodeCommit Misalnya, jika Izin kebijakan IAM `GitPush` diatur ke `Allow`, pengguna dapat mendorong penghapusan cabang menggunakan protokol Git. Dorongan itu tidak terpengaruh oleh izin yang diterapkan ke operasi `DeleteBranch` untuk pengguna IAM tersebut. `DeleteBranch`Izin berlaku untuk tindakan yang dilakukan dengan konsol AWS CLI, SDKs, dan API, tetapi bukan protokol Git. 

Contoh berikut memungkinkan pengguna tertentu untuk menarik dari, dan mendorong ke, CodeCommit repositori bernama: `MyDemoRepo`

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement" : [
    {
      "Effect" : "Allow",
      "Action" : [
        "codecommit:GitPull",
        "codecommit:GitPush"
      ],
      "Resource" : "arn:aws:codecommit:us-east-2:111122223333:MyDemoRepo"
    }
  ]
}
```

------

### Contoh 3: Izinkan pengguna terhubung dari rentang alamat IP tertentu untuk mengakses repositori
<a name="identity-based-policies-example-3"></a>

Anda dapat membuat kebijakan yang hanya memungkinkan pengguna untuk terhubung ke CodeCommit repositori jika alamat IP mereka berada dalam rentang alamat IP tertentu. Ada dua pendekatan yang sama-sama valid untuk ini. Anda dapat membuat `Deny` kebijakan yang melarang CodeCommit operasi jika alamat IP untuk pengguna tidak berada dalam blok tertentu, atau Anda dapat membuat `Allow` kebijakan yang memungkinkan CodeCommit operasi jika alamat IP untuk pengguna berada dalam blok tertentu.

Anda dapat membuat kebijakan `Deny` yang menolak akses ke semua pengguna yang tidak berada dalam kisaran IP tertentu. Misalnya, Anda dapat melampirkan kebijakan AWSCode CommitPowerUser terkelola dan kebijakan yang dikelola pelanggan ke semua pengguna yang memerlukan akses ke repositori Anda. Contoh kebijakan berikut menolak semua CodeCommit izin untuk pengguna yang alamat IP-nya tidak berada dalam blok alamat IP yang ditentukan 203.0.113.0/16:

------
#### [ JSON ]

****  

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

------

Contoh kebijakan berikut memungkinkan pengguna tertentu untuk mengakses CodeCommit repositori bernama MyDemoRepo dengan izin setara dari kebijakan AWSCode CommitPowerUser terkelola hanya jika alamat IP mereka berada dalam blok alamat yang ditentukan 203.0.113.0/16:

------
#### [ JSON ]

****  

```
{
   "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:111122223333:MyDemoRepo",
         "Condition": {
            "IpAddress": {
               "aws:SourceIp": [
                  "203.0.113.0/16"
               ]
            }
         }
      }
   ]
}
```

------



### Contoh 4: Tolak atau izinkan tindakan di cabang
<a name="identity-based-policies-example-4"></a>

Anda dapat membuat kebijakan yang menolak izin pengguna untuk tindakan yang Anda tentukan di satu cabang atau lebih. Atau, Anda dapat membuat kebijakan yang mengizinkan tindakan pada satu atau beberapa cabang yang mungkin tidak mereka miliki di cabang repositori lainnya. Anda dapat menggunakan kebijakan ini dengan kebijakan terkelola (yang telah ditetapkan) yang sesuai. Untuk informasi selengkapnya, lihat [Batasi dorongan dan penggabungan ke cabang di AWS CodeCommit](how-to-conditional-branch.md).

Misalnya, Anda dapat membuat `Deny` kebijakan yang menolak kemampuan pengguna untuk membuat perubahan pada cabang bernama main, termasuk menghapus cabang tersebut, dalam repositori bernama. *MyDemoRepo* Anda dapat menggunakan kebijakan ini dengan kebijakan **AWSCodeCommitPowerUser**terkelola. Pengguna dengan dua kebijakan ini diterapkan akan dapat membuat dan menghapus cabang, membuat permintaan tarik, dan semua tindakan lain sebagaimana diizinkan oleh **AWSCodeCommitPowerUser**, tetapi mereka tidak akan dapat mendorong perubahan ke cabang bernama *main*, menambah atau mengedit file di cabang *utama* di CodeCommit konsol, atau menggabungkan cabang atau permintaan tarik ke cabang *utama*. Karena `Deny` diterapkan untuk `GitPush`, Anda harus menyertakan pernyataan `Null` dalam kebijakan, untuk mengizinkan panggilan `GitPush` awal untuk dianalisis untuk validitas ketika pengguna membuat dorongan dari repos lokal mereka.

**Tip**  
Jika Anda ingin membuat kebijakan yang berlaku untuk semua cabang yang bernama *utama* di semua repositori di akun Amazon Web Services Anda, untuk `Resource`, tentukan tanda bintang ( `*` ) bukan repositori ARN.

------
#### [ JSON ]

****  

```
{
    "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"
                }
            }
        }
    ]
}
```

------

Contoh kebijakan berikut mengizinkan pengguna untuk membuat perubahan pada cabang bernama main di semua repositori di akun Amazon Web Services. Ini tidak mengizinkan perubahan pada cabang lainnya. Anda dapat menggunakan kebijakan ini dengan kebijakan AWSCode CommitReadOnly terkelola untuk mengizinkan push otomatis ke repositori di cabang utama. Karena Efeknya`Allow`, kebijakan contoh ini tidak akan bekerja dengan kebijakan terkelola seperti AWSCodeCommitPowerUser.

------
#### [ JSON ]

****  

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

------



### Contoh 5: Tolak atau izinkan tindakan pada repositori dengan tag
<a name="identity-based-policies-example-5"></a>

Anda dapat membuat kebijakan yang mengizinkan atau menolak tindakan pada repositori berdasarkan AWS tag yang terkait dengan repositori tersebut, lalu menerapkan kebijakan tersebut ke grup IAM yang Anda konfigurasikan untuk mengelola pengguna IAM. Misalnya, Anda dapat membuat kebijakan yang menolak semua CodeCommit tindakan pada repositori apa pun dengan *Status* kunci AWS tag dan nilai kunci *Rahasia*, lalu menerapkan kebijakan tersebut ke grup IAM yang Anda buat untuk pengembang umum (). *Developers* Anda kemudian perlu memastikan bahwa pengembang yang bekerja pada repositori yang diberi tag tersebut bukan anggota *Developers* grup umum itu, melainkan milik grup IAM berbeda yang tidak memiliki kebijakan restriktif yang diterapkan (). *SecretDevelopers*

*Contoh berikut menyangkal semua CodeCommit tindakan pada repositori yang ditandai dengan *Status* kunci dan nilai kunci Rahasia:*

------
#### [ JSON ]

****  

```
{
  "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"
        }
      }
    }
  ]
}
```

------

Anda dapat lebih menyempurnakan strategi ini dengan menentukan repositori tertentu, bukan semua repositori, sebagai sumber daya. Anda juga dapat membuat kebijakan yang memungkinkan CodeCommit tindakan pada semua repositori yang tidak ditandai dengan tag tertentu. Misalnya, kebijakan berikut mengizinkan **AWSCodeCommitPowerUser**izin yang setara untuk CodeCommit tindakan, kecuali hanya mengizinkan CodeCommit tindakan pada repositori yang tidak ditandai dengan tag yang ditentukan:

**catatan**  
Contoh kebijakan ini hanya mencakup tindakan untuk CodeCommit. Ini tidak termasuk tindakan untuk AWS layanan lain yang termasuk dalam kebijakan yang **AWSCodeCommitPowerUser**dikelola. Untuk informasi selengkapnya, lihat [AWS kebijakan terkelola: AWSCode CommitPowerUser](security-iam-awsmanpol.md#managed-policies-poweruser).

------
#### [ JSON ]

****  

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

------