注意

本文档适用于 Ceph 开发版本。

Open Policy Agent 集成

Open Policy Agent (OPA) 是一个轻量级通用策略引擎,可以与服务共存。OPA 可以作为侧车、主机级守护程序或库进行集成。

服务可以通过执行查询将策略决策卸载到 OPA。因此,策略执行可以与策略决策解耦。

配置 OPA

要配置 OPA,将自定义策略加载到 OPA 中,这些策略控制用户被允许访问的资源。相关数据或上下文也可以加载到 OPA 中以做出决策。

策略和数据可以通过以下方式加载到 OPA 中:
  • OPA 的 RESTful API

  • OPA 的bundle功能,从远程 HTTP 服务器下载策略和数据

  • Filesystem

配置 Ceph 对象网关

以下配置选项可用于 OPA 集成:

rgw use opa authz = {use opa server to authorize client requests}
rgw opa url = {opa server url:opa server port}
rgw opa token = {opa bearer token}
rgw opa verify ssl = {verify opa server ssl certificate}

RGW-OPA 集成是如何工作的

用户认证后,可以使用 OPA 检查用户是否有权对资源执行给定的操作。OPA 以允许或拒绝的决策进行响应,该决策被发送回 RGW 以执行该决策。

示例请求:

POST /v1/data/ceph/authz HTTP/1.1
Host: opa.example.com:8181
Content-Type: application/json

{
    "input": {
        "method": "GET",
        "subuser": "subuser",
        "user_info": {
            "user_id": "john",
            "display_name": "John"
        },
        "bucket_info": {
            "bucket": {
                "name": "Testbucket",
                "bucket_id": "testbucket"
            },
            "owner": "john"
        }
    }
}

响应:

{"result": true}

上面是一个发送到 OPA 的示例请求,其中包含有关用户、资源和要在资源上执行的操作的信息。根据加载到 OPA 中的策略和数据,它将验证请求是否应该被允许或拒绝。在示例请求中,RGW 向端点/v1/data/ceph/authz发送 POST 请求,ceph是包名,594c8b: 是规则名。authz is the rule name.

由 Ceph 基金会带给您

Ceph 文档是一个社区资源,由非盈利的 Ceph 基金会资助和托管Ceph Foundation. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.