エンタープライズ環境での拡張機能の管理
Visual Studio Codeの拡張機能は生産性を向上させますが、エンタープライズ環境ではセキュリティとコンプライアンスを維持するために慎重な管理が必要です。本記事では、IT管理者が拡張機能のインストールを制御し、プライベートマーケットプレイスをホストし、ユーザーの端末に拡張機能を展開する方法を解説します。
許可される拡張機能の構成
許可される拡張機能のサポートは、VS Codeバージョン1.96から利用可能です。
VS Codeでは、アプリケーション全体の設定である extensions.allowed この設定は組織レベルで管理されています。変更するには管理者に連絡してください。 を通じて、ユーザーの端末にインストール可能な拡張機能を制御できます。パブリッシャー、特定の拡張機能、バージョン、プラットフォームごとに拡張機能を選択して許可することが可能です。デフォルトではすべての拡張機能が許可されています。この設定を構成すると、リストに記載された拡張機能のみがインストール可能となり、記載されていない拡張機能はブロックされます。既にインストールされている拡張機能やバージョンをブロックした場合、その拡張機能は無効になります。
パブリッシャーによる許可またはブロック
パブリッシャーIDを使用して、特定のパブリッシャーからのすべての拡張機能を許可またはブロックできます。ピリオド(.)を含まないキーは、パブリッシャーIDとして扱われます。
"extensions.allowed": {
"microsoft": true,
"github": true
}
microsoftをパブリッシャーIDとして使用すると、パブリッシャーIDが異なる場合でも、Microsoftによって公開されたすべての拡張機能が対象となります。
拡張機能による許可またはブロック
完全な拡張機能ID(<publisher>.<extension>)を使用して、特定の拡張機能を許可またはブロックします。ピリオドを含むキーは、拡張機能IDとして扱われます。
"extensions.allowed": {
"esbenp.prettier-vscode": true,
"ms-azuretools.vscode-containers": false
}
特定のバージョンまたはプラットフォームの許可
拡張機能を1つ以上の承認済みバージョンに固定します。バージョン範囲はサポートされていないため、各バージョンを個別にリストする必要があります。プラットフォームでさらに制限するには、バージョンの後ろに@<platform>を追加してください。
"extensions.allowed": {
"dbaeumer.vscode-eslint": ["3.0.0"],
"figma.figma-vscode-extension": ["3.0.0", "4.2.3", "4.1.2"],
"rust-lang.rust-analyzer": ["5.0.0@win32-x64", "5.0.0@darwin-x64"]
}
安定版(Stable)のみを許可
値を"stable"とすることで、拡張機能のすべての安定版、あるいはパブリッシャーのすべての拡張機能を許可し、プレリリースバージョンをブロックすることができます。
"extensions.allowed": {
"github.vscode-pull-request-github": "stable",
"redhat": "stable"
}
優先順位とルール
- より具体的なセレクターが優先されます。例えば、
"microsoft": trueと"microsoft.cplusplus": falseを設定すると、C++拡張機能を除くすべてのMicrosoft製拡張機能が許可されます。 - 重複するキー値はサポートされていません。
"microsoft": trueと"microsoft": falseの両方を含めると、構成は無効になります。 - 拡張機能IDやパブリッシャーIDにおいてワイルドカードはサポートされていません。ただし、
"*"を使用してすべての拡張機能を許可またはブロックすることは可能です。例えば、"*": falseはすべての拡張機能をブロックします。
組織ポリシーによる展開
組織は、AllowedExtensions ポリシーを使用して、許可される拡張機能を一元管理できます。デバイス管理ソリューションを通じて、管理者はすべての管理対象デバイスにポリシーを展開・強制適用できます。これは、個々のデバイス上のユーザーが設定した extensions.allowed この設定は組織レベルで管理されています。変更するには管理者に連絡してください。 設定を上書きします。

ポリシー値に構文エラーがある場合、extensions.allowed設定は適用されません。VS Codeのウィンドウログでエラーを確認してください(⇧⌘P(Windows、LinuxはCtrl+Shift+P)を押し、Show Window Logと入力します)。
拡張機能のプリインストール
VS Codeに一連のプリインストール拡張機能(ブートストラップ)を設定できます。この機能は、VS Codeがプリインストールされ、特定の拡張機能がすぐにユーザーに利用可能な状態となっているマシンイメージ、仮想マシン、またはクラウドワークステーションを準備する場合に便利です。
拡張機能のプリインストールサポートは、現在Windowsでのみ利用可能です。
拡張機能のブートストラップ手順は以下の通りです
-
VS Codeのインストールディレクトリに
bootstrap\extensionsフォルダーを作成します。 -
プリインストールしたい拡張機能のVSIXファイルをダウンロードし、
bootstrap\extensionsフォルダーに配置します。 -
ユーザーが初めてVS Codeを起動すると、
bootstrap\extensionsフォルダー内のすべての拡張機能がバックグラウンドで自動的にインストールされます。
ユーザーは、プリインストールされた拡張機能をアンインストールすることも可能です。拡張機能をアンインストールした後にVS Codeを再起動しても、その拡張機能が再インストールされることはありません。
プライベート拡張機能マーケットプレイスのホスト
プライベートマーケットプレイスにより、企業は独自の拡張機能を組織内でセルフホストおよび配布し、セキュリティとコンプライアンスの要件を満たすことができます。このマーケットプレイスはVS Codeの拡張機能エクスペリエンスと統合されており、ユーザーはプライベートな拡張機能の検出や自動更新が可能になります。
プライベートマーケットプレイスの主な機能
- セルフホスト: AzureやKubernetesなどの自社インフラストラクチャ上で内部拡張機能をホストし、知的財産を保護します。
- アップストリーム: インターネット接続が制限された環境であっても、Visual Studio Marketplaceから公開拡張機能を自動的に含めることができます。許可リストを設定して、特定の拡張機能を許可または拒否できます。
- 再ホスト: 公開拡張機能をダウンロードしてホストし、企業独自の検証およびセキュリティ基準を適用します(エアギャップ環境もサポート)。「Microsoftがいかにしてソフトウェアサプライチェーンを保護しているか」を参照してください。
- シンプルなデプロイ: 外部データベースを必要としない、ステートレスなDockerコンテナとして展開可能です。
- 柔軟なストレージ: ファイルシステムやAzure Artifactsを使用して、拡張機能の公開と管理を行います。
- 一元的なロールアウト: WindowsおよびmacOS上のグループポリシーを使用して、チームにプライベートマーケットプレイスを展開します。
- 統合されたインストールと更新: VS Codeから直接拡張機能を検索・インストールでき、新しいバージョンへの自動更新も可能です。
- クロスプラットフォームサポート: Windows、macOS、Linux上のVS Codeデスクトップと互換性があります。
VS Code ServerまたはVS Code for the Webからの接続はサポートされていません。
プライベートマーケットプレイスは現在、GitHub Enterpriseのお客様向けに提供されています。VS Codeユーザーがプライベートマーケットプレイスにアクセスするには、GitHub Enterpriseアカウント、またはCopilot Enterprise/Businessアカウントでサインインする必要があります。
展開手順、スクリプト、開発環境構成を含むデプロイおよび機能ガイドから始めてください。質問やサポートが必要な場合は、プライベートマーケットプレイスサポートまでお問い合わせください。
関連リソース
- 拡張機能マーケットプレイス - VS Codeでの拡張機能のインストールと管理について学習します。
- 拡張機能の実行時セキュリティ - VS Codeにおける拡張機能のセキュリティについて学習します。
- エンタープライズポリシー - VS Codeのすべてのエンタープライズポリシーのリファレンスです。