セキュリティ
開発トンネルは、セキュリティを重視した開発者向けトンネリング サービスです。 この記事では、開発トンネルのセキュリティ保護方法について説明します。
概要
既定では、トンネルをホストして接続するには、トンネルを作成したのと同じ Microsoft、Microsoft Entra ID、または GitHub アカウントを使用した認証が必要です。 トンネリングでは、Azure でホストされているサービスへの送信接続が必要です。 このサービスを使用するために受信接続は必要ありません。
ドメイン
開発トンネルへのアクセスは、次のドメインへの送信アクセスを許可または拒否することで制御できます。
認証
github.com
login.microsoftonline.com
開発トンネル
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>
ヒント
これは、匿名アクセスを有効にしなくてもトンネルにアクセスできるため、非対話型クライアントに便利です。 アプリケーション固有の承認の妨げになる可能性を防ぐために、標準の Authorization
ヘッダーの代わりに X-Tunnel-Authorization
ヘッダーを使用します。
CLI を使用してトンネル アクセスを管理する方法の詳細については、「開発トンネル アクセスを管理する 」セクションを参照してください。
GitHub 組織アクセス
GitHub 組織のすべてのメンバーにアクセス権を付与するトンネルをサポートするには、開発トンネル GitHub アプリを組織にインストールします。 これにより、その組織のユーザーのメンバーシップ ステータスをチェックする開発トンネル サービス権限が与えられます。 (開発トンネルでは、組織に対するリポジトリのアクセス許可は必要ありません)。この操作を実行するには、GitHub 組織の管理者である必要がある場合があります。
その他の質問
このページを確認した後、さらに質問がある場合は、「フィードバックとサポート」を参照してください。