AWS CodeCommit tidak lagi tersedia untuk pelanggan baru. Pelanggan yang sudah ada AWS CodeCommit dapat terus menggunakan layanan seperti biasa. Pelajari lebih lanjut”
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
Anda dapat membuat IAM kebijakan kustom sendiri untuk mengizinkan izin CodeCommit tindakan dan sumber daya. Anda dapat melampirkan kebijakan khusus ini ke IAM pengguna atau grup yang memerlukan izin tersebut. Anda juga dapat membuat IAM kebijakan kustom Anda sendiri untuk integrasi antara CodeCommit dan AWS layanan lainnya.
Topik
Contoh kebijakan identitas yang dikelola pelanggan
Contoh IAM kebijakan berikut memberikan izin untuk berbagai CodeCommit tindakan. Gunakan mereka untuk membatasi CodeCommit akses bagi IAM pengguna dan peran 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
-
Contoh 2: Izinkan pengguna menggunakan Git untuk repositori tunggal
-
Contoh 3: Izinkan pengguna terhubung dari rentang alamat IP tertentu untuk mengakses repositori
-
Contoh 5: Tolak atau izinkan tindakan pada repositori dengan tag
Contoh 1: Izinkan pengguna untuk melakukan CodeCommit operasi dalam satu Wilayah AWS
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
{ "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
Dalam CodeCommit, izin GitPull
IAM kebijakan berlaku untuk setiap perintah klien Git di mana data diambil dari CodeCommit, termasuk, git fetchgit clone, dan sebagainya. Demikian pula, izin GitPush
IAM kebijakan berlaku untuk setiap perintah klien Git di mana data dikirim ke CodeCommit. Misalnya, jika izin GitPush
IAM kebijakan disetel keAllow
, pengguna dapat mendorong penghapusan cabang menggunakan protokol Git. Dorongan itu tidak terpengaruh oleh izin apa pun yang diterapkan pada DeleteBranch
operasi untuk pengguna tersebut. IAM DeleteBranch
Izin berlaku untuk tindakan yang dilakukan dengan konsol AWS CLI,SDKs,, danAPI, tetapi bukan protokol Git.
Contoh berikut memungkinkan pengguna tertentu untuk menarik dari, dan mendorong ke, CodeCommit repositori bernama: MyDemoRepo
{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "codecommit:GitPull", "codecommit:GitPush" ], "Resource" : "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo" } ] }
Contoh 3: Izinkan pengguna terhubung dari rentang alamat IP tertentu untuk mengakses repositori
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 AWSCodeCommitPowerUser 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:
{ "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 AWSCodeCommitPowerUser terkelola hanya jika alamat IP mereka berada dalam blok alamat yang ditentukan 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" ] } } } ] }
Contoh 4: Tolak atau izinkan tindakan di cabang
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.
Misalnya, Anda dapat membuat Deny
kebijakan yang menolak kemampuan pengguna untuk membuat perubahan pada cabang bernama main, termasuk menghapus cabang tersebut, di repositori bernama MyDemoRepo
. Anda dapat menggunakan kebijakan ini dengan kebijakan AWSCodeCommitPowerUserterkelola. 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 bernama main di semua repositori di akun Amazon Web Services AndaResource
, tentukan tanda bintang (*
), bukan repositori. 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/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 AWSCodeCommitReadOnly terkelola untuk mengizinkan push otomatis ke repositori di cabang utama. Karena EfeknyaAllow
, kebijakan contoh ini tidak akan bekerja dengan kebijakan terkelola seperti AWSCodeCommitPowerUser.
{ "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
Anda dapat membuat kebijakan yang mengizinkan atau menolak tindakan pada repositori berdasarkan AWS tag yang terkait dengan repositori tersebut, lalu menerapkan kebijakan tersebut ke IAM grup 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 IAM grup yang Anda buat untuk pengembang umum (Developers
). Anda kemudian perlu memastikan bahwa pengembang yang mengerjakan repositori yang ditandai tersebut bukan anggota umum itu Developers
grup, tetapi milik IAM kelompok lain 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:
{ "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 AWSCodeCommitPowerUserizin 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 AWSCodeCommitPowerUserdikelola. Untuk informasi selengkapnya, lihat AWS kebijakan terkelola: AWSCodeCommitPowerUser.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codecommit:Associate*", "codecommit:Batch*", "codecommit:CancelUploadArchive", "codecommit:CreateBranch", "codecommit:CreateCommit", "codecommit:CreatePullRequest*", "codecommit:CreateRepository", "codecommit:CreateUnreferencedMergeCommit", "codecommit:DeleteBranch", "codecommit:DeleteCommentContent", "codecommit:DeleteFile", "codecommit:DeletePullRequest*", "codecommit:Describe*", "codecommit:DisassociateApprovalRuleTemplateFromRepository", "codecommit:EvaluatePullRequestApprovalRules", "codecommit:GetBlob", "codecommit:GetBranch", "codecommit:GetComment*", "codecommit:GetCommit", "codecommit:GetDifferences*", "codecommit:GetFile", "codecommit:GetFolder", "codecommit:GetMerge*", "codecommit:GetObjectIdentifier", "codecommit:GetPullRequest*", "codecommit:GetReferences", "codecommit:GetRepository*", "codecommit:GetTree", "codecommit:GetUploadArchiveStatus", "codecommit:Git*", "codecommit:ListAssociatedApprovalRuleTemplatesForRepository", "codecommit:ListBranches", "codecommit:ListPullRequests", "codecommit:ListTagsForResource", "codecommit:Merge*", "codecommit:OverridePullRequestApprovalRules", "codecommit:Post*", "codecommit:Put*", "codecommit:TagResource", "codecommit:TestRepositoryTriggers", "codecommit:UntagResource", "codecommit:UpdateComment", "codecommit:UpdateDefaultBranch", "codecommit:UpdatePullRequest*", "codecommit:UpdateRepository*", "codecommit:UploadArchive" ], "Resource": "*", "Condition": { "StringNotEquals": { "aws:ResourceTag/Status": "Secret", "aws:ResourceTag/Team": "Saanvi" } } }, { "Effect": "Allow", "Action": [ "codecommit:CreateApprovalRuleTemplate", "codecommit:GetApprovalRuleTemplate", "codecommit:ListApprovalRuleTemplates", "codecommit:ListRepositories", "codecommit:ListRepositoriesForApprovalRuleTemplate", "codecommit:UpdateApprovalRuleTemplateContent", "codecommit:UpdateApprovalRuleTemplateDescription", "codecommit:UpdateApprovalRuleTemplateName" ], "Resource": "*" } ] }
Contoh kebijakan integrasi yang dikelola pelanggan
Bagian ini memberikan contoh kebijakan pengguna yang dikelola pelanggan yang memberikan izin untuk integrasi antara CodeCommit dan layanan lainnya. AWS Untuk contoh spesifik kebijakan yang memungkinkan akses lintas akun ke CodeCommit repositori, lihat. Konfigurasikan akses lintas akun ke AWS CodeCommit repositori menggunakan peran
catatan
Semua contoh menggunakan Wilayah Barat AS (Oregon) (us-west-2) ketika diperlukan, dan berisi akun Wilayah AWS fiktif. IDs
Contoh
Contoh 1: Membuat kebijakan yang memungkinkan akses lintas akun ke topik Amazon SNS
Anda dapat mengonfigurasi CodeCommit repositori sehingga mendorong kode atau peristiwa lain memicu tindakan, seperti mengirim pemberitahuan dari Amazon Simple Notification Service (Amazon). SNS Jika Anda membuat SNS topik Amazon dengan akun yang sama yang digunakan untuk membuat CodeCommit repositori, Anda tidak perlu mengonfigurasi IAM kebijakan atau izin tambahan. Anda dapat membuat topik, dan kemudian membuat pemicu untuk repositori. Untuk informasi selengkapnya, lihat Buat pemicu untuk SNS topik Amazon.
Namun, jika Anda ingin mengonfigurasi pemicu untuk menggunakan SNS topik Amazon di akun Amazon Web Services lainnya, Anda harus terlebih dahulu mengonfigurasi topik tersebut dengan kebijakan yang memungkinkan CodeCommit untuk mempublikasikan ke topik tersebut. Dari akun lain itu, buka SNS konsol Amazon, pilih topik dari daftar, dan untuk tindakan topik lainnya, pilih Edit kebijakan topik. Pada tab Advanced, ubah kebijakan untuk topik yang memungkinkan CodeCommit untuk dipublikasikan ke topik tersebut. Misalnya, jika kebijakan adalah kebijakan default, Anda akan mengubah kebijakan sebagai berikut, mengubah item di red italic text
untuk mencocokkan nilai untuk repositori, SNS topik Amazon, dan akun Anda:
{ "Version": "2008-10-17", "Id": "__default_policy_ID", "Statement": [ { "Sid": "__default_statement_ID", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": [ "sns:Subscribe", "sns:ListSubscriptionsByTopic", "sns:DeleteTopic", "sns:GetTopicAttributes", "sns:Publish", "sns:RemovePermission", "sns:AddPermission", "sns:SetTopicAttributes" ], "Resource": "arn:aws:sns:
us-east-2
:111111111111
:NotMySNSTopic
", "Condition": { "StringEquals": { "AWS:SourceOwner": "111111111111
" } } }, { "Sid": "CodeCommit-Policy_ID
", "Effect": "Allow", "Principal": { "Service": "codecommit.amazonaws.com" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:us-east-2
:111111111111
:NotMySNSTopic
", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo
", "AWS:SourceAccount": "111111111111
" } } } ] }
Contoh 2: Buat kebijakan topik Amazon Simple Notification Service (AmazonSNS) untuk mengizinkan Amazon CloudWatch Events mempublikasikan CodeCommit acara ke topik
Anda dapat mengonfigurasi CloudWatch Acara untuk dipublikasikan ke SNS topik Amazon saat peristiwa terjadi, termasuk CodeCommit peristiwa. Untuk melakukannya, Anda harus memastikan bahwa CloudWatch Acara memiliki izin untuk mempublikasikan peristiwa ke SNS topik Amazon Anda dengan membuat kebijakan untuk topik tersebut atau memodifikasi kebijakan yang ada untuk topik yang serupa dengan yang berikut ini:
{ "Version": "2008-10-17", "Id": "__default_policy_ID", "Statement": [ { "Sid": "__default_statement_ID", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:us-east-2:123456789012:MyTopic", "Condition": { "StringEquals": { "AWS:SourceOwner": "123456789012" } } }, { "Sid": "Allow_Publish_Events", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:us-east-2:123456789012:MyTopic" } ] }
Untuk informasi selengkapnya tentang CodeCommit dan CloudWatch Acara, lihat Contoh CloudWatch Acara Acara Dari Layanan yang Didukung. Untuk informasi selengkapnya tentang IAM dan bahasa kebijakan, lihat Tata Bahasa IAM JSON Kebijakan.
Contoh 3: Membuat kebijakan untuk AWS Lambda integrasi dengan CodeCommit pemicu
Anda dapat mengonfigurasi CodeCommit repositori sehingga kode mendorong atau peristiwa lain memicu tindakan, seperti memanggil fungsi. AWS Lambda Untuk informasi selengkapnya, lihat Buatlah sebuah pemicu untuk sebuah fungsi Lambda. Informasi ini khusus untuk pemicu, dan bukan CloudWatch Peristiwa.
Jika Anda ingin pemicu menjalankan fungsi Lambda secara langsung (alih-alih menggunakan SNS topik Amazon untuk menjalankan fungsi Lambda), dan Anda tidak mengonfigurasi pemicu di konsol Lambda, Anda harus menyertakan pernyataan yang mirip dengan yang berikut ini dalam kebijakan berbasis sumber daya fungsi:
{ "Statement":{ "StatementId":"
Id-1
", "Action":"lambda:InvokeFunction", "Principal":"codecommit.amazonaws.com", "SourceArn":"arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo
", "SourceAccount":"111111111111
" } }
Saat mengonfigurasi CodeCommit pemicu yang memanggil fungsi Lambda secara manual, Anda juga harus menggunakan AddPermissionperintah Lambda untuk memberikan izin untuk menjalankan fungsi tersebut. CodeCommit Sebagai contoh, lihat bagian Untuk CodeCommit memungkinkan menjalankan fungsi Lambda dari Buatlah sebuah pemicu untuk sebuah fungsi Lambda yang sudah ada.
Untuk informasi selengkapnya tentang kebijakan sumber daya untuk fungsi Lambda, lihat AddPermissiondan Model Peristiwa Tarik/Dorong di Panduan Pengembang.AWS Lambda