Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Buat pipeline untuk gambar kontainer yang diperkeras menggunakan EC2 Image Builder dan Terraform
Mike Saintcross dan Andrew Ranes, Amazon Web Services
Ringkasan
Pola ini membangun pipeline EC2 Image Builder yang menghasilkan image container dasar Amazon Linux 2
Build ini mencakup dua EventBridge aturan Amazon. Satu aturan memulai pipeline image container ketika temuan Amazon Inspector High atau Critical sehingga gambar yang tidak aman diganti. Aturan ini mengharuskan pemindaian yang ditingkatkan Amazon Inspector dan Amazon Elastic Container Registry (Amazon ECR) Registry ECR) agar diaktifkan. Aturan lain mengirimkan pemberitahuan ke antrian Amazon Simple Queue Service (Amazon SQS) setelah push gambar berhasil ke repositori Amazon ECR, untuk membantu Anda menggunakan gambar kontainer terbaru.
catatan
Amazon Linux 2 mendekati akhir dukungan. Untuk informasi selengkapnya, lihat Amazon Linux 2 FAQs
Prasyarat dan batasan
Prasyarat
Akun AWS
tempat Anda dapat menerapkan infrastruktur. AWS Command Line Interface (AWS CLI) diinstal untuk menyetel kredensi AWS Anda untuk penerapan lokal.
Terraform diunduh
dan diatur dengan mengikuti instruksi dalam dokumentasi Terraform. Git
(jika Anda menyediakan dari mesin lokal). Peran dalam akun AWS yang dapat Anda gunakan untuk membuat sumber daya AWS.
Semua variabel didefinisikan dalam file.tfvars
. Atau, Anda dapat menentukan semua variabel saat menerapkan konfigurasi Terraform.
Batasan
Solusi ini menciptakan infrastruktur Amazon Virtual Private Cloud (Amazon VPC) yang mencakup gateway NAT dan gateway internet untuk konektivitas internet dari subnet pribadinya. Anda tidak dapat menggunakan titik akhir VPC, karena proses bootstrap oleh AWS Task Orchestrator dan Executor () menginstal AWSTOE
AWS CLI versi 2 dari internet.
Versi produk
Amazon Linux 2
AWS CLI versi 1.1 atau yang lebih baru
Arsitektur
Tumpukan teknologi target
Pola ini menciptakan 43 sumber daya, termasuk:
Dua bucket Amazon Simple Storage Service (Amazon S3): satu untuk file komponen pipeline dan satu untuk akses server dan log aliran Amazon VPC
Virtual Private Cloud (VPC) yang berisi subnet publik, subnet pribadi, tabel rute, gateway NAT, dan gateway internet
Pipeline, resep, dan komponen EC2 Image Builder
Gambar wadah
Kunci AWS Key Management Service (AWS KMS) untuk enkripsi gambar
Antrian SQS
Tiga peran: satu untuk menjalankan pipeline EC2 Image Builder, satu profil instance untuk EC2 Image Builder, dan satu untuk EventBridge aturan
Dua EventBridge aturan
Struktur modul Terraform
Untuk kode sumber, lihat GitHub repositori Terraform Image EC2 Builder Container Hardening Pipeline
├── components.tf ├── config.tf ├── dist-config.tf ├── files │ └──assumption-policy.json ├── hardening-pipeline.tfvars ├── image.tf ├── infr-config.tf ├── infra-network-config.tf ├── kms-key.tf ├── main.tf ├── outputs.tf ├── pipeline.tf ├── recipes.tf ├── roles.tf ├── sec-groups.tf ├── trigger-build.tf └── variables.tf
Rincian modul
components.tf
berisi sumber daya unggah Amazon S3 untuk mengunggah konten direktori./files
Anda juga dapat menambahkan file YAMM komponen kustom secara modular di sini juga./files
berisi.yml
file yang menentukan komponen yang digunakan dalamcomponents.tf
.image.tf
berisi definisi untuk sistem operasi gambar dasar. Di sinilah Anda dapat memodifikasi definisi untuk pipeline gambar dasar yang berbeda.infr-config.tf
dandist-config.tf
berisi sumber daya untuk infrastruktur AWS minimum yang diperlukan untuk memutar dan mendistribusikan gambar.infra-network-config.tf
berisi infrastruktur VPC minimum untuk menyebarkan gambar kontainer ke dalam.hardening-pipeline.tfvars
berisi variabel Terraform yang akan digunakan pada waktu penerapan.pipeline.tf
membuat dan mengelola pipeline EC2 Image Builder di Terraform.recipes.tf
adalah tempat Anda dapat menentukan campuran komponen yang berbeda untuk membuat resep wadah.roles.tf
berisi definisi kebijakan AWS Identity and Access Management (IAM) untuk profil instans Amazon Elastic Compute Cloud EC2 (Amazon) dan peran penerapan pipeline.trigger-build.tf
berisi EventBridge aturan dan sumber daya antrian SQS.
Arsitektur target

Diagram menggambarkan alur kerja berikut:
EC2 Image Builder membuat image kontainer dengan menggunakan resep yang ditentukan, yang menginstal pembaruan sistem operasi dan menerapkan RHEL Medium STIG ke image dasar Amazon Linux 2.
Gambar yang dikeraskan dipublikasikan ke registri ECR Amazon pribadi, dan EventBridge aturan mengirim pesan ke antrian SQS ketika gambar telah berhasil diterbitkan.
Jika Amazon Inspector dikonfigurasi untuk pemindaian yang disempurnakan, Amazon Inspector memindai registri Amazon ECR.
Jika Amazon Inspector menghasilkan temuan tingkat keparahan Kritis atau Tinggi untuk gambar, EventBridge aturan akan memicu pipeline Image Builder untuk berjalan lagi dan memublikasikan EC2 gambar yang baru dikeraskan.
Otomatisasi dan skala
Pola ini menjelaskan cara menyediakan infrastruktur dan membangun pipeline di komputer Anda. Namun, ini dimaksudkan untuk digunakan dalam skala. Alih-alih menerapkan modul Terraform secara lokal, Anda dapat menggunakannya di lingkungan multi-akun, seperti AWS Control Tower dengan Account
Factory untuk lingkungan Terraform. Dalam hal ini, Anda harus menggunakan bucket S3 status backend untuk mengelola file status Terraform alih-alih mengelola status konfigurasi secara lokal. Untuk penggunaan yang diskalakan, terapkan solusi ke satu akun pusat, seperti akun Layanan Bersama atau Layanan Umum, dari Control Tower atau model akun landing zone, dan berikan izin kepada akun konsumen untuk mengakses repositori Amazon ECR dan kunci AWS KMS. Untuk informasi lebih lanjut tentang penyiapan, lihat artikel re:Post Bagaimana cara mengizinkan akun sekunder untuk mendorong atau menarik gambar di repositori gambar Amazon ECR saya
? Misalnya, di mesin penjual otomatis akun atau Account Factory untuk Terraform, tambahkan izin ke setiap baseline akun atau baseline penyesuaian akun untuk menyediakan akses ke repositori Amazon ECR dan kunci enkripsi tersebut. Setelah pipeline image container di-deploy, Anda dapat memodifikasinya dengan menggunakan fitur EC2 Image Builder seperti komponen, yang membantu Anda mengemas lebih banyak komponen ke dalam build Docker.
Kunci AWS KMS yang digunakan untuk mengenkripsi image kontainer harus dibagikan di seluruh akun tempat gambar dimaksudkan untuk digunakan.
Anda dapat menambahkan dukungan untuk gambar lain dengan menduplikasi seluruh modul Terraform dan memodifikasi atribut berikut:
recipes.tf
Ubah
parent_image = "amazonlinux:latest"
ke jenis gambar lain.Ubah
repository_name
untuk menunjuk ke repositori Amazon ECR yang ada. Ini membuat pipeline lain yang menerapkan jenis gambar induk yang berbeda ke repositori Amazon ECR Anda yang ada.
Alat
Alat
Terraform (penyediaan IAc)
Git (jika penyediaan secara lokal)
AWS CLI versi 1 atau versi 2 (jika disediakan secara lokal)
Kode
Kode untuk pola ini ada di GitHub repositori Terraform Image EC2 Builder Container Hardening Pipeline
Epik
Tugas | Deskripsi | Keterampilan yang dibutuhkan |
---|---|---|
Siapkan kredensil lokal. | Siapkan kredensi sementara AWS Anda.
| AWS DevOps |
Kloning repositori. |
| AWS DevOps |
Perbarui variabel. | Perbarui variabel dalam
Berikut adalah deskripsi dari masing-masing variabel:
| AWS DevOps |
Inisialisasi Terraform. | Setelah memperbarui nilai variabel, Anda dapat menginisialisasi direktori konfigurasi Terraform. Menginisialisasi direktori konfigurasi mengunduh dan menginstal penyedia AWS, yang ditentukan dalam konfigurasi.
Anda akan melihat pesan yang mengatakan Terraform telah berhasil diinisialisasi dan mengidentifikasi versi penyedia yang diinstal. | AWS DevOps |
Menyebarkan infrastruktur dan membuat gambar kontainer. | Gunakan perintah berikut untuk menginisialisasi, memvalidasi, dan menerapkan modul Terraform ke lingkungan dengan menggunakan variabel yang ditentukan dalam file Anda:
| AWS DevOps |
Sesuaikan wadahnya. | Anda dapat membuat versi baru resep kontainer setelah EC2 Image Builder menerapkan pipeline dan resep awal. Anda dapat menambahkan salah satu dari 31+ komponen yang tersedia dalam EC2 Image Builder untuk menyesuaikan build container. Untuk informasi selengkapnya, lihat bagian Komponen Buat versi baru resep kontainer di dokumentasi EC2 Image Builder. | Administrator AWS |
Tugas | Deskripsi | Keterampilan yang dibutuhkan |
---|---|---|
Validasi penyediaan infrastruktur AWS. | Setelah Anda berhasil menyelesaikan
| AWS DevOps |
Validasi sumber daya infrastruktur AWS individual. | Untuk memvalidasi sumber daya individual yang digunakan, jika Anda menyediakan secara lokal, Anda dapat menjalankan perintah berikut:
Perintah ini mengembalikan daftar 43 sumber daya. | AWS DevOps |
Tugas | Deskripsi | Keterampilan yang dibutuhkan |
---|---|---|
Hapus infrastruktur dan gambar kontainer. | Setelah selesai bekerja dengan konfigurasi Terraform, Anda dapat menjalankan perintah berikut untuk menghapus sumber daya:
| AWS DevOps |
Pemecahan Masalah
Isu | Solusi |
---|---|
Kesalahan memvalidasi kredensi penyedia | Saat Anda menjalankan Terraform
Kesalahan ini disebabkan oleh kedaluwarsa token keamanan untuk kredensil yang digunakan dalam konfigurasi mesin lokal Anda. Untuk mengatasi kesalahan, lihat Mengatur dan melihat setelan konfigurasi dalam dokumentasi AWS CLI. |