Rumah > pembangunan bahagian belakang > Tutorial Python > Menggunakan Sistem Pengesan Pencerobohan berasaskan Flask ke AWS ECS dengan CI/CD

Menggunakan Sistem Pengesan Pencerobohan berasaskan Flask ke AWS ECS dengan CI/CD

Barbara Streisand
Lepaskan: 2024-11-25 12:05:12
asal
697 orang telah melayarinya

pengenalan

Dalam siaran ini, saya akan memandu anda melalui proses menggunakan sistem pengesanan pencerobohan pada AWS

NOTA: Projek ini menganggap anda sudah mempunyai akaun AWS yang aktif dan mengkonfigurasikan bukti kelayakan akaun anda (kunci akses) kepada editor kod anda dan projek ini akan menanggung beberapa kos dalam konsol anda

Gambaran Keseluruhan Projek

Objektif

Objektif projek ini adalah seperti berikut:

  • Simpan aplikasi dengan Docker
  • Tolak imej bekas ke ECR
  • Buat VPC, dua subnet peribadi dan dua subnet awam
  • Buat titik akhir VPC untuk subnet peribadi untuk mengakses ECR
  • Kerahkan Pengimbang Beban Aplikasi dan kumpulan sasaran dalam subnet awam untuk Perkhidmatan ECS
  • Buat definisi Tugas untuk perkhidmatan ECS
  • Buat kluster ECS dan perkhidmatan ECS dengan jenis pelancaran fargate dalam subnet peribadi.
  • Buat zon dihoskan dalam laluan 53 dan arahkannya ke nama DNS ALB

Seni Bina Projek

Deploying a Flask-based Intrusion Detection System to AWS ECS with CI/CD

Kontena aplikasi dengan docker

Bahagian ini akan menunjukkan langkah-langkah yang terlibat dalam mencipta projek ini dari awal

Langkah 1: Dockerize The Flask Application

Buat fail Docker dalam direktori projek untuk membungkus apl kelalang.

FROM python:3.12

#set the working dir
WORKDIR /usr/src/app

#copy the requirements and install dependencies
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# Copy all the files to the container
COPY . .

#Expose the port
EXPOSE 5000

#run the app
CMD ["gunicorn","-b","0.0.0.0:5000", "app:app"]
Salin selepas log masuk

Langkah 2: Bina dan uji Imej Docker

Adalah penting untuk membina dan menguji imej docker secara setempat untuk memastikan ia berfungsi seperti yang dimaksudkan

docker build -t image-name .
docker run -p 5000:5000 image-name
Salin selepas log masuk

Tolak Imej Docker ke ECR

Langkah 1. Buat Repositori Bekas Elastik (ECR)

  • Pergi ke konsol AWS ECR dan buat repositori dan catatkan URI (cth., 123456789012.dkr.ecr.region.amazonaws.com/repo-name)
  • NOTA: Masukkan repo ECR anda dan pilih arahan tolak lihat untuk melihat arahan untuk menolak imej ke repo ECR anda. Perintah itu yang akan digunakan di sini.

Langkah 2. Sahkan Docker kepada ECR

Jalankan arahan berikut untuk mengesahkan Docker dengan ECR (ganti wilayah-anda dan id-akaun anda):

aws ecr get-login-password --region your-region | docker login --username AWS --password-stdin your-account-id.dkr.ecr.your-region.amazonaws.com

Salin selepas log masuk

Langkah 3. Tag dan Tolak Imej

Tanda imej Docker tempatan anda untuk memadankan repositori ECR, kemudian tolaknya:

NOTA: Pastikan ia adalah rantau dan id akaun akaun anda masing-masing

docker tag image-name:latest your-account-id.dkr.ecr.your-region.amazonaws.com/image-name:latest
docker push your-account-id.dkr.ecr.your-region.amazonaws.com/image-name:latest
Salin selepas log masuk

Repo ECR anda sepatutnya kelihatan seperti ini apabila imej berjaya ditolak

Deploying a Flask-based Intrusion Detection System to AWS ECS with CI/CD

Buat VPC dan Subnetnya

Perhatikan Wilayah, kerana di sinilah semua sumber akan digunakan

Langkah 1: Buat VPC baharu

  • Pergi ke konsol VPC dan buat VPC baharu
  • Nyatakan blok CIDR (cth. 10.0.0.0/16)

Deploying a Flask-based Intrusion Detection System to AWS ECS with CI/CD

  • NOTA: Pastikan tetapan Dayakan nama hos DNS ditanda semasa membuat VPC

Deploying a Flask-based Intrusion Detection System to AWS ECS with CI/CD

Langkah 2: Buat Gerbang Internet (IGW) untuk VPC

Dalam konsol VPC, pilih tab Intergate Gateway dan buat gateway internet. Setelah IGW dibuat, lampirkan pada VPC anda

Deploying a Flask-based Intrusion Detection System to AWS ECS with CI/CD

Langkah 3: Cipta Subnet

  • Buat dua subnet dalam satu zon ketersediaan (cth. us-east-1)
  • Buat satu lagi set dua subnet dalam zon ketersediaan (AZ) yang berbeza (cth. us-east-2)
  • NOTA: Dalam setiap AZ, subnet akan berfungsi sebagai subnet peribadi dan awam.

Deploying a Flask-based Intrusion Detection System to AWS ECS with CI/CD

NOTA: gugusan ECS akan digunakan pada subnet peribadi dan Pengimbang Beban Aplikasi akan berada dalam subnet awam dan akan mengakses gugusan ECS dalam subnet peribadi

Langkah 4: Kemas kini jadual Laluan

  • Buat jadual laluan untuk subnet awam dan peribadi dan kaitkan jadual laluan kepada subnet awam dan peribadi masing-masing. (Pastikan VPC yang digunakan dipilih untuk kedua-duanya.)
  • Untuk jadual laluan subnet awam, tambahkan pada laluan untuk mengarahkan semua trafik keluar 0.0.0.0/0 melalui Gerbang Internet.
  • Subnet peribadi tidak akan menghalakan trafik keluar buat masa ini.

Deploying a Flask-based Intrusion Detection System to AWS ECS with CI/CD

Buat titik akhir VPC untuk ECR

Ini akan membolehkan gugusan ECS mempunyai akses kepada Pendaftaran Bekas Elastik (ECR).
NOTA: Empat Titik Akhir akan dibuat untuk S3, ECR, DOCKER dan CloudWatch.

  • pilih Titik Akhir dan klik pada buat titik akhir.

Deploying a Flask-based Intrusion Detection System to AWS ECS with CI/CD

  • Namakan titik akhir dan cari titik akhir api ECR di bawah perkhidmatan com.amazonaws.us-east-1.ecr.api
  • Pilih VPC yang telah kami gunakan, ini akan memaparkan pilihan subnet di mana zon ketersediaan subnet peribadi kami akan dipilih dan akhirnya pilih subnet peribadi kami dan kumpulan keselamatan lalai.

Deploying a Flask-based Intrusion Detection System to AWS ECS with CI/CD

  • Pilih lalai dan biarkan dasar seperti sedia ada dan kemudian buat VPC.

*Sekarang buat Endpoints yang tinggal dengan menukar perkhidmatan untuk docker com.amazonaws.us-east-1.ecr.dkr, untuk CloudWatch logs com.amazonaws.us-east-1.logs dan untuk S3 com.amazonaws. us-east-1.s3 masing-masing dan ikuti semua perkara lain dengan tepat mengharapkan perubahan tersebut.

  • NOTA: Untuk titik akhir S3, pilih get laluan. Ini dipanggil Titik Akhir Gerbang S3 dan akan menggesa anda menyambungkannya ke jadual laluan subnet peribadi anda, yang akan mencipta laluan dalam jadual laluan untuknya.

Buat Pengimbang Beban Aplikasi dan Kumpulan Sasaran

Ini adalah langkah yang sangat penting kerana ia adalah ALB yang
akan mengarahkan trafik ke perkhidmatan ECS persendirian.

Pertama sekali, kita perlu membuat kumpulan keselamatan untuk ALB.

  • Pergi ke kumpulan keselamatan di sebelah kiri dan pilih buat kumpulan keselamatan. berikan nama dan penerangan kepada keselamatan.
  • Tambahkan peraturan masuk pada julat port 80 dan sumber 0.0.0.0/0 dan tambahkan peraturan kedua pada julat port 443 dan sumber 0.0.0.0/24 untuk trafik HTTP dan HTTPS masing-masing

Langkah 1: Buat Kumpulan Sasaran

  • Pergi ke konsol EC2 dan di sebelah kiri, di bawah Load Balancing pilih kumpulan sasaran.
  • Di bawah konfigurasi asas pilih alamat IP dan namakan kumpulan Sasaran
  • Tinggalkan Protokol dan port sebagai HTTP:80
  • Pilih VPC yang kami gunakan pengimbang beban dan tatal dan klik seterusnya.
  • Di sini alih keluar alamat IP yang ada, semua IP akan ditambah secara automatik. Seterusnya, nyatakan port yang terdedah, Port:5000 dan Cipta kumpulan Sasaran.

Deploying a Flask-based Intrusion Detection System to AWS ECS with CI/CD

Buat Pengimbang Beban Aplikasi

  • Di sebelah kiri konsol EC2, pilih pengimbang beban dan pilih buat pengimbang beban.
  • Pilih Cipta Pengimbang Beban Aplikasi, ini akan menjadi pengimbang beban yang menghadap ke Internet. beri nama ALB.
  • Dalam bahagian pemetaan rangkaian pilih VPC Dibuat dan subnet awam dalam dua zon ketersediaan.
  • Dalam bahagian Pendengar dan Penghalaan, pilih kumpulan sasaran yang dibuat. ALB akan mendengar pada port:80 dan ke hadapan kepada kumpulan sasaran.
  • Buat ALB.

Buat definisi Tugas

Pergi ke konsol ECS dan pilih takrifan tugas.

Langkah 1:

  • Namakan keluarga definisi tugas
  • Biarkan keperluan infrastruktur lalai seperti sedia ada, tetapi anda boleh menukar vCPU dan memori berdasarkan penghapusan anda. Deploying a Flask-based Intrusion Detection System to AWS ECS with CI/CD

Langkah 2: Untuk Bekas 1

  • Beri nama
  • Pergi ke ECR anda dan salin URI imej docker yang kami tolak dalam bahagian awal projek ini dan kembali ke bahagian bekas 1 definisi tugas yang kami buat dan tampalkannya dalam URI Imej untuk bekas.
  • Untuk pemetaan Port tetapkan kepada 5000, kerana ini adalah port yang kami dedahkan dalam bekas docker kami dan beri nama. NOTA: Sangat penting pemetaan port adalah sama dengan port docker terdedah
  • Tambah pembolehubah persekitaran
    Ini akan menjadi penting dalam bahagian CI/CD projek ini. Tetapi akan dilangkau buat masa ini.

  • Teruskan dan langkau bahagian yang tinggal dan buat definisi tugas

Buat kluster dan perkhidmatan Fargate

Buat kumpulan keselamatan untuk perkhidmatan ECS

  • Pergi ke kumpulan keselamatan di sebelah kiri dan pilih buat kumpulan keselamatan. berikan nama dan penerangan kepada keselamatan.
  • Tambahkan peraturan masuk pada julat port 5000 dan sumbernya ialah kumpulan keselamatan Pengimbang Beban Aplikasi.

Langkah 1: Buat Kluster

  • Pergi ke tab kelompok dan pilih buat kelompok, ini akan membawa anda ke halaman konfigurasi kelompok. Namakan kluster dan pastikan hanya AWS Fargate(Serverless) dipilih di bawah tab infrastruktur dan kemudian buat kluster.

Deploying a Flask-based Intrusion Detection System to AWS ECS with CI/CD

Langkah 2: Buat perkhidmatan

  • Pilih kluster yang dibuat dan klik pada cipta di bawah perkhidmatan.

Deploying a Flask-based Intrusion Detection System to AWS ECS with CI/CD

Ini akan membawa anda ke halaman baharu di mana anda akan menentukan konfigurasi perkhidmatan Fargate.

  • Tatal melepasi bahagian Persekitaran dan beralih ke Konfigurasi Penerapan. Di sini, nyatakan keluarga definisi tugas, yang akan memilih semakan secara automatik juga.

Deploying a Flask-based Intrusion Detection System to AWS ECS with CI/CD

  • Pilih bilangan Tugasan yang Diingini untuk dilancarkan. Satu ok untuk projek ini.

  • Tatal ke tab Rangkaian dan pilih VPC yang telah dibuat dan kemudian subnet peribadi

  • Dalam bahagian Pengimbang beban, pilih jenis pengimbang beban sebagai Pengimbang Beban Aplikasi dan pilih gunakan pengimbang beban sedia ada. Ini akan memaparkan ALB yang telah dibuat dalam bahagian sebelumnya. pilihnya.

  • Tatal dan anda akan lihat, pendengar. pilih gunakan pendengar sedia ada dan pilih pendengar port 80 yang ada dan di bawah kumpulan sasaran lakukan perkara yang sama, pilih kumpulan sasaran sedia ada yang kami buat.

  • Seterusnya ialah Penskalaan Auto Perkhidmatan. Ini adalah pilihan tetapi merupakan tambahan yang baik untuk perlu menskalakan ke apl berdasarkan metrik yang ditentukan. Dayakan ini dan tentukan bilangan minimum dan maksimum tugas yang anda mahu jalankan. Seterusnya tambahkan dasar penskalaan. Untuk projek ini dasar penjejakan Sasaran digunakan bersama metrik perkhidmatan ALBrequestCountPerTarget ECS, dengan nilai sasaran 50, tempoh bertenang skala keluar dan tempoh bertenang Skala masuk sebagai 60s

  • Buat Perkhidmatan.

  • Setelah Perkhidmatan dibuat, bilangan tugasan yang diingini akan dibuat.

Buat Zon Dihoskan di laluan 53

Jika arahan di atas telah diikuti pada T, anda sepatutnya mempunyai apl web yang berfungsi sepenuhnya, untuk mengaksesnya pergi ke pengimbang beban anda, salin nama DNS dan tampal dalam penyemak imbas anda. Tetapi itu membosankan dan tidak menggunakan amalan terbaik. Sebaik-baiknya, harus ada tembok api aplikasi Web di hadapan ALB atau CloudFront, tetapi untuk kesederhanaan kami hanya akan menggunakan Laluan 53.

NOTA: Bahagian ini memerlukan anda mempunyai nama domain berdaftar sama ada dengan AWS atau mana-mana pembekal lain

Langkah 1: Buat hosted in

  • Pergi ke konsol Laluan 53.
  • Pada tab sebelah kiri, pilih Zon Dihoskan. anda sepatutnya mempunyai ini.

Deploying a Flask-based Intrusion Detection System to AWS ECS with CI/CD

  • Pilih Cipta Zon Dihoskan
  • Masukkan nama domain anda dan berikan penerangan. Biarkan jenis sebagai Zon Dihoskan Awam dan pilih buat Zon Dihoskan.

Deploying a Flask-based Intrusion Detection System to AWS ECS with CI/CD

Langkah 2: Tambahkan nama DNS ALB pada rekod zon yang dihoskan

  • Pergi ke konsol ALB anda dan salin nama DNSnya.
  • Kembali ke zon yang dihoskan dan pilih cipta rekod.

Deploying a Flask-based Intrusion Detection System to AWS ECS with CI/CD

  • Jenis rekod lalai yang ada ialah rekod A, yang akan digunakan.
  • Togol suis alias

Deploying a Flask-based Intrusion Detection System to AWS ECS with CI/CD

  • Di bawah pilih titik akhir, pilih Alias ​​kepada Aplikasi dan Pengimbang Beban Klasik
  • Seterusnya, pilih kawasan tempat anda melancarkan Pengimbang Beban anda. Dalam kes ini, ia adalah wilayah us-east-1, Pastikan ia adalah wilayah anda.
  • Pilih pengimbang beban anda daripada menu lungsur.
  • Buat rekod.

Ini mengandaikan anda mempunyai nama domain anda dengan AWS

TAHNIAH!!

Jika anda mengikuti Langkah ke T, anda seharusnya mempunyai apl web berfungsi penuh yang boleh diakses melalui nama domain anda.

Ini adalah projek yang sangat menarik kerana saya bekerja dengan VPC, subnet peribadi dan awam, titik akhir VPC, perkhidmatan ECS, ECR, Kumpulan sasaran, kumpulan keselamatan dan Pengimbang beban Aplikasi kerana mereka semua berkumpul untuk mencipta web ini- apl.

Atas ialah kandungan terperinci Menggunakan Sistem Pengesan Pencerobohan berasaskan Flask ke AWS ECS dengan CI/CD. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan