配额 API - 用户指南

在默认设置下运行,barbican REST API 不会对允许创建的资源数量施加上限。 barbican 的后端依赖于有限的资源。 这些有限的资源包括数据库、插件和硬件安全模块 (HSM) 存储空间。 在多项目或多用户环境中,如果一个项目耗尽可用资源,从而影响其他项目,这可能成为一个问题。

针对此问题,按项目划分的解决方案是项目配额。

本用户指南将向您展示用户如何查找其当前的有效配额,以及服务管理员如何创建、更新、读取和删除云中所有项目的项目配额配置。

本指南将假定您正在使用 barbican 的本地运行开发环境。 如果您需要设置方面的帮助,请参考 开发指南

项目配额概述

所有使用 barbican 进行身份验证的用户都可以读取适用于其项目的有效配额值。 Barbican 可以通过从身份验证令牌中读取项目范围来确定用户所属的项目。

服务管理员可以读取、设置和删除 barbican 已知的每个项目的配额配置。 服务管理员通过其经过身份验证的角色来识别。 服务管理员的角色在 barbican 的 policy.json 文件中定义。 服务管理员的默认角色是“key-manager:service-admin”。

可以对以下 barbican 资源强制执行配额:密钥、容器、订单、消费者和 CA。 配置的配额值可以是 None(使用默认值)、-1(无限制)、0(禁用)或正整数,定义允许的项目最大数量。

默认配额

如果尚未为项目设置项目配额,则默认项目配额将应用于该项目。 默认配额在 barbican 配置文件 (barbican.conf) 中指定。 标准配置文件中提供的默认值如下。

# default number of secrets allowed per project
quota_secrets = -1

# default number of orders allowed per project
quota_orders = -1

# default number of containers allowed per project
quota_containers = -1

# default number of consumers allowed per project
quota_consumers = -1

# default number of CAs allowed per project
quota_cas = -1

当未为当前项目设置明确的项目配额时,默认配额会通过对 quotas 资源执行 GET 请求返回。

如何读取有效配额

可以通过对 quotas 资源执行 GET 请求来读取项目的当前有效配额。 Barbican 从随请求发送的身份验证令牌的范围中确定当前项目 ID。

Request:

curl -i -X GET -H "X-Auth-Token:$TOKEN" \
    -H "Accept:application/json" \
    https://:9311/v1/quotas


Response:

HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
{"quotas":
    {"secrets": -1,
     "orders": -1,
     "containers": -1,
     "consumers": -1,
     "cas": -1
    }
}

要获取有关配额查找 API 的更多详细信息,您可以参考 获取配额 文档。

如何设置或替换项目配额

可以通过对 project-quotas 资源执行 PUT 请求来修改项目的配额。 此请求将完全替换项目的现有配额设置。 项目 ID 传递在请求的 URI 中。

要设置或替换 ID 为 1234 的项目的配额

Request:

curl -i -X PUT -H "content-type:application/json" \
    -H "X-Auth-Token:$TOKEN" \
    -d '{"project_quotas": {"secrets": 500,
    "orders": 100, "containers": -1, "consumers": 100,
    "cas": 50}}' \
    https://:9311/v1/project-quotas/1234

Response:

HTTP/1.1 204 No Content

要获取有关项目配额设置 API 的更多详细信息,您可以参考 设置项目配额 文档。

如何检索配置的项目配额

可以使用对各自 project-quota 资源执行 GET 操作来检索为项目定义的项目配额信息。 项目 ID 传递在请求的 URI 中。 返回的响应包含项目配额数据。

要获取单个项目的项目配额信息

Request:

curl -i -X GET -H "X-Auth-Token:$TOKEN" \
    -H "Accept:application/json" \
    https://:9311/v1/project-quotas/1234

Response:

HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
{"project_quotas":
    {"secrets": 500,
     "orders": 100,
     "containers": -1,
     "consumers": 100,
     "cas": 50}}

可以使用对 project-quota 资源执行 GET 操作来检索所有项目的项目配额信息。 返回的响应包含一个包含所有项目配额数据的列表。

Request:

curl -i -X GET -H "X-Auth-Token:$TOKEN" \
    -H "Accept:application/json" \
    https://:9311/v1/project-quotas


Response:

HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
{"project_quotas":
  [{"project_id": "1234",
    "project_quotas":
      {"secrets": 500,
       "orders": 100,
        "containers": -1,
         "consumers": 100,
         "cas": 50}},
   {"project_id": "5678",
    "project_quotas":
      {"secrets": 500,
       "orders": 100,
       "containers": -1,
       "consumers": 100,
       "cas": 50}}]}

要获取有关项目配额查找 API 的更多详细信息,您可以参考 获取项目配额获取项目配额列表 文档。

如何删除配置的项目配额

可以使用对各自 project-quotas 资源执行 DELETE 操作来删除为项目定义的配额。 删除配额配置信息后,默认配额将应用于该项目。 成功删除后不会返回响应内容。

Request:

curl -i -X DELETE -H "X-Auth-Token:$TOKEN" \
    https://:9311/v1/project-quotas/1234

Response:

HTTP/1.1 204 No Content

要获取有关项目配额删除 API 的更多详细信息,您可以参考 删除项目配额 文档。