azure-protected-secrets-tool - Man Page
inspect Azure Confidential VM state and unprotect host-provisioned secrets
Synopsis
azure-protected-secrets-tool COMMAND [ARGUMENT] [Options]
azure-protected-secrets-tool [-h|--help] [--version]
Description
azure-protected-secrets-tool is the command-line front-end to the Azure CVM Secrets Provisioning Library (SSPL). It detects the confidential-computing isolation environment of the host and decrypts secrets that were provisioned to the VM by the Azure control plane and sealed to the virtual TPM (vTPM).
The commands that touch the vTPM (is-secrets-provisioning-enabled, unprotect-secret) typically require access to the TPM resource-manager device (/dev/tpmrm0) and therefore must be run as root on a Confidential VM. The is-cvm command only reads the hardware report and does not require elevated privileges.
Commands
- is-cvm
Report the confidential-computing isolation type of the host. Output is of the form isolation_type=<TYPE> hypervisor=<NAME>, where TYPE is SNP (AMD SEV-SNP), TDX (Intel TDX), or NONE (not a Confidential VM). Returns a non-zero exit status when the host is not a Confidential VM.
- is-secrets-provisioning-enabled
Report whether secrets provisioning has been enabled on this VM by checking for the presence of the provisioning key in the vTPM. Prints enabled=true or enabled=false.
- unprotect-secret [TOKEN]
Decrypt a host-protected secret. The protected secret is supplied as a JSON Web Token (JWT), either as the inline TOKEN positional argument or, when omitted, read from standard input. The decrypted secret is written to standard output.
- validate-imds-metadata
Perform two-level verification of the Azure Instance Metadata Service (IMDS) attestation blob.
Options
- --policy N
For unprotect-secret, set the unseal policy bitmask to the unsigned integer N. When omitted the policy defaults to 0.
- --json
Emit machine-readable JSON instead of the default human-readable output. Supported by the reporting commands (for example is-cvm).
- -h, ā--help
Print a usage summary and exit.
- --version
Print the library version and exit.
Exit Status
- 0
Success. For is-cvm, indicates the host is a Confidential VM.
- non-zero
An error occurred, or for is-cvm the host is not a Confidential VM.
Examples
Detect the isolation type on a CVM:
$ azure-protected-secrets-tool is-cvm isolation_type=SNP hypervisor=Microsoft Hv
The same, as JSON:
$ azure-protected-secrets-tool is-cvm --json
{"isolation_type":"SNP","hypervisor":"Microsoft Hv"}Unprotect a secret supplied on standard input, applying policy 2:
$ azure-protected-secrets-tool unprotect-secret --policy 2 < token.jwt
See Also
Project homepage: https://github.com/Azure/confidential-computing-cvm-guest-attestation
Author
Microsoft Corporation.