Saya Meninggalkan dotenv demi Varlock (Inilah Alasannya)

BBetter Stack
Computing/SoftwareInternet Technology

Transcript

00:00:00Ini adalah Valor, alat sumber terbuka untuk mengelola variabel lingkungan yang memudahkan Anda
00:00:04agar tidak perlu lagi menyimpan rahasia teks biasa di disk dan bekerja dengan mengurai variabel lingkungan
00:00:10secara lokal atau melalui pengelola kata sandi seperti 1Password, Bitwarden, AWS, dan banyak lagi dengan menggunakan
00:00:16skema type-safe dan kemudian menyuntikkan rahasia Anda ke dalam aplikasi saat runtime, membuat file .env
00:00:21Anda aman untuk AI dan bahkan untuk diunggah secara publik ke GitHub. Tapi bagaimana cara kerjanya
00:00:27dan ada apa dengan sintaksis aneh ini? Klik subscribe dan mari kita bahas.
00:00:31Berapa kali Anda memulai peran dev baru, mendapatkan akses ke kode, menjalankannya secara lokal,
00:00:39dan ternyata tidak berhasil hanya karena Anda kekurangan file .env yang harus didapat dari pengembang lain
00:00:45atau semacam penyimpanan terenkripsi, dan Anda harus melalui proses ini berulang kali
00:00:50setiap kali file .env tersebut diperbarui. Inilah masalah yang ingin diselesaikan oleh Valor dan juga untuk memperbaiki
00:00:56masalah agen AI yang disuntikkan prompt yang mengambil rahasia yang tidak seharusnya mereka akses. Mari kita
00:01:02lihat cara kerjanya. Jadi, ini adalah proyek kecil yang sedang saya kerjakan yang menghasilkan artikel dari
00:01:06video Twitter menggunakan Whisper OpenAI untuk mentranskripsi video dan menggunakan Claude untuk menulis artikel.
00:01:12Tapi kita akan mulai dengan sesuatu yang sederhana dan menggunakan Valor untuk mengubah nomor port. Jadi, dengan Valor
00:01:17yang sudah terinstal, kita seharusnya memiliki file skema .env yang saat ini kosong. Ini akan menjadi sumber
00:01:23kebenaran untuk semua variabel lingkungan kita dan seharusnya bisa dikirim ke GitHub di
00:01:28repositori publik. Kita akan mulai dengan menambahkan variabel lingkungan appenv sederhana dan kita akan mengaturnya ke nilai
00:01:33testing, dan sekarang saya bisa membuat tab baru untuk menjalankan varlock load yang akan memvalidasi skema kita. Sekarang
00:01:39kita bisa melihat di sini ia telah membaca variabel lingkungan kita dan mengaturnya ke sensitive. Ini
00:01:43karena semua variabel lingkungan di varlock diatur ke sensitif secara default, tetapi kita bisa mengubahnya.
00:01:48Di file ini, saya akan menambahkan dekorator pertama kita yaitu dekorator root
00:01:52karena ini akan memengaruhi semua variabel lingkungan di file tersebut dan kita akan menyetel default
00:01:56sensitive ke false. Perhatikan sintaksis di sini memiliki tanda pagar di depannya dan biasanya variabel root
00:02:02dipisahkan dengan pembagi. Sekarang seluruh file ini menggunakan bahasa spesifik domain yang disebut mspec yang
00:02:08merupakan spek terbuka yang ditulis oleh tim varlock. Jadi sekarang jika saya memvalidasi skema saya lagi, kita bisa melihat
00:02:14nilai dari variabel lingkungan tersebut karena tidak lagi disetel ke sensitif. Tapi kita bisa melakukan beberapa
00:02:19hal keren lainnya di dalam file skema kita seperti memberikan tipe pada variabel lingkungan kita. Jadi saya akan
00:02:24memberinya tipe string yang berarti semuanya akan tetap berfungsi, tetapi jika saya mengubahnya menjadi
00:02:29number, maka kita bisa melihat kita mendapat kesalahan karena ia mengharapkan string. Saya juga bisa memberinya
00:02:33dekorator required dan kemudian menghapus teks ini, yang berarti jika kita memeriksa file kita, kita mendapat kesalahan
00:02:39karena ia mengharapkan sebuah nilai. Ini disebut dekorator item dan Anda dapat menemukan daftar lengkap
00:02:44dekorator tersebut di dokumentasi varlock serta daftar lengkap tipe yang tersedia. Mari kita tambahkan
00:02:50variabel lingkungan lain dan kali ini kita akan menamakannya port dengan nilai 3002. Saya bisa memberinya
00:02:55tipe port dan apa yang juga akan saya lakukan di sini adalah mengatur ini ke sensitif dan mengubah ini kembali ke
00:03:01string. Sekarang ia telah mengambil kedua variabel lingkungan kita dan menyembunyikan ini karena sensitif.
00:03:05Tapi sekarang bagaimana cara memasukkan nilai-nilai ini ke dalam aplikasi kita? Nah, yang harus kita lakukan hanyalah menjalankan
00:03:10varlock run diikuti oleh skrip yang kita perlukan untuk menjalankan aplikasi kita. Jadi jika saya melihat isi file package JSON,
00:03:15kita bisa melihat kita perlu menjalankan perintah vite untuk menjalankan frontend. Jadi sekarang jika saya menjalankan varlock run diikuti
00:03:21oleh perintah vite, ia akan memuat konfigurasi, mengurainya, dan kemudian menyuntikkannya ke dalam variabel
00:03:27lingkungan kita, yang persis seperti yang dilakukannya karena sekarang portnya adalah 3002 yang berfungsi di kode kita
00:03:33karena ia pertama-tama memeriksa variabel lingkungan port yang saat ini sedang disuntikkan oleh varlock.
00:03:38Skrip ini tidak harus berupa file javascript karena varlock berfungsi untuk proyek apa pun, jadi
00:03:43Python, Go, Rust, apa pun itu, semuanya akan tetap berfungsi seperti yang diharapkan dan jika Anda tidak ingin
00:03:48menginstalnya dengan npm, maka ada juga varlock cli yang berfungsi sama. Ini semua bagus untuk
00:03:54variabel lingkungan lokal, tapi sekarang mari kita lalui proses pengambilannya dari 1Password
00:03:59alih-alih menggunakan variabel lokal shell saya untuk hal-hal seperti kunci API OpenAI dan Anthropic ini.
00:04:05Sekarang, saya tidak menggunakan 1Password secara pribadi, saya mendaftar uji coba hanya untuk membuat video ini, tetapi seperti yang
00:04:11Anda lihat, saya telah membuat vault baru yang sangat penting, saya akan jelaskan alasannya nanti, dan di dalam
00:04:16vault ini kita memiliki dua item, satu adalah kunci API OpenAI dan satu lagi adalah kunci API Anthropic yang tidak keberatan
00:04:24saya perlihatkan karena semuanya buatan, jadi jika saya ungkapkan, ini bukan kunci API asli. Sekarang, agar
00:04:30bisa memasukkan nilai-nilai tersebut ke dalam skema varlock kita, pertama-tama kita perlu menginstal plugin 1Password
00:04:36dan perhatikan bahwa plugin di varlock dapat menambahkan dekorator root dan item mereka sendiri, jadi Anda mungkin melihat beberapa yang baru
00:04:42di sini yang tidak ada di dalam dokumentasi, misalnya dekorator init 1Password ini, jadi setelah
00:04:49menginstal varlock 1Password, kita dapat memuat dekorator root plugin yang berisi plugin yang baru saja kita
00:04:55instal dan kita dapat menjalankan dekorator init 1Password, jadi yang saya butuhkan saat ini hanyalah tokennya
00:05:01yang bisa saya muat dari sini. Sekarang, untuk mendapatkan token ini, Anda memang harus menghubungkannya ke vault baru,
00:05:06bukan yang pribadi, dan Anda dapat menemukannya di developer service account kemudian ikuti langkah-langkahnya
00:05:11untuk membuat token. Sekarang karena saya akan menghapus token dan akun 1Password saya setelah video ini,
00:05:15saya tidak keberatan memperlihatkannya dan saya akan memberikan tipe one password service token yang diatur
00:05:21ke sensitif dan merupakan tipe yang berasal dari plugin ini. Anda mungkin juga memperhatikan bahwa file ini tidak
00:05:26memiliki penyorotan sintaksis dan itu karena tim varlock telah membuat plugin VS Code
00:05:32yang mendukungnya, tetapi saat ini belum ada untuk neovim yang artinya saya mungkin akan membuatnya di
00:05:37masa depan atau menyuruh Claude untuk melakukannya. Sekarang saya akan membuat variabel lingkungan baru yang disebut openai
00:05:43api key id dan kemudian untuk mendapatkannya dari 1Password saya harus menjalankan fungsi 1Password
00:05:49diikuti oleh protokol ini dan kemudian saya perlu menambahkan nama vault saya yaitu test, nama
00:05:55itemnya yaitu openai, dan kemudian nama fieldnya yang jika kita periksa lagi kita bisa melihat di sini bahwa itu adalah
00:06:02credential. Saya juga bisa mengaturnya ke sensitif dan sekarang jika kita menjalankan varlock load, perlu beberapa detik
00:06:08sebelum mendapatkan kunci API OpenAI saya dari 1Password dan kita bisa memastikan ini berfungsi bahkan dengan mengubah
00:06:14nilainya di sini menjadi sesuatu seperti 1234 dan jika kita menjalankan varlock load lagi, ia mendapatkan nilai
00:06:20yang benar dan begitulah, file skema env kita seharusnya siap untuk di-commit tapi saya tahu apa yang Anda
00:06:25pikirkan, bagaimana dengan token 1Password ini, apakah itu aman? Sejujurnya jika Anda sedang mengembangkan
00:06:31secara lokal dan Anda memiliki 1Password, Anda mungkin sudah menginstal aplikasi desktop atau menggunakan CLI,
00:06:38dalam hal ini Anda dapat menggunakan konfigurasi ini untuk membuka kunci 1Password dengan sidik jari Anda alih-alih menggunakan
00:06:43token 1Password, tetapi varlock juga mendukung plugin lain seperti untuk AWS, GCP, dan bahkan Bitwarden
00:06:52serta banyak integrasi lainnya termasuk untuk Vite, Next.js, dan Cloudflare Workers. Ada
00:06:57juga begitu banyak fitur lain yang tidak sempat saya bahas seperti menghasilkan tipe TypeScript dari
00:07:03skema Anda, mengimpor variabel lingkungan dari file lain, dan bahkan menyensor output sensitif
00:07:08dari log dan respons HTTP keluar yang merupakan sentuhan yang sangat bagus, bahkan ada server MCP untuk
00:07:15membantu agen pengodean Anda menyiapkan skema env untuk Anda secara otomatis dan ada juga GitHub Action
00:07:21untuk memuat dan memvalidasi variabel lingkungan Anda dalam proses CI/CD Anda, tetapi secanggih apa pun varlock,
00:07:27ada beberapa masalah dengannya, misalnya Anda tidak dapat menggunakannya secara luring, jadi jika Anda sedang mengode di bandara, Anda
00:07:32harus menggunakan variabel lingkungan yang di-hardcode tetapi sejujurnya siapa yang benar-benar mengode tanpa
00:07:37internet? Juga berbicara tentang internet, ada sedikit penundaan saat mengambil kata sandi dari
00:07:41penyedia yang berbeda sehingga akan memakan waktu sedikit lebih lama untuk memulai skrip Anda. Ada juga
00:07:46kurangnya penyedia seperti Dashlane dan lainnya, dan saya sempat mengalami bug aneh di mana jika saya menggunakan nama
00:07:53yang sama di file skema saya dengan nama variabel lingkungan untuk shell lokal saya, ia menggunakan variabel
00:07:59lingkungan lokal tersebut alih-alih yang dari 1Password, tetapi varlock sedang dikembangkan secara aktif
00:08:05dan saya yakin banyak dari hal ini akan diatasi di masa depan. Meskipun demikian, produk ini
00:08:10sebagaimana adanya saat ini masih sangat berguna bagi saya dan saya pikir saya akan menggunakannya untuk semua
00:08:16proyek sampingan saya ke depannya dan mungkin bahkan mengganti file shell lokal saya dengan file skema varlock
00:08:21jika ada cara untuk melakukannya, saya sangat berharap ada karena saya tidak ingin ada agen yang mengambil
00:08:26informasi saya.

Key Takeaway

Varlock merevolusi manajemen rahasia dengan mengganti file .env tradisional yang tidak aman dengan skema terpusat, type-safe, dan terintegrasi dengan pengelola kata sandi untuk keamanan maksimal saat runtime.

Highlights

Varlock adalah alat sumber terbuka yang mengelola variabel lingkungan tanpa menyimpan rahasia dalam teks biasa di disk.

Menggunakan skema type-safe dengan bahasa spesifik domain (DSL) bernama mspec untuk validasi data.

Mendukung integrasi dengan pengelola kata sandi populer seperti 1Password, Bitwarden, AWS, dan GCP.

Memungkinkan file skema .env diunggah secara publik ke GitHub karena nilai sensitif disuntikkan saat runtime.

Menyediakan fitur keamanan tambahan seperti penyensoran otomatis pada log dan respons HTTP keluar.

Varlock bersifat agnostik bahasa, sehingga dapat bekerja dengan proyek Python, Go, Rust, JavaScript, dan lainnya.

Terdapat dukungan untuk ekosistem modern seperti Vite, Next.js, Cloudflare Workers, dan GitHub Actions.

Timeline

Pengenalan Varlock dan Masalah File .env Tradisional

Pembicara memperkenalkan Varlock sebagai solusi modern untuk mengelola variabel lingkungan tanpa risiko kebocoran data rahasia. Masalah utama yang diangkat adalah ketidakefisienan berbagi file .env secara manual antar pengembang saat memulai proyek baru. Varlock bekerja dengan menyuntikkan rahasia langsung ke aplikasi saat runtime dari berbagai sumber terpercaya. Pendekatan ini diklaim membuat alur kerja lebih aman, terutama terhadap ancaman agen AI yang mungkin mengakses rahasia yang tidak sah. Dengan menggunakan Varlock, pengembang tidak perlu lagi khawatir tentang menyimpan teks biasa di penyimpanan lokal mereka.

Dasar-Dasar Skema mspec dan Validasi Tipe Data

Bagian ini mendemonstrasikan cara kerja file skema .env menggunakan bahasa spesifik domain bernama mspec. Pembicara menunjukkan cara menentukan variabel lingkungan sederhana seperti 'appenv' dan memberikan tipe data spesifik seperti string atau number. Fitur dekorator root digunakan untuk mengatur perilaku default, seperti menonaktifkan status sensitif pada seluruh file agar nilainya bisa terlihat saat validasi. Varlock secara otomatis menandai semua variabel sebagai sensitif secara default untuk menjaga keamanan maksimal. Validasi ini memastikan bahwa aplikasi hanya berjalan jika semua variabel lingkungan memenuhi kriteria tipe dan keberadaan yang diwajibkan.

Integrasi Runtime dan Penggunaan CLI

Setelah skema dikonfigurasi, pembicara menjelaskan cara menyuntikkan nilai-nilai tersebut ke dalam aplikasi menggunakan perintah 'varlock run'. Contoh yang diberikan adalah menjalankan proyek frontend berbasis Vite, di mana Varlock secara otomatis memuat dan mengurai konfigurasi sebelum mengeksekusi skrip utama. Hal ini membuktikan bahwa Varlock sangat fleksibel dan tidak terbatas pada ekosistem JavaScript saja, melainkan mendukung Python, Go, dan Rust. Pengguna juga memiliki pilihan untuk menggunakan npm atau menginstal CLI secara mandiri. Proses ini menyederhanakan peluncuran aplikasi karena semua variabel lingkungan sudah terintegrasi secara mulus ke dalam proses runtime.

Integrasi 1Password dan Pengambilan Rahasia Eksternal

Pembicara menunjukkan fitur paling kuat dari Varlock, yaitu kemampuan untuk mengambil rahasia langsung dari pengelola kata sandi seperti 1Password. Proses ini melibatkan penggunaan plugin khusus yang memungkinkan pengambilan kunci API OpenAI dan Anthropic melalui protokol tertentu di dalam file skema. Penggunaan token layanan 1Password atau otentikasi biometrik melalui aplikasi desktop dijelaskan sebagai cara yang aman untuk menghubungkan vault. File skema yang berisi referensi ke 1Password tetap aman untuk dikirim ke repositori publik karena tidak mengandung rahasia yang sebenarnya. Ini menghilangkan kebutuhan untuk menyimpan kunci API yang berisiko tinggi di dalam file teks lokal pengembang.

Fitur Lanjutan, Kekurangan, dan Kesimpulan

Varlock menawarkan berbagai fitur tambahan seperti pembuatan tipe TypeScript otomatis, penyensoran log sensitif, dan integrasi CI/CD melalui GitHub Actions. Meskipun sangat canggih, pembicara mencatat beberapa kekurangan seperti ketergantungan pada koneksi internet dan adanya sedikit penundaan waktu muat saat mengambil data dari penyedia eksternal. Ada juga beberapa bug minor terkait prioritas variabel lingkungan lokal dibandingkan variabel dari pengelola kata sandi. Namun, keunggulan dalam mencegah kebocoran informasi ke agen pengodean otomatis dianggap jauh lebih berharga daripada kekurangannya. Pembicara menyimpulkan bahwa ia akan beralih sepenuhnya ke Varlock untuk semua proyek masa depannya guna meningkatkan standar keamanan pengembangan.

Community Posts

View all posts