Users and admins upload machine and cloud credentials to Tower so that it can access machines and external services on their behalf. By default, sensitive credential values (such as SSH passwords, SSH private keys, API tokens for cloud services) in Tower are stored in the database after being encrypted. With external credentials backed by credential plugins, you can map credential fields (like a password or an SSH Private key) to values stored in a secret management system instead of providing them to Tower directly. Starting with version 3.5, Ansible Tower provides a secret management system that include integrations for:
These external secret values will be fetched prior to running a playbook that needs them. For more information on specifying these credentials in the Tower User Interface, see Credentials.
When configuring Tower to pull a secret from a 3rd-party system, it is in essence linking credential fields to external systems. To link a credential field to a value stored in an external system, select the external credential corresponding to that system and provide metadata to look up the desired value. The metadata input fields are part of the external credential type definition of the source credential.
Tower provides a credential plugin interface for developers, integrators, admins, and power-users with the ability to add new external credential types to Tower so it can be extended to support other secret management systems. For more detail, see the development docs for credential plugins.
Use the Ansible Tower User Interface to configure and use each of the supported 3-party secret management systems.
The metadata required depends on the input source selected:
Input Source | Metadata | Description |
---|---|---|
CyberArk AIM | Object Query (Required) | Lookup query for the object |
Object Query Format | Select Exact for a specific secret name, or Regexp` for a secret that has a dynamically generated name |
|
Reason | If required per the object’s policy, supply a reason for checking out the secret, as CyberArk logs those | |
CyberArk Conjur | Secret Identifier | The identifier for the secret |
Secret Version | Specify a version of the secret, if necessary, otherwise, leave it empty to use the latest version | |
HashiVault Secret Lookup | Path to Secret (required) | Specify the path to where the secret information is stored (e.g., /path/username) |
Key Name (required) | Specify the name of the key to look up the secret information | |
Secret Version (V2 Only) | Specify a version if necessary, otherwise, leave it empty to use the latest version | |
HashiCorp Signed SSH | Unsigend Public Key (required) | Specify the public key of the cert you want to get signed. It needs to be present in the authorized keys file of the target host(s). |
Path to Secret (required) | Specify the path to where the secret information is stored (e.g., /path/username) | |
Role Name (required) | A role is a collection of SSH settings and parameters that are stored in Hashi vault. Typically, you can specify a couple of them with different privileges, timeouts, etc. So you could have a role that is allowed to get a cert signed for root, and other less privileged ones, for example. | |
Valid Principals | Specify a user (or users) other than the default, that you are requesting vault to authorize the cert for the stored key. Hashi vault has a default user for whom it signs (e.g., ec2-user). | |
Azure KMS | Secret Name (required) | The actual name of the secret as it is referenced in Azure’s Key vault app |
Secret Version | Specify a version of the secret, if necessary, otherwise, leave it empty to use the latest version |
When CyberArk AIM Secret Lookup is selected for Credential Type, provide the following metadata to properly configure your lookup:
BEGIN CERTIFICATE
and END CERTIFICATE
lines when pasting the certificate, if provided by CyberArkBelow shows an example of a configured CyberArk AIM credential.
When CyberArk Conjur Secret Lookup is selected for Credential Type, provide the following metadata to properly configure your lookup:
BEGIN CERTIFICATE
and END CERTIFICATE
lines when pasting the public key, if provided by CyberArkBelow shows an example of a configured CyberArk Conjur credential.
When HashiCorp Vault Secret Lookup is selected for Credential Type, provide the following metadata to properly configure your lookup:
Below shows an example of a configured HashiCorp KV credential.
When HashiCorp Vault Signed SSH is selected for Credential Type, provide the following metadata to properly configure your lookup:
Below shows an example of a configured HashiCorp SSH Secrets Engine credential.
When Microsoft Azure Key Vault is selected for Credential Type, provide the following metadata to properly configure your lookup:
Below shows an example of a configured Microsoft Azure KMS credential.