keystone.common.fernet_utils 模块

class keystone.common.fernet_utils.FernetUtils(key_repository, max_active_keys, config_group)[source]

基类: object

create_key_directory(keystone_user_id=None, keystone_group_id=None)[source]

尝试创建密钥目录(如果它不存在)。

initialize_key_repository(keystone_user_id=None, keystone_group_id=None)[source]

创建一个密钥仓库并使用一个密钥进行引导。

参数:
  • keystone_user_id – Keystone 用户的用户 ID。

  • keystone_group_id – Keystone 用户的组 ID。

load_keys(use_null_key=False)[source]

从磁盘加载密钥到列表中。

列表中的第一个密钥是用于加密的主要密钥。所有其他密钥都是可用于解密令牌的活动辅助密钥。

参数:

use_null_key – 如果为 true,则将包含空字节的已知密钥附加到返回的密钥列表中。

rotate_keys(keystone_user_id=None, keystone_group_id=None)[source]

创建一个新的主密钥并撤销过多的活动密钥。

参数:
  • keystone_user_id – Keystone 用户的用户 ID。

  • keystone_group_id – Keystone 用户的组 ID。

密钥轮换利用以下行为

  • 最高的密钥编号用作主密钥(用于加密)。

  • 所有密钥都可以用于解密。

  • 新密钥始终创建为密钥“0”,在提升为主要密钥之前,它充当占位符。

此策略允许您在集群中的一个节点上安全地执行轮换,然后再将轮换结果同步到所有其他节点(在密钥轮换和同步期间,所有节点必须识别所有主密钥)。

validate_key_repository(requires_write=False)[source]

验证密钥仓库目录上的权限。