Secrets API - 参考

GET /v1/secrets

列出项目的密钥。

密钥列表可以通过 URL 中传递的参数进行过滤。

实际的密钥负载数据将不会在此处列出。客户端必须为每个单独的密钥发出单独的调用来检索密钥负载数据。

参数

名称

类型

描述

offset

整数

要在密钥总列表中开始的索引。

limit

整数

返回的最大记录数(最多 100 个)。默认限制为 10。

name

字符串

选择名称与此值相似的所有密钥。

alg

字符串

选择算法与此值相似的所有密钥。

mode

字符串

选择模式与此值相似的所有密钥。

bits

整数

选择 bit_length 等于此值的密钥。

secret_type

字符串

选择 secret_type 等于此值的密钥。

acl_only

布尔值

选择包含用户的 ACL 的所有密钥。忽略项目范围。

创建时间

字符串

日期过滤器,用于选择 created 与指定条件匹配的所有密钥。有关更多详细信息,请参阅下面的日期过滤器。

updated

字符串

日期过滤器,用于选择 updated 与指定条件匹配的所有密钥。有关更多详细信息,请参阅下面的日期过滤器。

expiration

字符串

日期过滤器,用于选择 expiration 与指定条件匹配的所有密钥。有关更多详细信息,请参阅下面的日期过滤器。

sort

字符串

确定返回列表的排序顺序。有关更多详细信息,请参阅下面的排序。

日期过滤器:

参数 createdupdatedexpiration 的值是 ISO 8601 格式的以逗号分隔的时间戳列表。时间戳可以以以下比较运算符之一为前缀:gt:(大于)、gte:(大于或等于)、lt:(小于)、lte:(小于或等于)。

例如,要获取将在 2020 年 1 月到期的密钥列表

GET /v1/secrets?expiration=gte:2020-01-01T00:00:00,lt:2020-02-01T00:00:00

排序:

参数 sort 的值是以逗号分隔的排序键列表。支持的排序键包括 createdexpirationmodenamesecret_typestatusupdated

每个排序键也可以包含一个方向。支持的方向是 :asc 表示升序,:desc 表示降序。服务将对不包含方向的每个键使用 :asc

例如,要按最近创建的顺序到最旧的顺序对列表进行排序

GET /v1/secrets?sort=created:desc

请求:

GET /v1/secrets?offset=1&limit=2&sort=created
Headers:
    Accept: application/json
    X-Auth-Token: {keystone_token}
    (or X-Project-Id: {project id})

响应:

{
    "next": "http://{barbican_host}:9311/v1/secrets?limit=2&offset=3",
    "previous": "http://{barbican_host}:9311/v1/secrets?limit=2&offset=0",
    "secrets": [
        {
            "algorithm": null,
            "bit_length": null,
            "content_types": {
                "default": "application/octet-stream"
            },
            "created": "2015-04-07T03:37:19.805835",
            "creator_id": "3a7e3d2421384f56a8fb6cf082a8efab",
            "expiration": null,
            "mode": null,
            "name": "opaque octet-stream base64",
            "secret_ref": "http://{barbican_host}:9311/v1/secrets/{uuid}",
            "secret_type": "opaque",
            "status": "ACTIVE",
            "updated": "2015-04-07T03:37:19.808337"
        },
        {
            "algorithm": null,
            "bit_length": null,
            "content_types": {
                "default": "application/octet-stream"
            },
            "created": "2015-04-07T03:41:02.184159",
            "creator_id": "3a7e3d2421384f56a8fb6cf082a8efab",
            "expiration": null,
            "mode": null,
            "name": "opaque random octet-stream base64",
            "secret_ref": "http://{barbican_host}:9311/v1/secrets/{uuid}",
            "secret_type": "opaque",
            "status": "ACTIVE",
            "updated": "2015-04-07T03:41:02.187823"
        }
    ],
    "total": 5
}

响应属性

名称

类型

描述

secrets

列表

包含密钥列表。密钥对象中的属性与单个密钥的属性相同。

total

整数

用户可用的密钥总数。

下一个

字符串

一个 HATEOAS URL,用于根据 offset 和 limit 参数检索下一组密钥。只有在密钥总数大于 offset 和 limit 参数组合时,才提供此属性。

previous

字符串

一个 HATEOAS URL,用于根据 offset 和 limit 参数检索前一组密钥。只有在请求 offset 大于 0 时,才提供此属性。

HTTP 状态码

代码

描述

200

成功请求

401

无效的 X-Auth-Token 或令牌没有访问此资源的权限

POST /v1/secrets

创建一个 Secret 实体。如果请求中未包含 payload 属性,则仅创建密钥的元数据,并且需要后续的 PUT 请求。

属性

属性名称

类型

描述

默认值

name

字符串

(可选) 用户设置的密钥名称。

expiration

字符串

(可选) 这是一个 ISO 8601 格式的 UTC 时间戳 YYYY-MM-DDTHH:MM:SSZ。如果设置,密钥在此时间之后将不可用。

algorithm

字符串

(可选) 用户或系统提供的元数据,用于提供信息。

bit_length

整数

(可选) 用户或系统提供的元数据,用于提供信息。值必须大于零。

mode

字符串

(可选) 用户或系统提供的元数据,用于提供信息。

payload

字符串

(可选) 要存储的密钥的数据。如果包含 payload,则还必须提供 payload_content_type

payload_content_type

字符串

(可选)(如果包含 payload 则必需)payload 内容的媒体类型。有关更多信息,请参阅 密钥类型

payload_content_encoding

字符串

(可选)(如果 payload 已编码则必需)用于对 payload 进行编码以便将其包含在 JSON 请求中的编码。目前仅支持 base64

secret_type

字符串

(可选) 用于指示正在存储的密钥类型。有关更多信息,请参阅 密钥类型

opaque

请求:

POST /v1/secrets
Headers:
    Content-Type: application/json
    X-Auth-Token: <token>

Content:
{
    "name": "AES key",
    "expiration": "2015-12-28T19:14:44.180394",
    "algorithm": "aes",
    "bit_length": 256,
    "mode": "cbc",
    "payload": "YmVlcg==",
    "payload_content_type": "application/octet-stream",
    "payload_content_encoding": "base64"
}

响应:

201 Created

{
    "secret_ref": "https://{barbican_host}/v1/secrets/{secret_uuid}"
}

HTTP 状态码

代码

描述

201

成功创建了密钥

400

错误请求

401

无效的 X-Auth-Token 或令牌没有访问此资源的权限

403

禁止。用户已通过身份验证,但无权创建密钥。这可能基于用户的角色或项目的配额。

415

不支持的媒体类型

GET /v1/secrets/{uuid}

检索密钥的元数据。

请求:

GET /v1/secrets/{uuid}
Headers:
    Accept: application/json
    X-Auth-Token: {token}
    (or X-Project-Id: {project_id})

响应:

200 OK

{
    "status": "ACTIVE",
    "created": "2015-03-23T20:46:51.650515",
    "updated": "2015-03-23T20:46:51.654116",
    "expiration": "2015-12-28T19:14:44.180394",
    "algorithm": "aes",
    "bit_length": 256,
    "mode": "cbc",
    "name": "AES key",
    "secret_ref": "https://{barbican_host}/v1/secrets/{secret_uuid}",
    "secret_type": "opaque",
    "content_types": {
        "default": "application/octet-stream"
    }
}

Payload 请求:

警告

弃用警告:API 的早期版本允许通过更改 Accept 标头为 Secret 元数据中的 content_types 属性中列出的值之一来从同一端点检索 payload。发现这在某些情况下存在问题,因此新的应用程序应使用 /v1/secrets/{uuid}/payload 端点。

GET /v1/secrets/{uuid}
Headers:
    Accept: application/octet-stream
    X-Auth-Token: <token>

Payload 响应:

200 OK

beer

HTTP 状态码

代码

描述

200

成功请求

401

无效的 X-Auth-Token 或令牌没有访问此资源的权限

404

未找到

406

不可接受

PUT /v1/secrets/{uuid}

将 payload 添加到现有的仅元数据密钥,例如通过发送不包含 payload 属性的 POST /v1/secrets 请求创建的密钥。

注意

此操作只能对没有 payload 的密钥执行。

标头

名称

描述

默认值

Content-Type

与正常密钥创建请求的 payload_content_type 属性相对应。

text/plain

Content-Encoding

(可选) 与正常密钥创建请求的 payload_content_encoding 属性相对应。

请求:

PUT /v1/secrets/{uuid}
Headers:
    X-Auth-Token: <token>
    Content-Type: application/octet-stream
    Content-Encoding: base64

Content:
YmxhaA==

响应:

204 No Content

HTTP 状态码

代码

描述

204

成功请求

401

无效的 X-Auth-Token 或令牌没有访问此资源的权限

404

未找到

DELETE /v1/secrets/{uuid}

通过 uuid 删除密钥

请求:

DELETE /v1/secrets/{uuid}
Headers:
    X-Auth-Token: <token>

响应:

204 No Content

HTTP 状态码

代码

描述

204

成功请求

401

无效的 X-Auth-Token 或令牌没有访问此资源的权限

404

未找到

GET /v1/secrets/{uuid}/payload

检索密钥的 payload

Accept 标头选项:

在请求密钥的 payload 时,必须将 accept 标头设置为密钥元数据中的 content_types 属性中列出的值之一。

请求:

GET /v1/secrets/{uuid}/payload
Headers:
    Accept: text/plain
    X-Auth-Token: <token>

响应:

200 OK

beer

HTTP 状态码

代码

描述

200

成功请求

401

无效的 X-Auth-Token 或令牌没有访问此资源的权限

404

未找到

406

不可接受