Skip to main content

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

  1. Go to Key vaults
  2. For each Key vault, click on Secrets.
  3. Under the Settings section, Make sure Enabled? is set to Yes
  4. 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

  1. Go to Key vaults
  2. For each Key vault, click on Secrets.
  3. Under the Settings section, Make sure Enabled? is set to Yes
  4. 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