Praktik terbaik keamanan - AWS Bimbingan Preskriptif

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 yang memungkinkan peran IAM diasumsikan oleh akun pengguna Anda atau identitas federasi. Ini mengizinkan penggunaan sementara peran tersebut.

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 untuk menyederhanakan dan mengamankan otentikasi. AWS Terraform secara otomatis menukar kredensil sementara pada setiap proses tanpa memerlukan asumsi peran IAM.

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 tindakan Configure AWS Credentials untuk menukar GitHub token dengan AWS kredensial sementara tanpa memerlukan kunci akses jangka panjang.

Gunakan GitLab dengan OIDC dan AWS CLI

Gunakan standar OIDC untuk menyatukan GitLab identitas melalui IAM untuk akses sementara. Dengan mengandalkan OIDC, Anda menghindari keharusan langsung mengelola kunci AWS akses jangka panjang di dalamnya. GitLab Kredensil dipertukarkan just-in-time, yang meningkatkan keamanan. Pengguna juga mendapatkan akses hak istimewa paling sedikit sesuai dengan izin dalam peran 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 di Jenkins untuk mengonfigurasi dan menyuntikkan kredensil secara terpusat ke dalam build secara dinamis AWS . Ini menghindari memeriksa rahasia ke dalam kontrol sumber.

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 HubSecurity 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 file status Terraform dari jarak jauh alih-alih secara lokal di mesin tempat Terraform berjalan. File status sangat penting karena melacak sumber daya yang disediakan oleh Terraform dan metadatanya.

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, andalkan dukungan bawaan Terraform untuk manajemen status sensitif. Saat mengekspor nilai sensitif ke output, pastikan nilainya ditandai sebagai sensitif.

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, AWS Security HubAmazon Detective, dan Amazon GuardDuty untuk memantau infrastruktur yang disediakan di seluruh akun dan Wilayah. Jadwalkan pemindaian berulang di Security Hub untuk melacak penyebaran dan penyimpangan konfigurasi. Pindai EC2 instance, fungsi Lambda, wadah, bucket S3, dan sumber daya lainnya.

Lakukan analisis statis

Sematkan penganalisis statis seperti Checkov langsung ke saluran CI/CD untuk memindai kode konfigurasi Terraform (HCL) dan mengidentifikasi risiko terlebih dahulu sebelum penerapan. Ini memindahkan pemeriksaan keamanan ke titik sebelumnya dalam proses pengembangan (disebut sebagai pergeseran ke kiri) dan mencegah infrastruktur yang salah konfigurasi.

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 untuk menyediakan pagar pembatas tata kelola dan templat standar untuk penyediaan infrastruktur dengan Terraform.

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.