Contoh kebijakan yang dikelola pelanggan - AWS CodePipeline

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

Dalam bagian ini, Anda dapat menemukan contoh kebijakan pengguna yang memberikan izin untuk berbagai CodePipeline tindakan Kebijakan ini berlaku saat Anda menggunakan CodePipeline API,AWSSDK, atauAWS CLI. Saat Anda menggunakan konsol, Anda harus memberikan izin tambahan yang khusus untuk konsol. Untuk informasi selengkapnya, lihat Izin yang diperlukan untuk menggunakan konsol CodePipeline .

catatan

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

Contoh

Contoh 1: Izin Hibah untuk mendapatkan status pipa

Contoh berikut memberikan izin untuk mendapatkan status pipeline bernamaMyFirstPipeline:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:GetPipelineState" ], "Resource": "arn:aws:codepipeline:us-west-2:111222333444:MyFirstPipeline" } ] }

Contoh 2: Berikan izin untuk mengaktifkan dan menonaktifkan transisi antar tahapan

Contoh berikut memberikan izin untuk menonaktifkan dan mengaktifkan transisi antara semua tahapan dalam pipeline bernamaMyFirstPipeline:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:DisableStageTransition", "codepipeline:EnableStageTransition" ], "Resource": "arn:aws:codepipeline:us-west-2:111222333444:MyFirstPipeline/*" } ] }

Untuk memungkinkan pengguna menonaktifkan dan mengaktifkan transisi untuk satu tahap dalam pipa, Anda harus menentukan panggung. Misalnya, untuk memungkinkan pengguna mengaktifkan dan menonaktifkan transisi untuk tahap bernamaStagingdalam alur bernamaMyFirstPipeline:

"Resource": "arn:aws:codepipeline:us-west-2:111222333444:MyFirstPipeline/Staging"

Contoh 3: Berikan izin untuk mendapatkan daftar semua jenis tindakan yang tersedia

Contoh berikut memberikan izin untuk mendapatkan daftar semua jenis tindakan yang tersedia yang tersedia untuk pipeline dius-west-2Wilayah:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:ListActionTypes" ], "Resource": "arn:aws:codepipeline:us-west-2:111222333444:actiontype:*" } ] }

Contoh 4: Memberikan izin untuk menyetujui atau menolak tindakan persetujuan manual

Contoh berikut memberikan izin untuk menyetujui atau menolak tindakan persetujuan manual dalam tahap bernamaStagingdalam alur bernamaMyFirstPipeline:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:PutApprovalResult" ], "Resource": "arn:aws:codepipeline:us-west-2:111222333444:MyFirstPipeline/Staging/*" } ] }

Contoh 5: Berikan izin untuk jajak pendapat untuk pekerjaan untuk tindakan kustom

Contoh berikut memberikan izin untuk polling untuk pekerjaan untuk tindakan kustom bernamaTestProvider, yang merupakanTesttipe aksi dalam versi pertamanya, di semua jaringan pipa:

catatan

Pekerja pekerjaan untuk tindakan kustom mungkin dikonfigurasi di bawah yang berbedaAWSakun atau memerlukan peran IAM tertentu untuk berfungsi.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:PollForJobs" ], "Resource": [ "arn:aws:codepipeline:us-west-2:111222333444:actionType:Custom/Test/TestProvider/1" ] } ] }

Contoh 6: Melampirkan atau mengedit kebijakan untuk integrasi Jenkins denganAWS CodePipeline

Jika Anda mengonfigurasi pipeline untuk menggunakan Jenkins untuk build atau pengujian, buat pengguna IAM terpisah untuk integrasi tersebut dan lampirkan kebijakan IAM yang memiliki izin minimum yang diperlukan untuk integrasi antara Jenkins dan CodePipeline. Kebijakan ini sama denganAWSCodePipelineCustomActionAccesskebijakan yang dikelola. Contoh berikut ini menunjukkan kebijakan untuk dilampirkan ke pengguna IAM untuk integrasi Jenkins:

{ "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:AcknowledgeJob", "codepipeline:GetJobDetails", "codepipeline:PollForJobs", "codepipeline:PutJobFailureResult", "codepipeline:PutJobSuccessResult" ], "Resource": "*" } ], "Version": "2012-10-17" }

Contoh 7: Konfigurasi akses lintas-akun ke sebuah pipeline

Anda dapat mengonfigurasi akses ke saluran pipa untuk pengguna dan grup diAWSakun Cara yang disarankan adalah membuat peran dalam akun tempat alur dibuat. Peran harus memungkinkan pengguna dari yang lainAWSakun untuk mengasumsikan peran itu dan mengakses pipa. Untuk informasi lebih lanjut, lihat Panduan: Akses Lintas Akun Menggunakan Peran.

Contoh berikut menunjukkan kebijakan di akun 80398EXAMPLE yang memungkinkan pengguna untuk melihat, tetapi tidak mengubah, pipeline bernamaMyFirstPipelinedi dalam CodePipeline konsol Kebijakan ini didasarkan padaAWSCodePipeline_ReadOnlyAccesskebijakan yang dikelola, tetapi karena khusus untukMyFirstPipelinepipeline, tidak dapat menggunakan kebijakan yang dikelola secara langsung. Jika Anda tidak ingin membatasi kebijakan ke pipeline tertentu, pertimbangkan untuk menggunakan salah satu kebijakan terkelola yang dibuat dan dikelola oleh CodePipeline. Untuk informasi lebih lanjut, lihat Bekerja dengan Kebijakan Terkelola. Anda harus melampirkan kebijakan ini ke peran IAM yang Anda buat untuk akses, misalnya, peran bernamaCrossAccountPipelineViewers:

{ "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:GetPipeline", "codepipeline:GetPipelineState", "codepipeline:ListActionTypes", "codepipeline:ListPipelines", "iam:ListRoles", "s3:GetBucketPolicy", "s3:GetObject", "s3:ListAllMyBuckets", "s3:ListBucket", "codedeploy:GetApplication", "codedeploy:GetDeploymentGroup", "codedeploy:ListApplications", "codedeploy:ListDeploymentGroups", "elasticbeanstalk:DescribeApplications", "elasticbeanstalk:DescribeEnvironments", "lambda:GetFunctionConfiguration", "lambda:ListFunctions" ], "Resource": "arn:aws:codepipeline:us-east-2:80398EXAMPLE:MyFirstPipeline" } ], "Version": "2012-10-17" }

Setelah Anda membuat kebijakan ini, buat IAM role di akun 80398EXAMPLE dan lampirkan kebijakan untuk peran tersebut. Dalam hubungan kepercayaan peran, Anda harus menambahkanAWSakun yang mengasumsikan peran ini. Contoh berikut menunjukkan kebijakan yang mengizinkan pengguna dari111111111111 AWSakun untuk mengasumsikan peran yang didefinisikan dalam akun 80398EXAMPLE:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111111111111:root" }, "Action": "sts:AssumeRole" } ] }

Contoh berikut menunjukkan kebijakan yang dilakukan di111111111111 AWSakun yang memungkinkan pengguna untuk mengambil peran bernamaCrossAccountPipelineViewersdi akun 80398EXAMPLE:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::80398EXAMPLE:role/CrossAccountPipelineViewers" } ] }

Contoh 8: GunakanAWSsumber daya yang terkait dengan akun lain dalam pipa

Anda dapat mengkonfigurasi kebijakan yang memungkinkan pengguna untuk membuat pipeline yang menggunakan sumber daya di lainAWSakun Ini memerlukan konfigurasi kebijakan dan peran di kedua akun yang membuat pipeline (AccountA) dan akun yang menciptakan sumber daya yang akan digunakan dalam pipeline (AccountB). Anda juga harus membuat kunci yang dikelola pelangganAWS Key Management Servicedigunakan untuk akses lintas akun. Untuk informasi lebih lanjut dan step-by-step contoh, lihatBuat alur di CodePipeline yang menggunakan sumber daya dari yang lainAWSakundanKonfigurasi enkripsi sisi server untuk artefak yang disimpan di Amazon S3 untuk CodePipeline.

Contoh berikut ini menunjukkan kebijakan yang dikonfigurasi oleh AccountA untuk bucket S3 yang digunakan untuk menyimpan artefak alur. Kebijakan ini memberikan akses ke AccountB. Pada contoh berikut, ARN untuk AccountB adalah012ID_ACCOUNT_B. ARN untuk bucket S3 adalahcodepipeline-us-east-2-1234567890. Ganti ARN ini dengan ARN untuk bucket S3 dan akun yang ingin Anda izinkan akses:

{ "Version": "2012-10-17", "Id": "SSEAndSSLPolicy", "Statement": [ { "Sid": "DenyUnEncryptedObjectUploads", "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::codepipeline-us-east-2-1234567890/*", "Condition": { "StringNotEquals": { "s3:x-amz-server-side-encryption": "aws:kms" } } }, { "Sid": "DenyInsecureConnections", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::codepipeline-us-east-2-1234567890/*", "Condition": { "Bool": { "aws:SecureTransport": false } } }, { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::012ID_ACCOUNT_B:root" }, "Action": [ "s3:Get*", "s3:Put*" ], "Resource": "arn:aws:s3:::codepipeline-us-east-2-1234567890/*" }, { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::012ID_ACCOUNT_B:root" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::codepipeline-us-east-2-1234567890" } ] }

Contoh berikut ini menunjukkan kebijakan yang dikonfigurasi oleh AccountA yang mengizinkan AccountB untuk mengambil peran. Kebijakan ini harus diterapkan pada peran layanan untuk CodePipeline (CodePipeline_Service_Role). Untuk informasi selengkapnya tentang cara menerapkan kebijakan pada peran di IAM, lihatMengubah peran. Pada contoh berikut,012ID_ACCOUNT_Badalah ARN untuk AccountB:

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": [ "arn:aws:iam::012ID_ACCOUNT_B:role/*" ] } }

Contoh berikut ini menunjukkan kebijakan yang dikonfigurasi oleh AccountB dan diterapkan kePeran instans EC2untuk CodeDeploy. Kebijakan ini memberikan akses ke bucket S3 yang digunakan oleh AccountA untuk menyimpan artefak pipeline (codepipeline-us-east-2-1234567890):

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*" ], "Resource": [ "arn:aws:s3:::codepipeline-us-east-2-1234567890/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::codepipeline-us-east-2-1234567890" ] } ] }

Contoh berikut menunjukkan kebijakan untukAWS KMSdi manaarn:aws:kms:us-east-1:012ID_ACCOUNT_A:key/2222222-3333333-4444-556677EXAMPLEadalah ARN dari kunci yang dikelola pelanggan yang dibuat di AccountA dan dikonfigurasi untuk memungkinkan AccountB menggunakannya:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:GenerateDataKey*", "kms:Encrypt", "kms:ReEncrypt*", "kms:Decrypt" ], "Resource": [ "arn:aws:kms:us-east-1:012ID_ACCOUNT_A:key/2222222-3333333-4444-556677EXAMPLE" ] } ] }

Contoh berikut menunjukkan kebijakan inline untuk sebuah peran IAM (CrossAccount_Role) dibuat oleh AccountB yang memungkinkan akses ke CodeDeploy tindakan yang dibutuhkan oleh pipa di AccountA.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codedeploy:CreateDeployment", "codedeploy:GetDeployment", "codedeploy:GetDeploymentConfig", "codedeploy:GetApplicationRevision", "codedeploy:RegisterApplicationRevision" ], "Resource": "*" } ] }

Contoh berikut menunjukkan kebijakan inline untuk sebuah peran IAM (CrossAccount_Role) dibuat oleh AccountB yang memungkinkan akses ke bucket S3 untuk mengunduh artefak masukan dan mengunggah artefak keluaran:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject*", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::codepipeline-us-east-2-1234567890/*" ] } ] }

Untuk informasi selengkapnya tentang cara mengedit alur bagi akses akun silang ke sumber daya, lihatLangkah 2: Mengedit ALUr .