lacework-global-578
8.4 Ensure that the Expiration Date is set for all Secrets in Non-RBAC Key Vaults (Automated)
Profile Applicability
• Level 1
Description
Ensure that all Secrets in Non Role Based Access Control (RBAC) Azure Key Vaults have an expiration time set.
Rationale
The Azure Key Vault enables users to store and keep secrets within the Microsoft Azure environment. Secrets in the Azure Key Vault are octet sequences with a maximum size of 25k bytes each. The exp
(expiration time) attribute identifies the expiration time on or after which the secret MUST NOT be used. By default, secrets never expire. It is thus recommended to rotate secrets in the key vault and set an explicit expiration time for all secrets. This ensures that the secrets cannot be used beyond their assigned lifetimes.
Impact
Secrets cannot be used beyond their assigned expiry times respectively. Secrets need to be rotated periodically wherever they are used.
Audit
From Azure Portal
- Go to
Key vaults
- For each Key vault, click on
Secrets
. - Under the
Settings
section, Make sureEnabled?
is set toYes
- Ensure that each secret in the vault has
EXPIRATION DATE
set as appropriate
From Azure CLI
Get a list of all the keyvaults in your Azure environment by running the following command:
az keyvault list
For each keyvault ensure that the output of the below command contains ID (id), enabled status as true
and Expiration date (expires) is not empty or null:
az keyvault secret list --vault-name <KEYVALUTNAME> --query '[*].{"kid":kid,"enabled":attributes.enabled,"expires":attributes.expires}'
From Azure PowerShell
Retrieve a list of Azure Key Vaults
Get-AzKeyVault
For each Key Vault run the following command to determine which vaults are configured to use RBAC.
Get-AzKeyVault -VaultName <Vault Name>
For each Key Vault with the EnableRbacAuthorization
setting set to False
or empty, run the following command.
Get-AzKeyVaultSecret -VaultName <Vault Name>
Make sure the Expires
setting is configured with a value as appropriate wherever the Enabled
setting is set to True
.
Remediation
From Azure Portal
- Go to
Key vaults
- For each Key vault, click on
Secrets
. - Under the
Settings
section, Make sureEnabled?
is set toYes
- Set an appropriate
EXPIRATION DATE
on all secrets.
From Azure CLI
Use the below command to set EXPIRATION DATE
on the all secrets.
az keyvault secret set-attributes --name <secretName> --vault-name <vaultName> --expires Y-m-d'T'H:M:S'Z'
From Azure PowerShell
For each Key Vault with the EnableRbacAuthorization
setting set to False
or empty, run the following command.
Set-AzKeyVaultSecret -VaultName <Vault Name> -Name <Secret Name> -Expires <DateTime>
References
https://docs.microsoft.com/en-us/azure/key-vault/key-vault-whatis
https://docs.microsoft.com/en-us/rest/api/keyvault/about-keys--secrets-and-certificates#key-vault-secrets
https://docs.microsoft.com/en-us/security/benchmark/azure/security-controls-v3-data-protection#dp-6-use-a-secure-key-management-process
https://docs.microsoft.com/en-us/powershell/module/az.keyvault/set-azkeyvaultsecret?view=azps-7.4.0