Droid Shieldとは?
Droid Shieldは、コミットしてリモートにプッシュする前に、未コミットの変更を自動的にスキャンして潜在的なシークレットを検出する組み込みセキュリティ機能です。APIキー、トークン、パスワードなどの機密認証情報がバージョン管理履歴に誤って公開されることを防ぐセーフティネットとして機能します。Droid Shieldの動作原理
Droidを使用してgit commitまたはgit push操作を実行すると、Droid Shieldは自動的に以下を行います:
- 差分をスキャン - 追加される行のみを分析(削除や変更されていない行は対象外)
- シークレットを検出 - パターンマッチングを使用して潜在的な認証情報を識別
- 実行をブロック - シークレットが検出された場合、git操作を停止
- 検出結果を報告 - 潜在的なシークレットが見つかった正確な場所を表示
Droid ShieldはDroid経由で実行されたgit操作のみをスキャンします。Droidの外で手動実行したgitコマンドには影響しません。
Droid Shieldが検出する対象
Droid Shieldは、以下を含む幅広い認証情報パターンをスキャンします:APIキーとトークン
Factory APIキー、GitHubトークン、GitLabトークン、npmトークン、AWS、Google Cloud、Stripe、SendGridなどのAPIキー。
認証情報
(JWT、OAuth、セッショントークンなど)と、認証情報が埋め込まれたURL。
秘密鍵
(SSH秘密鍵、PGP鍵、ageシークレットキー、OpenSSH鍵など)およびその他の暗号鍵形式。
サービス固有のシークレット
(Slack Webhookとトークン、Twilio認証情報、Mailchimpキー、Square OAuthシークレット、Azureストレージキーなど)。
検出アルゴリズム
Droid Shieldは、ランダム性検証を伴うスマートパターンマッチングを使用します:- パターンマッチング - フォーマットによる認証情報の識別
- ランダム性チェック - キャプチャされた値が実際のシークレットのように見えるかを検証
- コンテキスト認識 - 変数名と代入パターンを考慮して誤検出を減らす
Droid Shield 2.0: 学習型シークレット検出
Droid Shield 2.0 は、パターンベース検出の上に意味的レイヤーを追加する 2 つのファインチューニング済み分類モデルによって、決定論的スキャナーを拡張します。すべての commit と push は引き続き最初に決定論的スキャナーを通過し、その後モデルが、スキャナーがフラグ付けした、または見逃した特定のコンテキストを分類します。Droid Shield 2.0 はリサーチプレビューです。組織で有効にするには、お問い合わせください。
2 つの分類モデル
これらのモデルは決定論的スキャナーの前後で機能し、それぞれ異なる失敗パターンに最適化されています。リスクモデル
決定論的スキャナーが検出しなかった変更行のうち、周辺コンテキストから見てなおシークレットを含んでいそうな行に対して実行されます。パターンセットが見逃す実際のシークレットを捉えるため、再現率を重視して最適化されています。見逃された可能性のあるシークレットを検出すると、警告を生成します。
ダウングレードモデル
スキャナーが検出した行に対して実行されます。検出されたシークレットをマスクした周辺コンテキストを確認し、スキャナーのヒットが真陽性(ブロックを維持)か、誤検知(警告にダウングレード)かを判定します。
Droid Shieldが起動するタイミング
Droid Shieldは以下のgit操作中に自動的に起動します:git commit- コミット作成前にステージされた変更をスキャンgit push- リモートにプッシュされるコミットをスキャン
Droid Shield設定の管理
CLIでの操作
設定メニューからDroid Shieldのオン/オフを切り替えることができます:droidを実行/settingsを入力- **「Droid Shield」**設定を切り替え
- 変更は即座に有効になります
Droid Shieldは保護のためデフォルトで有効です。有効のままにしておくことを強く推奨します。
シークレットが検出された場合の対処法
Droid Shieldが潜在的なシークレットを検出すると、以下のようなエラーメッセージが表示されます:推奨される対処方法
シークレットを削除
- ハードコードされた認証情報の代わりに環境変数を使用する
- シークレットを安全な認証情報ストアに移動する
- 機密ファイルを
.gitignoreに追加する - シークレットがすでにコミットされている場合は、git filter-branchまたはBFG Repo-Cleanerを使用する
誤検出の場合
Droid Shieldは慎重を期すために保守的なパターンを使用します。検出が誤検出だと思われる場合:- 実際のシークレットでないことを確認 - その値が機密情報でないことを再確認
- 手動コミットを使用 - Droid以外でgit操作を直接実行
- パターンを報告 - 繰り返し発生する誤検出がある場合はsupport@factory.aiまでご連絡ください
Droid Shield 2.0 が有効な場合、ダウングレードモデルがスキャナーのヒットを自動的に確認し、明らかな誤検知(プレースホルダー、サンプル、テストフィクスチャ)を手動介入なしで除外できます。
ベストプラクティス
環境変数を使用
環境変数を使用
すべてのシークレットを環境変数または安全な認証情報マネージャーに保存し、ソースファイルには絶対にハードコードしないでください。
Droid Shieldを有効にしておく
Droid Shieldを有効にしておく
Droid Shieldは重要な安全レイヤーを提供します。特にチーム環境では常に有効にしておいてください。
コミット前に確認
コミット前に確認
Droid Shieldがあっても、コミット前に変更を手動で確認し、機密データが含まれていないことを確認してください。
チームに周知
チームに周知
すべてのチームメンバーがDroid Shieldの仕組みと、有効に保つ重要性を理解していることを確認してください。
制限事項
Droid Shieldは検出ツールであり、保証ではありません。 一般的なシークレットパターンの多くを検出できますが、決定論的スキャナー単体では以下を検出できません:
- パターンデータベースにないカスタムシークレット形式
- 認識可能なパターンに従わないシークレット
- 難読化またはエンコードされた認証情報
- ビジネスロジックの脆弱性やコードセキュリティの問題
関連リソース
セキュリティ概要
Factoryの包括的なセキュリティ機能とベストプラクティスについて学びます。
設定
Droid Shieldの設定を含むDroid設定を構成します。
Droid Shield 2.0 リサーチ記事
学習型分類モデル、トレーニングデータ、評価結果の技術的な詳細を紹介します。
LLMの安全性とエージェント制御
Droid Shieldがより広範なエンタープライズ向けセーフティモデルの中でどのような役割を果たすかを説明します。
サポートが必要ですか?
セキュリティに関する質問
セキュリティチームへのお問い合わせ: security@factory.ai
誤検知
継続的な誤検知パターンを報告するには、support@factory.aiまでお問い合わせください。
