Di perusahaan tempat saya bekerja, insinyur insinyur (saat ini hanya 2 anggota, yang adalah saya dan rekan kerja lainnya) adalah satu-satunya orang yang memiliki akses ke database produksi.
Jadi ketika ada pengembang lain perlu menjalankan query MySQL pada database produksi. Mereka akan mengirimkan pertanyaan ke 2 insinyur untuk membiarkan mereka mengeksekusinya.
Berikut adalah situasi ketika kita perlu menjalankan perintah ke database produksi:
Basis data berisi data yang rusak, yang menghasilkan bug. Mereka menjalankan perintah untuk memperbaiki bug.
Bug dilaporkan. Dan mereka ingin melihat nilai saat ini di dalam database.
Salah satu pelanggan kami ingin memodifikasi datanya. Tetapi aplikasi web kami tidak memiliki kemampuan untuk melakukan modifikasi. Jadi kita harus mengirim perintah MySQL langsung ke database untuk melengkapi kebutuhan pelanggan.
Tim QA membuat akun uji pada lingkungan produksi. Dan mereka ingin mengubah status akun sehingga mereka dapat melakukan tes lain.
Ini menciptakan banyak gangguan bagi saya rekan kerja lainnya. Ketika kami mengembangkan program di siang hari, kami sering harus beralih konteks hanya untuk menjalankan beberapa permintaan.
Saya tidak berpikir ini adalah arsitektur yang baik untuk perusahaan. Bagaimana Anda mengontrol izin untuk lingkungan produksi di perusahaan Anda?
Basis data produksi kami terdiri dari informasi pelanggan yang sensitif. Jika data bocor, perusahaan kami mungkin didenda jutaan dolar.
sumber
how do I get devs to stop bugging me to run arbitrary SQL commands
. Saya pikir saya bisa menggunakan ProxySQL untuk menutupi data pelanggan yang sensitif sehingga pengembang lain dapat membaca basis data produksi.Anda bisa menanamkan skema basis data dan perubahan data ke dalam kontrol kode sumber dengan menggunakan konsep yang disebut migrasi basis data. Ini kemudian dapat dieksekusi pada lingkungan dev dan pementasan sebagai bagian dari proses penyebaran sebagian otomatis.
Sebagai contoh di lingkungan saya (aplikasi PHP Web), saya menggunakan Skema Doctrine untuk pembaruan skema, migrasi Yii2 untuk perubahan data. Perintah masing-masing adalah bagian dari skrip bash 7 baris yang menjalankan semua perintah yang diperlukan untuk menerapkan perubahan di setiap lingkungan
sumber
Saya melihat masalah pertama, DevOps adalah tentang membangun tim yang dapat menangani aplikasi dari build hingga eksploitasi.
Jadi devs Anda harus memiliki akses ke database, Anda mengutip berbagai kasus yang merupakan kenyataan bagi banyak orang dan kelemahan utama yang membuat Anda dan rekan Anda mengalami hambatan serta menghambat pekerjaan Anda sendiri.
Jawaban lain menjawab dengan baik perubahan skema atau perubahan yang direncanakan yang seharusnya memang diintegrasikan sebagai bagian dari proses pengiriman aplikasi, tetapi mereka tidak memungkinkan untuk dengan cepat memperbaiki kebutuhan akses langsung, ketika seorang dev mungkin perlu membuang DB untuk memahami apa yang menyebabkan bug dan cara memperbaikinya sebagai contoh.
Hal-hal seperti ProxySQL yang sudah Anda kutip dalam komentar mungkin ok untuk database MySQL, hanya mengkonfigurasi MySQL untuk mencatat sesuatu bisa menjadi pendekatan yang baik juga, MySQL menawarkan plugin audit komersial yang dapat menjawab masalah membiarkan devs Anda mengakses database dan memenuhi kebutuhan Anda Persyaratan CISO untuk melacak apa yang dilakukan.
Jika Anda memiliki lebih dari sekadar Mysql DB dan perlu mengaudit akses mereka, mengonfigurasi setiap sistem untuk mengaudit tindakan pengguna log dan bukan tindakan aplikasi bisa jadi rumit. Menjaga hal-hal ditutup bisa menjadi lebih buruk, satu dev suatu hari nanti akan mengintegrasikan shell DB dalam aplikasi untuk menghindari blok jalan ini dan pada akhirnya akan hidup dalam produksi tanpa kontrol akses yang tepat dan memaparkan semua data, saya sangat menyarankan Anda untuk meminta Anda perusahaan untuk meninjau kebijakan ini.
Ada satu solusi komersial yang saya tahu yang dapat membantu (dan memungkinkan audit lebih dari sekedar permintaan DB) yang kuatDM , itu juga memungkinkan untuk mengaudit sesi ssh dan rdp, seolah-olah devs Anda membutuhkan akses ke DB, mereka mungkin juga membutuhkan akses ke mesin hosting aplikasi untuk keperluan debugging.
sumber
Itu posisi awal yang bagus.
Terlalu sering, DBA berusaha menutup pintu kandang setelah kuda itu lari.
Pertanyaan:
Mengapa Pengembang menjalankan sesuatu terhadap basis data Produksi?
Kontrol akses berbasis peran.
Pengguna diberikan akses ke setiap basis data sebagaimana dan ketika peran pekerjaan mereka membutuhkannya dan Peran digunakan untuk memberi mereka akses ke tabel dalam setiap basis data. Proses pembuatan akun ini dan peran yang diberikan dikelola secara terpusat dan diaudit secara ketat.
Pengembang tidak boleh memiliki "langsung", memperbarui akses di luar database Pembangunan mereka. Segala sesuatu yang lain harus ditulis, diuji, diaudit dan dirilis melalui saluran yang telah disiapkan, dikontrol (dan, lebih disukai, otomatis).
sumber