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

Devinのサンドボックス環境とシークレット管理を設定し、安全な自動ビルドと統合テストを実行する実践ガイド

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

あなたの AI で 365 Wiki を使う

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

完全版 Skill をダウンロード

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

エンジニアリングチームがDevinを活用して自動ビルドや統合テストを安全に実行するには、宣言的ブループリント(Blueprints) による再現可能なスナップショット分離環境、実行時にのみ環境変数として安全に注入される 階層型シークレット管理(Secret Management)、そしてDevin Cloudの一時仮想環境やCLIの bubblewrap によるOSレベル隔離、オンプレミス・プライベートVPC向けの Devin Outposts という3つの防御層を適切に構成することが不可欠です。

一般的なコード補完ツールとは異なり、Devinは自律的なAIソフトウェアエンジニアとして機能します。自らリポジトリをクローンし、OSパッケージをインストールし、バックエンドサービスを起動してテストを実行し、内蔵ブラウザでエンドツーエンドの動作確認を行います。自律型エージェントにシェル実行権限やネットワークアクセスを許可する場合、堅牢なサンドボックスと最小権限の認証情報管理がなければ、テスト用認証情報の漏洩や内部ネットワークへの意図しないアクセス、ホスト環境の汚染といった深刻なセキュリティリスクを招きます。


1. Devinの環境アーキテクチャ:サンドボックスと計算リソースの分離

Devinは、組織のセキュリティポリシー、ネットワーク構成、コンプライアンス要件に応じて3つの実行環境モードを提供しています。

Devin Cloud サンドボックス

デフォルトのクラウドモードでは、Devinの各セッションは独立した一時的(エフェメラル)な仮想環境内で動作します。

Devin CLI によるOSレベルサンドボックス

ローカル環境や自社CIランナーでDevin CLIを実行する場合、--sandbox フラグを付与することでOSレベルの強制隔離を有効化できます。

Devin Outposts(自社管理インフラでの実行)

自社VPC内のデータベースやプライベートなマイクロサービスに対する統合テストが必要な企業向けに、Devin Outpostsはコントロールプレーンとデータプレーンを分離する仕組みを提供します。


2. 階層型シークレット管理と安全な注入メカニズム

CI/CDにおける重大な脆弱性の1つは、認証情報がソースコードにコミットされたり、保存されるマシンイメージやログにベイク(焼き付け)されたりすることです。Devinは暗号化された階層管理により、これを防止します。

シークレットのスコープ分離

ベイクを防ぐ注入原則


3. 安全なビルドと統合テストのステップ別設定手順

工程チームが安全なテストパイプラインを構築する4つの手順:

ステップ1:宣言的ブループリントの構成

Blueprintエディタで、OSツール導入と依存関係解決、テスト手順を明確に分離して記述します。

# 1. initialize: フルビルド時のみ実行。OSパッケージや言語ランタイムのセットアップ
initialize: |
  curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
  apt-get update && apt-get install -y nodejs postgresql-client

# 2. maintenance: 依存関係のインストール。セッション開始時にエージェントへ提示される
maintenance:
  - name: "Install Project Dependencies"
    run: npm ci

# 3. knowledge: Devin向けのテスト実行ガイダンス(コマンドの実行は行われない)
knowledge: |
  ユニットテスト実行コマンド: npm test
  ローカルDB向け統合テスト実行コマンド: npm run test:e2e

ステップ2:テスト専用シークレットの割り当て

  1. Settings > Environment > Blueprints を開き、対象リポジトリを選択します。
  2. Secrets タブで Create secret をクリックします。
  3. 最小権限に絞ったテスト用認証情報を登録します:
    • E2E_DATABASE_URL:分離されたテスト用DBコンテナまたはステージングRDSの接続文字列。
    • TEST_API_KEY:モックデータ操作のみに権限を絞ったサンドボックスAPIキー。
    • DEVIN_AUTH_COOKIE:Web E2Eテスト用の一時セッションCookie。
  4. Note 欄に有効期限や用途(例:「ステージング環境QA専用、月次自動ローテーション」)を明記します。

ステップ3:ネットワークとサンドボックスの境界設定

ステップ4:統合テストの実行とエビデンス確認

コード修正完了後、Devinにテスト実行を指示します:

「自動ビルドを実行し、npm run test:e2e でログインから購入完了までのシナリオをテストしてください。」

Devinは自動的に Testing Mode に入ります:

  1. ブループリント環境を確認し、依存パッケージを整えます。
  2. 注入されたテスト用環境変数を自動認識します。
  3. ローカルサービスを起動してテストを実行し、Web UI検証が必要な場合は内蔵ブラウザを操作します。
  4. 画面操作の録画ビデオを生成し、テスト結果とともにPRに添付します。ログに生のシークレットを出力することなく、動作検証のエビデンスをレビュー担当者に提供できます。

4. セキュリティベストプラクティスと回避すべき落とし穴

セキュリティ領域推奨される実践避けるべき危険な落とし穴
シークレットの保管Devin管理画面またはBlueprint Secretsタブで一元管理する。Blueprint YAML、セットアップスクリプト、コミット対象の .env にハードコードする。
認証情報の権限範囲Devin専用のテストアカウント(devin-test@company.com)を作成し、検証環境のみに限定する。本番環境のAPIキーや開発者個人の特権パーソナルアクセストークン(PAT)を使い回す。
イメージの永続化シークレットは環境変数や $ENVRC 経由で実行時にのみ参照させる。initialize フェーズでシークレットをディスクファイルに書き込み、スナップショットに恒久保存させる。
ネットワーク境界Devin Outpostsやサンドボックスのドメインフィルタを活用し、接続先をテスト環境に限定する。社内プライベートネットワークに直接接続可能な環境で、出側通信を無制限に許可する。
ファイルシステム保護CLIの --sandbox によるOSレベル隔離を活用し、フェイルクローズを徹底する。root権限でサンドボックスを無効化して実行したり、ワークスペース外のディレクトリへの書き込みを放置する。

参考資料