-
Type: Improvement
-
Resolution: Done
-
Priority: Unknown
-
None
-
Component/s: Client Side Encryption
Summary
At present, using Azure Key Vault for KMS requires a tenant ID, client ID, and client secret (password) in order to obtain an OAuth2 token to subsequently query the Azure Key Vault for key management.
Azure VMs are automatically assigned a Managed Identity which allows the VM to obtain an OAuth2 token by querying a private metadata HTTP endpoint without any special credentials. The token obtained can then be used to request access to Azure resources, including the Key Vault, if applicable.
We have added support for automatic KMS credentials for AWS (DRIVERS-2280) and GCP (DRIVERS-2377). The Azure VM Managed Identity can be used for the same purpose, removing the need for the client to provide credentials if they are running within an Azure VM that has the appropriate access to the Key Vault:
- Allow the user to omit Azure credentials as part of kmsProviders, and request that credentials be obtained automatically from the environment.
- Attempt to load OAuth2 token from the Azure metadata endpoint. If we are running within an Azure VM, this token corresponds to the managed identity of that VM.
- Use the token from (2) as the KMS credential for client encryption.
Motivation
Who is the affected end user?
All end users of client-side encryption that wish to use Azure Key Vault as their KMS provider, and are running their client within an Azure VM.
How does this affect the end user?
Supporting the VM's managed identity alleviates the need to manage a separate set of credentials for their client application.
How likely is it that this problem or use case will occur?
As Azure KMS users are likely running within an Azure VM, most Azure users will likely find benefit in delegating the credential management to the Azure platform.
If the problem does occur, what are the consequences and how severe are they?
Managing and securing additional credentials creates an additional security concern and barrier to adoption for client-side encryption, whereas requesting the client driver to automatically work with the Azure host is simpler, more secure, and less error-prone.
Is this issue urgent?
The first mention of using Azure Managed Identities appears in December of 2020. The recent addition of automatic credentials for AWS and GCP makes this change prudent to match platform support.
Is this ticket required by a downstream team?
No
Is this ticket only for tests?
No
- has to be finished together with
-
DRIVERS-2600 Clean up Azure resources on task failure
- Closed
- is depended on by
-
RUBY-3088 Support the Azure VM-assigned Managed Identity for Automatic KMS Credentials
- Closed
- is duplicated by
-
DRIVERS-1780 Support for Azure Managed Identities
- Development Complete
-
DRIVERS-2457 Define Additional Prose Tests for Automatic KMS in Azure
- Closed
- is related to
-
DRIVERS-2464 Consider clear azure cached token in case of failure
- Backlog
- related to
-
DRIVERS-2924 Document "accessToken" form of KMS providers
- Backlog
-
DRIVERS-2457 Define Additional Prose Tests for Automatic KMS in Azure
- Closed
-
MONGOCRYPT-473 Recognize Azure Automatic KMS Requests
- Closed
- split to
-
JAVA-4706 Support the Azure VM-assigned managed identity for automatic KMS credentials
- Closed
-
CDRIVER-4454 Support the Azure VM-assigned Managed Identity for Automatic KMS Credentials
- Closed
-
CSHARP-4294 Support the Azure VM-assigned Managed Identity for Automatic KMS Credentials
- Closed
-
CXX-2565 Support the Azure VM-assigned Managed Identity for Automatic KMS Credentials
- Closed
-
GODRIVER-2521 Support the Azure VM-assigned Managed Identity for Automatic KMS Credentials
- Closed
-
MOTOR-1017 Support the Azure VM-assigned Managed Identity for Automatic KMS Credentials
- Closed
-
NODE-4537 Support the Azure VM-assigned Managed Identity for Automatic KMS Credentials
- Closed
-
PHPLIB-938 Support the Azure VM-assigned Managed Identity for Automatic KMS Credentials
- Closed
-
PYTHON-3396 Support the Azure VM-assigned Managed Identity for Automatic KMS Credentials
- Closed
-
RUBY-3088 Support the Azure VM-assigned Managed Identity for Automatic KMS Credentials
- Closed
-
RUST-1442 Support the Azure VM-assigned Managed Identity for Automatic KMS Credentials
- Closed
- mentioned in
-
Page Loading...