Contoh kebijakan yang dikelola pelanggan - AWS CodeCommit

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 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.

Contoh kebijakan identitas yang dikelola pelanggan

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 SDK, atau perangkat. AWS CLI

catatan

Semua contoh menggunakan wilayah US West (Oregon) (us-west-2) dan berisi ID akun fiktif.

Contoh

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 kebijakan GitPull IAM berlaku untuk setiap perintah klien Git di mana data diambil dari CodeCommit, termasuk, git fetchgit 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. DeleteBranchIzin berlaku untuk tindakan yang dilakukan dengan konsol AWS CLI, SDK, dan API, 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, dalam 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 yang bernama utama di semua repositori di akun Amazon Web Services Anda, untuk Resource, 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 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 (Pengembang). Anda kemudian perlu memastikan bahwa pengembang yang bekerja pada repositori yang diberi tag tersebut bukan anggota grup Pengembang umum tersebut, 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:

{ "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) saat diperlukan, dan berisi ID akun Wilayah AWS fiktif.

Contoh

Contoh 1: Buat 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 topik Amazon SNS dengan akun yang sama yang digunakan untuk membuat CodeCommit repositori, Anda tidak perlu mengonfigurasi kebijakan atau izin IAM tambahan. Anda dapat membuat topik, dan kemudian membuat pemicu untuk repositori. Untuk informasi selengkapnya, lihat Buat pemicu untuk topik Amazon SNS.

Namun, jika Anda ingin mengonfigurasi pemicu untuk menggunakan topik Amazon SNS 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, buka konsol Amazon SNS, 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. Sebagai contoh, jika kebijakan tersebut adalah kebijakan default, Anda akan mengubah kebijakan sebagai berikut, mengubah item dalam teks huruf miring merah untuk mencocokkan nilai-nilai untuk repositori Anda, topik Amazon SNS, dan akun:

{ "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 (Amazon SNS) untuk mengizinkan CloudWatch Amazon Events CodeCommit mempublikasikan acara ke topik

Anda dapat mengonfigurasi CloudWatch Acara untuk dipublikasikan ke topik Amazon SNS saat peristiwa terjadi, termasuk CodeCommit peristiwa. Untuk melakukannya, Anda harus memastikan bahwa CloudWatch Acara memiliki izin untuk mempublikasikan peristiwa ke topik Amazon SNS Anda dengan membuat kebijakan untuk topik tersebut atau memodifikasi kebijakan yang ada untuk topik yang serupa dengan 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 kebijakan bahasa, lihat Tata bahasa kebijakan JSON IAM.

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 topik Amazon SNS 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