keystone.cmd.doctor package

Submodules

keystone.cmd.doctor.caching module

keystone.cmd.doctor.caching.symptom_caching_disabled()[source]

keystone.conf [caching] enabled is not enabled.

Caching greatly improves the performance of keystone, and it is highly recommended that you enable it.

keystone.cmd.doctor.caching.symptom_caching_enabled_without_a_backend()[source]

Caching is not completely configured.

Although caching is enabled in keystone.conf [cache] enabled, the default backend is still set to the no-op backend. Instead, configure keystone to point to a real caching backend like memcached.

keystone.cmd.doctor.database module

keystone.cmd.doctor.database.symptom_database_connection_is_not_SQLite()[source]

SQLite is not recommended for production deployments.

SQLite does not enforce type checking and has limited support for migrations, making it unsuitable for use in keystone. Please change your keystone.conf [database] connection value to point to a supported database driver, such as MySQL.

keystone.cmd.doctor.federation module

keystone.cmd.doctor.federation.symptom_comma_in_SAML_private_key_file_path()[source]

[saml] certfile should not contain a comma (,).

Because a comma is part of the API between keystone and the external xmlsec1 binary which utilizes the key, keystone cannot include a comma in the path to the private key file.

keystone.cmd.doctor.federation.symptom_comma_in_SAML_public_certificate_path()[source]

[saml] certfile should not contain a comma (,).

Because a comma is part of the API between keystone and the external xmlsec1 binary which utilizes the certificate, keystone cannot include a comma in the path to the public certificate file.

keystone.cmd.doctor.ldap module

keystone.cmd.doctor.ldap.symptom_LDAP_group_members_are_ids_disabled()[source]

[ldap] group_members_are_ids is not enabled.

Because you’ve set keystone.conf [ldap] group_objectclass = posixGroup, we would have also expected you to enable set keystone.conf [ldap] group_members_are_ids because we suspect you’re using Open Directory, which would contain user ID’s in a posixGroup rather than LDAP DNs, as other object classes typically would.

keystone.cmd.doctor.ldap.symptom_LDAP_user_enabled_emulation_dn_ignored()[source]

[ldap] user_enabled_emulation_dn is being ignored.

There is no reason to set this value unless keystone.conf [ldap] user_enabled_emulation is also enabled.

keystone.cmd.doctor.ldap.symptom_LDAP_user_enabled_emulation_use_group_config_ignored()[source]

[ldap] user_enabled_emulation_use_group_config is being ignored.

There is no reason to set this value unless keystone.conf [ldap] user_enabled_emulation is also enabled.

keystone.cmd.doctor.tokens module

keystone.cmd.doctor.tokens.symptom_unreasonable_max_token_size()[source]

keystone.conf [DEFAULT] max_token_size should be adjusted.

This option is intended to protect keystone from unreasonably sized tokens, where “reasonable” is mostly dependent on the keystone.conf [token] provider that you’re using. If you’re using one of the following token providers, then you should set keystone.conf [DEFAULT] max_token_size accordingly:

  • For UUID, set keystone.conf [DEFAULT] max_token_size = 32, because UUID tokens are always exactly 32 characters.
  • For PKI and PKIZ, set keystone.conf [DEFAULT] max_token_size = 8192, because PKI and PKIZ tokens can be quite large, but any larger than 8192 and they tend to break certain implementations of HTTP.
  • For Fernet, set keystone.conf [DEFAULT] max_token_size = 255, because Fernet tokens should never exceed this length in most deployments. However, if you are also using keystone.conf [identity] driver = ldap, Fernet tokens may not be built using an efficient packing method, depending on the IDs returned from LDAP, resulting in longer Fernet tokens (adjust your max_token_size accordingly).

keystone.cmd.doctor.tokens_fernet module

keystone.cmd.doctor.tokens_fernet.symptom_keys_in_Fernet_key_repository()[source]

Fernet key repository is empty.

After configuring keystone to use the Fernet token provider, you should use keystone-manage fernet_setup to initially populate your key repository with keys, and periodically rotate your keys with keystone-manage fernet_rotate.

keystone.cmd.doctor.tokens_fernet.symptom_usability_of_Fernet_key_repository()[source]

Fernet key repository is not setup correctly.

The Fernet key repository is expected to be readable by the user running keystone, but not world-readable, because it contains security-sensitive secrets.

Module contents

keystone.cmd.doctor.diagnose()[source]

Report diagnosis for any symptoms we find.

Returns true when any symptoms are found, false otherwise.

keystone.cmd.doctor.gather_symptoms()[source]

Gather all of the objects in this module that are named symptom_*.