Setelah bekerja sebagai pengembang dan di IT admin / support untuk tim pengembangan, saya telah menemukan banyak jenis lingkungan yang berbeda dari yang benar-benar terkunci hingga yang sepenuhnya non. Dalam pengalaman dukungan terbatas saya, saya pikir itu kurang upaya untuk mendukung dengan mesin yang kurang terkunci dan saya tentu merasa ini lebih mudah, tapi tentu saja ini bisa menjadi bias. Saya ingin tahu apa pandangan itu dari sudut pandang dukungan TI, apakah benar-benar lebih sulit untuk mendukung pengembang yang tidak mengunci mesin?
user-permissions
Praha Sangha
sumber
sumber
Jawaban:
Masalah terbesar dengan tidak mengunci mesin pengembang adalah bahwa setiap perangkat lunak yang mereka kembangkan akan memerlukan hak administrator penuh untuk dijalankan. Akses pengembang harus sama dengan lingkungan yang harus mereka jalankan. Jika mereka perlu "mandiri" atau "dapat diinstal sendiri" maka berikan mereka akun admin lain misalnya Bruce.admin yang harus mereka gunakan ketika melakukan admin barang, tetapi tidak digunakan sehari-hari.
Sama seperti tidak ada admin UNIX yang layak, garam mereka tidak akan pernah menggunakan akun root untuk pekerjaan non admin sehari-hari mereka.
sumber
Sebagian besar pengembang secara teknis cerdas dan tahu apa yang mereka lakukan. Mereka sering perlu menginstal banyak aplikasi spesialis, harus mendapatkan izin untuk melakukan ini dan mendapatkan IT untuk turun dan menambahkannya bisa sangat membuat frustrasi, terutama di perusahaan besar, untuk kedua belah pihak.
Saya telah menemukan apa yang paling berhasil adalah memungkinkan mereka untuk melakukan apa yang mereka inginkan sehubungan dengan menginstal perangkat lunak pada mesin mereka, tetapi jika mereka mendapat masalah dengan sesuatu yang tidak kami dukung, maka mereka melakukannya sendiri. Sebagian besar pengembang senang dengan ini, dan lebih memilih untuk bisa menjaga mesin mereka sendiri.
Mengunci seseorang dalam akuntansi hanya menggunakan IE dan kata terbuka tidak apa-apa, tetapi jika pengembang Anda yang perlu menginstal 4 jenis browser berbeda dan perlu menginstal aplikasi dengan cepat untuk menyelesaikan masalah, itu bisa mengganggu.
Pengalaman saya adalah bahwa perusahaan yang memiliki banyak pengetahuan teknis, jadi toko pengembangan, pemasok TI dll, yang memercayai karyawan mereka dan membiarkan mereka memutuskan apa yang ingin mereka instal jauh lebih bahagia dan tidak terlalu merepotkan TI.
sumber
Lihat posting Stackoverflow ini untuk beberapa perdebatan yang hidup tentang manfaat mengunci mesin pengembang. (Penafian: Saya menulis jawaban yang diterima).
Dari perspektif sysadmin, akses ke sistem produksi sensitif dan Anda harus membatasi akses tersebut ke orang-orang yang membutuhkannya untuk melakukan pekerjaan mereka (ini mungkin termasuk pengembang yang memiliki tanggung jawab dukungan tier-3 untuk aplikasi). Hak admin lokal atas PC pengembangan atau server pengembangan tidak secara signifikan membahayakan keamanan sistem produksi Anda.
Buat gambar yang dapat Anda gunakan untuk membangun kembali mesin jika perlu. Menginstal edisi SQL Server dev secara manual, Visual Studio, Cygwin dan MikTex plus banyak aplikasi lain cukup memakan waktu. Gambar dengan aplikasi besar ini diinstal akan sangat berharga jika Anda harus banyak gambar mesin.
Dari perspektif pengembangan saya menemukan bahwa saya dapat memperbaiki sebagian besar masalah dengan mesin dan biasanya hanya membutuhkan bantuan dari staf dukungan jaringan pada kesempatan yang sangat jarang. Lingkungan yang terlalu membatasi cenderung menghasilkan lalu lintas pendukung dev palsu untuk melakukan pekerjaan yang mampu dilakukan sendiri oleh pengembang.
Tempat lain di mana pengembang cenderung membutuhkan banyak pekerjaan admin dilakukan adalah pada server database hosting pengembangan lingkungan. Sebagian besar pengembang mampu mempelajari tugas-tugas DBA rutin dengan mudah, dan harus mendapatkan pengetahuan tentang hal ini (IMHO pada prinsipnya). Kebijakan akses admin yang terlalu ketat pada server pengembangan dapat dikacaukan dalam banyak hal.
Jaringan pengembangan awal adalah ide yang cukup bagus jika dapat diatur - Anda dapat firewall ini dari server produksi Anda jika perlu.
Ketika pengembang dapat dengan mudah meniru struktur lingkungan produksi, ia mempromosikan budaya pengujian penempatan di mana tes integrasi dapat disintesis tanpa melewati rintangan. Ini akan cenderung meningkatkan kualitas pelepasan dan penyebaran produksi.
Mampu meniru lingkungan produksi juga meningkatkan kesadaran penyebaran produksi dan masalah dukungan. Ini mendorong staf pengembangan untuk memikirkan bagaimana suatu aplikasi dapat didukung dalam produksi, yang mungkin akan mendorong arsitektur yang dibangun dengan mempertimbangkan hal ini.
Jika jaringan ini memiliki pengontrol domain, Anda dapat membangun hubungan saling percaya sehingga mempercayai pengontrol domain utama dan akunnya. Hubungan kepercayaan ini tidak harus bersifat timbal balik, sehingga tidak membahayakan keamanan infrastruktur jaringan produksi Anda. Ini dapat membuat Anda memiliki jaringan pengembangan yang tidak tepercaya tetapi masih memungkinkan pengembang mengakses sumber daya terautentikasi domain seperti akun Exchange atau server file.
Anda ingin pengembang memiliki ruang lingkup yang wajar untuk bereksperimen tanpa harus melewati rintangan. Menempatkan hambatan politik di jalur pekerjaan ini memiliki kecenderungan untuk mendorong solusi plester yang melekat secara politis tetapi menghasilkan utang teknis jangka panjang (dan seringkali tidak diakui). Sebagai sysadmin atau analis pendukung, tebak siapa yang dapat mengambil bagian ...
Saya akan menambahkan bahwa ini jauh dari masalah pada lingkungan unix atau linux; pengguna dapat menyesuaikan lingkungan mereka sendiri dari
.profile
. Anda dapat mengkompilasi dan menginstal hal-hal di bawah/home/bloggsj/bin
direktori Anda sendiri untuk kesenangan hati Anda. 'Hak admin lokal' sebagian besar merupakan masalah windows, meskipun masih ada beberapa hal yang memerlukan akses root di bawah Unix.sumber
Opsi paling masuk akal yang pernah saya lihat (telah di kedua sisi -dan masih pagi) adalah hal-hal yang tidak terkunci dan tidak didukung juga. Beri mereka kebebasan, dan jika mereka mengacau, yang bisa mereka dapatkan hanyalah restage dengan gambar standar .... Dalam situasi itu, saya menemukan rencana yang bagus untuk menempatkan mereka pada beberapa bentuk jaringan "tidak dipercaya".
Sejauh (bukan) rasa mengunci desktop pengembang: Saya cukup yakin semua mengunci hanya menghambat produktivitas, apalagi, setiap pengembang yang cukup terampil akan dengan mudah menemukan lubang ....
sumber
Jawabannya sungguh: tidak ada jawaban ya atau tidak yang sederhana. Tetapi keamanan setidaknya sama pentingnya bagi pengguna dev Anda seperti halnya bagi orang lain.
Di satu sisi, ya para pengembang cenderung lebih mengerti secara teknis. Di sisi lain, pekerjaan mereka seringkali merupakan pekerjaan yang penuh tekanan dan tonggak pengembangan mereka cenderung untuk diprioritaskan daripada perawatan ekstra yang diperlukan untuk mempertahankan sistem sendiri sebagai lingkungan yang aman. Ini bukan kritik dari pengembang; itu adalah pertimbangan yang jujur tentang tugas sehari-hari mereka.
Jika Anda akan memberikan akses penuh ke devs ke sistem mereka, maka Anda harus benar-benar mempertimbangkan langkah-langkah tambahan berikut:
Jika Anda akan mengunci sistem dev, maka Anda harus mempertimbangkan yang berikut:
Either way, Anda harus mengakui bahwa pengembang adalah kasus khusus dan mereka memang membutuhkan dukungan ekstra. Jika Anda tidak menganggarkan untuk ini, masalah kemungkinan memburuk saat ini ... atau akan terjadi di masa depan.
Sebagai catatan, saya telah melihat argumen yang sangat mirip terjadi dengan sysadmin. Pada setidaknya dua pekerjaan yang berbeda, saya telah melihat sysadmin berdebat cukup sengit ketika disarankan bahwa mereka sendiri harus mengunci sistem, atau setidaknya menggunakan dua login (satu dengan root / admin privs; satu tanpa). Banyak sysadmin merasa bahwa mereka tidak boleh dikunci dengan cara apa pun dan berdebat dengan keras terhadap langkah-langkah tersebut. Cepat atau lambat, beberapa admin yang tidak mengunci akan memiliki insiden keamanan dan contohnya akan memiliki efek pendidikan pada kita semua.
Saya dulu adalah salah satu dari sysadmin yang berlari dengan priv admin sepanjang waktu. Ketika saya melakukan perubahan ke akun ganda dan hanya meningkatkan kebutuhan, saya mengakui bahwa itu cukup membuat frustrasi selama beberapa bulan pertama. Tetapi lapisan perak di awan adalah bahwa saya belajar lebih banyak tentang keamanan sistem yang saya kelola, ketika akun normal saya hidup di bawah batasan yang sama dengan yang saya tempatkan pada pengguna. Itu membuat saya admin yang lebih baik! Saya menduga bahwa hal yang sama berlaku untuk pengembang. Dan untungnya di dunia Windows, kami sekarang memiliki UAC, yang membuatnya lebih mudah untuk dijalankan sebagai pengguna terbatas dan hanya meningkat jika diperlukan.
Secara pribadi saya tidak berpikir bahwa ada orang di atas beberapa bentuk praktik keamanan. Setiap orang (sysadmin, devs, termasuk manajemen atas) harus tunduk pada prosedur keamanan dan pengawasan yang cukup untuk menjaga mereka tetap di atas kaki mereka. Mengatakan sebaliknya berarti mengatakan bahwa sistem dan data perusahaan tidak sepadan dengan upaya untuk melindungi.
Mari kita bicara dengan cara lain. Jika Mark Russinovich dapat diambil oleh rootkit , siapa pun bisa!
sumber
Di mana Anda memiliki beberapa pengembang, pendekatan untuk memberi mereka server pengembangan adalah suatu kemungkinan, tetapi jika Anda memiliki seluruh lantai pengembang, maka saya sangat menentang memberi mereka hak admin apa pun.
Masalahnya adalah bahwa Anda akan berakhir dengan seluruh lantai pengembang, masing-masing melakukan apa yang mereka lakukan, biasanya sebagian besar bahkan tidak sadar akan keamanan dan hanya ingin aplikasi mereka berfungsi. Maka Anda akan terpukul dengan permintaan - "Kami telah menyelesaikan tahap pengembangan, silakan meniru lingkungan dev kami ke pengujian, pra-prod, dan prod".
Mereka juga terbiasa menginstal sampah acak (peranti lunak yang dikemas dengan buruk), dan kemudian mendelegasikan Anda untuk menginstalnya pada selusin server di tingkatan lainnya.
Saya membuat kebijakan cukup sederhana:
su
atausudo
ke pengguna aplikasi - yang akan dikunci untuk tidak memiliki akses shell. (Ini untuk akuntansi / audit).sudoers
file.Di atas akan di atas semua, membuat mereka berpikir tentang apa yang akan dan tidak akan diizinkan ketika tiba saatnya untuk memindahkan proyek ke server uji dan di atas.
sumber
Mengunci mesin pengembang membutuhkan lebih banyak upaya daripada nilainya. Ini sangat merusak produktivitas karena Anda tidak dapat melakukan banyak hal tanpa hak administratif. Tentu saja, pada akhirnya sistem akan menjadi kacau, tetapi tentunya IT Anda tidak memberikan dukungan untuk semua alat pihak ke-3 yang digunakan dalam pengembangan?
Jadi, seperti yang disarankan Vincent De Baere, tindakan terbaik adalah mengembalikan sistem dari citra, tentu saja, lingkungan harus dipulihkan setelah itu, tetapi itu seharusnya bukan masalah TI. Jika itu terjadi N kali Anda dapat menempatkan orang tersebut di semacam "daftar hitam" dan, ya, lepaskan hak administratifnya untuk sementara waktu.
Either way, lingkungan harus diatur dengan cara, yang memastikan, bahwa mesin yang terinfeksi (atau berantakan) tidak mempengaruhi mesin lain sama sekali atau, katakanlah, tidak mengirim spam atau sesuatu (ok, sekarang Saya hanya mengatakan hal-hal yang jelas, maaf).
sumber
Ya, sebagian mungkin tergantung pada lingkungan apa yang Anda jalankan (misalnya Linux versus Windows); Namun, dengan asumsi lingkungan Windows, biasanya lebih banyak masalah daripada nilainya hanya karena beberapa perangkat lunak pengembangan di luar sana mengharuskan Anda memiliki izin tinggi untuk bekerja. Sebagai contoh, Visual Studio diketahui membutuhkan izin Administrator , karena itu, saya tidak melihat manfaatnya membuat seseorang melompati lingkaran untuk bagian yang diperlukan dari pekerjaan mereka.
Namun, jika perusahaan mengharuskan hal-hal dikunci, taruhan terbaik Anda kemungkinan akan memberikan semua pengembang mesin virtual pada sistem mereka sehingga mereka bisa gila. Sementara beberapa mungkin tidak suka ini sebanyak, itu mungkin akan memberi Anda yang terbaik dari keduanya worlds (mis. desktop normal yang terbatas dan lingkungan yang sepenuhnya dapat disesuaikan).
Pembaruan - Di sisi Windows ada hal-hal yang sedikit lebih layak diperhatikan, ternyata Visual Studio yang memerlukan hak Administrator agak ketinggalan zaman dan sekarang ada cara eksplisit untuk mengatur izin yang diperlukan (file PDF). Namun, saya tidak berpikir ini mengubah opsi saya karena banyak pengembang yang saya tahu, termasuk saya sendiri, cenderung menggunakan alat tambahan di luar Visual Studio dan mengetahui apa yang mereka butuhkan dalam hal perizinan bisa sulit diprediksi.
sumber
Saya setuju dengan gagasan menggunakan mesin virtual di atas desktop terbatas
Kecuali jika tidak diharuskan, saya merasa setup terbaik adalah desktop linux terbatas dengan vm gratis untuk semua di atasnya. Linux mengurangi overhead bagi saya, vm tidak hanya bisa menjadi OS apa pun yang mereka inginkan, tetapi juga dapat dikembalikan ke snapshot atau cadangan, dan umumnya dunia terlihat sedikit lebih cerah ketika tidak ada banyak pengaturan yang berbeda yang membutuhkan dukung.
sumber
Saya (sebagai dev sendiri) lebih suka memiliki kontrol penuh atas mesin saya, artinya; berjalan sebagai admin saat dibutuhkan.
Anda dapat memberikan pelatihan khusus untuk para devs sebelum mereka diizinkan akses penuh ke komputer mereka. Tetapkan beberapa aturan untuk mereka, dan mungkin Anda bisa melakukan audit sesekali untuk memastikan bahwa mereka mengikuti praktik terbaik.
Sebagian besar mereka akan perlu tahu lebih banyak tentang infrastruktur TI dari admin IT / pandangan dukungan TI, hal-hal yang berhubungan dengan keamanan, serta mengapa tidak berkembang dengan hak tinggi. (dan bagaimana memastikan bahwa Anda tidak ...)
"Jangan mempercayai kami secara membabi buta ketika kami memberi tahu Anda bahwa kami tahu semua yang perlu kami ketahui tentang komputer" ;-)
Anda masih harus mendukung mereka dengan jaringan, domain dan barang-barang akun, pemasangan perangkat lunak alat non-dev, dll.
sumber
Pengalaman saya adalah dengan populasi pengguna yang terbagi rata antara orang-orang yang hanya membutuhkan mesin terkunci dan lainnya (pengembang, ilmuwan) yang membutuhkan akses admin. Mereka orang-orang kelas atas menggunakan banyak perangkat lunak yang berbeda, beberapa di-rumah, beberapa tidak, tetapi banyak yang membutuhkan admin untuk menjalankan, dan pekerjaan mereka mengharuskan mereka untuk menggunakan banyak paket sehingga masuk akal untuk membiarkan orang melakukan itu sendiri.
Kami berakhir dengan proses berikut:
Kami ingin menempatkan semua orang dengan akses admin pada vlan "tidak dipercaya", tetapi kami tidak pernah mendapatkannya.
sumber