-
Notifications
You must be signed in to change notification settings - Fork 547
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by: Praveen M <m.praveen@ibm.com>
- Loading branch information
1 parent
8b3ef8f
commit db01cbe
Showing
2 changed files
with
81 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
# Encrypted volumes with Azure Key Vault | ||
|
||
Azure Key Vault is a cloud service for securely storing and accessing secrets. | ||
A secret is anything that you want to tightly control access to, such as API keys, | ||
passwords, certificates, or cryptographic keys. | ||
|
||
## Connection to Azure Key Vault | ||
|
||
Below values are used to establish the connection to the Key Vault | ||
service from the CSI driver and to make use of the secrets `GetSecret`/`SetSecret` | ||
operations: | ||
|
||
```text | ||
* AZURE_VAULT_URL | ||
The URL used to access the Azure Key Vault service. | ||
* AZURE_CLIENT_ID | ||
The Client ID of the Azure application object (also known as the service principal). | ||
This ID serves as the username. | ||
* AZURE_TENANT_ID | ||
The Tenant ID associated with the service principal. | ||
* AZURE_CLIENT_CERTIFICATE | ||
The client certificate (which includes the private key and is not password protected) | ||
used for authentication with Azure Key Vault. | ||
``` | ||
|
||
### Values provided in the connection Secret | ||
|
||
Considering `AZURE_CLIENT_CERTIFICATE` is sensitive information, | ||
it will be provided as a Kubernetes Secret to the CSI driver. The Ceph CSI | ||
KMS plugin interface for the Azure key vault will read the Secret name from the kms | ||
ConfigMap and fetch the certificate. | ||
|
||
### Values provided in the config map | ||
|
||
`AZURE_VAULT_URL`, `AZURE_CLIENT_ID`, `AZURE_TENANT_ID` are part of the KMS ConfigMap. | ||
|
||
### Storage class values or configuration | ||
|
||
The Storage class has to be enabled for encryption and `encryptionKMSID` has | ||
to be provided which is the matching value in the kms config map. | ||
|
||
## Volume Encrypt or Decrypt Operation | ||
|
||
CephCSI generate's unique passphrase for each volume to be used to encrypt/decrypt. | ||
The passphrase is securely store in Azure key vault using the `SetSecret` operation. | ||
At time of decrypt the passphrase is retrived from the key vault using the `GetSecret` | ||
operation. | ||
|
||
# volume Delete Operation | ||
|
||
When the corresponding volume is deleted, the stored secret in the Azure Key Vault | ||
will also be permanently removed. |