Praktik terbaik backend - 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 backend

Menggunakan backend jarak jauh yang tepat untuk menyimpan file status Anda sangat penting untuk memungkinkan kolaborasi, memastikan integritas file status melalui penguncian, menyediakan pencadangan dan pemulihan yang andal, mengintegrasikan dengan alur kerja CI/CD, dan memanfaatkan fitur keamanan, tata kelola, dan manajemen tingkat lanjut yang ditawarkan oleh layanan terkelola seperti HCP Terraform.

Terraform mendukung berbagai jenis backend seperti Kubernetes, Consul, dan HTTP. HashiCorp Namun, panduan ini berfokus pada Amazon S3, yang merupakan solusi backend optimal untuk sebagian besar pengguna. AWS

Sebagai layanan penyimpanan objek yang dikelola sepenuhnya yang menawarkan daya tahan dan ketersediaan tinggi, Amazon S3 menyediakan backend yang aman, dapat diskalakan, dan berbiaya rendah untuk mengelola status Terraform. AWS Jejak global dan ketahanan Amazon S3 melebihi apa yang dapat dicapai sebagian besar tim dengan mengelola sendiri penyimpanan status. Selain itu, terintegrasi secara native dengan kontrol AWS akses, opsi enkripsi, kemampuan pembuatan versi, dan layanan lainnya menjadikan Amazon S3 pilihan backend yang nyaman.

Panduan ini tidak memberikan panduan backend untuk solusi lain seperti Kubernetes atau Konsul karena target audiens utama adalah pelanggan. AWS Untuk tim yang sepenuhnya berada di dalamnya AWS Cloud, Amazon S3 biasanya merupakan pilihan ideal daripada klaster Kubernetes atau Konsul. HashiCorp Kesederhanaan, ketahanan, dan AWS integrasi yang ketat dari penyimpanan status Amazon S3 memberikan fondasi optimal bagi sebagian besar pengguna yang AWS mengikuti praktik terbaik. Tim dapat memanfaatkan daya tahan, perlindungan cadangan, dan ketersediaan AWS layanan untuk menjaga status Terraform jarak jauh sangat tangguh.

Mengikuti rekomendasi backend di bagian ini akan menghasilkan basis kode Terraform yang lebih kolaboratif sambil membatasi dampak kesalahan atau modifikasi yang tidak sah. Dengan menerapkan backend jarak jauh yang dirancang dengan baik, tim dapat mengoptimalkan alur kerja Terraform.

Gunakan Amazon S3 untuk penyimpanan jarak jauh

Menyimpan status Terraform dari jarak jauh di Amazon S3 dan menerapkan penguncian status dan pemeriksaan konsistensi dengan menggunakan Amazon DynamoDB memberikan manfaat besar dibandingkan penyimpanan file lokal. Status jarak jauh memungkinkan kolaborasi tim, pelacakan perubahan, perlindungan cadangan, dan penguncian jarak jauh untuk meningkatkan keamanan.

Menggunakan Amazon S3 dengan kelas penyimpanan Standar S3 (default) alih-alih penyimpanan lokal sementara atau solusi yang dikelola sendiri memberikan daya tahan 99,999999999% dan perlindungan ketersediaan 99,99% untuk mencegah kehilangan data status yang tidak disengaja. AWS layanan terkelola seperti Amazon S3 dan DynamoDB menyediakan perjanjian tingkat layanan (SLA) yang melebihi apa yang dapat dicapai sebagian besar organisasi ketika mereka mengelola penyimpanan sendiri. Andalkan perlindungan ini untuk menjaga backend jarak jauh dapat diakses.

Aktifkan penguncian status jarak jauh

Penguncian DynamoDB membatasi akses status untuk mencegah operasi penulisan bersamaan. Ini mencegah modifikasi simultan dari beberapa pengguna dan mengurangi kesalahan.

Contoh konfigurasi backend dengan penguncian status:

terraform { backend "s3" { bucket = "myorg-terraform-states" key = "myapp/production/tfstate" region = "us-east-1" dynamodb_table = "TerraformStateLocking" } }

Aktifkan pembuatan versi dan pencadangan otomatis

Untuk pengamanan tambahan, aktifkan pembuatan versi dan pencadangan otomatis dengan menggunakan backend Amazon S3. AWS Backup Pembuatan versi mempertahankan semua versi status sebelumnya setiap kali perubahan dilakukan. Ini juga memungkinkan Anda memulihkan snapshot status kerja sebelumnya jika diperlukan untuk mengembalikan perubahan yang tidak diinginkan atau pulih dari kecelakaan.

Kembalikan versi sebelumnya jika diperlukan

Bucket status Amazon S3 berversi memudahkan untuk mengembalikan perubahan dengan memulihkan snapshot status baik yang diketahui sebelumnya. Ini membantu melindungi dari perubahan yang tidak disengaja dan menyediakan kemampuan cadangan tambahan.

Gunakan HCP Terraform

HCP Terraform menyediakan alternatif backend yang dikelola sepenuhnya untuk mengonfigurasi penyimpanan status Anda sendiri. HCP Terraform secara otomatis menangani penyimpanan status dan enkripsi yang aman sambil membuka fitur tambahan.

Saat Anda menggunakan HCP Terraform, status disimpan dari jarak jauh secara default, yang memungkinkan berbagi status dan penguncian di seluruh organisasi Anda. Kontrol kebijakan terperinci membantu Anda membatasi akses dan perubahan status.

Kemampuan tambahan termasuk integrasi kontrol versi, pagar pembatas kebijakan, otomatisasi alur kerja, manajemen variabel, dan integrasi masuk tunggal dengan SAMP. Anda juga dapat menggunakan kebijakan Sentinel sebagai kode untuk menerapkan kontrol tata kelola.

Meskipun HCP Terraform memerlukan penggunaan platform perangkat lunak sebagai layanan (SaaS), bagi banyak tim manfaat seputar keamanan, kontrol akses, pemeriksaan kebijakan otomatis, dan fitur kolaborasi menjadikannya pilihan optimal daripada penyimpanan status pengelolaan mandiri dengan Amazon S3 atau DynamoDB.

Integrasi yang mudah dengan layanan seperti GitHub dan GitLab dengan konfigurasi kecil juga menarik bagi pengguna yang sepenuhnya merangkul alat cloud dan SaaS untuk alur kerja tim yang lebih baik.

Memfasilitasi kolaborasi tim

Gunakan backend jarak jauh untuk berbagi data status di semua anggota tim Terraform Anda. Ini memfasilitasi kolaborasi karena memberikan visibilitas seluruh tim ke dalam perubahan infrastruktur. Protokol backend bersama yang dikombinasikan dengan transparansi riwayat negara menyederhanakan manajemen perubahan internal. Semua perubahan infrastruktur melalui jalur pipa yang mapan, yang meningkatkan kelincahan bisnis di seluruh perusahaan.

Meningkatkan akuntabilitas dengan menggunakan AWS CloudTrail

Integrasikan AWS CloudTrail dengan bucket Amazon S3 untuk menangkap panggilan API yang dilakukan ke bucket status. Filter CloudTrail acara untuk dilacakPutObject, DeleteObject, dan panggilan relevan lainnya.

CloudTrail log menunjukkan AWS identitas prinsipal yang membuat setiap panggilan API untuk perubahan status. Identitas pengguna dapat dicocokkan dengan akun mesin atau anggota tim yang berinteraksi dengan penyimpanan backend.

Gabungkan CloudTrail log dengan versi status Amazon S3 untuk mengikat perubahan infrastruktur dengan prinsipal yang menerapkannya. Dengan menganalisis beberapa revisi, Anda dapat mengaitkan pembaruan apa pun ke akun mesin atau anggota tim yang bertanggung jawab.

Jika terjadi perubahan yang tidak diinginkan atau mengganggu, versi status menyediakan kemampuan rollback. CloudTrail melacak perubahan ke pengguna sehingga Anda dapat mendiskusikan perbaikan pencegahan.

Kami juga menyarankan agar Anda menerapkan izin IAM untuk membatasi akses bucket status. Secara keseluruhan, CloudTrail Pemantauan dan Pemantauan Versi S3 mendukung audit di seluruh perubahan infrastruktur. Tim mendapatkan peningkatan akuntabilitas, transparansi, dan kemampuan audit ke dalam sejarah negara bagian Terraform.

Pisahkan backend untuk setiap lingkungan

Gunakan backend Terraform yang berbeda untuk setiap lingkungan aplikasi. Backend terpisah mengisolasi status antara pengembangan, pengujian, dan produksi.

Mengurangi ruang lingkup dampak

Mengisolasi status membantu memastikan bahwa perubahan di lingkungan yang lebih rendah tidak memengaruhi infrastruktur produksi. Kecelakaan atau eksperimen dalam lingkungan pengembangan dan pengujian memiliki dampak terbatas.

Batasi akses produksi

Kunci izin untuk backend status produksi ke akses hanya-baca untuk sebagian besar pengguna. Batasi siapa yang dapat memodifikasi infrastruktur produksi ke pipa CI/CD dan peran break glass.

Sederhanakan kontrol akses

Mengelola izin di tingkat backend menyederhanakan kontrol akses antar lingkungan. Menggunakan bucket S3 yang berbeda untuk setiap aplikasi dan lingkungan berarti bahwa izin baca atau tulis yang luas dapat diberikan di seluruh bucket backend.

Hindari ruang kerja bersama

Meskipun Anda dapat menggunakan ruang kerja Terraform untuk memisahkan status antar lingkungan, backend yang berbeda memberikan isolasi yang lebih kuat. Jika Anda memiliki ruang kerja bersama, kecelakaan masih dapat berdampak pada beberapa lingkungan.

Menjaga backend lingkungan sepenuhnya terisolasi meminimalkan dampak dari setiap kegagalan atau pelanggaran tunggal. Backend terpisah juga menyelaraskan kontrol akses ke tingkat sensitivitas lingkungan. Misalnya, Anda dapat memberikan perlindungan tulis untuk lingkungan produksi dan akses yang lebih luas untuk lingkungan pengembangan dan pengujian.

Secara aktif memonitor aktivitas status jarak jauh

Terus memantau aktivitas keadaan jarak jauh sangat penting untuk mendeteksi potensi masalah sejak dini. Cari pembukaan kunci, perubahan, atau upaya akses anomali.

Dapatkan peringatan tentang pembukaan kunci yang mencurigakan

Sebagian besar perubahan status harus dijalankan melalui pipa CI/CD. Hasilkan peringatan jika pembukaan status terjadi secara langsung melalui workstation pengembang, yang dapat menandakan perubahan yang tidak sah atau belum diuji.

Pantau upaya akses

Kegagalan otentikasi pada bucket status mungkin menunjukkan aktivitas pengintaian. Perhatikan jika beberapa akun mencoba mengakses status, atau alamat IP yang tidak biasa muncul, yang menandakan kredensyal yang dikompromikan.