注意
本文档适用于 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. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.