Contoh kebijakan berbasis identitas AWS CodePipeline - AWS CodePipeline

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

Contoh kebijakan berbasis identitas AWS CodePipeline

Secara default, pengguna dan peran IAM tidak memiliki izin untuk membuat atau memodifikasi CodePipeline sumber daya. Mereka juga tidak dapat melakukan tugas menggunakan AWS Management Console, AWS CLI, atau AWS API. Administrator IAM harus membuat kebijakan IAM yang memberikan izin kepada pengguna dan peran untuk melakukan operasi API tertentu pada sumber daya yang diperlukan. Administrator kemudian harus melampirkan kebijakan tersebut ke pengguna IAM atau grup yang memerlukan izin tersebut.

Untuk mempelajari cara membuat kebijakan berbasis identitas IAM menggunakan contoh dokumen kebijakan JSON ini, lihat Membuat Kebijakan pada Tab JSON dalam Panduan Pengguna IAM.

Untuk mempelajari cara membuat pipeline yang menggunakan sumber daya dari akun lain, dan untuk contoh kebijakan terkait, lihatBuat pipeline CodePipeline yang menggunakan sumber daya dari AWS akun lain.

Contoh kebijakan yang dikelola pelanggan

Di bagian ini, Anda dapat menemukan contoh kebijakan pengguna yang memberikan izin untuk berbagai CodePipeline tindakan. Kebijakan ini berfungsi saat Anda menggunakan CodePipeline API, AWS SDK, atau. AWS CLI Saat menggunakan konsol, Anda harus memberikan izin tambahan 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: Berikan izin untuk mendapatkan status pipa

Contoh berikut memberikan izin untuk mendapatkan status pipeline bernama: MyFirstPipeline

{ "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 bernama: MyFirstPipeline

{ "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 pipeline, Anda harus menentukan tahapannya. Misalnya, untuk memungkinkan pengguna mengaktifkan dan menonaktifkan transisi untuk tahap bernama Staging dalam pipeline 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 di Wilayah: us-west-2

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

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

Contoh berikut memberikan izin untuk menyetujui atau menolak tindakan persetujuan manual dalam tahapan yang disebutkan dalam pipeline bernamaStaging: MyFirstPipeline

{ "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 kustom

Contoh berikut memberikan izin untuk melakukan polling pekerjaan untuk tindakan kustom bernamaTestProvider, yang merupakan tipe Test tindakan dalam versi pertamanya, di semua pipeline:

catatan

Pekerja pekerjaan untuk tindakan kustom mungkin dikonfigurasi di bawah AWS akun yang berbeda atau memerlukan peran IAM tertentu agar 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: Lampirkan atau edit kebijakan untuk integrasi Jenkins dengan AWS CodePipeline

Jika Anda mengonfigurasi pipeline untuk menggunakan Jenkins untuk membangun atau menguji, buat identitas terpisah untuk integrasi tersebut dan lampirkan kebijakan IAM yang memiliki izin minimum yang diperlukan untuk integrasi antara Jenkins dan. CodePipeline Kebijakan ini sama dengan kebijakan yang AWSCodePipelineCustomActionAccess dikelola. Contoh berikut menunjukkan kebijakan untuk integrasi Jenkins:

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

Contoh 7: Konfigurasikan akses lintas akun ke pipeline

Anda dapat mengonfigurasi akses ke saluran pipa untuk pengguna dan grup di AWS akun lain. Cara yang disarankan adalah membuat peran di akun tempat pipeline dibuat. Peran tersebut harus memungkinkan pengguna dari AWS akun lain untuk mengambil peran itu dan mengakses pipeline. Untuk informasi selengkapnya, lihat Panduan: Akses Lintas Akun Menggunakan Peran.

Contoh berikut menunjukkan kebijakan di akun 80398EXAMPLE yang memungkinkan pengguna untuk melihat, tetapi tidak mengubah, pipeline yang dinamai MyFirstPipeline di konsol. CodePipeline Kebijakan ini didasarkan pada kebijakan yang AWSCodePipeline_ReadOnlyAccess dikelola, tetapi karena khusus untuk MyFirstPipeline pipeline, kebijakan ini 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 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 peran IAM di akun 80398EXAMPLE dan lampirkan kebijakan ke peran tersebut. Dalam hubungan kepercayaan peran, Anda harus menambahkan AWS akun yang mengasumsikan peran ini. Contoh berikut menunjukkan kebijakan yang memungkinkan pengguna dari akun 11111111111111 untuk mengambil peran yang ditentukan dalam AWS akun 80398EXAMPLE:

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

Contoh berikut menunjukkan kebijakan yang dibuat di akun 111111111111 yang memungkinkan pengguna untuk mengambil peran yang disebutkan CrossAccountPipelineViewers di AWS akun 80398EXAMPLE:

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

Contoh 8: Gunakan AWS sumber daya yang terkait dengan akun lain dalam pipeline

Anda dapat mengonfigurasi kebijakan yang memungkinkan pengguna membuat pipeline yang menggunakan sumber daya di AWS akun lain. Ini memerlukan konfigurasi kebijakan dan peran di akun yang membuat pipeline (accounta) dan akun yang membuat sumber daya yang akan digunakan dalam pipeline (accounTB). Anda juga harus membuat kunci yang dikelola pelanggan AWS Key Management Service untuk digunakan untuk akses lintas akun. Untuk informasi dan step-by-step contoh lebih lanjut, lihat Buat pipeline CodePipeline yang menggunakan sumber daya dari AWS akun lain danKonfigurasikan enkripsi sisi server untuk artefak yang disimpan di Amazon S3 untuk CodePipeline.

Contoh berikut menunjukkan kebijakan yang dikonfigurasi oleh Accounta untuk bucket S3 yang digunakan untuk menyimpan artefak pipeline. Kebijakan tersebut memberikan akses ke accounTb. Dalam contoh berikut, ARN untuk accounTb adalah. 012ID_ACCOUNT_B ARN untuk ember S3 adalah. codepipeline-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 menunjukkan kebijakan yang dikonfigurasi oleh accounta yang memungkinkan accounTB untuk mengambil peran. Kebijakan ini harus diterapkan pada peran layanan untuk CodePipeline (CodePipeline_Service_Role). Untuk informasi selengkapnya tentang cara menerapkan kebijakan ke peran di IAM, lihat Memodifikasi Peran. Dalam contoh berikut, 012ID_ACCOUNT_B adalah 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 ke peran instans EC2 untuk. CodeDeploy Kebijakan ini memberikan akses ke bucket S3 yang digunakan Accounta untuk menyimpan artefak pipeline (-2-1234567890): codepipeline-us-east

{ "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 AWS KMS di mana arn:aws:kms:us-east-1:012ID_ACCOUNT_A:key/2222222-3333333-4444-556677EXAMPLE ARN dari kunci terkelola 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 peran IAM (CrossAccount_Role) yang dibuat oleh accounTb yang memungkinkan akses ke CodeDeploy tindakan yang diperlukan oleh pipeline 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) yang dibuat oleh accounTb yang memungkinkan akses ke bucket S3 untuk mengunduh artefak input 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 pipeline untuk akses lintas akun ke sumber daya, lihatLangkah 2: Edit pipa .