Bagaimana cara menentukan ketergantungan grup keamanan AWS?

46

Amazon EC2 tidak akan membiarkan saya menghapus grup keamanan, mengeluh bahwa grup masih memiliki dependensi. Bagaimana saya dapat menemukan apa dependensi itu?

aws ec2 menggambarkan-keamanan-kelompok tidak mengatakan.

pengguna14645
sumber
Jawabannya tidak benar dalam pertanyaan itu @MichaelHampton, meskipun sudah ditandai demikian.
Konr
@konr Jika Anda yakin pertanyaan itu membutuhkan jawaban yang lebih baik, Anda dapat memulai hadiah .
Michael Hampton

Jawaban:

58

Tempel ID grup keamanan di bagian "Network Interfaces" dari EC2. Ini akan menemukan penggunaan di EC2, EB, RDS, ELB.

CLI: aws ec2 describe-network-interfaces --filters Name=group-id,Values=sg-123abc45

Denys Stroebel
sumber
10

Cara terbaik untuk melakukan ini di konsol AWS EC2, adalah menempelkan nama grup keamanan di bidang pencarian di bagian EC2-> Instances.

Semua instance yang terkait dengan grup keamanan yang ditempelkan kemudian akan terisi-yang akan menjadi objek EC2 (dependensi).

Anda juga dapat menjalankan pencarian ini di bagian ELB dan penawaran AWS lainnya yang memanfaatkan grup keamanan.

Jika Anda mencoba untuk menghapus grup keamanan, Anda perlu 'mengubah grup keamanan' untuk setiap instance (jika mereka berada dalam VPC) atau membuat AMI dan meluncurkan kembali menggunakan grup keamanan yang berbeda-lalu hapus instance lama (jika menggunakan EC2 classic)

Semoga itu bisa membantu-

Scott Moore
sumber
8

Anda perlu melihat objek instan EC2 Anda, bukan grup itu sendiri:

$ aws ec2 describe-instances --output text

Kemudian cari "sg- *" atau gunakan alat pemrosesan aliran teks unix standar untuk mengeluarkan data yang Anda butuhkan.

Atau, jika Anda memiliki sedikit contoh, gunakan --output tableuntuk daftar yang diformat dengan baik.

EEAA
sumber
2
aws ec2 describe-instances --output text | grep sg-
cdmckay
Karena grup keamanan dapat merujuk ke grup keamanan lain, mungkin Anda perlu menjalankan fungsi itu secara rekursif?
brendan
1
Itu tenang tidak lengkap. Grup keamanan dapat digunakan di banyak tempat selain instance EC2 - ELB, VPC, grup keamanan lainnya (seperti @brendan sudah sebutkan) dll.
Amos Shapira
@AmosShapira OP bertanya secara spesifik tentang EC2. Jika mau, Anda selalu bebas mengedit jawaban saya untuk memperbaikinya.
EEAA
@AmosShapira Memecahkan masalah yang OP miliki. Jawaban SF tidak diperlukan untuk menjadi jawaban komprehensif untuk setiap situasi terkait yang mungkin terjadi.
EEAA
7

Anda dapat menginterogasi aws cli untuk mendapatkan data yang Anda inginkan.

Anda harus:

  • Buat daftar semua grup keamanan yang mencari referensi ke grup yang dimaksud
  • Daftar semua EC2 dan grupnya
  • Daftar semua ELB dan grupnya
  • Daftar semua RDS dan grupnya

Anda juga dapat menggunakan perpustakaan, seperti boto https://code.google.com/p/boto/ alih-alih aws cli mentah.

Drew Khoury
sumber
4

Fungsi Lambda juga dapat memiliki Grup Keamanan. Pada saat penulisan, Amazon tidak mencegah penghapusan grup keamanan yang digunakan oleh fungsi Lambda.

Saya menggunakan ini:

aws lambda list-functions | jq -c '.Functions[] | {FunctionArn, SecurityGroups: (.VpcConfig.SecurityGroupIds[]? // null) }'
karpada
sumber
2

Masalah lain adalah SecurityGroups yang bergantung pada SecurityGroups lainnya. Seseorang dapat menggunakan perintah ini untuk menghasilkan daftar Adjacency (dependensi langsung):

aws ec2 describe-security-groups --query "SecurityGroups[*].{ID:GroupId,Name:GroupName,dependentOnSGs:IpPermissions[].UserIdGroupPairs[].GroupId}

Idealnya, hasil ini harus digunakan untuk menemukan penutupan Transitif (semua dependensi, langsung & tidak langsung). Sayangnya, saya gagal menemukan util penutupan Transitive.

karpada
sumber
1

Ini mungkin belum tersedia ketika pertanyaan awalnya diajukan tetapi jika Anda masuk ke AWS Console for Security Groups, pilih Grup yang dimaksud dan pilih Delete Action, prompt yang dihasilkan akan memberi tahu Anda jika itu direferensikan dan oleh apa .

mendorong
sumber
1

Anda dapat menggunakan alat Python ini untuk membuat daftar grup keamanan dengan dependensinya. Itu juga memungkinkan untuk mendaftarkan grup keamanan yang tidak terpakai (usang):

https://github.com/mingbowan/sgdeps

Ryan Fisher
sumber
0

Jawaban yang ditandai salah. Jika Anda melihat Pelanggaran Ketergantungan, kemungkinan Grup Keamanan lain dirujuk dalam konfigurasi IP Permissions (Ingress) Anda. Anda harus mencabut semua izin masuk yang mengandung Grup Keamanan sebagai sumbernya.

MRW
sumber
Saya kira pertanyaan awal adalah apa yang merujuk beberapa kelompok keamanan. Apakah ada hal-hal yang bukan antarmuka jaringan yang mereferensikan grup keamanan (dan port masuknya)? Jika tidak, maka daftar antarmuka jaringan adalah jawaban yang bagus, bukan?
user14645
Meskipun ada nilai dalam poin Anda, referensi ke grup keamanan bukanlah pelanggaran ketergantungan. Dimungkinkan untuk menghapus grup keamanan yang tidak dilampirkan ke ENI tetapi dirujuk di grup keamanan lain. Setelah penghapusan terjadi, Anda akan mendapatkan pemberitahuan "Anda memiliki aturan grup keamanan basi baru" di konsol Anda untuk menunjukkan bahwa ada referensi lama ke grup keamanan yang tidak ada dalam aturan. Ini kemudian akan memberi Anda hyperlink "lihat aturan basi" untuk mengubah situasi sesudahnya.
Denys Stroebel