Bagaimana cara mengelola kunci pribadi dengan aman untuk pasangan kunci yang dikelola EC2?

8

Untuk meluncurkan instance EC2, Anda perlu pasangan kunci. Bagaimana Anda menangani situasi di mana seorang insinyur dengan akses ke kunci pribadi untuk pasangan kunci itu meninggalkan perusahaan? Apakah akan berhasil menambahkan akses ssh individual, dan membatalkan otorisasi pasangan kunci awal, segera setelah peluncuran contoh?

Jeff
sumber
1
gunakan kembali instance baru dari instance EC2 dan hapus yang lama dengan pasangan kunci lama?
sdolgy

Jawaban:

10

Ketika seorang karyawan atau kontraktor meninggalkan perusahaan, Anda perlu menonaktifkan akses istimewa apa pun yang mereka miliki untuk sumber daya perusahaan. Ini termasuk (tetapi tidak terbatas pada) masalah ssh utama Anda:

  1. Hapus kunci ssh publik dari semua file yang diotorisasi pada semua instance yang berjalan. Gantilah dengan kunci ssh publik yang baru dibuat yang hanya diketahui oleh orang-orang yang seharusnya memiliki akses.

  2. Hapus semua entri keypair di EC2 yang diketahui oleh orang yang diberangkatkan sehingga instance baru tidak dapat dimulai dengan keypair tersebut. Ganti dengan entri keypair baru, mungkin dengan nama yang sama jika Anda

Metode alternatif yang Anda usulkan juga baik dan merupakan salah satu yang saya gunakan: Nonaktifkan kunci ssh awal dan tambahkan kunci ssh publik untuk setiap pengembang sehingga mereka dapat masuk dengan kunci ssh pribadi normal mereka. Ini dapat dilakukan untuk login ke akun bersama atau dengan setiap pengembang mendapatkan akun pengguna sendiri (lebih disukai saya).

Setelah karyawan pergi, Anda tidak hanya harus membersihkan server yang berjalan, tetapi juga proses yang menambahkan kunci ssh ke server baru. Dan, ketika seorang karyawan bergabung, Anda harus melakukan yang sebaliknya: Tambahkan kunci ssh untuk menjalankan server dan memperbarui proses server baru.

Ini bisa menjadi pekerjaan yang sedikit lebih untuk mempertahankan banyak kunci ssh di banyak server, tetapi di situlah otomatisasi masuk.

Eric Hammond
sumber
3

Anda tidak boleh memberikan kunci pribadi ini kepada pengguna akhir. Pengguna akhir harus disediakan dengan sarana login mereka sendiri, seperti otentikasi kunci publik (menggunakan kunci pribadi yang dilindungi kata sandi SENDIRI), diikuti oleh otorisasi LDAP.

Mendistribusikan kunci pribadi yang diberikan kepada Anda oleh EC2 tidak memungkinkan untuk membatalkan ketentuan pengguna. Inilah sebabnya mengapa penggunaan kredensial bersama sepenuhnya dilarang oleh semua peraturan keamanan dan kepatuhan.

Saat Anda mengizinkan penggunaan kredensial bersama:

  • Tidak mungkin menggunakan log untuk mengetahui siapa sebenarnya / berada di host
  • Tidak mungkin untuk mendis-bagikan pengguna tanpa menghapus semua pengguna (termasuk akses darurat, untuk itulah kunci privat EC2 sebenarnya)
kgilpin
sumber
2

Lihat dokumentasi Amazon tentang rotasi kredensial akses .

Gunakan sesuatu seperti wayang atau skrip ssh solid untuk menjalankan dan mengganti semua contoh kunci lama jika Anda tidak ingin meluncurkan kembali semuanya ... atau hanya meluncurkan kembali semuanya.

Jeff Ferland
sumber
Saya pikir dia tidak berbicara tentang kunci akun yang dapat Anda putar tetapi lebih banyak tentang kunci pribadi .pem untuk masuk ke ssh.
2
Login ssh dikendalikan oleh entri ~ / .authorized_keys. Mereka awalnya diunggulkan oleh proses peluncuran EC2, karenanya kebutuhan untuk menggunakan boneka atau skrip untuk menggantikannya atau meluncurkan kembali.
Jeff Ferland
baik. Saya tidak tahu itu :).
Ya itu betul. Untuk akun normal saya bisa menggunakan sshd LDAP, dan dengan demikian dapat menonaktifkan pengguna sekali dari LDAP. Tetapi kunci peluncuran dikelola oleh AWS. Jadi saya pikir solusi wayang / koki menghapus kunci peluncuran dari file otor_keys setiap server adalah cara untuk pergi. Saya pikir saya juga ingin setiap admin memiliki kunci peluncuran AWS mereka sendiri, jadi saya hanya menghapus akses satu pengguna pada satu waktu.
Jeff
@ Jeff JEff Jika SSH dikonfigurasi untuk referensi LDAP dan mengabaikan otor_keys, maka kunci peluncuran hanya penting untuk mengendalikan peluncuran dan penghentian instance. Itu tergantung pada bagaimana Anda membangun gambar Anda.
Jeff Ferland