Harden Azure Key Vault trusted endpoint matching
メンテナーはふだん 2 日以内に返信
@apoorvdeshmukh がすでに取り組んでいます。
2026年10月13日 から。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 35/100
調査の方向性
Start by locating SqlColumnEncryptionAzureKeyVaultProvider and reading its trusted-endpoint validation and constructor behavior, then inspect the related tests. Add coverage for the listed DNS, scheme, port, normalization, and input-mutation cases; done means endpoint validation follows the requested structured rules while preserving the described compatibility path.
索引モデルが issue の本文から書いたものです。
説明
Is your feature request related to a problem? Please describe.
SqlColumnEncryptionAzureKeyVaultProvider validates an Azure Key Vault key URI by checking whether Uri.Host ends with one of its trusted endpoint strings. Raw suffix matching does not require a DNS-label boundary, so a hostname can match a trusted suffix without being that domain or one of its subdomains.
The trusted-endpoint representation also does not express whether an entry is an exact host, a DNS suffix, or a complete origin. This makes it difficult to apply clear scheme and port rules to application-supplied endpoints while preserving compatibility with custom Azure environments and development endpoints.
Describe the solution you'd like
Harden and clarify trusted endpoint validation:
- Match built-in domain suffixes only when the host is exactly the suffix or ends with
"." + suffix, using ordinal case-insensitive comparison. - Normalize DNS hosts consistently, including IDN and terminal-dot handling.
- Require HTTPS for built-in Azure Key Vault and Managed HSM endpoints.
- Validate and normalize application-supplied trusted endpoints when the provider is constructed.
- Provide structured semantics for custom endpoints, distinguishing exact origins from entries that intentionally include DNS subdomains.
- Defensively copy trusted endpoint collections so validation policy cannot be changed by mutating the constructor input.
- Preserve reasonable compatibility for existing custom endpoints, with diagnostics and an explicit migration path for ambiguous legacy entries.
Add tests covering:
- Valid exact hosts and subdomains.
- Lookalike suffixes that do not share a DNS-label boundary.
- Hosts that append another DNS suffix after a trusted name.
- Mixed-case, IDN, and terminal-dot hostnames.
- HTTP, HTTPS, default ports, and explicit custom ports.
- Mutation of the input trusted-endpoint array after construction.
Describe alternatives you've considered
- Keep raw
EndsWithmatching. This retains ambiguous behavior and does not accurately model DNS domain membership. - Require exact host matching for every entry. This would not work for the built-in Azure Key Vault domains, where each vault has its own subdomain.
- Immediately reject every legacy custom endpoint format. This would provide simpler rules but could unnecessarily disrupt applications using private clouds, proxies, or development services. A compatibility-conscious migration to structured endpoint rules is preferable.
Additional context
The current built-in list covers Azure Key Vault and Managed HSM domains in public and sovereign clouds. DNS-label-boundary matching should preserve valid hostnames beneath those domains while making the allowlist behavior precise.
- 主要言語
- C#
- スター
- 996
- フォーク
- 348
- 平均マージ
- 5日 15時間
- マージ済み PR(30日)
- 54
環境構築
このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
dotnet/SqlClient のほかの issue
-
SqlBatch.ValidateExecuteCommandBehavior XML comment says NotSupportedException but code throws ArgumentOutOfRangeException対応中かも @apoorvdeshmukh が 4 日前に担当しました。 オープン
難易度 1/5 1時間未満 初心者へのやさしさ 90/100
dotnet/SqlClient#4823 · コメント 1 件 · 担当者 1 名 ·
メンテナーはふだん 2 日以内に返信
-
Sync ExecuteReader on an STA thread deadlocks against a StateChange handler that marshals to the UI thread (OpenAsyncRetry path)再び着手できるかも @mdaigle が 28 日前に担当しましたが、オープン中のプルリクエストはありません。 オープンExternal :link:
難易度 2/5 1〜3時間 初心者へのやさしさ 64/100
dotnet/SqlClient#4534 · コメント 2 件 · 担当者 1 名 ·
メンテナーはふだん 2 日以内に返信
-
Area\Tests
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
dotnet/SqlClient#4377 · コメント 2 件 ·
メンテナーはふだん 2 日以内に返信
-
Auto-Triage: Waiting for Author
難易度 3/5 1〜2日 初心者へのやさしさ 55/100
dotnet/SqlClient#4854 · コメント 6 件 ·
メンテナーはふだん 2 日以内に返信
-
[7.0] Backport #4843オープン:new: Triage Needed
難易度 3/5 半日 初心者へのやさしさ 15/100
メンテナーはふだん 2 日以内に返信
dotnet/SqlClient の issue をすべて見る
似ている issue
-
area: design documentation
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
eyalgolan/statecraft-israel#883 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
メンテナーはふだん 3 日以内に返信
-
area/indexing bug package/core triage
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
メンテナーはふだん 1 日以内に返信
-
enhancement needs triage
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
elastic/docs-builder#4495 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
メンテナーはふだん 1 日以内に返信