Keamanan Production
Tandai koneksi sebagai Production, dan Selekta memberi labelnya di setiap layar, meminta Anda mengetik namanya sebelum statement destruktif dijalankan, dan membuka tab SQL dan tab data baru dalam manual commit. Koneksi read-only melangkah lebih jauh: penulisan ditolak sebelum dikirim.
Tag environment
Setiap koneksi punya kolom Environment di dialog koneksi. Kolom ini menentukan label koneksi dan seberapa hati-hati Selekta memperlakukannya:
| Environment | Label | Statement destruktif |
|---|---|---|
| Production | Sel PRODUCTION merah penuh, tag Prod |
Ketik nama koneksi untuk konfirmasi |
| Staging | Sel STAGING bergaris tepi, tag Stg |
Konfirmasi, dengan pemeriksaan tambahan |
| Local | Sel LOCAL, tag Local |
Konfirmasi hanya untuk statement yang selalu dijaga |
| None | Tanpa sel | Konfirmasi hanya untuk statement yang selalu dijaga |
Tag tampil di samping koneksi di navigator, di riwayat, dan di setiap dialog konfirmasi dan review. Warna merah penuh hanya dipakai untuk Production.
Title block
Status bar setiap tab editor adalah title block: deretan sel berlabel yang memberi tahu di mana tab itu berada dan apa statusnya.
- Conn: nama koneksi. Arahkan kursor ke sini untuk melihat zona waktu session.
- Engine, DB, Schema: versi server, database, dan schema saat ini.
- Env: kata environment, merah penuh untuk Production.
- Mode:
READ-ONLYdengan ikon gembok, hanya di koneksi read-only. - Role: user yang dipakai koneksi untuk masuk.
- TX:
auto,manual,aborted,rolled back, ataunonesaat tidak tersambung. - Rev: jumlah revisi yang pending, tampil sebagai
Δ3berwarna amber kalau ada.
Di jendela yang sempit, sel Engine, Role, dan DB disembunyikan; arahkan kursor ke Conn untuk membacanya. Sel Env tidak pernah disembunyikan.
Konfirmasi ketik nama
Sebelum statement dikirim, Selekta memeriksanya. Kalau perlu konfirmasi, tidak ada yang dijalankan, dan sebuah dialog menampilkan statement lengkap, koneksinya, alasan dihentikan, perkiraan jumlah baris (dari planner, kalau engine menyediakannya), dan mode commit, termasuk apakah masih bisa di-rollback.

Di Production, tombol konfirmasi tetap nonaktif sampai Anda mengetik nama koneksi dengan tepat. Di environment lain, Anda cukup menekan tombolnya. Fokus awal ada di Cancel, Esc membatalkan, dan Return tidak pernah mengonfirmasi. Explain first menampilkan plan statement tanpa menjalankannya.
Statement yang memicunya
Di semua koneksi, apa pun environment-nya:
DELETEatauUPDATEtanpa klausaWHERE, termasuk yang ada di dalam klausaWITHTRUNCATEDROPobjek apa pun
Di Production dan Staging, juga:
ALTER ... DROP, misalnya menghapus kolom atau constraintDELETEatauUPDATEdengan klausaWHEREyang diperkirakan planner akan menyentuh lebih dari 1.000 baris- Statement yang efeknya tidak bisa diperkirakan planner: blok
DOPostgreSQL,CALL, sertaEXECdan blokBEGIN ... END,IF, atauWHILEdi SQL Server MERGEdengan cabangDELETEatauUPDATE- Klausa
WITHyang memuatINSERT,UPDATE, atauDELETEsendiri
SQLite tidak memberi perkiraan baris, jadi aturan 1.000 baris tidak pernah berlaku di sana. EXPLAIN biasa tidak diperiksa karena tidak menjalankan statement; EXPLAIN ANALYZE diperiksa, karena menjalankannya.
Di dalam script
Saat Anda menjalankan script, Selekta memeriksa semua statement lebih dulu. Tidak ada yang dijalankan sebelum statement pertama yang dijaga dikonfirmasi. Setelah Anda konfirmasi, script berjalan mulai dari statement itu dan berhenti lagi sebelum statement berikutnya yang dijaga. Di SQL Server, satu batch GO diperiksa dan dikonfirmasi sebagai satu kesatuan.
Pemeriksaan dilakukan pada statement setelah parameter diisi, jadi dialog menampilkan apa yang benar-benar akan dikirim.
Konfirmasi lain di Production
- Meng-apply perubahan struktur yang menghapus atau membangun ulang sesuatu meminta nama koneksi. Lihat Editor struktur.
- Menghapus koneksi Production meminta Anda mengetik namanya. Mematikan read-only di koneksi Production meminta konfirmasi.
- Edit di tab Data sebuah tabel selalu melewati Review SQL, di semua environment. Setiap perubahan menargetkan satu baris lewat key-nya.
Manual commit di Production
Settings › Editor › Start Production tabs in manual commit menyala secara default. Tab SQL baru dan tab Data tabel di koneksi Production lalu terbuka dalam manual commit, jadi setiap perubahan menunggu di transaksi terbuka sampai Anda menekan Commit (⌥⌘↵), dan Rollback (⌥⌘⌫) membatalkannya. Tab tidak pernah menampilkan Auto selagi session-nya masih dibuka.
Anda bisa mengubah tab ke Auto di action bar-nya. Kalau ada statement pending, Selekta meminta Anda commit atau rollback dulu. Setiap tab punya sakelar Auto dan Manual sendiri, jadi mengubah satu tab tidak mengubah tab lain. Lihat Manual commit untuk apa yang terjadi saat tab ditutup, koneksi terputus, dan commit gagal.
Koneksi read-only
Centang Read-only di dialog koneksi, atau gunakan Set read-only di menu konteks koneksi di navigator. Title block menampilkan READ-ONLY, dan action bar editor SQL menampilkan Read-only.
Di koneksi read-only, hanya statement baca yang dijalankan: SELECT, VALUES, TABLE, SHOW, EXPLAIN, DESCRIBE, WITH tanpa penulisan, SET, USE, PRAGMA, dan kontrol transaksi. Selain itu diblokir sebelum sampai ke server, termasuk INSERT, UPDATE, DELETE, MERGE, DDL, SELECT ... INTO, EXPLAIN ANALYZE atas penulisan, dan statement yang akan mematikan pengaturan read-only. Script yang diblokir tidak menjalankan satu pun statement-nya. Banner bertuliskan "Not sent", dan statement itu disimpan di riwayat sebagai VOID dengan catatan blocked.
Selekta juga meminta server ikut menegakkannya bila engine memungkinkan:
- PostgreSQL: session dibuka read-only (
default_transaction_read_only, laluSET SESSION CHARACTERISTICS AS TRANSACTION READ ONLY). Di balik connection pooler, hanya pemeriksaan Selekta sendiri yang berlaku. - MySQL:
SET SESSION TRANSACTION READ ONLY. - SQLite: file dibuka read-only dan
PRAGMA query_onlydiatur. - SQL Server: login memakai
ApplicationIntent=ReadOnly, yang hanya berupa petunjuk, jadi pemeriksaan Selekta-lah yang memblokir penulisan.
Tab Data menampilkan baris tanpa bisa diedit, Edit structure dan New table… nonaktif, dan import serta restore diblokir. Untuk mematikannya, gunakan Turn off read-only di navigator; di Production ini meminta konfirmasi.