|
| 1 | +# Release Notes |
| 2 | + |
| 3 | +## General Availability of Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider |
| 4 | + |
| 5 | +_**3.0.0 released 14 June 2021**_ |
| 6 | + |
| 7 | +This library contains the implementation of `Microsoft.Data.SqlClient.SqlColumnEncryptionKeyStoreProvider` for accessing Azure Key Vault, and the provider class is named `SqlColumnEncryptionAzureKeyVaultProvider`. |
| 8 | + |
| 9 | +### Added |
| 10 | + |
| 11 | +- Introduces column encryption key caching support [#1056](https://github.com/dotnet/SqlClient/pull/1056) |
| 12 | + |
| 13 | +### Breaking Changes |
| 14 | + |
| 15 | +- Microsoft.Data.SqlClient dependency version upgraded to **v3.0.0+** [#1111](https://github.com/dotnet/SqlClient/pull/1111) |
| 16 | + |
| 17 | +### Working with SQLColumnEncryptionAzureKeyVaultProvider |
| 18 | + |
| 19 | +`SqlColumnEncryptionAzureKeyVaultProvider` **v3.0** is implemented against `Microsoft.Data.SqlClient` **v3.0** and supports .NET Framework 4.6.1+, .NET Core 2.1+, and .NET Standard 2.0+. The provider name identifier for this library is "**AZURE_KEY_VAULT**" and it is not registered in the driver by default. Client applications may initialize this provider by providing an `Azure.Core.TokenCredential` and registering it with the driver using any of the below APIs: |
| 20 | + |
| 21 | +- [SqlConnection.RegisterColumnEncryptionKeyStoreProviders](https://docs.microsoft.com/dotnet/api/microsoft.data.sqlclient.sqlconnection.registercolumnencryptionkeystoreproviders?view=sqlclient-dotnet-3.0) |
| 22 | +- [SqlConnection.RegisterColumnEncryptionKeyStoreProvidersOnConnection](https://docs.microsoft.com/dotnet/api/microsoft.data.sqlclient.sqlconnection.registercolumnencryptionkeystoreprovidersonconnection?view=sqlclient-dotnet-3.0) (Added in version 3.0.0) |
| 23 | +- [SqlCommand.RegisterColumnEncryptionKeyStoreProvidersOnCommand](https://docs.microsoft.com/dotnet/api/microsoft.data.sqlclient.sqlcommand.registercolumnencryptionkeystoreprovidersoncommand?view=sqlclient-dotnet-3.0) (Added in version 3.0.0) |
| 24 | + |
| 25 | +Once the provider is registered, it can be used to perform Always Encrypted operations by creating a Column Master Key using the Azure Key Vault Key Identifier URL. |
| 26 | + |
| 27 | +The linked C# samples below demonstrate using Always Encrypted with secure enclaves with Azure Key Vault: |
| 28 | + |
| 29 | +- Legacy API support (Always Encrypted): [AzureKeyVaultProviderExample.cs](https://github.com/dotnet/SqlClient/blob/main/doc/samples/AzureKeyVaultProviderLegacyExample_2_0.cs) |
| 30 | +- New API support (Always Encrypted): [AzureKeyVaultProviderExample.cs](https://github.com/dotnet/SqlClient/blob/main/doc/samples/AzureKeyVaultProviderExample_2_0.cs) |
| 31 | +- Legacy API support (Always Encrypted with secure enclaves): [AzureKeyVaultProviderExample.cs](https://github.com/dotnet/SqlClient/blob/main/doc/samples/doc\samples\AzureKeyVaultProviderWithEnclaveProviderExample.cs) |
| 32 | +- New API support (Always Encrypted with secure enclaves): [AzureKeyVaultProviderExample.cs](https://github.com/dotnet/SqlClient/blob/main/doc/samples/doc\samples\AzureKeyVaultProviderWithEnclaveProviderExample_2_0.cs) |
| 33 | +- Column Encryption Key cache scope example: [AzureKeyVaultProvider_ColumnEncryptionKeyCacheScope.cs](https://github.com/dotnet/SqlClient/blob/main/doc/samples/AzureKeyVaultProvider_ColumnEncryptionKeyCacheScope.cs) |
| 34 | +- Registering custom key store provider - Connection Precedence: [RegisterCustomKeyStoreProvider_ConnectionPrecedence.cs](https://github.com/dotnet/SqlClient/blob/main/doc/samples/RegisterCustomKeyStoreProvider_ConnectionPrecedence.cs) |
| 35 | +- Registering custom key store provider - Command Precedence: [RegisterCustomKeyStoreProvider_CommandPrecedence.cs](https://github.com/dotnet/SqlClient/blob/main/doc/samples/RegisterCustomKeyStoreProvider_CommandPrecedence.cs) |
| 36 | + |
| 37 | +For further details, refer to [Using the Azure Key Vault provider](https://docs.microsoft.com/sql/connect/ado-net/sql/sqlclient-support-always-encrypted#using-the-azure-key-vault-provider) |
| 38 | + |
| 39 | +## Target Platform Support |
| 40 | + |
| 41 | +- .NET Framework 4.6.1+ |
| 42 | +- .NET Core 2.1+ (Windows x86, Windows x64, Linux, macOS) |
| 43 | +- .NET Standard 2.0+ |
| 44 | + |
| 45 | +### Dependencies |
| 46 | + |
| 47 | +#### .NET Framework |
| 48 | + |
| 49 | +- Azure.Core 1.6.0 |
| 50 | +- Azure.Security.KeyVault.Keys 4.0.3 |
| 51 | +- Microsoft.Data.SqlClient 3.0.0 |
| 52 | +- System.Text.Encodings.Web 4.7.2 |
| 53 | +- Microsoft.Extensions.Caching.Memory 5.0.0 |
| 54 | + |
| 55 | +#### .NET Core |
| 56 | + |
| 57 | +- Azure.Core 1.6.0 |
| 58 | +- Azure.Security.KeyVault.Keys 4.0.3 |
| 59 | +- Microsoft.Data.SqlClient 3.0.0 |
| 60 | +- System.Text.Encodings.Web 4.7.2 |
| 61 | +- Microsoft.Extensions.Caching.Memory 5.0.0 |
| 62 | + |
| 63 | +#### .NET Standard |
| 64 | + |
| 65 | +- Azure.Core 1.6.0 |
| 66 | +- Azure.Security.KeyVault.Keys 4.0.3 |
| 67 | +- Microsoft.Data.SqlClient 3.0.0 |
| 68 | +- System.Text.Encodings.Web 4.7.2 |
| 69 | +- Microsoft.Extensions.Caching.Memory 5.0.0 |
0 commit comments