

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

# Secara otomatis melampirkan kebijakan terkelola AWS untuk Systems Manager ke profil EC2 instans menggunakan Cloud Custodian dan AWS CDK
<a name="automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk"></a>

*Ali Asfour dan Aaron Lennon, Amazon Web Services*

## Ringkasan
<a name="automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk-summary"></a>

Anda dapat mengintegrasikan instans Amazon Elastic Compute Cloud (Amazon EC2) dengan AWS Systems Manager untuk mengotomatiskan tugas operasional serta memberikan lebih banyak visibilitas dan kontrol. Untuk berintegrasi dengan Systems Manager, EC2 instans harus memiliki Agen [AWS Systems Manager (Agen SSM)](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent.html) yang diinstal dan kebijakan `AmazonSSMManagedInstanceCore` AWS Identity and Access Management (IAM) yang terpasang pada profil instans mereka. 

Namun, jika Anda ingin memastikan bahwa semua profil EC2 instans memiliki `AmazonSSMManagedInstanceCore` kebijakan yang dilampirkan, Anda dapat menghadapi tantangan dalam memperbarui EC2 instans baru yang tidak memiliki profil EC2 instans atau instance yang memiliki profil instans tetapi tidak memiliki kebijakan. `AmazonSSMManagedInstanceCore` Mungkin juga sulit untuk menambahkan kebijakan ini di beberapa akun Amazon Web Services (AWS) dan Wilayah AWS.

Pola ini membantu mengatasi tantangan ini dengan menerapkan tiga kebijakan [Cloud Custodian](https://cloudcustodian.io/) di akun AWS Anda:
+ Kebijakan Cloud Custodian pertama memeriksa EC2 instans yang ada yang memiliki profil instans tetapi tidak memiliki kebijakan. `AmazonSSMManagedInstanceCore` `AmazonSSMManagedInstanceCore`Kebijakan tersebut kemudian dilampirkan. 
+ Kebijakan Cloud Custodian kedua memeriksa instans yang ada tanpa profil EC2 instans dan menambahkan profil instans default yang memiliki kebijakan yang dilampirkan. `AmazonSSMManagedInstanceCore`
+ Kebijakan Cloud Custodian ketiga membuat fungsi [AWS Lambda](https://cloudcustodian.io/docs/aws/lambda.html) di akun Anda untuk memantau pembuatan EC2 instans dan profil instans. Ini memastikan bahwa `AmazonSSMManagedInstanceCore` kebijakan dilampirkan secara otomatis saat EC2 instance dibuat.

Pola ini menggunakan DevOps alat [AWS](https://aws.amazon.com/devops/) untuk mencapai penerapan kebijakan Cloud Custodian yang berkelanjutan dan berskala besar ke lingkungan multi-akun, tanpa menyediakan lingkungan komputasi terpisah. 

## Prasyarat dan batasan
<a name="automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk-prereqs"></a>

**Prasyarat**
+ Dua atau lebih akun AWS aktif. Satu akun adalah *akun keamanan* dan yang lainnya adalah *akun anggota*.
+ Izin untuk menyediakan sumber daya AWS di akun keamanan. Pola ini menggunakan [izin administrator](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html), tetapi Anda harus memberikan izin sesuai dengan persyaratan dan kebijakan organisasi Anda.
+ Kemampuan untuk mengambil peran IAM dari akun keamanan ke akun anggota dan membuat peran IAM yang diperlukan. Untuk informasi selengkapnya tentang hal ini, lihat [Mendelegasikan akses di seluruh akun AWS menggunakan peran IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html) dalam dokumentasi IAM.
+ 
**penting**  
AWS Command Line Interface (AWS CLI), diinstal dan dikonfigurasi. Untuk tujuan pengujian, Anda dapat mengonfigurasi AWS CLI dengan menggunakan `aws configure` perintah atau menyetel variabel lingkungan. : Ini tidak disarankan untuk lingkungan produksi dan kami menyarankan agar akun ini hanya diberikan akses hak istimewa paling sedikit. Untuk informasi lebih lanjut tentang ini, lihat [Berikan hak istimewa paling sedikit](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) dalam dokumentasi IAM.
+ `devops-cdk-cloudcustodian.zip`File (terlampir), diunduh ke komputer lokal Anda.
+ Keakraban dengan Python.
+ Alat yang diperlukan (Node.js, AWS Cloud Development Kit (AWS CDK), dan Git), diinstal dan dikonfigurasi. Anda dapat menggunakan `install-prerequisites.sh` file dalam `devops-cdk-cloudcustodian.zip` file untuk**** menginstal alat-alat ini. ****Pastikan Anda menjalankan file ini dengan hak akses root. 

**Batasan**
+ Meskipun pola ini dapat digunakan dalam lingkungan produksi, pastikan bahwa semua peran dan kebijakan IAM memenuhi persyaratan dan kebijakan organisasi Anda. 

**Versi Package**
+ Cloud Custodian versi 0.9 atau yang lebih baru
+ TypeScript versi 3.9.7 atau yang lebih baru
+ Node.js versi 14.15.4 atau yang lebih baru
+ `npm`versi 7.6.1 atau yang lebih baru
+ AWS CDK versi 1.96.0 atau yang lebih baru

## Arsitektur
<a name="automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk-architecture"></a>

![](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/169a7bde-789e-4ebd-b4ca-80eb28ac9927/images/8ec0b6b4-d4b0-42e5-833d-24d1e6098fd9.png)


 

Diagram menunjukkan alur kerja berikut:

1. Kebijakan Cloud Custodian didorong ke CodeCommit repositori AWS di akun keamanan. Aturan CloudWatch Acara Amazon secara otomatis memulai CodePipeline pipeline AWS.

1. Pipeline mengambil kode terbaru dari CodeCommit dan mengirimkannya ke bagian integrasi berkelanjutan dari pipeline integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD) yang ditangani oleh AWS. CodeBuild

1. CodeBuild melakukan DevSecOps tindakan lengkap, termasuk validasi sintaks kebijakan pada kebijakan Cloud Custodian, dan menjalankan kebijakan ini dalam `--dryrun` mode untuk memeriksa sumber daya mana yang diidentifikasi.

1. Jika tidak ada kesalahan, tugas berikutnya memberi tahu administrator untuk meninjau perubahan dan menyetujui penyebaran ke akun anggota.

**Tumpukan teknologi**
+ AWS CDK
+ CodeBuild
+ CodeCommit
+ CodePipeline
+ IAM
+ Penjaga Awan 

**Otomatisasi dan skala**

Modul pipeline AWS CDK menyediakan CI/CD pipeline yang digunakan CodePipeline untuk mengatur pembuatan dan pengujian kode sumber CodeBuild, selain penerapan sumber daya AWS dengan tumpukan AWS. CloudFormation Anda dapat menggunakan pola ini untuk semua akun anggota dan Wilayah di organisasi Anda. Anda juga dapat memperluas `Roles creation` tumpukan untuk menerapkan peran IAM lainnya di akun anggota Anda. 

## Alat
<a name="automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk-tools"></a>
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) adalah kerangka kerja pengembangan perangkat lunak untuk mendefinisikan infrastruktur cloud dalam kode dan menyediakannya melalui AWS. CloudFormation
+ [AWS Command Line Interface (AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)) adalah alat sumber terbuka yang memungkinkan Anda berinteraksi dengan layanan AWS menggunakan perintah di shell baris perintah Anda.
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) adalah layanan build yang dikelola sepenuhnya di cloud.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) adalah layanan kontrol versi yang dapat Anda gunakan untuk menyimpan dan mengelola aset secara pribadi.
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) adalah layanan pengiriman berkelanjutan yang dapat Anda gunakan untuk memodelkan, memvisualisasikan, dan mengotomatiskan langkah-langkah yang diperlukan untuk merilis perangkat lunak Anda.
+ [AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) adalah layanan web yang membantu Anda mengontrol akses ke sumber daya AWS dengan aman.
+ [Cloud Custodian](https://cloudcustodian.io/) adalah alat yang menyatukan lusinan alat dan skrip yang digunakan sebagian besar organisasi untuk mengelola akun cloud publik mereka menjadi satu alat sumber terbuka.
+ [Node.js](https://nodejs.org/en/) adalah JavaScript runtime yang dibangun di mesin V8 JavaScript Google Chrome.

**Kode**

Untuk daftar rinci modul, fungsi akun, file, dan perintah penerapan yang digunakan dalam pola ini, lihat `README` file dalam `devops-cdk-cloudcustodian.zip` file (terlampir).

## Epik
<a name="automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk-epics"></a>

### Siapkan pipeline dengan AWS CDK
<a name="set-up-the-pipeline-with-aws-cdk"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Siapkan CodeCommit repositori. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk.html)[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk.html)Untuk informasi selengkapnya tentang ini, lihat [Membuat CodeCommit repositori di dokumentasi](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-create-repository.html) CodeCommit AWS. | Developer | 
| Instal alat yang diperlukan. | Gunakan `install-prerequisites.sh` file untuk menginstal semua alat yang diperlukan di Amazon Linux. Ini tidak termasuk AWS CLI karena sudah diinstal sebelumnya.<br />Untuk informasi selengkapnya tentang ini, lihat bagian [Prasyarat](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html#getting_started_prerequisites) [Memulai AWS CDK dalam dokumentasi AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html). | Developer | 
| Instal paket AWS CDK yang diperlukan. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk.html)Paket-paket berikut diperlukan oleh AWS CDK dan disertakan dalam `requirements.txt` file:[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk.html) | Developer | 

### Konfigurasikan lingkungan Anda
<a name="configure-your-environment"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Perbarui variabel yang diperlukan. | Buka `vars.py` file di folder root CodeCommit repositori Anda dan perbarui variabel berikut:[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk.html) | Developer | 
| Perbarui file account.ymldengan informasi akun anggota. | Untuk menjalankan alat [Cloud Custodian c7n-org](https://cloudcustodian.io/docs/tools/c7n-org.html) terhadap beberapa akun, Anda harus menempatkan file `accounts.yml` konfigurasi di root repositori. Berikut ini adalah contoh file konfigurasi Cloud Custodian untuk AWS:<pre>accounts:<br />- account_id: '123123123123'<br />  name: account-1<br />  regions:<br />  - us-east-1<br />  - us-west-2<br />  role: arn:aws:iam::123123123123:role/CloudCustodian<br />  vars:<br />    charge_code: xyz<br />  tags:<br />  - type:prod<br />  - division:some division<br />  - partition:us<br />  - scope:pci</pre> | Developer | 

### Bootstrap akun AWS
<a name="bootstrap-the-aws-accounts"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Boostrap akun keamanan. | Bootstrap `deploy_account` dengan `cloudcustodian_stack` aplikasi dengan menjalankan perintah berikut:<pre>cdk bootstrap -a 'python3 <br />cloudcustodian/cloudcustodian_stack.py</pre> | Developer | 
| Opsi 1 - Secara otomatis bootstrap akun anggota. | Jika `cdk_bootstrap_member_accounts` variabel diatur ke `True` dalam `vars.py` file, akun yang ditentukan dalam `member_accounts` variabel secara otomatis di-bootstrap oleh pipeline.<br />Jika diperlukan, Anda dapat memperbarui `*cdk_bootstrap_role*` dengan peran IAM yang dapat Anda asumsikan dari akun keamanan dan yang memiliki izin yang diperlukan untuk mem-bootstrap AWS CDK.<br />Akun baru yang ditambahkan ke `member_accounts ` variabel secara otomatis di-bootstrap oleh pipeline sehingga peran yang diperlukan dapat digunakan. | Developer | 
| Opsi 2 - Bootstrap akun anggota secara manual.  | Meskipun kami tidak menyarankan menggunakan pendekatan ini, Anda dapat mengatur nilai `cdk_bootstrap_member_accounts` to `False` dan melakukan langkah ini secara manual dengan menjalankan perintah berikut:<pre>$ cdk bootstrap -a 'python3 cloudcustodian/member_account_roles_stack.py' \<br /><br />--trust {security_account_id} \<br /><br />--context assume-role-credentials:writeIamRoleName={role_name} \<br /><br />--context assume-role-credentials:readIamRoleName={role_name} \<br /><br />--mode=ForWriting \<br /><br />--context bootstrap=true \<br /><br />--cloudformation-execution-policies arn:aws:iam::aws:policy/AdministratorAccess</pre>Pastikan Anda memperbarui `{security_account_id}` dan `{role_name}` nilai dengan nama peran IAM yang dapat Anda asumsikan dari akun keamanan dan yang memiliki izin yang diperlukan untuk mem-bootstrap AWS CDK.<br />Anda juga dapat menggunakan pendekatan lain untuk mem-bootstrap akun anggota, misalnya, dengan AWS CloudFormation. Untuk informasi selengkapnya tentang ini, lihat [Bootstrapping di dokumentasi](https://docs.aws.amazon.com/cdk/latest/guide/bootstrapping.html) AWS CDK. | Developer | 

### Menerapkan tumpukan AWS CDK
<a name="deploy-the-aws-cdk-stacks"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat peran IAM di akun anggota. | Jalankan perintah berikut untuk menyebarkan `member_account_roles_stack` tumpukan dan membuat peran IAM di akun anggota:<pre>cdk deploy --all -a 'python3 cloudcustodian/member_account_roles_stack.py' --require-approval never</pre> | Developer | 
| Terapkan tumpukan pipeline Cloud Custodian. | Jalankan perintah berikut untuk membuat `cloudcustodian_stack.py` pipeline Cloud Custodian yang disebarkan ke akun keamanan:<pre>cdk deploy -a 'python3 cloudcustodian/cloudcustodian_stack.py'</pre> | Developer | 

## Sumber daya terkait
<a name="automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk-resources"></a>
+ [Memulai dengan AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html)

## Lampiran
<a name="attachments-169a7bde-789e-4ebd-b4ca-80eb28ac9927"></a>

[Untuk mengakses konten tambahan yang terkait dengan dokumen ini, unzip file berikut: attachment.zip](samples/p-attach/169a7bde-789e-4ebd-b4ca-80eb28ac9927/attachments/attachment.zip)