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 tindakan CodePipeline. Kebijakan ini berlaku saat Anda menggunakanCodePipelineAPIAWSSDK, atauAWS CLI. Saat 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: Memberikan izin untuk mendapatkan status alur

Contoh berikut memberikan izin untuk mendapatkan keadaan pipa bernamaMyFirstPipeline:

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

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

Contoh berikut memberikan izin untuk menonaktifkan dan mengaktifkan transisi antara semua tahap dalam pipa 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 untuk menonaktifkan dan mengaktifkan transisi untuk satu tahap dalam pipa, Anda harus menentukan panggung. Misalnya, untuk memungkinkan pengguna mengaktifkan dan menonaktifkan transisi untuk tahap bernamaStagingdalam pipa bernamaMyFirstPipeline:

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

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

Contoh berikut memberikan izin untuk mendapatkan daftar semua jenis tindakan yang tersedia untuk jaringan pipa 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 pipa 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 melakukan polling untuk pekerjaan untuk tindakan khusus

Contoh berikut memberikan izin untuk polling untuk pekerjaan untuk tindakan kustom bernamaTestProvider, yang merupakanTestjenis tindakan dalam versi pertama, di semua jaringan pipa:

catatan

Pekerja kerja 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 mengkonfigurasi pipeline untuk menggunakan Jenkins untuk membangun atau menguji, buat pengguna IAM terpisah untuk integrasi tersebut dan lampirkan kebijakan IAM yang memiliki izin minimum yang diperlukan untuk integrasi antara Jenkins danCodePipeline. Kebijakan ini sama denganAWSCodePipelineCustomActionAccesskebijakan terkelola. 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 alur

Anda dapat mengonfigurasi akses ke saluran pipa untuk pengguna dan grup di grup lainnyaAWSakun. 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 80398CONTOH yang memungkinkan pengguna untuk melihat, tetapi tidak berubah, pipa bernamaMyFirstPipelinediCodePipelinekonsol. Kebijakan ini didasarkan padaAWSCodePipeline_ReadOnlyAccessdikelola kebijakan, tetapi karena itu khusus untukMyFirstPipelineSelain itu, tidak dapat menggunakan kebijakan terkelola secara langsung. Jika Anda tidak ingin membatasi kebijakan ke pipeline tertentu, pertimbangkan untuk menggunakan salah satu kebijakan terkelola yang dibuat dan dikelola olehCodePipeline. 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 peran IAM di akun 80398CONTOH dan lampirkan kebijakan untuk peran tersebut. Dalam hubungan kepercayaan peran, Anda harus menambahkanAWSakun yang mengasumsikan peran ini. Contoh berikut menunjukkan kebijakan yang memungkinkan pengguna dari111111111111 AWSakun untuk mengasumsikan peran yang didefinisikan dalam akun 80398CONTOH:

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

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

{ "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 mengonfigurasi kebijakan yang memungkinkan pengguna membuat pipeline yang menggunakan sumber daya di tempat lainAWSakun. Hal ini memerlukan konfigurasi kebijakan dan peran di kedua akun yang membuat pipa (AccountA) dan akun yang menciptakan sumber daya yang akan digunakan dalam pipa (AccountB). Anda juga harus membuat kunci terkelola pelangganAWS Key Management Servicedigunakan untuk akses lintas akun. Untuk informasi lebih lanjut danstep-by-stepcontoh, lihatBuat pipeline di CodePipeline yang menggunakan sumber daya dari yang lainAWSakundanKonfigurasi perlindungan data.

Contoh berikut ini menunjukkan kebijakan yang dikonfigurasi oleh AccountA untuk bucket S3 yang digunakan untuk menyimpan artefak pipa. Kebijakan ini memberikan akses ke AccountB. Dalam 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 AccountB yang mengizinkan AccountB untuk mengasumsikan sebuah peran. Kebijakan ini harus diterapkan pada peran layanan untukCodePipeline(CodePipeline_Service_Role). Untuk informasi lebih lanjut 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 menunjukkan kebijakan yang dikonfigurasi oleh AccountB dan diterapkan padaPeran instans EC2untukCodeDeploy. Kebijakan ini memberikan akses ke bucket S3 yang digunakan oleh AccountA untuk menyimpan artefak pipa (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 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 peran IAM (CrossAccount_Role) dibuat oleh AccountB yang memungkinkan akses keCodeDeploytindakan 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 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 saluran untuk akses akun silang ke sumber daya, lihatLangkah 2: Mengedit pipa .