keystone.cmd.cli module

class keystone.cmd.cli.BaseApp[source]

基类: object

classmethod add_argument_parser(subparsers)[source]
name: str
class keystone.cmd.cli.BasePermissionsSetup[source]

基础: BaseApp

文件权限的通用用户/组设置。

classmethod add_argument_parser(subparsers)[source]
static get_user_group()[source]
classmethod initialize_fernet_repository(keystone_user_id, keystone_group_id, config_group=None)[source]
classmethod rotate_fernet_repository(keystone_user_id, keystone_group_id, config_group=None)[source]
class keystone.cmd.cli.BootStrap[source]

基础: BaseApp

执行基本的引导过程。

classmethod add_argument_parser(subparsers)[source]
do_bootstrap()[source]

执行引导操作。

创建引导用户、项目和角色,以便 CMS、用户或脚本可以在部署 Keystone 时继续执行初始设置(域、项目、服务、端点等)。

classmethod main()[source]
name: str = 'bootstrap'
class keystone.cmd.cli.CreateJWSKeyPair[source]

基础: BasePermissionsSetup

创建用于签名和验证 JWS 令牌的密钥对。

此命令创建用于签名和验证 JWS 令牌签名的公钥和私钥对。密钥对写入调用命令的目录。

classmethod add_argument_parser(subparsers)[source]
classmethod main()[source]
name: str = 'create_jws_keypair'
class keystone.cmd.cli.CredentialMigrate[source]

基础: BasePermissionsSetup

提供使用新主密钥加密凭据的能力。

假设数据库后端已升级到至少 Newton 模式,并且已经存在凭据密钥存储库。如果凭据存储库尚不存在,可以使用 keystone-manage credential_setup 创建一个。

classmethod main()[source]
migrate_credentials()[source]
name: str = 'credential_migrate'
class keystone.cmd.cli.CredentialRotate[source]

基础: BasePermissionsSetup

轮换用于凭据加密的 Fernet 加密密钥。

假设您已经运行了 keystone-manage credential_setup

只有当所有凭据都使用当前主密钥加密时,新的主密钥才会进入轮换。如果任何凭据都使用辅助密钥加密,轮换将中止。这可以防止删除仍然需要解密凭据的密钥。一旦密钥从存储库中删除,在不从 Keystone 外部备份还原的情况下,将无法恢复原始数据。有关备份的更多信息,请参见下面的说明。为了确保所有凭据都使用最新的主密钥加密,请参阅 keystone-manage credential_migrate 命令。由于存储库中密钥的最大数量为 3,一旦所有凭据都使用最新的主密钥加密,我们就可以安全地引入新的主密钥。所有凭据仍然可以解密,因为它们都使用存储库中的唯一辅助密钥加密。

了解备份用于加密凭据的密钥的重要性至关重要。如果密钥被过度轮换,则应用来自备份的密钥存储库可以帮助恢复否则无用的凭据。将密钥快照持久化到安全且加密的源代码控制中,或专用密钥管理系统是加密密钥备份的良好示例。

keystone-manage credential_rotatekeystone-manage credential_migrate 命令旨在按顺序执行。在执行轮换后,必须执行迁移,然后才能执行另一个轮换。这确保了我们不会过度轮换加密密钥。

classmethod main()[source]
name: str = 'credential_rotate'
validate_primary_key()[source]
class keystone.cmd.cli.CredentialSetup[source]

基础: BasePermissionsSetup

设置用于凭据加密的 Fernet 密钥存储库。

此命令的目的与 keystone-manage fernet_setup 非常相似,只是此存储库中包含的密钥用于加密和解密凭据密文,而不是令牌负载。

classmethod main()[source]
name: str = 'credential_setup'
class keystone.cmd.cli.DbSync[source]

基础: BaseApp

同步数据库。

classmethod add_argument_parser(subparsers)[source]
classmethod check_db_sync_status()[source]
static main()[source]
name: str = 'db_sync'
class keystone.cmd.cli.DbVersion[source]

基础: BaseApp

打印数据库的当前迁移版本。

static main()[source]
name: str = 'db_version'
class keystone.cmd.cli.Doctor[source]

基础: BaseApp

诊断 Keystone 部署中的常见问题。

classmethod add_argument_parser(subparsers)[source]
static main()[source]
name: str = 'doctor'
class keystone.cmd.cli.DomainConfigUpload[source]

基础: BaseApp

将特定域的配置文件上传到数据库。

classmethod add_argument_parser(subparsers)[source]
static main()[source]
name: str = 'domain_config_upload'
class keystone.cmd.cli.DomainConfigUploadFiles(domain_config_finder=<function _domain_config_finder>)[source]

基类: object

load_backends()[source]
read_domain_configs_from_files()[source]

从文件读取配置并加载到数据库。

命令行参数已经解析,CONF 命令选项将被设置。它要么设置为显式域的名称,要么为 None,表示我们想要所有域配置文件。

run()[source]
valid_options()[source]

验证选项,如果选项确实有效则返回 True。

使用 argparse 自动检查此验证会很好,但我认为实现此目的的唯一方法是使默认值(即,如果未指定可选参数)为上传所有配置文件 - 这作为默认值听起来太危险了。因此,我们以一种略微非常规的方式使用它,其中所有参数都是可选的,但必须指定至少一个。

class keystone.cmd.cli.FernetRotate[source]

基础: BasePermissionsSetup

轮换 Fernet 加密密钥。

这假定您已经运行了 keystone-manage fernet_setup。

将新的主密钥置于轮换中,用于新的令牌。旧的主密钥降级为辅助密钥,仍然可以用于验证令牌。超出 [fernet_tokens] max_active_keys 的多余辅助密钥将被撤销。撤销的密钥将被永久删除。将创建一个新的暂存密钥并用于验证令牌。下次进行密钥轮换时,暂存密钥将作为主密钥置于轮换中。

如果 [fernet_tokens] max_active_keys 设置得太低,或者密钥轮换过于频繁,令牌将在到期之前失效。

classmethod main()[source]
name: str = 'fernet_rotate'
class keystone.cmd.cli.FernetSetup[source]

基础: BasePermissionsSetup

设置 Fernet 令牌和身份验证收据的密钥存储库。

这还会创建一个主密钥,用于创建和验证 Fernet 令牌和身份验证收据。为了提高安全性,您应该轮换密钥(例如,使用 keystone-manage fernet_rotate)。

classmethod main()[source]
name: str = 'fernet_setup'
class keystone.cmd.cli.MappingEngineTester[source]

基础: BaseApp

本地执行映射引擎。

classmethod add_argument_parser(subparsers)[source]
classmethod main()[source]
name: str = 'mapping_engine'
normalize_assertion()[source]
normalize_rules()[source]
read_assertion(path)[source]
read_rules(path)[source]
class keystone.cmd.cli.MappingPopulate[source]

基础: BaseApp

预填充来自特定域后端的数据条目。

运行此命令不是必需的。只有在配置了 LDAP 后、添加了许多新用户或运行“mapping_purge”时才应运行它。

此命令将需要一段时间才能运行。运行几分钟以上是完全可以的。

classmethod add_argument_parser(subparsers)[source]
classmethod load_backends()[source]
classmethod main()[source]

处理 id_mapping_api 的条目。

name: str = 'mapping_populate'
class keystone.cmd.cli.MappingPurge[source]

基础: BaseApp

清除映射表。

classmethod add_argument_parser(subparsers)[source]
static main()[source]
name: str = 'mapping_purge'
class keystone.cmd.cli.ProjectSetup[source]

基础: BaseApp

创建具有指定 UUID 的项目。

classmethod add_argument_parser(subparsers)[source]
do_project_setup()[source]

创建具有指定 UUID 的项目。

classmethod main()[source]
name: str = 'project_setup'
class keystone.cmd.cli.ReceiptRotate[source]

基础: BasePermissionsSetup

轮换身份验证凭证加密密钥。

这假定您已经运行了 keystone-manage receipt_setup。

新的主密钥被置于轮换中,用于新的凭证。旧的主密钥降级为辅助密钥,仍然可以用于验证凭证。超过 [receipt] max_active_keys 的辅助密钥将被撤销。撤销的密钥将被永久删除。将创建一个新的暂存密钥,并用于验证凭证。下次进行密钥轮换时,暂存密钥将被置于轮换中作为主密钥。

如果密钥轮换过于频繁,或者 [receipt] max_active_keys 设置得太低,则凭证将在到期之前失效。

classmethod main()[source]
name: str = 'receipt_rotate'
class keystone.cmd.cli.ReceiptSetup[source]

基础: BasePermissionsSetup

设置身份验证凭证的密钥存储库。

这还会创建一个主密钥,用于创建和验证凭证。为了提高安全性,您应该轮换密钥(例如,使用 keystone-manage receipt_rotate)。

classmethod main()[source]
name: str = 'receipt_setup'
class keystone.cmd.cli.ResetLastActive[source]

基础: BaseApp

将所有用户的空值重置为当前时间。

classmethod add_argument_parser(subparsers)[source]
static main()[source]
name: str = 'reset_last_active'
class keystone.cmd.cli.SamlIdentityProviderMetadata[source]

基础: BaseApp

生成身份提供者元数据。

static main()[source]
name: str = 'saml_idp_metadata'
class keystone.cmd.cli.TokenRotate[source]

基础: BasePermissionsSetup

轮换令牌加密密钥。

这假定您已经运行了 keystone-manage token_setup。

新的主密钥被置于轮换中,用于新的令牌。旧的主密钥降级为辅助密钥,仍然可以用于验证令牌。超过 [token] max_active_keys 的辅助密钥将被撤销。撤销的密钥将被永久删除。将创建一个新的暂存密钥,并用于验证令牌。下次进行密钥轮换时,暂存密钥将被置于轮换中作为主密钥。

如果密钥轮换过于频繁,或者 [token] max_active_keys 设置得太低,则令牌将在到期之前失效。

classmethod main()[source]
name: str = 'token_rotate'
class keystone.cmd.cli.TokenSetup[source]

基础: BasePermissionsSetup

设置令牌的密钥存储库。

这还会创建一个主密钥,用于创建和验证令牌。为了提高安全性,您应该轮换密钥(例如,使用 keystone-manage token_rotate)。

classmethod main()[source]
name: str = 'token_setup'
class keystone.cmd.cli.TrustFlush[source]

基础: BaseApp

从后端清除过期的和未过期的软删除信任。

classmethod add_argument_parser(subparsers)[source]
classmethod main()[source]
name: str = 'trust_flush'
class keystone.cmd.cli.UserSetup[source]

基础: BaseApp

创建具有指定 UUID 的用户。

classmethod add_argument_parser(subparsers)[source]
do_user_setup()[source]

创建具有指定 UUID 的用户。

classmethod main()[source]
name: str = 'user_setup'
keystone.cmd.cli.add_command_parsers(subparsers)[source]
keystone.cmd.cli.main(argv=None, developer_config_file=None)[source]

keystone-manage CLI工具的主入口点。

参数:
  • argv (list) – 使用 sys 标准库通过命令行提供的参数。

  • developer_config_file (string) – 开发环境中通常找到的配置文件位置。