1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【VSCode】GitHub Copilotに機密情報を漏洩させないための実践的な対策まとめ

Last updated at Posted at 2025-07-30

GitHub Copilotは機密情報を漏洩するのか?

  • GitGuardianの調査によると、Copilotは8,127件の提案のうち2,702件の「機密情報らしき記述」 を生成し、提案1回あたり平均0.33件の「本物の機密情報」 を出力した可能性があるという衝撃的な結果を報告しました。

  • またGitHub Copilotの提案コードのうち、35%にセキュリティ上の脆弱性が見つかり、CWE‑798(ハードコードされた認証情報) の例も確認されています。

これはGitHub上の公開コードを学習したモデルが、トレーニング済みの “記憶” を利用して、意図せず機密情報を提案してしまうためです。

「ハードコードされた認証情報」とは、ソースコードの中に直接書かれたパスワード・APIキー・トークンなどの機密情報のことです。

プラン別GitHub Copilotのデータ取り扱い状況

  • 企業向けのCopilot Business / Enterprise プランでは、作業中のコード(プライベートリポジトリ)をモデルの再学習に使用しません。データは保持されず、改善にも使われません。

  • 個人向けのCopilot Free / Pro / Pro+プランでは、カーソル前後のコードスニペットがGitHubに一時収集され、モデル改善に使われる可能性があります。設定で変更可能です。

VSCode × GitHub Copilotで機密情報を漏洩させないための設定手順

1. 学習への協力を無効にする(オプトアウト)

  • GitHubホーム画面 → アイコン → Settings → Copilot → Features
    Allow GitHub to use my data for product improvements」のチェックを外す

これにより、個人向けプランでもコードスニペットがGitHubに保存されなくなります。

githubcopilot1.png

githubcopilot2.png

githubcopilot3.png

2. 特定ファイルやパターンを Copilot の提案対象から除外する

.envconfig.json、データベースの設定ファイルなど、機密が含まれるファイルを Copilot に見せたくない場合の設定手順

1. VSCodeの設定を開く (VSCode上で Ctrl + ,、MacならCmd + ,)
2. 設定画面右上の 設定 (JSON) を開く をクリックし、settings.jsonを開く

githubcopilot4.png

3. 下記除外設定用コードを最下部に追記
このとき、settings.json最下部の「}」の上に一行追加し、下記コードをコピペしてください。

settings.json
,
"github.copilot.advanced": {
  "excludeFiles": [
    "**/*.env",           // 環境変数ファイル
    "**/config.json",     // 設定ファイル
    "**/example/**",      // サンプルディレクトリ
    "**/example2/**",     // サンプルディレクトリ2
    "**/database.yml"     // DB設定
  ]
}

**/example/**のような記述では、そのディレクトリ内のすべてのファイルへのアクセスをブロックできます。

一方、**/*.env**/*.jsonのような記述では、任意の階層にある.env / .jsonファイルへのアクセスをブロックできます。

3. GitHub Copilot提案コードのフィルタ設定 (他人のコードを丸ごと持ってこさせない設定)

  • GitHub Copilot は大量のパブリックコードを学習しているため、既存のオープンソースコードと「完全に一致するコード」を提案してくる場合があります。
    たとえば Copilot が「Apache 2.0 ライセンスのコード」をそのまま提案してきた場合、ライセンス違反のリスクや、意図せぬ著作権侵害が発生する可能性があります。

  • これを防ぐために、GitHub CopilotのWeb上設定画面とVSCode側で、パブリックリポジトリと一致するコードの提案を抑制しておくと安心です。

1. 先ほどと同様、GitHub Copilotの設定画面に入る
(GitHubホーム画面 → アイコン → Settings → Copilot → Features)
Suggestions matching public code (duplication detection filter)」を「Blocked」に変更する

githubcopilot5.png

2. 先ほど記述したVSCodeの settings.json に、filterSuggestions を追記

settings.json
,
"github.copilot.advanced": {
  "excludeFiles": [
    "**/*.env",           // 環境変数ファイル
    "**/config.json",     // 設定ファイル
    "**/example/**",      // サンプルディレクトリ
    "**/example2/**",     // サンプルディレクトリ2
    "**/database.yml"     // DB設定
  ],
  "filterSuggestions": true     // この記述を追加
}

生成されたコードを自動スキャン

下記のような静的解析ツール/拡張機能を導入して、生成されたコードに潜む脆弱性やハードコードされた認証情報を検出することができます。

1. ESLint:JavaScript/TypeScript向けの静的解析ツール。オープンソースで無料。
2. Bandit:Pythonコード向けのセキュリティ静的解析ツール。オープンソース、無料。
3. Brakeman:Ruby on Railsアプリケーション向けのセキュリティ静的解析ツール。オープンソース、無料。

各ツールの使い方や設定手順をここで紹介すると非常に長くなってしまうため、おすすめのQiita記事をいくつかピックアップして載せておきます。

GitHub 側のセキュリティ機能を活用する

  • GitHub Secret Scanning:API キーやパスワードを含んだファイルを自動検知し、アラートで通知します。

  • 設定方法
    (GitHubホーム画面 → アイコン → Settings → Code security)
    Push protection for yourself を有効にする。

見た目的に勘違いしやすいですが、有効化されている場合には赤文字で 「Disable」 と表示されます。(下記画像のように)
この場合は既に有効化されているため、設定を変える必要はありません。

もし 「Enable」 と表示されていたら、それは無効化されているため、表示が 「Disable」 になるように設定を変更してください。

githubcopilot6.png

githubcopilot7.png

より安全にGitHub Copilot利用を実現するには?

  • Copilot Business / Enterprise プランに移行すれば、プライベートコードの収集やモデル改善への利用が無効化され、安全性は高まります。
  • 組織レベルでの GitHub Secret Protection の導入Copilot管理設定の周知定期監査 を実施しましょう。

まとめ

GitHub Copilotは生産性の高いツールですが、誤った設定や無意識の使用によって、機密情報の漏洩リスクがあります。VS Code環境では以下を徹底することで、リスクを最小化可能です:

  • 設定による特定ファイル・フォルダへのアクセス除外
  • 静的解析ツールとコードレビューの継続
  • GitHub側のSecret Scanningの活用
  • プランと利用ポリシーの適切な選択と運用

Copilot を安心・安全に活用するために、ぜひこれらの手順をチームと共有し、運用に組み込んでください。


参考資料

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?