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 |
字符串 |
确定返回列表的排序顺序。有关更多详细信息,请参阅下面的排序。 |
日期过滤器:¶
参数 created、updated 和 expiration 的值是 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 的值是以逗号分隔的排序键列表。支持的排序键包括 created、expiration、mode、name、secret_type、status 和 updated。
每个排序键也可以包含一个方向。支持的方向是 :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 时间戳 |
无 |
algorithm |
字符串 |
(可选) 用户或系统提供的元数据,用于提供信息。 |
无 |
bit_length |
整数 |
(可选) 用户或系统提供的元数据,用于提供信息。值必须大于零。 |
无 |
mode |
字符串 |
(可选) 用户或系统提供的元数据,用于提供信息。 |
无 |
payload |
字符串 |
(可选) 要存储的密钥的数据。如果包含 payload,则还必须提供 |
无 |
payload_content_type |
字符串 |
(可选)(如果包含 payload 则必需)payload 内容的媒体类型。有关更多信息,请参阅 密钥类型 |
无 |
payload_content_encoding |
字符串 |
(可选)(如果 payload 已编码则必需)用于对 payload 进行编码以便将其包含在 JSON 请求中的编码。目前仅支持 |
无 |
secret_type |
字符串 |
(可选) 用于指示正在存储的密钥类型。有关更多信息,请参阅 密钥类型 |
|
请求:¶
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 |
不可接受 |