ワークスペースの信頼
Visual Studio Code はセキュリティを重視しており、ソースや元の作成者に関係なく、安全にコードを閲覧および編集できるように支援したいと考えています。ワークスペースの信頼機能を使用すると、プロジェクトフォルダー内のコードを明示的な承認なしに VS Code および拡張機能で実行できるかどうかを決定できます。
安全なコードブラウジング
パブリックリポジトリやファイル共有で非常に多くのソースコードを利用できるのは素晴らしいことです。コーディングタスクや問題に関係なく、どこかにすでに良い解決策が存在する可能性があります。また、コードの理解、デバッグ、最適化に役立つ強力なコーディングツールが多数利用できるのも素晴らしいことです。ただし、オープンソースのコードとツールを使用することにはリスクがあり、悪意のあるコードの実行やエクスプロイトに対して脆弱になる可能性があります。
ワークスペースの信頼は、ワークスペースが「制限付きモード」で開かれている場合、ワークスペース内のコードの自動コード実行を防止することにより、不慣れなコードを扱う際のセキュリティの追加レイヤーを提供します。
注: 「ワークスペース」と「フォルダー」という用語は、VS Code UI およびドキュメントで広く使用されています。「ワークスペース」は、VS Code によって作成および使用される追加のメタデータを含むフォルダーと考えることができます。
制限付きモード
ワークスペースの信頼ダイアログで、いいえ、作成者を信頼しませんを選択した場合、VS Code はコードの実行を防ぐために制限付きモードになります。
ワークベンチの上部にバナーが表示され、ワークスペースの信頼エディターを介してフォルダーを管理するためのリンクが表示されます。ステータスバーには、ワークスペースが制限付きモードになっていることを示すバッジも表示されます。
制限付きモードは、タスク、デバッグ、ワークスペース設定、拡張機能など、いくつかの VS Code 機能の動作を無効または制限することにより、自動コード実行を防ぐことを試みます。
制限付きモードで無効になっている機能の完全なリストを表示するには、バナーの管理リンクをクリックするか、ステータスバーの制限付きモードバッジを選択して、ワークスペースの信頼エディターを開くことができます。
重要: ワークスペースの信頼は、悪意のある拡張機能がコードを実行し、制限付きモードを無視することを防ぐことはできません。信頼できる有名な発行元からの拡張機能のみをインストールして実行する必要があります。
タスク
VS Code タスクは、スクリプトとツールバイナリを実行できます。タスク定義はワークスペースの .vscode
フォルダーで定義されているため、リポジトリのコミットされたソースコードの一部であり、そのリポジトリのすべてのユーザーに共有されます。誰かが悪意のあるタスクを作成した場合、そのリポジトリをクローンした人は誰でも知らずに実行してしまう可能性があります。
制限付きモードでタスクを実行または列挙しようとすると (タスク > タスクの実行)、VS Code はフォルダーを信頼し、タスクの実行を続行できることを確認するプロンプトを表示します。ダイアログをキャンセルすると、VS Code は制限付きモードのままになります。
デバッグ
VS Code タスクの実行と同様に、デバッグ拡張機能はデバッグセッションの起動時にデバッガーバイナリを実行できます。そのため、フォルダーが制限付きモードで開かれている場合、デバッグも無効になります。
制限付きモードでデバッグセッションを開始しようとすると (デバッグ > デバッグの開始)、VS Code はフォルダーを信頼し、デバッガーの起動を続行できることを確認するプロンプトを表示します。ダイアログをキャンセルすると、VS Code は制限付きモードのままになり、デバッグセッションは開始されません。
ワークスペース設定
ワークスペース設定は、ワークスペースルートの .vscode
フォルダーに保存されるため、ワークスペースリポジトリをクローンするすべてのユーザーによって共有されます。一部の設定には、実行可能ファイル (たとえば、リンターバイナリ) へのパスが含まれており、悪意のあるコードを指すように設定されている場合、損害を引き起こす可能性があります。このため、VS Code は制限付きモードで実行されている場合、ワークスペース設定のセットを無効にします。
ワークスペースの信頼エディターで、適用されていないワークスペース設定のリンクを選択して、@tag:requireTrustedWorkspace
タグでスコープされた設定エディターを表示します。
拡張機能
VS Code 拡張機能エコシステムは、非常に豊富で多様です。人々は、ほぼすべてのプログラミングタスクまたはエディターのカスタマイズを支援するために拡張機能を作成しました。一部の拡張機能は、完全なプログラミング言語サポート (IntelliSense、デバッグ、コード分析) を提供し、他の拡張機能では、音楽を再生したり、仮想ペットを飼ったりできます。
ほとんどの拡張機能はユーザーに代わってコードを実行し、潜在的に危害を加える可能性があります。一部の拡張機能には、予期しない実行可能ファイルを実行するように構成されている場合、悪意のある動作を引き起こす可能性のある設定があります。このため、ワークスペースの信頼を明示的に選択していない拡張機能は、制限付きモードではデフォルトで無効になっています。
インストールされている拡張機能のステータスを確認するには、ワークスペースの信頼エディターの拡張機能は無効になっているか、機能が制限されていますリンクを選択します。これにより、@workspaceUnsupported
フィルターでスコープされた拡張機能ビューが表示されます。
ワークスペースの信頼を選択していない拡張機能は、制限付きモードでは無効または制限される場合があります。
制限付きモードで無効
制限付きモードでの実行をサポートしていることを明示的に示していない拡張機能は、制限付きモードで無効セクションに表示されます。拡張機能の作成者は、ワークスペース内の変更 (設定またはファイル) によって拡張機能が悪用される可能性があると判断した場合、制限付きモードで有効にすることを決して望まないことを示すこともできます。
制限付きモードで制限付き
拡張機能の作成者は、セキュリティ脆弱性の可能性について拡張機能を評価し、制限付きモードで実行されている場合に制限付きサポートがあることを宣言することもできます。このモードは、拡張機能が潜在的なエクスプロイトを防ぐために一部の機能または機能を無効にする場合があることを意味します。
拡張機能は、信頼されていないフォルダーで実行されている場合の制限について説明するカスタムテキストを拡張機能ビューのワークスペースの信頼バッジに追加できます。たとえば、VS Code 組み込みの PHP 拡張機能は、php.validate.executablePath 設定を信頼されたフォルダーでの使用に制限しています。この設定をオーバーライドすると、悪意のあるプログラムが実行される可能性があるためです。
拡張機能のワークスペースの信頼サポートレベルをオーバーライドするには、extensions.supportUntrustedWorkspaces 設定を使用します。これについては、以下の拡張機能の有効化セクションで説明します。
制限付きモードで拡張機能をインストールしようとすると、ワークスペースを信頼するか、拡張機能をインストールするかのいずれかを求められます。拡張機能がワークスペースの信頼をサポートしていない場合、インストールされますが、無効になるか、機能が制限された状態で実行されます。
注: 拡張機能の作成者は、ワークスペースの信頼拡張機能ガイドを読むことで、ワークスペースの信頼をサポートするように拡張機能を更新する方法を学ぶことができます。
ワークスペースを信頼する
プロジェクトの作成者とメンテナーを信頼する場合は、ローカルマシン上のプロジェクトフォルダーを信頼できます。たとえば、github.com/microsoft や github.com/docker などの有名な GitHub 組織のリポジトリを信頼するのは通常安全です。
新しいフォルダーを開くと、最初のワークスペースの信頼プロンプトで、そのフォルダーとそのサブフォルダーを信頼できます。
また、ワークスペースエディターを表示し、信頼または親を信頼ボタンを選択して、フォルダーの信頼状態をすばやく切り替えることもできます。
ワークスペースの信頼エディターダイアログを表示するには、いくつかの方法があります。
制限付きモードの場合
- 制限付きモードバナー 管理 リンク
- 制限付きモードのステータスバー項目
いつでも使用することもできます
- コマンドパレットからワークスペース: ワークスペースの信頼の管理コマンド (⇧⌘P (Windows, Linux Ctrl+Shift+P))
フォルダーの選択
フォルダーを信頼すると、ワークスペースの信頼エディターに表示される信頼されたフォルダーとワークスペースリストに追加されます。
このリストからフォルダーを手動で追加、編集、削除して、ワークスペースの信頼を有効または無効にできます。アクティブなフォルダーは、このリストで太字で強調表示されます。
親フォルダーの選択
ワークスペースの信頼エディターを介してフォルダーを信頼する場合、親フォルダーも信頼するオプションがあります。これにより、親フォルダーとそのすべてのサブフォルダーに信頼が適用されます。
信頼されたコンテンツを含む多くのフォルダーが 1 つのフォルダーの下に共同配置されている場合、親フォルダーを信頼すると役立つ場合があります。
信頼された親フォルダーの下のサブフォルダーを開くと、制限付きモードに戻るための通常の信頼しないボタンは表示されません。代わりに、フォルダーが別のフォルダーによって信頼されていることを示すテキストが表示されます。
信頼されたフォルダーとワークスペースリストから親フォルダーエントリを追加、変更、および削除できます。
フォルダー構成
親フォルダーを信頼すると、すべてのサブフォルダーが信頼されるため、ディスク上のリポジトリの場所を介してワークスペースの信頼を制御できます。
たとえば、信頼されたすべてのリポジトリを「TrustedRepos」親フォルダーの下に置き、不慣れなリポジトリを「ForEvaluation」などの別の親フォルダーの下に置くことができます。「TrustedRepos」フォルダーを信頼し、「ForEvaluation」の下のフォルダーを選択的に信頼します。
├── TrustedRepos - Clone trusted repositories under this parent folder
└── ForEvaluation - Clone experimental or unfamiliar repositories under this parent folder
また、組織固有の親フォルダーの下にグループ化することで、リポジトリをグループ化して信頼を設定することもできます。
├── github/microsoft - Clone a specific organization's repositories under this parent folder
├── github/{myforks} - Place your forked repositories under this parent folder
└── local - Local un-published repositories
拡張機能の有効化
制限付きモードを使用したいが、お気に入りの拡張機能がワークスペースの信頼をサポートしていない場合はどうなりますか? これは、拡張機能が便利で機能的であるにもかかわらず、積極的にメンテナンスされておらず、ワークスペースの信頼サポートを宣言していない場合に発生する可能性があります。このシナリオに対処するために、extensions.supportUntrustedWorkspaces 設定を使用して、拡張機能の信頼状態をオーバーライドできます。
重要: 拡張機能のワークスペースの信頼サポートをオーバーライドする場合は注意してください。拡張機能の作成者が制限付きモードで拡張機能を無効にする正当な理由がある可能性があります。疑わしい場合は、拡張機能の作成者に問い合わせるか、最近の変更ログを確認して詳細なコンテキストを取得してください。
設定エディター (⌘, (Windows, Linux Ctrl+,)) で、拡張機能: 信頼されていないワークスペースのサポート設定 (extensions.supportUntrustedWorkspaces) を使用して、個々の拡張機能のワークスペースの信頼をオーバーライドできます。
settings.json で編集リンクを選択して、拡張機能 ID とそのサポートステータスおよびバージョンのリストを管理します。IntelliSense の候補を使用して、インストールされている拡張機能を選択できます。
以下は、Prettier 拡張機能の settings.json
エントリを示しています。
"extensions.supportUntrustedWorkspaces": {
"esbenp.prettier-vscode": {
"supported": true,
"version": "6.4.0"
},
},
supported
属性を使用して、ワークスペースの信頼サポートを有効または無効にできます。version
属性は、適用可能な正確な拡張機能バージョンを指定し、すべてのバージョンに対して状態を設定する場合は、バージョンフィールドを削除できます。
拡張機能の作成者が制限付きモードで制限する機能を評価および決定する方法の詳細については、ワークスペースの信頼拡張機能ガイドを参照してください。
信頼されていないファイルを開く
信頼されたフォルダーの外にあるファイルを開くと、VS Code はファイルがフォルダーのルート外の場所から来たことを検出し、ファイルを開き続けるか、制限付きモードで新しいウィンドウでファイルを開くかのオプションを求めるプロンプトを表示します。制限付きモードで開くのが最も安全なオプションであり、ファイルが信頼できると判断したら、いつでも元の VS Code ウィンドウでファイルを再度開くことができます。
信頼されていないワークスペースの外部からファイルを開くときにプロンプトを表示しない場合は、security.workspace.trust.untrustedFiles を open
に設定できます。また、security.workspace.trust.untrustedFiles を newWindow
に設定して、常に制限付きモードで新しいウィンドウを作成することもできます。信頼されていないファイルダイアログですべてのワークスペースに対して決定を記憶するオプションをオンにすると、選択内容が security.workspace.trust.untrustedFiles ユーザー設定に適用されます。
信頼されていないフォルダーを開く
マルチルートワークスペースを複数のフォルダーで使用する場合、信頼されたマルチルートワークスペースに新しいフォルダーを追加しようとすると、そのフォルダー内のファイルを信頼するかどうかを尋ねるプロンプトが表示されます。信頼しない場合、ワークスペース全体が制限付きモードに切り替わります。
空のウィンドウ (フォルダーが開いていない)
デフォルトでは、フォルダーまたはワークスペースを開かずに新しい VS Code ウィンドウ (インスタンス) を開くと、VS Code は完全に信頼された状態でウィンドウを実行します。インストールされているすべての拡張機能が有効になり、制限なしで空のウィンドウを使用できます。
ファイルを開くと、親フォルダーがないため、信頼されていないファイルを開くかどうかを尋ねるプロンプトが表示されます。
ワークスペースの信頼エディターを使用して (コマンドパレットでワークスペース: ワークスペースの信頼の管理を選択)、信頼しないを選択すると、空のウィンドウを制限付きモードに切り替えることができます。空のウィンドウは現在のセッションでは制限付きモードのままになりますが、再起動するか新しいウィンドウを作成すると、信頼された状態に戻ります。
すべての空のウィンドウを制限付きモードにしたい場合は、security.workspace.trust.emptyWindow を false
に設定できます。
設定
以下は、利用可能なワークスペースの信頼設定です
- security.workspace.trust.enabled - ワークスペースの信頼機能を有効にします。デフォルトは true です。
- security.workspace.trust.startupPrompt - 起動時にワークスペースの信頼ダイアログを表示するかどうか。デフォルトは、個別のフォルダーまたはワークスペースごとに 1 回のみ表示することです。
- security.workspace.trust.emptyWindow - 空のウィンドウ (フォルダーが開いていない) を常に信頼するかどうか。デフォルトは true です。
- security.workspace.trust.untrustedFiles - ワークスペース内のルーズファイルの処理方法を制御します。デフォルトはプロンプトを表示することです。
- extensions.supportUntrustedWorkspaces - 拡張機能のワークスペースの信頼宣言をオーバーライドします。true または false のいずれかです。
- security.workspace.trust.banner - 制限付きモードバナーを表示するタイミングを制御します。デフォルトは
untilDismissed
です。
コマンドラインスイッチ
--disable-workspace-trust
を渡すことで、VS Code コマンドラインからワークスペースの信頼を無効にできます。このスイッチは現在のセッションのみに影響します。
次のステップ
詳細はこちら
- ワークスペースの信頼拡張機能ガイド - 拡張機能の作成者がワークスペースの信頼をサポートする方法について説明します。
- VS Code の「ワークスペース」とは何ですか? - VS Code の「ワークスペース」の概念の詳細をご覧ください。
- GitHub Repositories 拡張機能 - ソースコードをローカルマシンにクローンせずに、リポジトリを直接操作します。
よくある質問
制限付きモードでもソースコードを編集できますか?
はい、制限付きモードでもソースコードを閲覧および編集できます。一部の言語機能が無効になっている場合がありますが、テキスト編集は常にサポートされています。
インストールした拡張機能はどこに行きましたか?
制限付きモードでは、ワークスペースの信頼をサポートしていない拡張機能はすべて無効になり、アクティビティバーのアイコンやコマンドなどのすべての UI 要素は表示されません。
拡張機能のワークスペースの信頼サポートレベルをオーバーライドするには、extensions.supportUntrustedWorkspaces 設定を使用しますが、注意して行ってください。拡張機能の有効化に詳細が記載されています。
ワークスペースの信頼機能を無効にできますか?
できますが、推奨されません。新しいフォルダーまたはリポジトリを開くときに VS Code がワークスペースの信頼をチェックしないようにする場合は、security.workspace.trust.enabled を false に設定できます。VS Code は、1.57 リリース前の動作に戻ります。
フォルダー/ワークスペースの信頼を解除するにはどうすればよいですか?
ワークスペースの信頼エディター (コマンドパレットからワークスペース: ワークスペースの信頼の管理) を開き、信頼しないボタンを選択します。信頼されたフォルダーとワークスペースリストからフォルダーを削除することもできます。
「信頼しない」ボタンが表示されないのはなぜですか?
ワークスペースの信頼ダイアログに信頼しないボタンが表示されない場合、フォルダーの信頼レベルが親フォルダーから継承されている可能性があります。信頼されたフォルダーとワークスペースリストを確認して、親フォルダーでワークスペースの信頼が有効になっているかどうかを確認してください。
GitHub Codespace への接続や、実行中の Docker コンテナへのアタッチなどの一部のワークフローは、自動的に信頼されます。これらは、すでに高いレベルの信頼を持っているはずの管理された環境であるためです。
ワークスペースの信頼は、何から保護しますか?
VS Code の多くの機能により、サードパーティツールと拡張機能が自動的に実行されるようになります。たとえば、保存時の Lint やフォーマット、またはコードのコンパイルやデバッグなどの特定の操作を行う場合などです。倫理的でない人は、悪意のあるコードをユーザーの知識なしに実行し、ローカルマシンに危害を加える可能性のある無害に見えるプロジェクトを作成する可能性があります。ワークスペースの信頼は、不慣れなソースコードの安全性と整合性を評価している間、コードの実行を防止しようとすることで、セキュリティの追加レイヤーを提供します。