開発トンネルは、セキュリティに重点を置いた開発者トンネリング サービスです。 この記事では、開発トンネルのセキュリティ保護方法について説明します。
概要
既定では、トンネルをホストして接続するには、トンネルを作成したのと同じ Microsoft、Microsoft Entra ID、または GitHub アカウントを使用した認証が必要です。 トンネリングでは、Azure でホストされているサービスへの送信接続が必要です。 サービスを使用するために受信接続は必要ありません。
ドメイン
開発トンネルへのアクセスは、次のドメインへの送信アクセスを許可または拒否することで制御できます。
認証
github.com
login.microsoftonline.com
Dev トンネル
global.rel.tunnels.api.visualstudio.com
[clusterId].rel.tunnels.api.visualstudio.com
[clusterId]-data.rel.tunnels.api.visualstudio.com
*.[clusterId].devtunnels.ms
*.devtunnels.ms
現在の [clusterId]
値の一覧は、 https://global.rel.tunnels.api.visualstudio.com/api/v1/clustersにあります。
Web 転送
HTTP(S)/WS(S) プロトコルを使用するトンネル ポートには、指定された Web 転送 URL (例: https://tunnelid-3000.devtunnels.ms
) を介して直接アクセスできます。
- セキュリティで保護されていないクライアント接続は、常に HTTPS/WSS に自動的にアップグレードされます。
- HTTP Strict Transport Security (HSTS) は 1 年間の最長有効期間で有効です。
- サービスでサポートされる TLS の最小バージョンは 1.2 で、TLS 1.3 が優先バージョンです。
- TLS 終了は、Microsoft CA によって発行されたサービス証明書を使用して、サービスイングレスで行われます。
- TLS 終了後、ヘッダーの書き換えが行われます。 これは、多くの Web アプリケーション開発シナリオに必要です。
フィッシング対策保護
Web 転送 URL に初めて接続すると、ユーザーにスポットフィッシング対策ページが表示されます。 このページは、次の状況ではスキップされます。
- 要求では、次以外のメソッドが使用されます。
GET
- 要求ヘッダー
Accept
にtext/html
が含まれていません - 要求に
X-Tunnel-Skip-AntiPhishing-Page
ヘッダーが含まれている - 要求に
X-Tunnel-Authorization
ヘッダーが含まれている - ユーザーは既にページにアクセスし、[続行] をクリックしました
トンネル アクセス
既定では、トンネルとトンネル のポートはプライベートであり、トンネルを作成したユーザーのみがアクセスできます。
認証なしでトンネルまたはトンネル ポートにアクセスする必要がある場合は、匿名アクセス制御エントリ (ACE) を追加できます ( --allow-anonymous
を使用)。
トンネル アクセスは、現在の Microsoft Entra テナント ( --tenant
を使用) または特定の GitHub 組織 ( --organization
を使用) に拡張することもできます。後者については、以下の GitHub 組織アクセス を参照してください。
CLI を使用して、トークンを保持するすべてのユーザーに制限付きアクセスを許可するアクセス トークンを要求することもできます ( devtunnel token
を使用します)。 これは高度な機能ですが、特定の状況で役立ちます。
現在、次の 4 種類のトンネル アクセス トークンを使用できます。
- "クライアント アクセス トークン" を使用すると、ベアラーはトンネルの任意のポートに接続できます。
- "ホスト アクセス トークン" を使用すると、ベアラーはトンネルをホストして接続を受け入れますが、その他の変更は行いません。
- "ポート アクセス トークンの管理" を使用すると、ベアラーはトンネル上のポートを追加および削除できます。
- "管理アクセス トークン" を使用すると、ベアラーは、アクセス制御の設定、ホスティング、接続、トンネルの削除など、そのトンネルに対して任意の操作を実行できます。
すべてのトークンは現在のトンネルに制限されます。現在のユーザーの 他 のトンネル (存在する場合) へのアクセス権は付与されません。 トークンはしばらくしてから有効期限が切れます (現在は 24 時間)。 トークンは、(管理アクセス トークンだけでなく) トンネルへの管理スコープ アクセス権を持つ実際のユーザー ID を使用してのみ更新できます。
ほとんどの CLI コマンドでは、ログインの代わりに適切なトークンを使用して --access-token
引数を受け取ることができます。
Web クライアントは、ヘッダー内のトークンを渡して、トンネル URI への要求を承認できます。
X-Tunnel-Authorization: tunnel <TOKEN>
ヒント
これは、匿名アクセスを有効にしなくてもトンネルにアクセスできるため、非対話型クライアントに役立ちます。 アプリケーション固有の承認に干渉する可能性を防ぐために、標準の X-Tunnel-Authorization
ヘッダーの代わりに Authorization
ヘッダーを使用します。
CLI を使用してトンネル アクセスを管理する方法の詳細については、「 開発トンネル アクセス の管理」セクションを参照してください。
GitHub 組織アクセス
GitHub 組織のすべてのメンバーへのアクセスを許可するトンネルをサポートするには、Dev トンネル GitHub アプリ を組織にインストールします。 その場合、Dev トンネル サービスには、その組織内のユーザーのメンバーシップの状態を確認するアクセス許可が付与されます。 (Dev トンネルでは、組織に対するリポジトリのアクセス許可は必要ありません)。この操作を実行するには、GitHub 組織の管理者である必要がある場合があります。
その他の質問
このページを確認した後、さらに質問がある場合は、「 フィードバックとサポート」を参照してください。