

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

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

------