Configure security settings
Configure these security settings to ensure your Puppet Enterprise (PE) environment is secure.
Configure cipher suites
Regulatory compliance or other security requirements might require you to change the cipher suites your SSL-enabled PE services use to communicate with other PE components.
To add or remove cipher suites for different service types, use Hiera to modify the following parameters:
puppet_enterprise::ssl_cipher_suites
- List IANA-formatted ciphers for all PE Java-based services, which includes PuppetDB, Puppet Server, console services, and the orchestrator.
puppet_enterprise::ssl_cipher_suites_non_java
- List OpenSSL-formatted ciphers for all PE non-Java services, which includes Bolt Server, ACE Server, and PostgreSQL.
puppet_enterprise::ssl_cipher_suites_browser
- List OpenSSL-formatted ciphers for NGINX. These ciphers are accepted by the PE console in the browser.
Configure SSL protocols
You can change what SSL protocols your Puppet Enterprise (PE) infrastructure uses.
- Where to configure
- In Hiera data files.
- Parameter
puppet_enterprise::master::puppetserver::ssl_protocols
- Format
- Array of strings representing SSL protocols.
- Example
- This declaration enables TSLv1.3 and
TSLv1.2:
puppet_enterprise::master::puppetserver::ssl_protocols: ["TLSv1.3", "TLSv1.2"]
- Default
-
["TLSv1.3", "TLSv1.2"]
Note: To comply with security regulations, only versions 1.2 and 1.3 of the Transport Layer Security (TLS) protocol are enabled. If necessary, you can manually enable TLSv1 and TSLv1.1.
Configure RBAC and token-based authentication settings
You can configure RBAC and token-based authentication settings, such as setting the number of failed attempts a user has before they are locked out of the console or the amount of time tokens are valid.
puppet_enterprise::profile::console::rbac_failed_attempts_lockout
- An integer specifying how many failed login attempts are allowed on an account before the account is revoked.
puppet_enterprise::profile::console::rbac_password_reset_expiration
- An integer representing the number of hours that password reset tokens are valid.
puppet_enterprise::profile::console::rbac_session_timeout
- An integer representing, in minutes, how long a user's session can last.
puppet_enterprise::profile::console::rbac_token_auth_lifetime
- A string representing the default authentication lifetime for a token.
puppet_enterprise::profile::console::rbac_token_maximum_lifetime
- A string representing the maximum allowable lifetime for all tokens.
puppet_enterprise::profile::console::rbac_account_expiry_check_minutes
- An integer specifying, in minutes, how often the application checks for idle user accounts.
puppet_enterprise::profile::console::rbac_account_expiry_days
- An integer specifying, in days, the duration before an inactive user account expires.
puppet_enterprise::profile::console::ldap_sync_period_seconds
- An integer specifying, in seconds, the interval at which LDAP group membership associations are synchronized.
RBAC database configuration
Credential information for the RBAC service is stored in a PostgreSQL database. Configuration information for this
database is in the rbac-database
section of the config
file.
rbac-database: {
classname: org.postgresql.Driver
subprotocol: postgresql
subname: "//<PATH_TO_HOST>:5432/perbac"
user: <USERNAME>
password: <PASSWORD>
}
classname
- Used by the RBAC service for connecting to the database.
subprotocol
- Used by the RBAC service for connecting to the database.
subname
- The JDBC connection path used by the RBAC service for connecting to the database.
user
- This is the username the RBAC service uses to connect to the PostgreSQL database.
password
- This is the password the RBAC service uses to connect to the PostgreSQL database.
Configure the password algorithm
Puppet Enterprise (PE) uses SHA-256 as a default password algorithm. You can use Hiera or the PE console to change the algorithm to argon2id by editing or adding password algorithm parameters.
puppet_enterprise::profile::console::password_algorithm
- A string, either
"SHA-256"
or"ARGON2ID"
. puppet_enterprise::profile::console::password_hash_output_size
- An integer representing the desired hash output size in bytes.
puppet_enterprise::profile::console::password_algorithm_parallelism
- An integer representing the number of parallel computations that can be performed at once.
puppet_enterprise::profile::console::password_algorithm_memory_in_kb
- An integer representing the amount of memory, in KB, the algorithm consumes when running.
puppet_enterprise::profile::console::number_of_iterations
- An integer representing the number of times a password is hashed before it’s stored.
puppet_enterprise::profile::console::password_salt_size_bytes
- An integer representing the size, in bytes, of each generated salt.
Add a custom HSTS header to NGINX
An HTTP Strict Transport Security (HSTS) response header is a security header that blocks access to non-HTTPS content. This prevents the browser from being exploited by man-in-the-middle attacks.