ACL API - 参考

注意

此功能仅在 Barbican 用于经过身份验证的管道时适用,即与 Keystone 集成时。

注意

当前为容器定义的访问控制列表 (ACL) 设置不会传播到关联的密钥。

警告

此 ACL 文档仍在完善中,未来可能会发生变化。

密钥 ACL API

GET /v1/secrets/{uuid}/acl

检索给定密钥的 ACL 设置。

如果未为该密钥定义 ACL,则返回默认 ACL

请求/响应(已定义 ACL):

Request:

GET /v1/secrets/{uuid}/acl
Headers:
    X-Auth-Token: {token_id}

Response:

HTTP/1.1 200 OK
{
  "read":{
    "updated":"2015-05-12T20:08:47.644264",
    "created":"2015-05-12T19:23:44.019168",
    "users":[
      {user_id1},
      {user_id2},
      .....
    ],
    "project-access":{project-access-flag}
  }
}

请求/响应(未定义 ACL):

Request:

GET /v1/secrets/{uuid}/acl
Headers:
    X-Auth-Token: {token_id}

Response:

HTTP/1.1 200 OK
{
  "read":{
    "project-access": true
  }
}

HTTP 状态码

代码

描述

200

成功请求。

401

缺少或无效的 X-Auth-Token。需要身份验证。

403

用户没有权限访问此资源。

404

未找到给定 UUID 的密钥。

PUT /v1/secrets/{uuid}/acl

为给定密钥创建新的或替换现有的 ACL。

此调用用于为密钥添加新的 ACL。如果 ACL 已经设置为密钥,则此方法将使用请求的 ACL 设置替换它。在创建(第一个新的显式 ACL)或替换现有 ACL 的情况下,两种情况下都返回 200。要删除 ACL 定义中的现有用户,请将空列表 [] 传递给 users

成功时返回 ACL 引用。

属性

此页面中详细描述的 ACL 资源允许控制对单个密钥的访问。通过对这些密钥进行操作来配置此访问。当前仅支持“读取”操作(包括 GET REST 操作)。

属性名称

类型

描述

默认值

读取

父元素

读取操作的 ACL 数据。

users

[string]

(可选)用户 ID 列表。这需要是 Keystone 返回的用户 ID。

[]

project-access

布尔值

(可选)标记密钥为私有的标志,以便创建密钥的用户和上述列表中指定的 users 只能访问该密钥。传递 false 以标记密钥为私有。

true

请求/响应(设置或替换 ACL):

Request:

PUT /v1/secrets/{uuid}/acl
Headers:
    Content-Type: application/json
    X-Auth-Token: {token_id}

Body:
{
  "read":{
    "users":[
      {user_id1},
      {user_id2},
      .....
    ],
    "project-access":{project-access-flag}
  }
}

Response:

HTTP/1.1 200 OK
{"acl_ref": "https://{barbican_host}/v1/secrets/{uuid}/acl"}

HTTP 状态码

代码

描述

200

成功设置/替换密钥 ACL。

400

错误请求。

401

缺少或无效的 X-Auth-Token。需要身份验证。

403

用户没有权限访问此资源。

404

未找到给定 UUID 的密钥。

415

不支持的媒体类型。

PATCH /v1/secrets/{uuid}/acl

更新给定密钥的现有 ACL。此方法可用于对现有的 ACL 设置应用部分更改。客户端可以更新 users 列表并启用或禁用现有 ACL 的 project-access 标志。提供的用户列表替换现有的用户(如果有)。对于 ACL 定义中提供的现有用户列表,请将空列表 [] 传递给 users

成功时返回 ACL 引用。

注意

PATCH API 支持将在不久的将来发生变化。

属性

属性名称

类型

描述

默认值

读取

父元素

读取操作的 ACL 数据。

users

[string]

(可选)用户 ID 列表。这需要是 Keystone 返回的用户 ID。

project-access

布尔值

(可选)标记密钥为私有的标志,以便创建密钥的用户和上述列表中指定的 users 只能访问该密钥。传递 false 以标记密钥为私有。

请求/响应(更新 project-access 标志):

PATCH /v1/secrets/{uuid}/acl
Headers:
    Content-Type: application/json
    X-Auth-Token: {token_id}

Body:
{
  "read":
    {
      "project-access":false
    }
}

Response:
HTTP/1.1 200 OK
{"acl_ref": "https://{barbican_host}/v1/secrets/{uuid}/acl"}

请求/响应(从 ACL 中删除所有用户):

PATCH /v1/secrets/{uuid}/acl
Headers:
    Content-Type: application/json
    X-Auth-Token: {token_id}

Body:
{
  "read":
    {
      "users":[]
    }
}

Response:
HTTP/1.1 200 OK
{"acl_ref": "https://{barbican_host}/v1/secrets/{uuid}/acl"}

HTTP 状态码

代码

描述

200

成功更新密钥 ACL。

400

错误请求。

401

缺少或无效的 X-Auth-Token。需要身份验证。

403

用户没有权限访问此资源。

404

未找到给定 UUID 的密钥。

415

不支持的媒体类型。

DELETE /v1/secrets/{uuid}/acl

删除给定密钥的 ACL。成功删除后不会返回任何内容。

请求/响应:

DELETE /v1/secrets/{uuid}/acl
Headers:
    X-Auth-Token: {token_id}

Response:
HTTP/1.1 200 OK

HTTP 状态码

代码

描述

200

成功删除密钥 ACL。

401

缺少或无效的 X-Auth-Token。需要身份验证。

403

用户没有权限访问此资源。

404

未找到给定 UUID 的密钥。

容器 ACL API

GET /v1/containers/{uuid}/acl

检索给定容器的 ACL 设置。

如果未为该容器定义 ACL,则返回默认 ACL

请求/响应(已定义 ACL):

Request:

GET /v1/containers/{uuid}/acl
Headers:
    X-Auth-Token: {token_id}

Response:

HTTP/1.1 200 OK
{
  "read":{
    "updated":"2015-05-12T20:08:47.644264",
    "created":"2015-05-12T19:23:44.019168",
    "users":[
      {user_id1},
      {user_id2},
      .....
    ],
    "project-access":{project-access-flag}
  }
}

请求/响应(未定义 ACL):

Request:

GET /v1/containers/{uuid}/acl
Headers:
    X-Auth-Token: {token_id}

Response:

HTTP/1.1 200 OK
{
  "read":{
    "project-access": true
  }
}

HTTP 状态码

代码

描述

200

成功请求。

401

缺少或无效的 X-Auth-Token。需要身份验证。

403

用户没有权限访问此资源。

404

未找到给定 UUID 的容器。

PUT /v1/containers/{uuid}/acl

为给定容器创建新的或替换现有的 ACL。

此调用用于为容器添加新的 ACL。如果 ACL 已经设置为容器,则此方法将使用请求的 ACL 设置替换它。在创建(第一个新的显式 ACL)或替换现有 ACL 的情况下,两种情况下都返回 200。要删除 ACL 定义中的现有用户,请将空列表 [] 传递给 users

成功时返回 ACL 引用。

属性

此页面中详细描述的 ACL 资源允许控制对单个容器的访问。通过对这些容器进行操作来配置此访问。当前仅支持“读取”操作(包括 GET REST 操作)。

属性名称

类型

描述

默认值

读取

父元素

读取操作的 ACL 数据。

users

[string]

(可选)用户 ID 列表。这需要是 Keystone 返回的用户 ID。

[]

project-access

布尔值

(可选)标记容器为私有的标志,以便创建容器的用户和上述列表中指定的 users 只能访问该容器。传递 false 以标记容器为私有。

true

请求/响应(设置或替换 ACL):

PUT /v1/containers/{uuid}/acl
Headers:
    Content-Type: application/json
    X-Auth-Token: {token_id}

Body:
{
  "read":{
    "users":[
      {user_id1},
      {user_id2},
      .....
    ],
    "project-access":{project-access-flag}
  }
}

Response:
HTTP/1.1 200 OK
{"acl_ref": "https://{barbican_host}/v1/containers/{uuid}/acl"}

HTTP 状态码

代码

描述

200

成功设置/替换容器 ACL。

400

错误请求。

401

缺少或无效的 X-Auth-Token。需要身份验证。

403

用户没有权限访问此资源。

404

未找到给定 UUID 的容器。

415

不支持的媒体类型。

PATCH /v1/containers/{uuid}/acl

更新给定容器的现有 ACL。此方法可用于对现有的 ACL 设置应用部分更改。客户端可以更新 users 列表并启用或禁用现有 ACL 的 project-access 标志。提供的用户列表替换现有的用户(如果有)。对于 ACL 定义中提供的现有用户列表,请将空列表 [] 传递给 users

成功时返回 ACL 引用。

注意

PATCH API 支持将在不久的将来发生变化。

属性

属性名称

类型

描述

默认值

读取

父元素

读取操作的 ACL 数据。

users

[string]

(可选)用户 ID 列表。这需要是 Keystone 返回的用户 ID。

project-access

布尔值

(可选)标记容器为私有的标志,以便创建容器的用户和上述列表中指定的 users 只能访问该容器。传递 false 以标记容器为私有。

请求/响应(更新 project-access 标志):

PATCH /v1/containers/{uuid}/acl
Headers:
    Content-Type: application/json
    X-Auth-Token: {token_id}

Body:
{
  "read":
    {
      "project-access":false
    }
}

Response:
HTTP/1.1 200 OK
{"acl_ref": "https://{barbican_host}/v1/containers/{uuid}/acl"}

请求/响应(从 ACL 中删除所有用户):

PATCH /v1/containers/{uuid}/acl
Headers:
    Content-Type: application/json
    X-Auth-Token: {token_id}

Body:
{
  "read":
    {
      "users":[]
    }
}

Response:
HTTP/1.1 200 OK
{"acl_ref": "https://{barbican_host}/v1/containers/{uuid}/acl"}

HTTP 状态码

代码

描述

200

成功更新容器 ACL。

400

错误请求。

401

缺少或无效的 X-Auth-Token。需要身份验证。

403

用户没有权限访问此资源。

404

未找到给定 UUID 的容器。

415

不支持的媒体类型。

DELETE /v1/containers/{uuid}/acl

删除给定容器的 ACL。成功删除后不会返回任何内容。

请求/响应:

DELETE /v1/containers/{uuid}/acl
Headers:
    X-Auth-Token: {token_id}

Response:
HTTP/1.1 200 OK

HTTP 状态码

代码

描述

200

成功删除容器 ACL。

401

缺少或无效的 X-Auth-Token。需要身份验证。

403

用户没有权限访问此资源。

404

未找到给定 UUID 的容器。