使用 OpenStack 密钥管理服务

在使用密钥管理服务之前,您需要通过遵循 连接 用户指南来创建与您的 OpenStack 云的连接。这将为您提供在以下示例中使用的 conn 变量。

注意

与密钥管理服务的某些交互与其他服务的交互不同,因为资源没有适当的 id 参数,而这是进行某些调用所必需的。相反,资源具有单独命名的 id 属性,例如,Secret 资源具有 secret_id

以下示例概述了何时传递这些 id 值。

创建密钥

密钥管理服务允许您通过将 Secret 的属性传递给 create_secret() 方法来创建新的密钥。

def create_secret(conn):
    print("Create a secret:")

    conn.key_manager.create_secret(
        name="My public key",
        secret_type="public",
        expiration="2020-02-28T23:59:59",
        payload="ssh rsa...",
        payload_content_type="text/plain",
    )

列出密钥

一旦您存储了一些密钥,您就可以通过 secrets() 方法来列出它们。此方法返回一个生成器,它会产生每个 Secret

def list_secrets(conn):
    print("List Secrets:")

    for secret in conn.key_manager.secrets():
        print(secret)

secrets() 方法还可以进行更高级的查询,以限制返回的密钥。

def list_secrets_query(conn):
    print("List Secrets:")

    for secret in conn.key_manager.secrets(
        secret_type="symmetric", expiration="gte:2020-01-01T00:00:00"
    ):
        print(secret)

获取密钥负载

一旦您收到一个 Secret,您可以通过将密钥的 id 值传递给 secrets() 方法来获取其负载。在此请求时使用 secret_id 属性。

def get_secret_payload(conn):
    print("Get a secret's payload:")

    # Assuming you have an object `s` which you perhaps received from
    # a conn.key_manager.secrets() call...
    secret = conn.key_manager.get_secret(s.secret_id)
    print(secret.payload)