Devin Connect は現在アーリーアクセス段階です。機能や設定は今後変更される可能性があります。アーリーアクセスをご希望の場合は、Cognition の account team までお問い合わせください。
Devin Connect の機能
Devin Connect は 2 つの部分から構成されており、それぞれ独立して設定します。 ネットワーク内のポリシープロキシ。 Gateway は、デフォルト拒否の 許可リスト を備えた HTTP CONNECT proxy です。host:port への接続リクエストを受け付け、設定したルートと照合し、お客様自身の DNS で名前を解決し、宛先へ接続してバイト列をそのまま中継します。Gateway も Devin のインフラストラクチャも、Devin VM とお客様のサービス間の TLS を終端したり検査したりすることはなく、すべての接続が監査ログに記録されます。
Devin からそのプロキシへの非公開経路。 Devin は、どちら側も公開インターネットに何も露出させずにプロキシへ到達する必要があります。その方法は 2 つあり、いずれの場合もプロキシの動作は同一です。
- リバーストンネル: Gateway が TLS 経由で Devin 側のエンドポイントへアウトバウンド接続し、Devin はそのトンネルを通じて接続リクエストを送り返します。お客様のネットワークへのインバウンドは一切開放されず、クラウドプロバイダーとの統合も不要です。
- AWS PrivateLink: Gateway の前面に Network Load Balancer と VPC Endpoint Service を配置し、Cognition が専用テナント VPC 内の Interface VPC Endpoint からこれを利用します。トラフィックは AWS バックボーン内に留まり、Devin は非公開 IP 経由で Gateway へ直接接続します。
- 専用のシングルテナント VPC。 Devin デプロイメントは独自の VPC 内で動作します (Customer Dedicated Deployment モデル を参照) 。Devin VM は、ルーティング対象の宛先向けトラフィックを、Cognition が設定した egress 制御を介して Gateway へ送信します。
- デフォルト拒否を二重に適用。 ルートは Gateway 側と Devin 側の両方で適用されるため、片側の設定変更だけではアクセス範囲を広げられません。宛先をルーティングしても、セッションの権限が広がることはありません。あくまでセッションの セキュリティプロファイル が許可している必要があります。
- アプリケーションの TLS はエンドツーエンド。 Gateway は不透明なバイトストリームを転送するだけです。
- DNS はネットワーク内に留まる。 ルートの宛先はお客様のリゾルバー (デフォルトでは Gateway ホストのシステムリゾルバー、または設定したネームサーバー) で解決されます。
- 1 つのデプロイメントですべてのルーティング対象の宛先をカバー。 サービスごとに個別の仕組みを構築する必要はなく、Devin の設定でホスト名と IPv4 範囲を追加するだけです。
接続モードの選択
Devin Connect を設定する
どちらのモードでも、設定は Devin の Web アプリで行います。Enterprise 設定の「Devin Connect」ページから設定でき、適切な管理者ロールを持つユーザーが利用できます。1 つのアカウントに複数の gateway を作成でき、gateway ごとにそれぞれの宛先グループへのルーティングを担います。作成できるリバーストンネル gateway は最大 1 つまでですが、PrivateLink gateway は任意の数を作成できます。- 「Add gateway」を選択して名前を付け、接続方式を選びます。リバーストンネルの場合は「Tunnel」、AWS PrivateLink の場合は「Direct」を選択します。「Direct」の場合は、Interface Endpoint の DNS 名とポートも入力します (AWS PrivateLink タブを参照) 。
- gateway のカードで、Devin がその gateway 経由でアクセスする宛先ごとに「Add destination」を選択します。宛先には、完全一致のホスト名、または IPv4 アドレスや
10.20.0.0/16のような CIDR を指定します。ワイルドカードはサポートされていません。1 つの宛先が所属できる gateway は 1 つだけです。 - トンネル gateway の場合は、「Generate token」を選択して登録します。エンロールメントトークンは一度だけ表示され、Devin に保存されることはありません。「Regenerate token」を使えば、いつでもローテーションまたは失効できます。Direct gateway には認証対象となるトンネルがないため、この手順は不要です。
- トンネル gateway の場合は、利用するプラットフォーム (Docker、Kubernetes、AWS ECS、ECS または EC2 上の Terraform、Linux ホスト) 向けのデプロイ用スニペットをコピーします。スニペットには、gateway の宛先から生成された、そのまま実行できる
config.yamlが含まれています。宛先を変更した後は、スニペットを再度コピーしてください。
ホスト名と IPv4 の宛先
- ホスト名は、セッションの接続先の名前で照合されます。この名前は TLS SNI または HTTP の
Hostヘッダーから取得されます。そのため、ホスト名でルーティングできるのは TLS とプレーンな HTTP のトラフィックのみです。名前解決には、Gateway がお使いの DNS を使用します。 - IPv4 アドレスと CIDR は接続の宛先 IP で照合されるため、SSH やデータベース接続を含むあらゆる TCP プロトコルをルーティングできます。これらのルートでは、Devin は社内のホスト名を解決しません。セッションから IP アドレスで接続するか、環境内で名前解決の手段を用意してください。たとえば、ブループリントで
/etc/hostsの項目を設定する方法があります。
config.yaml で IPv4 の宛先を許可するには、ipv4 ルールを使用します。生成されるスニペットには、これらのルールがあらかじめ含まれています。
接続モード
- リバーストンネル
- AWS PrivateLink
ネットワーク内のゲートウェイから専用 Devin VPC へのアウトバウンド専用接続
<customer>.gateway.devinenterprise.com:443 へ N 本の TLS トンネルを外向きに張ります。インバウンドポートを開放する必要は一切ありません。登録済みのトンネルが転送するのは Devin 側から Gateway へ向けて開かれたストリームのみで、Devin へのインバウンド経路にはなりません。エンロールメントの流れは次のとおりです。- Devin が「Devin Connect」設定ページから、トンネル gateway 用のエンロールメントトークンを発行します。
tunnel.auth_token_fileが指すパスに、そのトークンを Gateway ホスト上へ配置します。- Gateway が
<customer>.gateway.devinenterprise.com:443へ接続し、Devin エッジのサーバー証明書を検証してトークンを提示します。 - エッジがトークンを検証し (保存済みのダイジェストとの定数時間比較。生のトークンが Devin 側に保存されることはありません) 、トンネルを登録します。以降、gateway の接続先に対する Devin 側からの接続は、このトンネルを経由します。
tunnel スタンザで設定し、listen アドレスを指定しないため、Gateway ホストはプロキシポートを一切公開しません。このモードで追加で確認すべき項目:
- Gateway から
<customer>.gateway.devinenterprise.com:443および許可リストに登録した内部サービスへのエグレスを許可してください。インバウンドのルールは不要です。 - エンロールメントトークンはシークレットマネージャーに保存し、ファイルとしてマウントしてください。イメージ、バージョン管理下の設定ファイル、ログには決して埋め込まないでください。Gateway がトークンをログに出力することはありません。
- 必要に応じて、エグレスのCIDRレンジをCognitionに連携すれば、公開エンドポイントをIPレベルで制限できます (多層防御。認証のゲートはあくまでエンロールメントトークンです) 。
Configuration リファレンス
Gateway は単一の YAML ファイルで設定します。設定内容は厳密に検証され、fail-closed で動作します。つまり、検証に失敗した設定はファイル全体が拒否され、直前の設定がアクティブなまま維持されます。ファイルは 5 秒ごとにポーリングされ、ホットリロードされます。Routes (許可リスト)
いずれのルートにもマッチしなかった通信はすべて拒否されます。ルートのリストが空の場合は、すべてが拒否されます。ルートは記述順に評価され、最初にマッチしたものが適用されます。
hostnames は DNS 解決前に、リクエストされたとおりの名前でマッチングされます。そのため policy は、解決結果の IP ではなく名前に対して適用されます。
リスナー
DNS
DNSがループバック、リンクローカル、または未指定のアドレスに名前解決するホスト名ルートは拒否されます。そのため、許可リストに登録された名前をGatewayホスト自体やメタデータエンドポイントに向けることはできません。
Gateway の実行
Gateway は、単一の静的バイナリを含む container image として提供されます (image はFROM scratch でビルドされ、非 root ユーザーで実行されます) 。設定は /etc/devin-gateway/config.yaml にマウントし、トンネルモードでは token ファイルを tunnel.auth_token_file で指定した場所にマウントしてください。
admin_listen 上の運用エンドポイント:
/healthz— プロセスの死活確認。/readyz— 準備状態。/metrics— Prometheus メトリクス。
- Gateway はプライベートサブネットで実行してください。
/healthzと/readyzをオーケストレーターのヘルスチェックに組み込んでください。- Devin の設定にある各 gateway の接続先と、その Gateway の設定にあるルートを常に同期させてください。片方だけで許可されている接続先には到達できません。
ログ記録とSIEM統合
Gatewayは標準出力にログを出力します。標準出力が端末でない場合 (コンテナ環境では通常こちらになります) 、ログは機械処理しやすいJSON行形式で出力されます。SIEMに取り込むには、プラットフォームの標準的なログパイプラインを利用してください。コンテナのログドライバーやエージェント (CloudWatch Logs、Fluent Bit、Vector、Datadogエージェントなど) が標準出力を収集し、他のワークロードのログと同様に転送します。GatewayにSIEM固有の設定は必要ありません。 接続の監査イベントには次のものが含まれます。conn_openとconn_close。宛先ホストとポート、マッチしたルート名、クライアントアドレス、各方向の転送バイト数、継続時間を含みます。deny。宛先および理由 (例: マッチする許可リストルートがない) を含みます。

