GPU untuk proyek Anda · pembayaran kripto tanpa KYC Cara menyewa
Bahasa Indonesia
Buka konsol
Panduan praktis / KERNODECK

Konfigurasi yang dapat dibagikan tidak berisi kredensial Anda.

Simpan parameter perhitungan dalam berkas yang dikelola versinya dan sediakan rahasia melalui saluran terpisah pada saat eksekusi. Tentukan prioritas antar sumber konfigurasi, validasi hasilnya, dan catat hanya nilai yang diizinkan. Pemisahan ini membuat eksperimen lebih mudah dijalankan ulang; pemisahan ini tidak mengubah variabel lingkungan maupun berkas yang diabaikan Git menjadi brankas.

7 menit baca · Panduan untuk developer

1. Mengklasifikasikan apa yang mendeskripsikan perhitungan dan apa yang memberikan akses

Mulailah dari informasi yang benar-benar dikonsumsi oleh program Anda. Ukuran batch, nama model, dan mode pemrosesan menggambarkan suatu pengalaman. Token yang mengizinkan pengunduhan atau kunci yang membuka penyimpanan memberikan akses. Kelompok pertama harus dapat dijelaskan; kelompok kedua harus tetap tersedia hanya di tempat yang membutuhkannya.

Batasannya tidak hanya seputar nama variabel. Sebuah path dapat mengungkap klien, sebuah URL dapat memuat identitas, dan sampel data yang kecil bisa bersifat rahasia. Karena itu, nilai juga isi dari parameter yang dapat dibagikan. Menerbitkan konfigurasi dan menerbitkan semua path absolutnya bukanlah keputusan yang sama.

Tabel ini menawarkan klasifikasi kerja. Tabel ini tidak menjelaskan layanan yang terpasang pada mesin Kernodeck. Tetapkan untuk proyek Anda siapa yang boleh membaca setiap elemen, kapan, dan pada salinan mana; jangan serahkan keputusan ini pada ekspor terakhir dari sebuah notebook.

Geser tabel untuk membaca semua kolom.
Klasifikasi yang perlu disesuaikan dengan akses dan data proyek.
ElemenPeranPemrosesan yang disarankan
Ukuran batch, mode, ambang batasParameter komputasiVersikan dan validasi nilainya.
Token, kunci privat, kata sandiSarana aksesSediakan secara terpisah dan jangan sertakan dalam keluaran.
Path, URL, pengenal korpusKonteks yang berpotensi sensitifPeriksa sebelum membagikan; utamakan pengenal logis.
Hasil dan logBukti eksekusiPilih bidang yang disimpan dan kendalikan folder yang dikirimkan.

2. Pilih satu aturan prioritas saja

Parameter yang ada di dalam kode, sebuah berkas, dan opsi peluncuran menjadi ambigu jika tidak ada yang tahu mana yang menang. Tetapkan aturan sederhana, misalnya: nilai default yang terdokumentasi, lalu berkas konfigurasi, lalu opsi publik dari perintah. Ini adalah kontrak aplikasi Anda, bukan prioritas universal yang disediakan oleh Python.

Validasi setelah resolusi ini. Tolak kunci yang tidak dikenal agar kesalahan seperti batch_szie tidak diam-diam digantikan oleh nilai default. Bedakan antara bilangan bulat, string yang merepresentasikan bilangan bulat, dan boolean. Kemudian tambahkan batasan yang berguna: nilai positif, mode yang diizinkan, kombinasi parameter yang konsisten.

Terakhir, catat konfigurasi efektif yang terbatas pada bidang yang diizinkan. Konfigurasi ini menjelaskan apa yang digunakan program, bahkan ketika sebuah opsi menggantikan berkas. Jangan hasilkan dokumen ini dengan menyerialkan seluruh objek konfigurasi sebelum menghapus beberapa kata sandi yang dikenal: pilih dulu apa yang boleh ada di dalamnya.

3. Kerjakan sebuah contoh tanpa menyambungkan layanan

Contoh berikut bersifat pengajaran dan tidak dijalankan. Contoh ini menjelaskan operasi fiktif untuk menghasilkan vektor dengan batch berisi delapan elemen. Kata embedding di sini adalah pilihan antarmuka; tidak ada model yang dimuat dan tidak ada dependensi GPU yang diasumsikan terpasang. Tidak ada rahasia yang diperlukan untuk membaca atau memvalidasi berkas ini.

Modul standar tomllib, yang tersedia mulai Python 3.11, membaca format TOML. Modul ini mengubah nilai dari dokumen menjadi objek Python; modul ini tidak memutuskan bahwa batch bernilai nol dilarang dalam aplikasi Anda. Kontrol domain tetap eksplisit setelah pembacaan.

Cuplikan ini menerima tepat dua kunci dan dua mode. Untuk menggunakannya dalam sebuah proyek, sambungkan kemudian argumen, penanganan kesalahan, dan path keluaran. Penolakan yang diharapkan mudah dipahami: batch_size bernilai nol, batch_size berbentuk string, atau penambahan kunci token. Ini adalah kasus yang perlu Anda periksa sendiri, bukan hasil yang diukur di sini.

Parameter pengajaran config.toml — tanpa rahasia
batch_size = 8
mode = "embedding"
Pembacaan dan validasi pengajaran — cuplikan yang tidak dijalankan
import tomllib

with open("config.toml", "rb") as source:
    config = tomllib.load(source)

if set(config) != {"batch_size", "mode"}:
    raise ValueError("CONFIG_KEYS")
if type(config["batch_size"]) is not int or config["batch_size"] <= 0:
    raise ValueError("CONFIG_BATCH_SIZE")
if config["mode"] not in ("embedding", "classification"):
    raise ValueError("CONFIG_MODE")

public_config = {
    "batch_size": config["batch_size"],
    "mode": config["mode"],
}

4. Berikan rahasia hanya pada tahap yang membutuhkannya

Langkah yang bekerja pada file yang sudah ada tidak boleh menuntut token unduhan. Mintalah secret di batas tempat akses menjadi diperlukan. Jika langkah ini diaktifkan tetapi aksesnya tidak ada, hentikanlah dengan pesan yang menyebutkan kanal yang diharapkan, tanpa menampilkan nilai yang diterima maupun menyalin seluruh permintaan.

Kanal bergantung pada lingkungan yang tersedia: manajer secret, file kredensial dengan akses terbatas, atau mekanisme injeksi yang disediakan oleh organisasi Anda. Variabel lingkungan dapat berfungsi sebagai antarmuka, tetapi ia tetap data yang dapat diakses oleh proses dan berpotensi muncul dalam diagnostik. Jangan samakan kemudahan injeksi dengan perlindungan menyeluruh.

Batasi akses pada cakupan yang diperlukan dan siapkan penggantiannya. Permintaan penyiapan perangkat lunak tidak menjamin tersedianya manajer secret. Periksa mekanisme yang benar-benar tersedia sebelum menyusun peluncuran Anda di sekitarnya, lalu hindari meneruskan secret ke subproses yang tidak membutuhkannya.

5. Rancang log yang berguna tanpa menyalin masukan

Tentukan beberapa peristiwa: konfigurasi diterima, file diperiksa, partisi selesai, keluaran divalidasi. Kaitkan padanya pengenal eksekusi, langkah, dan penghitung. Kesalahan CONFIG_BATCH_SIZE sudah cukup untuk menemukan aturan terkait; ia tidak perlu memuat seluruh file.

OWASP merekomendasikan untuk mengecualikan antara lain kata sandi, token akses, dan kunci dari log. Terapkan aturan ini juga pada pengecualian, objek yang ditampilkan untuk debugging, dan keluaran sel. Penyamaran yang diterapkan pada layar terakhir tidak menghapus apa yang sudah tertulis dalam file atau tangkapan layar.

Untuk membagikan insiden, siapkan pilihan kecil: versi yang relevan, parameter yang diizinkan, kesalahan, dan contoh sintetis yang mereproduksi masalah. Hindari pengarsipan otomatis seluruh folder. Periksa ulang juga URL, header, path, dan baris di sekitar kesalahan; pesan yang tampak sepele bisa dikelilingi data sensitif.

6. Verifikasi pemisahan sebelum membagikan

Siapkan tiga uji: konfigurasi valid tanpa langkah jarak jauh, konfigurasi tidak valid, dan langkah yang menuntut akses yang tidak ada. Yang pertama harus dapat berjalan hingga batas fungsionalnya tanpa secret yang tidak perlu; dua lainnya harus menghasilkan kesalahan yang berbeda. Periksa juga bahwa perubahan publik pada ukuran batch muncul dalam konfigurasi efektif.

Untuk mengendalikan prosedur berbagi Anda, gunakan string sentinel yang jelas-jelas fiktif dan tanpa daya akses. Jalankanlah melalui lokasi yang sama dengan secret dalam latihan terisolasi, lalu carilah di log, ekspor, dan file yang dipilih. Ketidakhadirannya adalah kontrol terbatas atas jalur ini, bukan bukti bahwa semua kebocoran mustahil terjadi.

Tambahkan file privat yang sesuai ke pengecualian Git Anda, tetapi periksa juga file yang sudah dilacak. Dokumentasi Git menyatakan bahwa gitignore berlaku untuk file yang tidak dilacak; menambahkan pola tidak menghapus secret yang sudah tercatat. Periksa apa yang akan Anda kirimkan, bukan hanya aturan yang seharusnya mengecualikannya.

7. Tanggapi penyebaran dan simpan jejak yang dapat digunakan

Jika suatu akses telah terekspos, berhentilah menggunakannya kembali dan mintalah agar dicabut atau diganti pada sistem yang menerbitkannya. Menghapus satu baris dari file saat ini tidak membuat salinan sebelumnya menjadi tidak berbahaya. Identifikasi lokasi terkait untuk menghapus apa yang bisa dihapus dan memahami cakupan penyebarannya.

Folder reproduksibel Anda kemudian dapat menyimpan nama kanal yang digunakan dan parameter yang diizinkan, tanpa menyimpan secret itu sendiri. Peluncuran di masa depan akan meminta akses yang valid pada waktu yang tepat. Dengan begitu Anda memperoleh prosedur yang dapat diwariskan tanpa mengubah arsip eksperimen menjadi gantungan kunci akses.

Metode ini berlaku untuk aplikasi Anda dan hasil kerjanya. Ia tidak menjamin isolasi seluruh lingkungan maupun tidak adanya jejak teknis di tempat lain. Untuk beralih ke eksekusi, padukanlah dengan lingkungan yang terdokumentasi, data yang terkendali, dan pemantauan yang membedakan kemajuan dari hasil yang telah divalidasi.

Pertanyaan Anda

Apakah file .env cukup untuk melindungi secret?

Tidak. Itu hanyalah cara mengelompokkan nilai, bukan perlindungan yang berdiri sendiri. Kendalikan siapa yang boleh membacanya, bagaimana nilainya disuntikkan, dan file apa saja yang disalin. Jangan cetak isinya maupun seluruh environment proses.

Apakah menambahkan secret ke gitignore menghapus keberadaannya di Git?

Tidak. Pengecualian tidak menghapus file yang sudah dilacak maupun salinan lama. Jika akses sudah tersebar, minta akses itu dicabut atau diganti; tangani file dan riwayat terkait secara terpisah.

Bisakah sebuah eksperimen dibagikan tanpa membagikan aksesnya?

Bisa. Bagikan kode, dependensi, parameter yang diizinkan, dan deskripsi kanal akses yang diharapkan. Setiap eksekusi menerima aksesnya sendiri secara terpisah. Pastikan juga path, URL, data, dan log tidak mengungkapkan informasi sensitif.