Mendeteksi perubahan konfigurasi yang tidak terkelola pada tumpukan dan sumber daya dengan deteksi drift - AWS CloudFormation

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

Mendeteksi perubahan konfigurasi yang tidak terkelola pada tumpukan dan sumber daya dengan deteksi drift

Bahkan saat Anda mengelola sumber daya Anda CloudFormation, pengguna dapat mengubah sumber daya tersebut di luar CloudFormation. Pengguna dapat mengedit sumber daya secara langsung dengan menggunakan layanan dasar yang membuat sumber daya. Misalnya, Anda dapat menggunakan EC2 konsol Amazon untuk memperbarui instance server yang dibuat sebagai bagian dari CloudFormation tumpukan. Beberapa perubahan mungkin tidak disengaja, dan beberapa mungkin dibuat dengan sengaja untuk menanggapi peristiwa operasional yang sensitif terhadap waktu. Terlepas dari itu, perubahan yang dilakukan di luar CloudFormation dapat mempersulit pembaruan tumpukan atau operasi penghapusan. Anda dapat menggunakan deteksi drift untuk mengidentifikasi sumber daya tumpukan yang telah dilakukan perubahan konfigurasi di luar CloudFormation manajemen. Anda kemudian dapat mengambil tindakan korektif sehingga sumber daya tumpukan Anda kembali sinkron dengan definisinya di templat tumpukan, seperti memperbarui sumber daya menyimpang secara langsung sehingga mereka setuju dengan definisi templatnya. Menyelesaikan penyimpangan membantu memastikan konsistensi konfigurasi dan operasi tumpukan yang sukses.

Apa yang dimaksud dengan penyimpangan?

Deteksi penyimpangan memungkinkan Anda mendeteksi apakah konfigurasi sebenarnya dari suatu tumpukan berbeda, atau telah menyimpang, dari konfigurasi yang diharapkan. Gunakan CloudFormation untuk mendeteksi penyimpangan pada seluruh tumpukan, atau pada sumber daya individu dalam tumpukan. Sumber daya dianggap telah menyimpang jika salah satu nilai properti sebenarnya berbeda dari nilai properti yang diharapkan. Ini termasuk jika properti atau sumber daya telah dihapus. Tumpukan dianggap telah menyimpang jika satu atau lebih dari sumber dayanya menyimpang.

Untuk menentukan apakah sumber daya telah melayang, CloudFormation tentukan nilai properti sumber daya yang diharapkan, seperti yang didefinisikan dalam template tumpukan dan nilai apa pun yang ditentukan sebagai parameter templat. CloudFormation kemudian membandingkan nilai-nilai yang diharapkan dengan nilai aktual dari properti sumber daya seperti yang saat ini ada di tumpukan. Sebuah sumber daya dianggap telah menyimpang jika satu atau lebih dari propertinya telah dihapus, atau nilainya diubah.

CloudFormation menghasilkan informasi rinci tentang setiap sumber daya di tumpukan yang telah melayang.

CloudFormation mendeteksi penyimpangan pada AWS sumber daya yang mendukung deteksi drift. Sumber daya yang tidak mendukung deteksi drift diberi status drift _. NOT CHECKED Untuk daftar AWS sumber daya yang mendukung deteksi drift, lihatDukungan jenis sumber daya.

Selain itu, CloudFormation mendukung deteksi drift pada tipe sumber daya pribadi yang dapat disediakan; yaitu, yang tipe penyediaannya adalah salah satu atau. FULLY_MUTABLE IMMUTABLE Untuk melakukan deteksi penyimpangan pada sumber daya dari jenis sumber daya pribadi, versi default dari jenis sumber daya yang telah Anda daftarkan di akun Anda harus tersedia. Untuk informasi selengkapnya tentang jenis penyediaan sumber daya, lihat ProvisioningType parameter DescribeTypetindakan dalam AWS CloudFormation APIReferensi dan DescribeTypeperintah dalam Referensi AWS CLI Perintah. Untuk informasi lebih lanjut tentang sumber daya pribadi, lihatMengelola ekstensi dengan CloudFormation registri.

Anda dapat melakukan deteksi penyimpangan pada tumpukan dengan status berikut: CREATE_COMPLETE, UPDATE_COMPLETE, UPDATE_ROLLBACK_COMPLETE, dan UPDATE_ROLLBACK_FAILED.

Saat mendeteksi penyimpangan pada tumpukan, CloudFormation tidak mendeteksi penyimpangan pada tumpukan bersarang milik tumpukan itu. Untuk informasi selengkapnya, lihat Sematkan tumpukan dalam tumpukan lain menggunakan tumpukan bersarang. Sebaliknya, Anda dapat memulai operasi deteksi penyimpangan langsung pada tumpukan nested.

catatan

CloudFormation hanya menentukan penyimpangan untuk nilai properti yang ditetapkan secara eksplisit, baik melalui template tumpukan atau dengan menentukan parameter template. Ini tidak termasuk nilai default untuk properti sumber daya. Untuk CloudFormation melacak properti sumber daya untuk tujuan menentukan penyimpangan, tetapkan nilai properti secara eksplisit, bahkan jika Anda menyetelnya ke nilai default.

Kode status deteksi penyimpangan

Tabel di bagian ini menjelaskan berbagai jenis status yang digunakan dengan deteksi penyimpangan:

  • Status operasi deteksi penyimpangan menjelaskan status operasi penyimpangan saat ini.

  • Status melayang

    Untuk set tumpukan, ini menjelaskan status penyimpangan set tumpukan secara keseluruhan, berdasarkan status penyimpangan dari instans tumpukan yang ada di set tersebut.

    Untuk instans tumpukan, ini menjelaskan status penyimpangan dari instans tumpukan, berdasarkan status penyimpangan tumpukan terkait.

    Untuk tumpukan, ini menjelaskan status penyimpangan tumpukan secara keseluruhan, berdasarkan status penyimpangan dari sumber dayanya.

  • Status penyimpangan sumber daya menjelaskan status penyimpangan dari sumber daya individual.

Tabel berikut mencantumkan kode status yang ditetapkan untuk CloudFormation operasi deteksi drift tumpukan.

Status operasi deteksi penyimpangan Deskripsi

DETECTION_COMPLETE

Operasi deteksi penyimpangan tumpukan telah berhasil diselesaikan untuk semua sumber daya di tumpukan yang mendukung deteksi penyimpangan.

DETECTION_FAILED

Operasi deteksi penyimpangan tumpukan gagal untuk setidaknya satu sumber daya dalam tumpukan. Hasil akan tersedia untuk sumber daya yang CloudFormation berhasil menyelesaikan deteksi drift.

DETECTION_IN_PROGRESS

Operasi deteksi penyimpangan tumpukan saat ini sedang berlangsung.

Tabel berikut mencantumkan kode status drift yang ditetapkan ke CloudFormation tumpukan.

Status penyimpangan Deskripsi

DRIFTED

Untuk tumpukan: Tumpukan berbeda, atau telah menyimpang, dari konfigurasi templat yang diharapkan. Tumpukan dianggap telah menyimpang jika satu atau lebih dari sumber dayanya menyimpang.

Untuk instans tumpukan: Sebuah instans tumpukan dianggap menyimpang jika tumpukan yang terkait dengannya telah melayang.

Untuk set tumpukan: Satu set tumpukan dianggap menyimpang jika satu atau lebih instans tumpukan telah menyimpang.

NOT_CHECKED

CloudFormation belum memeriksa apakah stack, stack set, atau stack instance berbeda dari konfigurasi template yang diharapkan.

IN_SYNC

Konfigurasi saat ini dari setiap sumber daya yang didukung cocok dengan konfigurasi templat yang diharapkan. Sebuah stack, stack set, atau stack instance tanpa sumber daya yang mendukung deteksi drift juga akan memiliki status SYNC IN_.

Tabel berikut mencantumkan kode status drift yang ditetapkan ke CloudFormation sumber daya tumpukan.

Status drift sumber daya Deskripsi

DELETED

Sumber daya berbeda dari konfigurasi templat yang diharapkan karena sumber daya telah dihapus.

MODIFIED

Sumber daya berbeda dari konfigurasi templat yang diharapkan.

NOT_CHECKED

CloudFormation belum memeriksa apakah sumber daya berbeda dari konfigurasi template yang diharapkan.

IN_SYNC

Konfigurasi sumber daya saat ini cocok dengan konfigurasi templat yang diharapkan.

Tabel berikut mencantumkan kode CloudFormation status tipe perbedaan yang ditetapkan ke properti sumber daya yang berbeda dari konfigurasi templat yang diharapkan.

Jenis perbedaan properti Deskripsi

ADD

Nilai telah ditambahkan ke properti sumber daya yang merupakan tipe data array atau daftar.

REMOVE

Properti telah dihapus dari konfigurasi sumber daya saat ini.

NOT_EQUAL

Nilai properti saat ini berbeda dari nilai yang diharapkan seperti yang didefinisikan dalam templat tumpukan.

Pertimbangan saat mendeteksi penyimpangan

Agar berhasil melakukan deteksi penyimpangan pada tumpukan, pengguna harus memiliki izin berikut:

  • Baca izin untuk setiap sumber daya yang mendukung deteksi penyimpangan termasuk dalam tumpukan. Misalnya, jika tumpukan mencakup sumber daya AWS::EC2::Instance, Anda harus memiliki izin ec2:DescribeInstances untuk melakukan deteksi penyimpangan pada tumpukan.

  • cloudformation:DetectStackDrift

  • cloudformation:DetectStackResourceDrift

  • cloudformation:BatchDescribeTypeConfigurations

Untuk informasi selengkapnya tentang menyetel izin di CloudFormation, lihatKontrol CloudFormation akses dengan AWS Identity and Access Management.

Dalam kasus tepi tertentu, CloudFormation mungkin tidak selalu dapat mengembalikan hasil drift yang akurat. Anda harus menyadari kasus edge ini untuk benar menafsirkan hasil deteksi penyimpangan Anda.

  • Dalam kasus tertentu, objek yang terdapat dalam array properti akan dilaporkan sebagai penyimpangan, padahal sebenarnya objek tersebut adalah nilai default yang diberikan ke properti dari layanan dasar yang bertanggung jawab atas sumber daya.

  • Sumber daya tertentu memiliki hubungan lampiran dengan sumber daya terkait, sehingga sumber daya sebenarnya dapat melampirkan atau menghapus nilai properti untuk sumber daya lain, yang ditentukan dalam templat yang sama atau lainnya. Misalnya, sumber daya AWS::EC2::SecurityGroupIngress dan AWS::EC2::SecurityGroupEgress dapat digunakan untuk melampirkan dan menghapus nilai dari sumber daya AWS::EC2::SecurityGroup. Dalam kasus ini, CloudFormation analisis template tumpukan untuk lampiran sebelum melakukan perbandingan drift. Namun, tidak CloudFormation dapat melakukan analisis ini di seluruh tumpukan, sehingga mungkin tidak mengembalikan hasil penyimpangan yang akurat di mana sumber daya yang dilampirkan berada di tumpukan yang berbeda.

    Sumber daya yang mendukung deteksi penyimpangan dan memungkinkan atau memerlukan lampiran dari sumber daya lain meliputi:

    Jenis sumber daya Jenis sumber daya lampiran

    AWS::SNS::Topic

    AWS::SNS::Subscription

    AWS::IAM::User

    AWS::IAM::UserToGroupAddition

    AWS::IAM::Group

    AWS::IAM::Role

    AWS::IAM::User

    AWS::IAM::Policy

    AWS::IAM::ManagedPolicy

    AWS::ElasticLoadBalancingV2::Listener

    AWS::ElasticLoadBalancingV2::ListenerCertificate

    AWS::EC2::SecurityGroup

    AWS::EC2::SecurityGroupEgress

    AWS::EC2::SecurityGroupIngress

  • CloudFormation tidak melakukan deteksi drift pada KMSKeyId properti sumber daya apa pun. Karena AWS KMS kunci dapat direferensikan oleh beberapa alias, tidak CloudFormation dapat menjamin hasil drift yang akurat secara konsisten untuk properti ini.

  • Ada properti sumber daya tertentu yang dapat Anda tentukan dalam template tumpukan Anda yang, pada dasarnya, tidak CloudFormation akan dapat dibandingkan dengan properti di sumber daya tumpukan yang dihasilkan. Oleh karena itu, properti-properti ini tidak dapat dimasukkan dalam hasil deteksi penyimpangan. Properti semacam itu terbagi dalam dua kategori besar:

    • Nilai properti yang CloudFormation tidak dapat memetakan kembali ke nilai properti sumber daya awal mereka di template tumpukan.

      Misalnya, CloudFormation tidak dapat memetakan kode sumber fungsi Lambda kembali ke Codejenis properti dari AWS::Lambda::Functionsumber daya, dan karena itu tidak CloudFormation dapat memasukkannya ke dalam hasil deteksi drift.

    • Nilai properti yang tidak dikembalikan oleh layanan yang bertanggung jawab atas sumber daya.

      Ada nilai properti tertentu yang, sesuai rancangannya, tidak pernah dikembalikan oleh layanan tempat sumber daya itu berada. Ini cenderung berisi informasi rahasia, seperti kata sandi atau data sensitif lainnya yang tidak boleh diekspos. Misalnya, IAM layanan tidak akan pernah mengembalikan nilai Password properti AWS::IAM::User LoginProfiletipe properti, dan karena itu tidak CloudFormation dapat memasukkannya ke dalam hasil deteksi drift.

    • Objek dalam array mungkin sebenarnya default layanan dan tidak drift ditambahkan secara manual.

  • Jika Anda menemukan positif palsu, kirimkan komentar Anda menggunakan tautan umpan balik di CloudFormation konsol, atau hubungi kami melalui AWS re:Post.

  • Beberapa properti dapat memiliki nilai input yang sama tetapi tidak identik. Untuk menghindari kesalahan positif, Anda harus memastikan bahwa konfigurasi yang Anda harapkan cocok dengan konfigurasi yang sebenarnya.

    • Misalnya, konfigurasi properti sumber daya yang diharapkan dapat 1024 MB dan konfigurasi aktual dari properti sumber daya yang sama dapat 1GB. 1024 MB dan 1GB sama tetapi tidak identik.

      Ketika deteksi drift berjalan pada properti sumber daya ini, itu akan menandakan hasil drifted.

      Untuk menghindari positif palsu ini, ubah konfigurasi yang diharapkan dari properti resource menjadi 1024MB dan kemudian jalankan deteksi drift.