注意
本文档适用于 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 是规则名。