Reference: Environment variables
This reference page describes all environment variables that can be used to configure the Anjuna Nitro Runtime.
ANJUNA_LICENSE_PATH
If specified, anjuna-nitro-cli
will use this path instead of /opt/anjuna/license.yaml
. This is for
running AWS Nitro EC2 Enclaves and not for use with Anjuna Nitro Kubernetes Toolset, because the webhook
will automatically place the license secret at the correct location. ANJUNA_LICENSE_PATH
is
applicable for both build-enclave
and run-enclave
.
For more information on licensing, see Licensing the Anjuna Nitro Runtime.
ANJ_ENCLAVE_DEBUG_MODE
If set to yes
on a Pod with the Anjuna Nitro Kubernetes Toolset, ANJ_ENCLAVE_DEBUG_MODE
creates a debug enclave.
If not defined or set,
the Anjuna Nitro Kubernetes Toolset will start the AWS Nitro Enclave in production mode.
ANJ_NITRO_CLI_ARTIFACTS
anjuna-nitro-cli build-enclave
will use temporary files in the $ANJ_NITRO_CLI_ARTIFACTS
directory.
If you run multiple builds in parallel,
these files may conflict and cause corrupted EIFs to be produced. It is recommended to
set $ANJ_NITRO_CLI_ARTIFACTS
to a different path for each parallel build-enclave
command.
ANJ_ENCLAVE_KMS_DECRYPT_RETRY_TIMEOUT_SECONDS
When an application’s EIF is configured with an encrypted config, the Anjuna Nitro Runtime communicates directly with AWS KMS to leverage its Cryptographic Attestation capabilities. The Anjuna Nitro Runtime decrypts the encrypted config and injects the enclave’s application configuration at runtime.
This is secured by configuring an AWS KMS key’s policy to allow the kms:Decrypt
operation
for an application that has specific enclave measurements (PCR values).
In this scenario, when a new version of the application is built,
some of the enclave’s measurements (PCR values) will change.
If the KMS policy to access a key includes PCRs with a changed value,
you need to update the KMS policy for accessing the key in order to accommodate the new value.
As a global distributed service, AWS KMS has eventually-consistent updates for KMS key policies, meaning changes to a key policy may not be immediately available.
For this reason, an AccessDeniedException
error might be thrown by the Anjuna Nitro Runtime when
an updated version of an application’s EIF is launched soon after updating
the encrypted config’s KMS key policy.
In order to work around this issue, the Anjuna Nitro Runtime exposes the environment variable
ANJ_ENCLAVE_KMS_DECRYPT_RETRY_TIMEOUT_SECONDS
.
When this variable is set,
the Anjuna Nitro Runtime will retry the kms:Decrypt
operation until the timeout duration has elapsed.
This enables the application’s CI/CD to launch the enclave with a custom timeout
to account for any delays with AWS KMS in propagating changes to a key’s policy.
Since these delays might vary based on the region where the enclave is being deployed,
this environment variable is allowed, by default, to be defined
via the parent instance or your Pod yaml
manifest.
It can also be defined in the environment
section of the EIF configuration file.
If defined in both places,
the value defined by either the parent instance or the Pod yaml
precedes the value from the enclave configuration file.
If the environment variable is not set, the Anjuna Nitro Runtime will attempt to decrypt the encrypted config using KMS with up to three tries, as defined by the default AWS SDK retry configuration. If it is set, the Anjuna Nitro Runtime will retry until it succeeds or it reaches the defined timeout.