Bagikan melalui


Fitur keamanan Live Share

Sesi kolaborasi di Visual Studio Live Share sangat kuat karena mereka memungkinkan sejumlah orang untuk bergabung dalam sesi dan mengedit, men-debug, dan banyak lagi secara kolaboratif. Namun, mengingat tingkat akses ini, Anda tidak diragukan lagi akan tertarik dengan fitur keamanan yang disediakan Live Share. Dalam artikel ini, kami akan memberikan beberapa rekomendasi dan opsi untuk mengamankan lingkungan Anda sesuai kebutuhan.

Seperti halnya alat kolaborasi apa pun, ingatlah bahwa Anda hanya boleh berbagi kode, konten, dan aplikasi Anda dengan orang yang Anda percayai.

Konektivitas

Saat memulai sesi antara serekan, Live Share mencoba membuat koneksi peer-to-peer, dan hanya jika itu tidak memungkinkan (misalnya karena firewall/NAT), apakah itu kembali menggunakan relai cloud. Namun, dalam kedua jenis koneksi (P2P atau relai), semua data yang dikirimkan antara rekan-rekan dienkripsi end-to-end menggunakan protokol SSH. Dalam kasus koneksi relai, enkripsi SSH berlapis di atas WebSocket terenkripsi TLS. Ini berarti bahwa Live Share tidak bergantung pada layanan relai cloud untuk keamanan. Bahkan jika relai disusupi, relay tidak dapat mendekripsi komunikasi Live Share apa pun.

Peran layanan Live Share terbatas pada autentikasi pengguna dan penemuan sesi. Layanan itu sendiri tidak menyimpan atau pernah memiliki akses apa pun dari konten sesi. Semua konten pengguna di Live Share dikirimkan melalui sesi SSH. Itu termasuk kode, terminal, server bersama, dan fitur kolaborasi lainnya yang disediakan oleh Live Share atau ekstensi yang dibangun di atasnya.

Untuk mengetahui selengkapnya tentang mengubah perilaku ini dan persyaratan konektivitas Live Share, lihat persyaratan konektivitas untuk Live Share.

Enkripsi Kawat

Protokol SSH menggunakan pertukaran kunci Diffie-Hellman untuk membangun rahasia bersama untuk sesi tersebut, dan berasal dari kunci untuk enkripsi simetris AES. Kunci enkripsi diputar secara berkala selama durasi sesi. Rahasia sesi bersama dan semua kunci enkripsi hanya dipertahankan dalam memori di kedua sisi, dan hanya berlaku selama durasi sesi. Mereka tidak pernah ditulis ke disk atau dikirim ke layanan apa pun (termasuk Live Share).

Autentikasi Serekan

Sesi SSH juga diautentikasi dua arah. Host (peran server SSH) menggunakan autentikasi kunci publik/privat sebagaimana standar untuk protokol SSH. Saat host berbagi sesi Berbagi Langsung, host menghasilkan pasangan kunci publik/privat RSA unik untuk sesi tersebut. Kunci privat host hanya disimpan dalam memori dalam proses host; tidak pernah ditulis ke disk atau dikirim ke layanan apa pun termasuk layanan Live Share. Kunci publik host diterbitkan ke layanan Live Share bersama dengan informasi koneksi sesi (alamat IP dan/atau titik akhir relai) tempat tamu dapat mengaksesnya melalui tautan undangan. Ketika tamu terhubung ke sesi SSH host, tamu menggunakan protokol autentikasi host SSH untuk memvalidasi bahwa host memegang kunci privat yang sesuai dengan kunci umum yang diterbitkan (tanpa tamu benar-benar melihat kunci privat).

Tamu menggunakan token Live Share untuk mengautentikasi dirinya sendiri dengan host. Token adalah JWT yang ditandatangani yang dikeluarkan oleh layanan Live Share yang mencakup klaim tentang identitas pengguna (diperoleh melalui masuk MSA, AAD, atau GitHub). Token juga memiliki klaim yang menunjukkan bahwa tamu diizinkan untuk mengakses sesi Live Share tertentu (karena mereka memiliki tautan undangan dan/atau mereka secara khusus diundang oleh host). Host memvalidasi token tersebut dan memeriksa klaim (dan tergantung pada opsi dapat meminta pengguna host) sebelum mengizinkan tamu untuk bergabung dengan sesi.

Undangan dan akses gabungan

Setiap kali Anda memulai sesi kolaborasi baru, Live Share menghasilkan pengidentifikasi unik baru yang ditempatkan di tautan undangan. Tautan ini memberikan fondasi yang solid dan aman untuk mengundang mereka yang Anda percayai karena pengidentifikasi dalam tautan "tidak dapat ditebak" dan hanya berlaku selama satu sesi kolaborasi.

Menghapus tamu tak terduga

Sebagai host, Anda secara otomatis diberi tahu setiap kali tamu bergabung dengan sesi kolaborasi.

Di Visual Studio Code:

Visual Studio Code join notification

Di Visual Studio:

Visual Studio join notification

Lebih baik lagi, pemberitahuan memberi Anda kemampuan untuk menghapus tamu yang telah bergabung jika karena alasan tertentu Anda tidak mengenalnya. (Misalnya, jika Anda secara tidak sengaja memposting tautan Anda pada sistem obrolan di seluruh perusahaan dan karyawan acak yang bergabung.) Cukup klik tombol "Hapus" di pemberitahuan yang muncul dan mereka akan dikeluarkan dari sesi kolaborasi.

Di Visual Studio Code, bahkan jika Anda telah menutup pemberitahuan gabungan, Anda juga memiliki kemampuan untuk menghapus peserta setelah itu. Dengan membuka tampilan Berbagi Langsung di Explorer atau tab kustom di bilah aktivitas Visual Studio Code, Anda dapat mengarahkan kursor ke atas atau mengklik kanan nama peserta dan memilih ikon atau opsi "Hapus peserta".

Remove participant in VS Code

Membutuhkan persetujuan tamu

Biasanya, peserta yang bergabung dalam sesi kolaborasi akan masuk ke Live Share menggunakan akun kerja atau sekolah Microsoft (AAD), akun Microsoft pribadi, atau akun GitHub. Meskipun default "pemberitahuan + hapus" untuk pengguna yang masuk memberikan campuran kecepatan dan kontrol yang baik untuk tamu ini, Anda mungkin ingin mengunci sedikit lebih banyak jika Anda melakukan sesuatu yang sensitif.

Selain itu, dalam keadaan tertentu memaksa semua tamu untuk masuk untuk bergabung dengan sesi kolaborasi bisa bermasalah. Contohnya termasuk meminta seseorang yang baru menggunakan Live Share untuk bergabung sebagai tamu, skenario kelas/pembelajaran, atau saat berkolaborasi dengan seseorang yang tidak memiliki salah satu jenis akun yang didukung. Untuk alasan ini, Live Share dapat memungkinkan pengguna yang tidak masuk untuk bergabung dengan sesi kolaborasi sebagai tamu baca-saja . Meskipun tuan rumah perlu menyetujui tamu ini sebelum mereka dapat bergabung secara default, Anda mungkin ingin melarang tamu "anonim" ini atau selalu menyetujuinya sebagai gantinya.

Memerlukan persetujuan tamu untuk pengguna yang masuk

Jika Anda ingin mencegah tamu yang masuk bergabung dengan sesi kolaborasi hingga Anda "menyetujui" mereka, ubah pengaturan berikut:

  • Di Visual Studio Code, tambahkan yang berikut ini ke settings.json (Preferensi > File > Pengaturan):

    "liveshare.guestApprovalRequired": true
    
  • Di Visual Studio, atur Opsi > Alat > Berbagi > Langsung "Memerlukan persetujuan tamu" ke True.

    Visual Studio settings window with guest approval setting highlighted

Dari titik ini ke depan, Anda akan diminta untuk menyetujui setiap tamu yang bergabung.

Di Visual Studio Code:

Visual Studio Code join approval request

Di Visual Studio:

Visual Studio join approval request

Sebagai tamu, jika Anda bergabung dengan sesi di mana host mengaktifkan pengaturan ini, Anda akan diberi tahu di bilah status atau bergabung dengan dialog bahwa Live Share sedang menunggu host untuk disetujui.

Menolak atau menerima pengguna secara otomatis yang tidak masuk (anonim)

Seperti yang dijelaskan di atas, Live Share dapat dikonfigurasi untuk memungkinkan pengguna yang tidak masuk untuk bergabung dengan sesi kolaborasi sebagai tamu baca-saja . Meskipun tamu "anonim" ini harus memasukkan nama saat bergabung, nama sederhana tidak memberikan tingkat jaminan yang sama dengan rincian masuk nyata. Oleh karena itu, secara default, host diminta untuk menyetujui setiap tamu anonim terlepas dari pengaturan "memerlukan persetujuan tamu" yang dijelaskan di atas.

Anda selalu dapat menolak (menonaktifkan tamu anonim) atau selalu menerima pengguna anonim sebagai gantinya sebagai berikut:

  • Di Visual Studio Code, atur liveshare.anonymousGuestApproval di settings.json (Preferensi > File > Pengaturan) ke accept, , rejectatau prompt (default) yang sesuai.

  • Di Visual Studio, atur Opsi > Alat > Berbagi > Langsung "Persetujuan tamu anonim" ke Terima, Tolak, atau Perintah (default) sebagaimana mewajarkan.

Terlepas dari itu, ingatlah bahwa Anda hanya boleh mengirim tautan undangan Berbagi Langsung ke orang yang Anda percayai.

Mengizinkan kontrol perintah tamu

VS Code: The host doesn't allowing running this command.

Untuk mengizinkan tamu menjalankan perintah arbitrer melalui Tindakan Kode ("Perbaikan Cepat") dan CodeLens mengatur pengaturan berikut:

  • Di Visual Studio Code, atur liveshare.languages.allowGuestCommandControl di settings.json (Preferensi > File > Pengaturan) ke true atau false (default).

Mengontrol akses dan visibilitas file

Sebagai tamu, model jarak jauh Live Share memberi Anda akses baca/tulis cepat ke file dan folder yang dibagikan host dengan Anda tanpa harus menyinkronkan seluruh konten proyek. Oleh karena itu, Anda dapat menavigasi dan mengedit file secara independen di seluruh pohon file bersama. Namun, kebebasan ini memang menimbulkan beberapa risiko kepada tuan rumah. Dalam konsep, pengembang dapat memilih untuk masuk dan memodifikasi kode sumber tanpa sepengetahuan Anda atau melihat kode sumber sensitif atau "rahasia" yang terletak di suatu tempat di pohon file bersama. Akibatnya, sebagai host, Anda mungkin tidak selalu ingin tamu memiliki akses ke keseluruhan proyek yang Anda bagikan. Untungnya, keuntungan tambahan dari model jarak jauh ini adalah Anda dapat memilih untuk "mengecualikan" file yang tidak ingin Anda bagikan dengan siapa pun tanpa mengorbankan fungsionalitas. Tamu Anda masih dapat berpartisipasi dalam hal-hal seperti sesi penelusuran kesalahan yang biasanya memerlukan akses ke file-file ini jika mereka ingin melakukannya sendiri.

Anda dapat menyelesaikan ini dengan menambahkan file .vsls.json ke folder atau proyek yang Anda bagikan. Pengaturan apa pun yang Anda tambahkan ke file berformat json ini mengubah cara Live Share memproses file. Selain memberi Anda kontrol langsung, file-file ini juga dapat berkomitmen untuk kontrol sumber sehingga siapa pun yang mengkloning proyek akan dapat memanfaatkan aturan ini tanpa upaya tambahan dari bagian mereka.

Berikut adalah contoh file .vsls.json:

{
    "$schema": "http://json.schemastore.org/vsls",
    "gitignore":"none",
    "excludeFiles":[
        "*.p12",
        "*.cer",
        "token",
        ".gitignore"
    ],
    "hideFiles": [
        "bin",
        "obj"
    ]
}

Catatan

Anda juga dapat membuat semua file/folder yang Anda bagikan baca-saja saat memulai sesi kolaborasi. Lihat di bawah ini untuk detailnya.

Mari kita telusuri bagaimana properti ini mengubah apa yang dapat dilakukan tamu.

Properti

Properti excludeFiles memungkinkan Anda menentukan daftar pola file glob (sangat mirip dengan file .gitignore yang ditemukan) yang mencegah Live Share membuka file atau folder tertentu untuk tamu. Ketahuilah bahwa ini termasuk skenario seperti tamu yang mengikuti atau melompat ke lokasi edit Anda, melangkah ke file selama penelusuran kesalahan kolaboratif, fitur navigasi kode apa pun seperti masuk ke definisi, dan banyak lagi. Ini ditujukan untuk file yang tidak pernah ingin Anda bagikan dalam keadaan apa pun seperti yang berisi rahasia, sertifikat, atau kata sandi. Misalnya, karena mereka mengontrol keamanan, file .vsls.json selalu dikecualikan.

Properti hideFiles mirip, tetapi tidak seketat. File-file ini hanya tersembunyi dari pohon file. Misalnya, jika Anda kebetulan melangkah ke salah satu file ini selama penelusuran kesalahan, file masih dibuka di editor. Properti ini terutama berguna jika Anda tidak memiliki penyiapan file .gitignore (seperti halnya jika Anda menggunakan sistem kontrol sumber yang berbeda) atau jika Anda hanya ingin menambah apa yang sudah ada untuk menghindari kekacauan atau kebingungan.

Pengaturan gitignore menetapkan bagaimana Live Share harus memproses konten file .gitignore di folder bersama. Secara default, setiap glob yang ditemukan dalam file .gitignore diperlakukan seolah-olah mereka ditentukan dalam properti "hideFiles". Namun, Anda dapat memilih perilaku yang berbeda menggunakan salah satu nilai berikut:

Opsi Hasil
none Konten .gitignore terlihat oleh tamu di pohon file (dengan asumsi mereka tidak difilter oleh pengaturan editor tamu).
hide Default. Glob di dalam .gitignore diproses seolah-olah mereka berada di properti "hideFiles".
exclude Glob di dalam .gitignore diproses seolah-olah mereka berada di properti "excludeFiles".

Kelemahan dari exclude pengaturan adalah bahwa konten folder seperti node_modules sering berada di .gitignore tetapi dapat berguna untuk melangkah selama penelusuran kesalahan. Akibatnya, Live Share mendukung kemampuan untuk membalikkan aturan menggunakan "!" di properti excludeFiles. Misalnya, file .vsls.json ini akan mengecualikan semuanya di ".gitignore" kecuali untuk node_modules:

{
    "$schema": "http://json.schemastore.org/vsls",
    "gitignore":"exclude",
    "excludeFiles":[
        "!node_modules"
    ]
}

Aturan sembunyikan dan kecualikan diproses secara terpisah, jadi jika Anda masih ingin menyembunyikan node_modules untuk mengurangi kekacauan tanpa benar-benar mengecualikannya, Anda cukup mengedit file sebagai berikut:

{
    "$schema": "http://json.schemastore.org/vsls",
    "gitignore":"exclude",
    "excludeFiles":[
        "!node_modules"
    ],
    "hideFiles":[
        "node_modules"
    ]
}

File .vsls.json dalam sub-folder

Terakhir, seperti .gitignore, file .vsls.json dapat ditempatkan di sub-folder. Aturan Sembunyikan/kecualikan ditentukan dengan memulai dengan file .vsls.json di folder akar yang telah Anda bagikan (jika ada) lalu berjalan di setiap sub-folder dari sana yang mengarah ke file tertentu untuk mencari file .vsls.json untuk diproses. Konten file .vsls.json dalam folder lebih jauh ke bawah pohon file lalu aturan suplemen (atau ambil alih) yang ditetapkan pada tingkat yang lebih tinggi.

Catatan: tidak dimungkinkan untuk menyertakan kembali (!) file jika direktori induk file tersebut dikecualikan. Mirip dengan .gitignore, saat menyertakan ulang file, Anda juga harus menyertakan ulang setiap direktori induk file.

Menonaktifkan berbagi file eksternal

Secara default, Live Share juga akan berbagi file apa pun yang dibuka host yang berada di luar folder / solusi bersama. Ini memudahkan untuk dengan cepat membuka file terkait lainnya tanpa harus berbagi ulang.

Jika Anda lebih suka menonaktifkan fitur ini:

  • Di Visual Studio Code, tambahkan yang berikut ini ke settings.json:

    "liveshare.shareExternalFiles": false
    
  • Di Visual Studio, atur Opsi > Alat > Berbagi > Langsung "Bagikan File Eksternal" ke False

Mode baca-saja

Terkadang ketika Anda berbagi kode sebagai host, Anda tidak ingin tamu Anda melakukan pengeditan. Anda mungkin memerlukan tamu Anda untuk melihat beberapa kode Anda, atau Anda menunjukkan proyek Anda kepada sejumlah besar tamu dan tidak ingin pengeditan yang tidak perlu atau tidak disengaja dilakukan. Live Share menawarkan kemampuan untuk berbagi proyek dalam mode baca-saja.

Sebagai host, saat berbagi, Anda memiliki opsi untuk mengaktifkan mode baca-saja untuk sesi kolaborasi. Ketika tamu bergabung, mereka tidak akan dapat mengedit kode, meskipun Anda masih dapat melihat kursor dan sorotan satu sama lain serta menavigasi melalui proyek.

Anda masih dapat melakukan debug bersama dengan tamu saat dalam mode baca-saja. Tamu tidak akan memiliki kemampuan untuk menelusuri proses penelusuran kesalahan, tetapi masih dapat menambahkan atau menghapus titik henti, dan memeriksa variabel. Selain itu, Anda masih dapat berbagi server dan terminal (baca-saja) dengan tamu.

Anda dapat mempelajari selengkapnya tentang memulai sesi kolaborasi baca-saja: VS CodeVS

Penelusuran kesalahan bersama

Ketika Anda mengatasi masalah atau bug pengkodian yang keras, memiliki sepasang mata ekstra ketika penelusuran kesalahan dapat sangat berguna. Visual Studio Live Share memungkinkan "penelusuran kesalahan kolaboratif" atau "penelusuran kesalahan bersama" dengan berbagi sesi penelusuran kesalahan dengan semua tamu setiap kali host memulai penelusuran kesalahan.

Sebagai host, Anda berada dalam kontrol penuh ketika sesi penelusuran kesalahan dimulai atau berhenti, tetapi penelusuran kesalahan bersama menimbulkan beberapa risiko jika Anda berbagi dengan seseorang yang tidak Anda percayai. Live Share memungkinkan tamu yang Anda undang untuk menjalankan perintah konsol/REPL dan oleh karena itu ada risiko aktor jahat yang menjalankan perintah yang anda tidak ingin mereka jalankan.

Akibatnya, Anda hanya boleh melakukan debug bersama dengan orang yang Anda percayai.

Pelajari selengkapnya: VS CodeVS

Berbagi server lokal

Saat penelusuran kesalahan bersama, sangat berguna untuk mendapatkan akses ke berbagai bagian aplikasi yang dilayani oleh host untuk sesi penelusuran kesalahan. Anda mungkin ingin mengakses aplikasi di browser, mengakses database lokal, atau menekan titik akhir REST dari alat Anda. Live Share memungkinkan Anda "berbagi server" yang memetakan port lokal pada komputer host ke port yang sama persis pada komputer tamu. Sebagai tamu, Anda kemudian dapat berinteraksi dengan aplikasi persis seolah-olah berjalan secara lokal di komputer Anda (misalnya host dan tamu dapat mengakses aplikasi web yang berjalan di http://localhost:3000).

Namun, sebagai host, Anda harus sangat selektif dengan port yang Anda bagikan dengan tamu dan hanya berbagi port aplikasi, bukan port sistem. Untuk tamu, port bersama akan berulah persis seperti yang mereka lakukan jika server/layanan berjalan di komputer mereka sendiri. Ini sangat berguna, tetapi jika port yang salah dibagikan juga bisa berisiko. Untuk alasan ini, Live Share tidak membuat asumsi apa pun tentang apa yang harus atau tidak boleh dibagikan tanpa pengaturan konfigurasi dan host yang melakukan tindakan.

Di Visual Studio, port aplikasi web yang ditentukan dalam proyek ASP.NET secara otomatis dibagikan selama penelusuran kesalahan hanya untuk memfasilitasi akses tamu ke aplikasi web saat berjalan. Namun, Anda dapat menonaktifkan otomatisasi ini dengan mengatur Opsi Alat >> Berbagi > Langsung "Bagikan aplikasi web di debug" ke "False" jika Anda mau.

Di Visual Studio Code, Live Share mencoba mendeteksi port aplikasi yang tepat dan membagikannya. Namun, Anda dapat menonaktifkan ini dengan menambahkan yang berikut ini ke settings.json:

"liveshare.autoShareServers": false

Dalam kedua kasus, berhati-hatilah saat berbagi port tambahan.

Anda dapat mempelajari selengkapnya tentang mengonfigurasi fitur di sini: VS CodeVS

Berbagi terminal

Pengembangan modern sering menggunakan berbagai alat baris perintah. Untungnya, Live Share memungkinkan Anda sebagai tuan rumah untuk secara opsional "berbagi terminal" dengan tamu. Terminal bersama dapat bersifat baca-saja atau kolaboratif sepenuhnya sehingga Anda dan tamu dapat menjalankan perintah dan melihat hasilnya. Sebagai host, Anda dapat mengizinkan kolaborator lain untuk melihat output atau menggunakan sejumlah alat baris perintah untuk menjalankan pengujian, build, atau bahkan masalah khusus lingkungan triase.

Hanya host yang dapat memulai terminal bersama untuk mencegah tamu memulainya dan melakukan sesuatu yang tidak Anda harapkan atau tonton. Saat Anda memulai terminal bersama sebagai host, Anda dapat menentukan apakah itu harus baca-saja atau baca/tulis. Ketika terminal dibaca/ditulis, semua orang dapat mengetik di terminal termasuk host yang memudahkan untuk campur tangan jika tamu melakukan sesuatu yang tidak Anda sukai. Namun, agar aman, Anda hanya boleh memberikan akses baca/tulis kepada tamu ketika Anda tahu bahwa mereka benar-benar membutuhkannya dan tetap menggunakan terminal baca-saja untuk skenario di mana Anda hanya ingin tamu melihat output dari perintah apa pun yang Anda jalankan.

Di Visual Studio, terminal tidak dibagikan secara default. Di Visual Studio Code, terminal secara otomatis dibagikan baca-saja secara default. Namun, Anda dapat menonaktifkan ini dengan menambahkan yang berikut ini ke settings.json:

"liveshare.autoShareTerminals": false

Pelajari selengkapnya: VS CodeVS

Saat masuk menggunakan alamat email kantor atau sekolah yang didukung Microsoft, Anda mungkin melihat pesan yang mengatakan "Perlu persetujuan admin" saat masuk. Ini karena Live Share memerlukan akses baca ke informasi pengguna untuk fitur keamanannya dan penyewa Azure AD Anda disiapkan untuk memerlukan "persetujuan admin" untuk aplikasi baru yang mengakses konten direktori.

Admin AD Anda harus mengatasinya untuk Anda menggunakan informasi berikut:

Ini hanya perlu dilakukan sekali untuk siapa pun yang menggunakan Live Share. Lihat di sini dan di sini untuk detailnya.

Baca juga

Mengalami masalah? Lihat pemecahan masalah atau berikan umpan balik.