Hapus EC2 entri Amazon di Akun AWS seberang AWS Managed Microsoft AD dengan menggunakan AWS Lambda otomatisasi - AWS Prescriptive Guidance

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

Hapus EC2 entri Amazon di Akun AWS seberang AWS Managed Microsoft AD dengan menggunakan AWS Lambda otomatisasi

Dr. Rahul Sharad Gaikwad dan Tamilselvan P, Amazon Web Services

Ringkasan

Active Directory (AD) adalah alat skrip Microsoft yang mengelola informasi domain dan interaksi pengguna dengan layanan jaringan. Ini banyak digunakan di antara penyedia layanan terkelola (MSPs) untuk mengelola kredensi karyawan dan izin akses. Karena penyerang AD dapat menggunakan akun tidak aktif untuk mencoba dan meretas organisasi, penting untuk menemukan akun yang tidak aktif dan menonaktifkannya pada jadwal pemeliharaan rutin. Dengan AWS Directory Service for Microsoft Active Directory, Anda dapat menjalankan Microsoft Active Directory sebagai layanan terkelola. Pola ini dapat membantu Anda mengonfigurasi AWS Lambda otomatisasi untuk menemukan dan menghapus akun yang tidak aktif dengan cepat.

Jika skenario berikut berlaku untuk organisasi Anda, pola ini dapat membantu Anda:

  • Manajemen AD terpusat — Jika organisasi Anda memiliki beberapa Akun AWS, masing-masing dengan penerapan AD sendiri, mungkin sulit untuk mengelola akun pengguna dan izin akses secara konsisten di semua akun. Dengan solusi pembersihan AD lintas akun, Anda dapat menonaktifkan atau menghapus akun yang tidak aktif dari semua instans AD secara terpusat.

  • Restrukturisasi atau migrasi AD — Jika organisasi Anda berencana untuk merestrukturisasi atau memigrasikan penerapan AD, solusi pembersihan AD lintas akun dapat membantu Anda mempersiapkan lingkungan. Solusinya dapat membantu Anda menghapus akun yang tidak perlu atau tidak aktif, menyederhanakan proses migrasi, dan mengurangi potensi konflik atau masalah.

Bila Anda menggunakan pola ini, Anda bisa mendapatkan manfaat berikut:

  • Tingkatkan kinerja database dan server, dan perbaiki kerentanan keamanan Anda dari akun yang tidak aktif.

  • Jika server iklan Anda di-host di cloud, menghapus akun yang tidak aktif juga dapat mengurangi biaya penyimpanan sekaligus meningkatkan kinerja. Tagihan bulanan Anda mungkin berkurang karena biaya bandwidth dan sumber daya komputasi keduanya dapat turun.

  • Jauhkan penyerang potensial dengan Active Directory yang bersih.

Prasyarat dan batasan

Prasyarat

  • Orang tua yang aktif Akun AWS dan satu atau beberapa akun anak. Dalam pola ini, akun induk adalah tempat Active Directory dibuat. Akun anak meng-host server Windows dan bergabung melalui akun induk Active Directory.

  • Git diinstal dan dikonfigurasi pada workstation lokal.

  • Terraform diinstal dan dikonfigurasi pada workstation lokal.

  • AWS Managed Microsoft AD direktori dikonfigurasi di akun induk dan dibagikan ke semua akun anak. Untuk detail selengkapnya, lihat Tutorial: Berbagi AWS Managed Microsoft AD direktori Anda untuk EC2 domain-join yang mulus di Panduan Administrasi.AWS Directory Service

  • Koneksi peering cloud pribadi virtual (VPC) atau AWS Transit Gateway koneksi yang tersedia antara VPC AWS Directory Service (akun induk) dan VPC dari instans Amazon Elastic Compute Cloud (Amazon EC2) (akun anak). Untuk detail selengkapnya, lihat Mengkonfigurasi koneksi peering VPC antara pemilik direktori dan akun konsumen direktori di Panduan Administrasi AWS Directory Service .

  • Mesin Windows yang dikonfigurasi dengan EC2WindowsUserdata skrip pada semua akun induk dan anak. File skrip tersedia di root repositori kode pola ini.

  • Peran lintas akun AWS Identity and Access Management (IAM) tersedia di setiap akun anak yang dikonfigurasi dengan kebijakan kepercayaan untuk mengizinkan penggunaan AWS Lambda fungsi dari akun induk. Untuk informasi selengkapnya, lihat Mengirim dan menerima acara antara Akun AWS EventBridge di Amazon di Panduan EventBridge Pengguna Amazon.

  • Nilai rahasia berikut tersedia di AWS Systems Manager Parameter Store dari akun induk:

    • domainJoinUser— Nama pengguna layanan direktori

    • domainJoinPassword— Kata sandi layanan direktori

    Untuk informasi selengkapnya tentang rahasia, lihat Membuat AWS Secrets Manager rahasia di Panduan AWS Secrets Manager Pengguna.

Batasan

  • Membuat sumber daya di akun anak tidak otomatis dengan Terraform. Anda harus membuat sumber daya berikut secara manual dengan menggunakan AWS Management Console:

    • EventBridge Aturan Amazon untuk mengirim peristiwa EC2 penghentian Amazon ke akun induk

    • Pembuatan peran EC2 lintas akun Amazon di akun anak dengan kebijakan kepercayaan

    • Pengintip VPC atau koneksi Transit Gateway

  • Beberapa Layanan AWS tidak tersedia di semua Wilayah AWS. Untuk ketersediaan Wilayah, lihat Layanan AWS berdasarkan Wilayah. Untuk titik akhir tertentu, lihat Titik akhir dan kuota layanan, dan pilih tautan untuk layanan.

Versi produk

Arsitektur

Diagram berikut menampilkan arsitektur tingkat tinggi dari solusi.

Proses untuk menggunakan otomatisasi Lambda untuk menghapus EC2 entri dari seluruh akun AWS.

Diagram arsitektur menggambarkan proses berikut:

  1. Di akun anak, EventBridge aturan mengumpulkan semua peristiwa EC2 penghentian Amazon. Aturan mengirimkan peristiwa-peristiwa EventBridge yang ada di akun induk.

  2. Dari akun induk, EventBridge kumpulkan semua peristiwa dan berisi aturan untuk memicu fungsi ADcleanup-Lambda Lambda.

  3. Akun induk menerima peristiwa penghentian apa pun dari akun induk atau anak dan memicu fungsi Lambda.

  4. Fungsi Lambda membuat panggilan ke grup Amazon Auto EC2 Scaling menggunakan modul boto Python dan mendapatkan ID instance acak. Instance ID digunakan untuk menjalankan perintah Systems Manager.

  5. Fungsi Lambda membuat panggilan lain ke Amazon EC2 menggunakan modul boto. Fungsi Lambda mendapatkan alamat IP pribadi dari server Windows yang sedang berjalan dan menyimpan alamat dalam variabel sementara. Pada langkah 5.1 dan 5.2, EC2 instance Windows yang berjalan dikumpulkan dari akun anak.

  6. Fungsi Lambda membuat panggilan lain ke Systems Manager untuk mendapatkan informasi komputer yang terhubung. AWS Directory Service

  7. AWS Systems Manager Dokumen membantu menjalankan PowerShell perintah di server Amazon EC2 Windows untuk mendapatkan alamat IP pribadi komputer yang terhubung ke AD. (Dokumen Systems Manager menggunakan ID instance yang diperoleh pada langkah 4.)

  8. Nama pengguna dan kata sandi domain AD disimpan di AWS Systems Manager Parameter Store. AWS Lambda dan Systems Manager melakukan panggilan ke Parameter Store dan mendapatkan nilai nama pengguna dan kata sandi yang akan digunakan untuk terhubung ke AD.

  9. Menggunakan dokumen Systems Manager, PowerShell skrip dijalankan di server Amazon EC2 Windows menggunakan id instance yang diperoleh sebelumnya di langkah 4.

  10. Amazon EC2 terhubung AWS Directory Service dengan menggunakan PowerShell perintah dan menghapus komputer yang tidak digunakan atau tidak aktif.

Alat

AWS layanan

  • AWS Directory Servicemenyediakan beberapa cara untuk menggunakan Microsoft Active Directory (AD) dengan yang lain Layanan AWS seperti Amazon Elastic Compute Cloud (Amazon EC2), Amazon Relational Database Service (Amazon RDS) untuk SQL Server, dan FSx Amazon untuk Windows File Server.

  • AWS Directory Service for Microsoft Active Directorymemungkinkan beban kerja dan sumber daya yang sadar direktori Anda AWS untuk menggunakan Microsoft Active Directory di file. AWS Cloud

  • Amazon Elastic Compute Cloud (Amazon EC2) menyediakan kapasitas komputasi yang dapat diskalakan di. AWS Cloud Anda dapat meluncurkan server virtual sebanyak yang Anda butuhkan dan dengan cepat meningkatkannya ke atas atau ke bawah.

  • Amazon EventBridge adalah layanan bus acara tanpa server yang membantu Anda menghubungkan aplikasi Anda dengan data waktu nyata dari berbagai sumber. Misalnya, AWS Lambda fungsi, titik akhir pemanggilan HTTP menggunakan tujuan API, atau bus acara di tempat lain. Akun AWS

  • AWS Identity and Access Management (IAM) membantu Anda mengelola akses ke AWS sumber daya dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya. Dengan IAM, Anda dapat menentukan siapa atau apa yang dapat mengakses layanan dan sumber daya AWS, mengelola izin berbutir halus secara terpusat, dan menganalisis akses untuk menyempurnakan izin. AWS

  • AWS Lambdaadalah layanan komputasi yang membantu Anda menjalankan kode tanpa perlu menyediakan atau mengelola server. Ini menjalankan kode Anda hanya bila diperlukan dan skala secara otomatis, jadi Anda hanya membayar untuk waktu komputasi yang Anda gunakan.

  • AWS Systems Managermembantu Anda mengelola aplikasi dan infrastruktur yang berjalan di AWS Cloud. Ini menyederhanakan aplikasi dan manajemen sumber daya, mempersingkat waktu untuk mendeteksi dan menyelesaikan masalah operasional, dan membantu Anda mengelola AWS sumber daya Anda dengan aman dalam skala besar.

  • AWS Systems Manager dokumen menentukan tindakan yang dilakukan Systems Manager pada instans terkelola Anda. Systems Manager mencakup lebih dari 100 dokumen pra-konfigurasi yang dapat Anda gunakan dengan menentukan parameter di runtime.

  • AWS Systems Manager Parameter Store adalah kemampuan AWS Systems Manager dan menyediakan penyimpanan hierarkis yang aman untuk manajemen data konfigurasi dan manajemen rahasia.

Alat-alat lainnya

  • HashiCorp Terraform adalah alat infrastruktur sebagai kode (IAc) yang membantu Anda menggunakan kode untuk menyediakan dan mengelola infrastruktur dan sumber daya cloud.

  • PowerShelladalah program manajemen otomatisasi dan konfigurasi Microsoft yang berjalan di Windows, Linux, dan macOS.

  • Python adalah bahasa pemrograman komputer tujuan umum.

Repositori kode

Kode untuk pola ini tersedia di repositori GitHub aws-lambda-ad-cleanup-terraform-samples.

Praktik terbaik

  • Bergabung dengan domain secara otomatis.Saat Anda meluncurkan instance Windows yang akan menjadi bagian dari AWS Directory Service domain, bergabunglah dengan domain selama proses pembuatan instance alih-alih menambahkan instance secara manual nanti. Untuk bergabung dengan domain secara otomatis, pilih direktori yang benar dari daftar dropdown direktori Gabung Domain saat meluncurkan instance baru. Untuk detail selengkapnya, lihat Menggabungkan instans Amazon EC2 Windows dengan mulus ke Direktori AWS Managed Microsoft AD Aktif Anda di Panduan AWS Directory Service Administrasi.

  • Hapus akun yang tidak digunakan.Adalah umum untuk menemukan akun di AD yang belum pernah digunakan. Seperti akun yang dinonaktifkan atau tidak aktif yang tetap berada di sistem, akun yang tidak digunakan yang diabaikan dapat memperlambat sistem iklan Anda atau membuat organisasi Anda rentan terhadap pelanggaran data.

  • Otomatiskan pembersihan Direktori Aktif.Untuk membantu mengurangi risiko keamanan dan mencegah akun usang memengaruhi kinerja AD, lakukan pembersihan AD harus dilakukan secara berkala. Anda dapat menyelesaikan sebagian besar tugas manajemen dan pembersihan AD dengan menulis skrip. Contoh tugas termasuk menghapus akun yang dinonaktifkan dan tidak aktif, menghapus grup kosong dan tidak aktif, dan menemukan akun pengguna dan kata sandi yang kedaluwarsa.

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Buat peran lintas akun di akun anak.

Untuk membuat peran lintas akun di akun anak, lakukan hal berikut:

  1. Untuk setiap akun anak, buat peran bernama ec2crossaccountrole menggunakan kebijakan terkelola bernamaAmazonEC2ReadOnlyAccess. (Untuk informasi selengkapnya, lihat Membuat peran menggunakan kebijakan kepercayaan khusus dalam dokumentasi IAM.)

  2. Di bagian Kebijakan kepercayaan khusus, tambahkan kode berikut:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::${Parentaccountid}:role/ADcleanuprole" }, "Action": "sts:AssumeRole" } ] }
DevOps insinyur

Buat aturan acara di akun anak.

Untuk membuat EventBridge aturan untuk setiap akun anak, lakukan hal berikut:

  1. Masuk ke anak Akun AWS, lalu buka EventBridge konsol Amazon di https://console.aws.amazon.com/events/.

  2. Di panel navigasi, pilih Aturan.

  3. Pilih Buat aturan.

  4. Masukkan Nama dan, secara opsional, deskripsi untuk aturan tersebut.

  5. Untuk bus Acara, pilih bus acara default AWS.

  6. Untuk jenis Aturan, pilih Aturan dengan pola acara.

  7. Pilih Selanjutnya.

  8. Untuk pola Event, paste kode berikut:

    { "source": ["aws.ec2"], "detail-type": ["EC2 Instance State-change Notification"], "detail": { "state": ["terminated"] } }
  9. Pilih Berikutnya.

  10. Untuk jenis Target, pilih bus Acara di akun atau Wilayah yang berbeda.Untuk bus acara sebagai target, masukkan bus acara Amazon Resource Name (ARN) untuk akun induk.

  11. Untuk peran Eksekusi, pilih Buat peran baru untuk sumber daya khusus ini.

  12. Pilih Berikutnya untuk meninjau detail aturan baru, lalu pilih Buat.

Untuk detail selengkapnya, lihat Membuat aturan yang bereaksi terhadap peristiwa EventBridge di Amazon di Panduan EventBridge Pengguna Amazon.

DevOps insinyur

Buat EC2 instance dan bergabunglah dengan AD.

Untuk membuat EC2 instance untuk Windows, lakukan hal berikut:

  1. Gunakan EC2WindowsUserdata skrip yang tersedia di repositori kode pola ini.

  2. Dalam skrip data pengguna, revisi kode berikut untuk menggunakan Directory service addresses nilai Anda dari akun induk:

    set-DnsClientServerAddress -InterfaceIndex 6 -ServerAddresses $(Directory service addresses)

DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Buat folder proyek dan tambahkan file.

Untuk mengkloning repositori dan membuat folder proyek, lakukan hal berikut:

  1. Buka GitHub repositori pola ini.

  2. Pilih tombol Kode untuk melihat opsi untuk mengkloning di dropdown Clone.

  3. Pada tab HTTPS, salin URL yang disediakan di Clone menggunakan URL web.

  4. Buat folder di mesin Anda, dan beri nama dengan nama proyek Anda.

  5. Buka terminal di mesin lokal Anda, dan arahkan ke folder ini.

  6. Untuk mengkloning repositori git, gunakan perintah berikut.

    git clone <repository-URL>.git

  7. Setelah repositori telah dikloning, gunakan perintah berikut untuk pergi ke direktori kloning.

    cd <directory name>/terraform-aws-lambda-ad-cleanup/multiple-account-cleanup

  8. Di repositori kloning, buka proyek ini di lingkungan pengembangan terintegrasi (IDE) pilihan Anda.

DevOps insinyur

Membangun adcleanup.zip file.

Untuk mengompres lambda_function.py file, jalankan perintah berikut:

zip -r adcleanup.zip lambda_function.py

DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Berikan nilai untuk variabel Terraform.

Untuk akun anak, berikan nilai untuk arn variabel berikut sebagai tipe string dalam terraform.tfvars file:

  • lambda_env_cross_role_arn

  • child_account_cross_role_arn

DevOps insinyur

Inisialisasi konfigurasi Terraform.

Untuk menginisialisasi direktori kerja Anda yang berisi file Terraform, jalankan perintah berikut:

terraform init

DevOps insinyur

Pratinjau perubahan.

Anda dapat melihat pratinjau perubahan yang akan dilakukan Terraform pada infrastruktur sebelum infrastruktur Anda diterapkan. Untuk memvalidasi bahwa Terraform akan membuat perubahan sesuai kebutuhan, jalankan perintah berikut:

terraform plan —-var-file=examples/terraform.tfvars

DevOps insinyur

Jalankan tindakan yang diusulkan.

Untuk memverifikasi bahwa hasil dari terraform plan perintah seperti yang diharapkan, lakukan hal berikut:

  1. Jalankan perintah berikut: terraform apply

  2. Masuk ke AWS Management Console, dan verifikasi bahwa sumber daya ada.

DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Jalankan dan uji fungsi Lambda.

Untuk memverifikasi bahwa penerapan berhasil terjadi, lakukan hal berikut:

  1. Masuk ke AWS Management Console, dan buka konsol Lambda. Buka halaman Fungsi, dan pilih nama fungsi yang dimulai dengan ADcleanup-Lambda-*.

  2. Pada halaman ikhtisar fungsi, pilih Uji pada tab Kode di bagian Sumber kode.

  3. Untuk menyimpan acara pengujian, berikan nama untuk acara tersebut dan pilih Simpan. Untuk menguji acara, pilih Uji lagi.

Hasil eksekusi menunjukkan output dari fungsi.

DevOps insinyur

Lihat hasil eksekusi EventBridge aturan dari akun induk.

Untuk melihat hasil EventBridge aturan yang didasarkan pada peristiwa EC2 penghentian Amazon dari akun induk, lakukan hal berikut:

  1. Mengakhiri EC2 instance dari akun induk.

  2. Buka konsol Lambda dari akun induk. Buka halaman Fungsi, dan pilih nama fungsi yang dimulai dengan ADcleanup-Lambda-*.

  3. Pilih tab Monitor, dan pilih Lihat CloudWatch log.

Di CloudWatch konsol, halaman Grup log menunjukkan hasil fungsi Lambda.

DevOps insinyur

Lihat hasil eksekusi EventBridge aturan dari akun anak.

Untuk melihat hasil EventBridge aturan yang didasarkan pada peristiwa EC2 penghentian Amazon dari akun anak, lakukan hal berikut:

  1. Mengakhiri EC2 instance dari akun anak.

  2. Buka konsol Lambda dari akun induk. Buka halaman Fungsi, dan pilih nama fungsi yang dimulai dengan ADcleanup-Lambda-*.

  3. Pilih tab Monitor, dan pilih Lihat CloudWatch log.

Di CloudWatch konsol, halaman Grup log menunjukkan hasil fungsi Lambda.

DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Bersihkan infrastruktur.

Untuk membersihkan infrastruktur yang Anda buat, gunakan perintah berikut:

terraform destroy

Untuk mengkonfirmasi destroy perintah, ketikyes.

DevOps insinyur

Verifikasi setelah pembersihan.

Verifikasi bahwa sumber daya berhasil dihapus.

DevOps insinyur

Pemecahan Masalah

IsuSolusi

Masalah koneksi antara AWS Directory Service (akun induk) dan EC2 instans Amazon (akun anak) - Anda tidak dapat bergabung dengan komputer akun anak ke AD meskipun peering VPC tersedia.

Tambahkan perutean di. VPCs Untuk petunjuk, lihat Mengkonfigurasi koneksi peering VPC antara pemilik direktori dan akun konsumen direktori dalam dokumentasi. AWS Directory Service

Sumber daya terkait

AWS dokumentasi

Sumber daya lainnya