Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Praktik terbaik keamanan
Mengelola otentikasi, kontrol akses, dan keamanan dengan benar sangat penting untuk penggunaan Penyedia AWS Terraform yang aman. Bagian ini menguraikan praktik terbaik seputar:
-
Peran dan izin IAM untuk akses hak istimewa paling sedikit
-
Mengamankan kredensi untuk membantu mencegah akses tidak sah ke akun dan sumber daya AWS
-
Enkripsi status jarak jauh untuk membantu melindungi data sensitif
-
Infrastruktur dan pemindaian kode sumber untuk mengidentifikasi kesalahan konfigurasi
-
Kontrol akses untuk penyimpanan status jarak jauh
-
Penegakan kebijakan sentinel untuk menerapkan pagar pembatas tata kelola
Mengikuti praktik terbaik ini membantu memperkuat postur keamanan Anda saat Anda menggunakan Terraform untuk mengelola AWS infrastruktur.
Ikuti prinsip hak istimewa yang paling sedikit
Keistimewaan terkecil adalah prinsip keamanan mendasar yang mengacu pada pemberian hanya izin minimum yang diperlukan bagi pengguna, proses, atau sistem untuk menjalankan fungsi yang dimaksudkan. Ini adalah konsep inti dalam kontrol akses dan tindakan pencegahan terhadap akses yang tidak sah dan potensi pelanggaran data.
Prinsip hak istimewa paling sedikit ditekankan beberapa kali di bagian ini karena secara langsung berkaitan dengan bagaimana Terraform mengautentikasi dan menjalankan tindakan terhadap penyedia cloud seperti. AWS
Saat Anda menggunakan Terraform untuk menyediakan dan mengelola AWS sumber daya, ia bertindak atas nama entitas (pengguna atau peran) yang memerlukan izin yang sesuai untuk melakukan panggilan API. Tidak mengikuti sedikit hak istimewa membuka risiko keamanan utama:
-
Jika Terraform memiliki izin berlebihan di luar yang diperlukan, kesalahan konfigurasi yang tidak diinginkan dapat membuat perubahan atau penghapusan yang tidak diinginkan.
-
Hibah akses yang terlalu permisif meningkatkan cakupan dampak jika file atau kredensil status Terraform dikompromikan.
-
Tidak mengikuti sedikit hak istimewa bertentangan dengan praktik terbaik keamanan dan persyaratan kepatuhan peraturan untuk memberikan akses minimal yang diperlukan.
Gunakan IAM role
Gunakan peran IAM alih-alih pengguna IAM sedapat mungkin untuk meningkatkan keamanan dengan Penyedia AWS Terraform. Peran IAM menyediakan kredensil keamanan sementara yang berputar secara otomatis, yang menghilangkan kebutuhan untuk mengelola kunci akses jangka panjang. Peran juga menawarkan kontrol akses yang tepat melalui kebijakan IAM.
Berikan akses hak istimewa paling sedikit dengan menggunakan kebijakan IAM
Buat kebijakan IAM dengan hati-hati untuk memastikan bahwa peran dan pengguna hanya memiliki set izin minimum yang diperlukan untuk beban kerja mereka. Mulailah dengan kebijakan kosong dan tambahkan layanan dan tindakan yang diizinkan secara berulang. Untuk mencapai ini:
-
Aktifkan IAM Access Analyzer untuk mengevaluasi kebijakan dan menyorot izin yang tidak digunakan yang dapat dihapus.
-
Tinjau kebijakan secara manual untuk menghapus kemampuan apa pun yang tidak penting untuk tanggung jawab peran yang dimaksudkan.
-
Gunakan variabel dan tag kebijakan IAM untuk menyederhanakan manajemen izin.
Kebijakan yang dibangun dengan baik memberikan akses yang cukup untuk menyelesaikan tanggung jawab beban kerja dan tidak lebih. Tentukan tindakan di tingkat operasi, dan izinkan panggilan hanya diperlukan APIs pada sumber daya tertentu.
Mengikuti praktik terbaik ini mengurangi ruang lingkup dampak dan mengikuti prinsip-prinsip keamanan dasar pemisahan tugas dan akses hak istimewa yang paling sedikit. Mulai akses ketat dan buka secara bertahap sesuai kebutuhan, alih-alih mulai membuka dan mencoba membatasi akses nanti.
Asumsikan peran IAM untuk otentikasi lokal
Saat Anda menjalankan Terraform secara lokal, hindari mengonfigurasi kunci akses statis. Sebagai gantinya, gunakan peran IAM untuk memberikan akses istimewa sementara tanpa mengekspos kredensi jangka panjang.
Pertama, buat peran IAM dengan izin minimum yang diperlukan dan tambahkan hubungan kepercayaan
Contoh kebijakan hubungan kepercayaan:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/terraform-execution" }, "Action": "sts:AssumeRole" } ] }
Kemudian, jalankan AWS CLI perintah aws sts assume-role untuk mengambil kredensil berumur pendek untuk peran tersebut. Kredensi ini biasanya berlaku selama satu jam.
AWS CLI contoh perintah:
aws sts assume-role --role-arn arn:aws:iam::111122223333:role/terraform-execution --role-session-name terraform-session-example
Output dari perintah berisi kunci akses, kunci rahasia, dan token sesi yang dapat Anda gunakan untuk mengautentikasi ke AWS:
{ "AssumedRoleUser": { "AssumedRoleId": "AROA3XFRBF535PLBIFPI4:terraform-session-example", "Arn": "arn:aws:sts::111122223333:assumed-role/terraform-execution/terraform-session-example" }, "Credentials": { "SecretAccessKey": " wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", "SessionToken": " AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/LTo6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3zrkuWJOgQs8IZZaIv2BXIa2R4OlgkBN9bkUDNCJiBeb/AXlzBBko7b15fjrBs2+cTQtpZ3CYWFXG8C5zqx37wnOE49mRl/+OtkIKGO7fAE", "Expiration": "2024-03-15T00:05:07Z", "AccessKeyId": "ASIAIOSFODNN7EXAMPLE" } }
AWS Penyedia juga dapat secara otomatis menangani asumsi peran
Contoh konfigurasi penyedia untuk mengasumsikan peran IAM:
provider "aws" { assume_role { role_arn = "arn:aws:iam::111122223333:role/terraform-execution" session_name = "terraform-session-example" } }
Ini memberikan hak istimewa yang tinggi secara ketat untuk durasi sesi Terraform. Kunci sementara tidak dapat bocor karena akan kedaluwarsa secara otomatis setelah durasi maksimum sesi.
Manfaat utama dari praktik terbaik ini termasuk peningkatan keamanan dibandingkan dengan kunci akses yang berumur panjang, kontrol akses halus pada peran untuk hak istimewa paling sedikit, dan kemampuan untuk dengan mudah mencabut akses dengan memodifikasi izin peran. Dengan menggunakan peran IAM, Anda juga menghindari keharusan menyimpan rahasia secara langsung secara lokal dalam skrip atau disk, yang membantu Anda berbagi konfigurasi Terraform dengan aman di seluruh tim.
Menggunakan peran IAM untuk otentikasi Amazon EC2
Saat Anda menjalankan Terraform dari instans Amazon Elastic Compute Cloud (Amazon EC2), hindari menyimpan kredensil jangka panjang secara lokal. Sebagai gantinya, gunakan peran IAM dan profil instance untuk memberikan izin hak istimewa paling sedikit secara otomatis.
Pertama, buat peran IAM dengan izin minimum dan tetapkan peran ke profil instance. Profil instance memungkinkan EC2 instance mewarisi izin yang ditentukan dalam peran. Kemudian, luncurkan instance dengan menentukan profil instance itu. Instance akan mengautentikasi melalui peran terlampir.
Sebelum Anda menjalankan operasi Terraform apa pun, verifikasi bahwa peran tersebut ada dalam metadata instance untuk mengonfirmasi bahwa kredensil berhasil diwarisi.
TOKEN=$(curl -s -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600") curl -H "X-aws-ec2-metadata-token: $TOKEN" -s http://169.254.169.254/latest/meta-data/iam/security-credentials/
Pendekatan ini menghindari hardcoding AWS kunci permanen ke dalam skrip atau konfigurasi Terraform dalam instance. Kredensi sementara tersedia untuk Terraform secara transparan melalui peran dan profil instans.
Manfaat utama dari praktik terbaik ini termasuk peningkatan keamanan atas kredensil jangka panjang, pengurangan overhead manajemen kredensi, dan konsistensi antara pengembangan, pengujian, dan lingkungan produksi. Otentikasi peran IAM menyederhanakan Terraform berjalan dari EC2 instance sambil menegakkan akses hak istimewa paling sedikit.
Gunakan kredensil dinamis untuk ruang kerja HCP Terraform
HCP Terraform adalah layanan terkelola yang disediakan oleh HashiCorp yang membantu tim menggunakan Terraform untuk menyediakan dan mengelola infrastruktur di berbagai proyek dan lingkungan. Saat Anda menjalankan Terraform di HCP Terraform, gunakan kredensil dinamis
Manfaatnya termasuk rotasi rahasia yang lebih mudah, manajemen kredensi terpusat di seluruh ruang kerja, izin hak istimewa paling sedikit, dan menghilangkan kunci hardcode. Mengandalkan kunci fana yang di-hash meningkatkan keamanan dibandingkan dengan kunci akses yang berumur panjang.
Gunakan peran IAM di AWS CodeBuild
Di AWS CodeBuild, jalankan build Anda dengan menggunakan peran IAM yang ditetapkan ke proyek. CodeBuild Hal ini memungkinkan setiap build untuk secara otomatis mewarisi kredensi sementara dari peran alih-alih menggunakan kunci jangka panjang.
Jalankan GitHub Tindakan dari jarak jauh di HCP Terraform
Konfigurasikan alur kerja GitHub Tindakan untuk menjalankan Terraform dari jarak jauh di ruang kerja HCP Terraform. Andalkan kredensil dinamis dan penguncian status jarak jauh alih-alih manajemen GitHub rahasia.
Gunakan GitHub Tindakan dengan OIDC dan konfigurasikan tindakan Credentials AWS
Gunakan standar OpenID Connect (OIDC) untuk menggabungkan identitas Actions melalui IAM. GitHub
Gunakan GitLab dengan OIDC dan AWS CLI
Gunakan standar OIDC untuk menyatukan GitLab identitas melalui IAM
Gunakan pengguna IAM unik dengan alat otomatisasi lama
Jika Anda memiliki alat otomatisasi dan skrip yang tidak memiliki dukungan asli untuk menggunakan peran IAM, Anda dapat membuat pengguna IAM individual untuk memberikan akses terprogram. Prinsip hak istimewa paling sedikit masih berlaku. Minimalkan izin kebijakan dan andalkan peran terpisah untuk setiap pipeline atau skrip. Saat Anda bermigrasi ke alat atau skrip yang lebih modern, mulailah mendukung peran secara native dan bertahap bertransisi ke sana.
Awas
Pengguna IAM memiliki kredensi jangka panjang, yang menghadirkan risiko keamanan. Untuk membantu mengurangi risiko ini, kami menyarankan agar Anda memberikan pengguna ini hanya izin yang mereka perlukan untuk melakukan tugas dan menghapus pengguna ini ketika mereka tidak lagi diperlukan.
Gunakan plugin Jenkins AWS Credentials
Gunakan plugin AWS Credentials
Terus memantau, memvalidasi, dan mengoptimalkan hak istimewa paling sedikit
Seiring waktu, izin tambahan mungkin diberikan yang dapat melebihi kebijakan minimum yang diperlukan. Terus menganalisis akses untuk mengidentifikasi dan menghapus hak yang tidak perlu.
Terus memantau penggunaan kunci akses
Jika Anda tidak dapat menghindari penggunaan kunci akses, gunakan laporan kredensi IAM untuk menemukan kunci akses yang tidak digunakan yang lebih tua dari 90 hari, dan cabut kunci tidak aktif di kedua akun pengguna dan peran mesin. Peringatkan administrator untuk secara manual mengonfirmasi penghapusan kunci untuk karyawan dan sistem aktif.
Memantau penggunaan kunci membantu Anda mengoptimalkan izin karena Anda dapat mengidentifikasi dan menghapus hak yang tidak digunakan. Ketika Anda mengikuti praktik terbaik ini dengan rotasi kunci akses, ini membatasi masa pakai kredensi dan menerapkan akses hak istimewa paling sedikit.
AWS menyediakan beberapa layanan dan fitur yang dapat Anda gunakan untuk mengatur peringatan dan pemberitahuan untuk administrator. Berikut adalah beberapa opsi:
-
AWS Config
: Anda dapat menggunakan AWS Config aturan untuk mengevaluasi pengaturan konfigurasi AWS sumber daya Anda, termasuk kunci akses IAM. Anda dapat membuat aturan khusus untuk memeriksa kondisi tertentu, seperti kunci akses yang tidak digunakan yang lebih lama dari jumlah hari tertentu. Ketika aturan dilanggar, AWS Config dapat memulai evaluasi untuk perbaikan atau mengirim pemberitahuan ke topik Simple Notification Service Amazon (Amazon SNS). -
AWS Security Hub
Security Hub memberikan pandangan komprehensif tentang postur keamanan AWS akun Anda dan dapat membantu mendeteksi dan memberi tahu Anda tentang potensi masalah keamanan, termasuk kunci akses IAM yang tidak digunakan atau tidak aktif. Security Hub dapat berintegrasi dengan Amazon EventBridge dan Amazon SNS atau Amazon Q Developer dalam aplikasi obrolan untuk mengirim pemberitahuan ke administrator. -
AWS Lambda
: Fungsi Lambda dapat dipanggil oleh berbagai acara, termasuk CloudWatch Acara Amazon atau AWS Config aturan. Anda dapat menulis fungsi Lambda khusus untuk mengevaluasi penggunaan kunci akses IAM, melakukan pemeriksaan tambahan, dan mengirim pemberitahuan dengan menggunakan layanan seperti Amazon SNS atau Amazon Q Developer dalam aplikasi obrolan.
Terus memvalidasi kebijakan IAM
Gunakan IAM Access Analyzer untuk mengevaluasi kebijakan yang melekat pada peran dan mengidentifikasi layanan yang tidak digunakan atau tindakan berlebih yang diberikan. Menerapkan tinjauan akses berkala untuk memverifikasi secara manual bahwa kebijakan sesuai dengan persyaratan saat ini.
Bandingkan kebijakan yang ada dengan kebijakan yang dihasilkan oleh IAM Access Analyzer dan hapus izin yang tidak perlu. Anda juga harus memberikan laporan kepada pengguna dan secara otomatis mencabut izin yang tidak digunakan setelah masa tenggang. Ini membantu memastikan bahwa kebijakan minimal tetap berlaku.
Secara proaktif dan sering mencabut akses usang meminimalkan kredensil yang mungkin berisiko selama pelanggaran. Otomasi menyediakan kebersihan kredenal jangka panjang dan pengoptimalan izin yang berkelanjutan. Mengikuti praktik terbaik ini membatasi ruang lingkup dampak dengan secara proaktif menegakkan hak istimewa terkecil di seluruh AWS identitas dan sumber daya.
Penyimpanan status jarak jauh yang aman
Penyimpanan status jarak jauh mengacu pada penyimpanan
Kegagalan untuk mengamankan status jarak jauh dapat menyebabkan masalah serius seperti hilangnya data negara, ketidakmampuan untuk mengelola infrastruktur, penghapusan sumber daya yang tidak disengaja, dan paparan informasi sensitif yang mungkin ada dalam file status. Untuk alasan ini, mengamankan penyimpanan status jarak jauh sangat penting untuk penggunaan Terraform tingkat produksi.
Aktifkan enkripsi dan kontrol akses
Gunakan Amazon Simple Storage Service (Amazon S3) Simple Storage Service (Amazon S3) enkripsi sisi server (SSE) untuk mengenkripsi status jarak jauh saat istirahat.
Batasi akses langsung ke alur kerja kolaboratif
-
Struktur alur kerja kolaborasi di HCP Terraform atau dalam pipeline CI/CD dalam repositori Git Anda untuk membatasi akses status langsung.
-
Andalkan permintaan tarik, jalankan persetujuan, pemeriksaan kebijakan, dan notifikasi untuk mengoordinasikan perubahan.
Mengikuti panduan ini membantu mengamankan atribut sumber daya yang sensitif dan menghindari konflik dengan perubahan anggota tim. Enkripsi dan perlindungan akses yang ketat membantu mengurangi permukaan serangan, dan alur kerja kolaborasi memungkinkan produktivitas.
Gunakan AWS Secrets Manager
Ada banyak sumber daya dan sumber data di Terraform yang menyimpan nilai rahasia dalam teks biasa di file status. Hindari menyimpan rahasia di negara bagian―gunakan AWS Secrets Managersebagai gantinya.
Alih-alih mencoba mengenkripsi nilai sensitif secara manual
Terus memindai infrastruktur dan kode sumber
Secara proaktif memindai infrastruktur dan kode sumber secara terus menerus untuk risiko seperti kredensi yang terpapar atau kesalahan konfigurasi untuk mengeraskan postur keamanan Anda. Atasi temuan segera dengan mengkonfigurasi ulang atau menambal sumber daya.
Gunakan AWS layanan untuk pemindaian dinamis
Gunakan alat AWS bawaan seperti Amazon Inspector
Lakukan analisis statis
Sematkan penganalisis statis seperti Checkov
Pastikan remediasi yang cepat
Untuk semua temuan pemindaian, pastikan perbaikan segera dengan memperbarui konfigurasi Terraform, menerapkan tambalan, atau mengonfigurasi ulang sumber daya secara manual sebagaimana mestinya. Menurunkan tingkat risiko dengan mengatasi akar penyebabnya.
Menggunakan pemindaian infrastruktur dan pemindaian kode memberikan wawasan berlapis di seluruh konfigurasi Terraform, sumber daya yang disediakan, dan kode aplikasi. Ini memaksimalkan cakupan risiko dan kepatuhan melalui kontrol preventif, detektif, dan reaktif sambil menyematkan keamanan lebih awal ke dalam siklus hidup pengembangan perangkat lunak (SDLC).
Menegakkan pemeriksaan kebijakan
Gunakan kerangka kerja kode seperti kebijakan HashiCorp Sentinel
Kebijakan sentinel dapat menentukan persyaratan atau pembatasan konfigurasi Terraform agar selaras dengan standar organisasi dan praktik terbaik. Misalnya, Anda dapat menggunakan kebijakan Sentinel untuk:
-
Memerlukan tag pada semua sumber daya.
-
Batasi jenis instans ke daftar yang disetujui.
-
Menegakkan variabel wajib.
-
Mencegah penghancuran sumber daya produksi.
Menyematkan pemeriksaan kebijakan ke dalam siklus hidup konfigurasi Terraform memungkinkan penegakan standar dan pedoman arsitektur secara proaktif. Sentinel menyediakan logika kebijakan bersama yang membantu mempercepat pengembangan sekaligus mencegah praktik yang tidak disetujui.