広告枠を募集中 ご相談ください

Codeiumで機密コードのインデックス化を防ぐ .codeiumignore とリポジトリ除外ルールの設定方法

365Finds Editorial
Wiki 記事 11,430 本収録

あなたの AI で 365 Wiki を使う

下のプロンプトをコピーして、普段使っている AI に貼り付け、そのまま質問してください。

完全版 Skill をダウンロード

まずはプロンプトでお試しください。よく使う場合は完全版 365Wiki Skill をインストールすると、毎回貼り付ける必要がありません。普段使う AI がなければ、Gemini や Microsoft Copilot のウェブ版でも使えます。

エンタープライズのエンジニアリングチームがAIコード補完ツールを導入する際、セキュリティおよびコンプライアンス担当者が最も懸念するのは、プライベートAPIキー、プロプライエタリな独自アルゴリズム、テストデータの意図しないインデックス化とクラウドへの送信です。Codeiumは高精度なコンテキスト認識エンジン(Context Awareness Engine)によりコードベースを解析して高度な補完を提供しますが、適切な境界設定を怠ると機密ファイルまでインデックスに取り込まれる恐れがあります。本ガイドでは、プロジェクトルートにおける .codeiumignore の記述方法、開発端末でのグローバル設定、およびエンタープライズ管理コンソールによるリポジトリ除外ポリシーを体系的に解説します。


Codeiumのインデックス作成の仕組みとセキュリティ上の懸念

除外設定を的確に行うには、Codeiumがどのようにソースコードを取り込んでいるかを把握する必要があります。

  1. ローカルコンテキスト認識(Local Context Awareness):開発者のIDE(VS Code、JetBrains、Windsurf / Devin Desktop)内で動作するCodeiumのローカルインデックスエンジンは、クラス、関数、インターフェースなどの構文・意味的境界に沿ってコードをチャンク化し、埋め込みベクトルを作成します。
  2. リモート・マルチリポジトリインデックス(Remote Indexing):Codeium Enterpriseでは、複数のマイクロサービスや共通ライブラリを横断してコンテキストを把握するため、サーバー側で集中インデックスを作成・保持する機能が提供されます。
  3. 機密情報の漏洩リスク:除外設定がない場合、.env ファイル内の認証情報、秘密鍵(.pem)、特許技術に関わるコアロジック、未完全なマスキングのテストデータなどがインデックス化され、推論クエリのコンテキストとしてLLMへ送信されるリスクが生じます。

適切な除外ルールを設定することで、これらのファイルが最初からインデックスパイプラインに入らないよう完全に遮断できます。


1. プロジェクトルートでの設定:.codeiumignore

リポジトリ単位でインデックス対象を制限する最も基本的かつ確実な手段が、リポジトリルートに配置する .codeiumignore ファイルです。

配置場所とツールの互換性

本番環境向け .codeiumignore テンプレート

以下は、エンタープライズ開発でそのまま利用可能な実践的テンプレートです。

# ==============================================================================
# セキュリティ・認証情報・環境変数
# ==============================================================================
# 環境変数およびローカル設定
.env
.env.*
!.env.example

# 秘密鍵、証明書、クレデンシャル
*.pem
*.key
*.pkcs12
*.pfx
*.cert
*.crt
id_rsa
id_ecdsa
id_ed25519
credentials.json
service-account*.json
secrets/
config/secrets.yml

# クラウドプロバイダー認証トークン
.aws/
.gcp/
.azure/
*token*
*.secret

# ==============================================================================
# プロプライエタリなコア知的財産・独自アルゴリズム
# ==============================================================================
# 独自取引エンジン、特許暗号化ロジック、基幹計算モジュール
src/core/proprietary_engine/
src/crypto/internal_ciphers/
internal/patented_algorithms/

# 注:公開インターフェースのシグネチャ補全が必要な場合は例外指定
# !src/core/proprietary_engine/public_interfaces.ts

# ==============================================================================
# 機微データ・個人情報・大規模テストフィクスチャ
# ==============================================================================
# 本番レプリカのテストダンプ、データベーススナップショット
tests/fixtures/prod_dumps/
tests/data/sanitized_pii/
*.sqlite
*.sqlite3
*.db
*.dump
*.parquet
*.csv.gz

# ==============================================================================
# ビルド成果物・自動生成コード・サードパーティ依存関係
# ==============================================================================
dist/
build/
out/
target/
vendor/
node_modules/
*.min.js
*.min.css
*.wasm

パターン指定の重要ポイント


2. 開発端末レベルの設定:グローバル無視ファイル

リポジトリ内に .codeiumignore がまだコミットされていない場合や、開発者が一時的なスクラッチ作業を行う場合に備え、端末単位で共通の除外基準を適用できます。

グローバル設定ファイルのパス

開発者のホームディレクトリ配下に作成します。

適用挙動


3. チームおよびエンタープライズ管理コンソールによるリポジトリ除外

ファイルベースの除外は現場の開発者による編集が可能なため、組織全体の統制にはインフラレベルでの集中管理が不可欠です。Codeium Enterprise(またはCognition Devin Enterprise)の管理ダッシュボードで設定します。

リポジトリのホワイトリスト登録(SCM連携)

GitHub Enterprise、GitLab Self-Managed、Bitbucket Data Center、Azure DevOpsと連携する場合の制御項目です。

ロールベースアクセス制御(RBAC)とIdP連携

エンタープライズのコンテキスト検索は、個々のユーザーのアクセス権限を厳密に反映します。

端末レベルの強制アクセス制限ポリシー

管理対象のPCに対しては、集中設定(Team SettingsまたはMDMプロファイル)から、開発者が変更できない強力なパーミッションルールを配信可能です。

{
  "deny": [
    "Read(~/sensitive-data/**)",
    "Read(/etc/security/**)",
    "Write(.env*)"
  ],
  "ask": [
    "Exec(git push*)"
  ],
  "allow": [
    "Read(~/workspace/standard-repo/**)"
  ]
}

この deny ルールが適用されている場合、AIエージェントが該当パスを読み取ろうとしても、クライアントレイヤーで強制的にブロックされます。


除外制御レイヤーの比較

多層防御を構築する際の各レイヤーの特徴は以下の通りです。

制御レイヤー適用範囲主な仕組み管理担当者開発者による上書き
ワークスペース無視単一リポジトリリポジトリルートの .codeiumignoreリポジトリ保守者 / 開発チーム可能(ローカルファイル編集)
端末グローバル無視端末上の全リポジトリ~/.codeium/.codeiumignore開発者 / IT管理スクリプト可能(ローカルファイル編集)
管理ダッシュボード組織全体のリポジトリSCMリポジトリ登録制限・ブランチ制限エンタープライズ管理者不可
アクセス制御(RBAC)複数リポジトリ横断検索Git権限およびIdPグループ同期セキュリティ / IAM管理者不可
クライアント強制ポリシー開発端末の動作環境MDM / チーム単位の実行制御ルールIT / セキュリティ運用チーム不可

設定の検証方法とトラブルシューティング

除外設定を実施した後は、意図通りに機能しているかを検証します。

1. ワークスペースのファイル数とメモリ消費量の確認

2. 補全およびチャットのコンテキスト隔離テスト

3. トラブルシューティングの注意点


多層防御(Defense-in-Depth)のベストプラクティス

除外ファイルの設定は不可欠ですが、これ単体を唯一のセキュリティ担保にしてはなりません。

  1. シークレットをコード内に置かない:HashiCorp Vault、AWS Secrets Manager、Dopplerなどの外部シークレットマネージャーを使用し、実行時に環境変数として注入します。
  2. Gitコミット前の自動スキャン:GitleaksやTruffleHogなどのツールをpre-commitフックやCIパイプラインに組み込み、鍵情報がリポジトリに入り込むのを未然に防ぎます。
  3. .codeiumignore をGitでバージョン管理する:除外設定ファイルをGitリポジトリにコミットし、リポジトリをクローンした全員に同じ除外境界が自動適用されるようにします。
  4. ゼロデータ保持(ZDR)およびハイブリッド環境の採用:規制の厳しい環境では、プロンプトや補全コードをクラウド上に一切保持しないZero Data Retention契約を締結するか、顧客独自のVPC内にインデックスとデータを維持するハイブリッド構成を採用します。

参考文献