注意

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

Open Policy Agent 集成

Open Policy Agent (OPA) 是一个轻量级的通用策略引擎,可以与服务协同定位。 OPA 可以作为 sidecar、主机级守护进程或库进行集成。

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

配置 OPA

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

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

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

  • 文件系统

配置 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,由 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 是包名,authz 是规则名。

由 Ceph 基金会为您呈现

Ceph 文档是由非营利性 Ceph 基金会 资助和托管的社区资源。如果您希望支持这项工作和我们的其他努力,请考虑 立即加入