Cerbos云原生應(yīng)用訪(fǎng)問(wèn)控制引擎
Cerbos 是一款云原生應(yīng)用的訪(fǎng)問(wèn)控制工具,通過(guò)為應(yīng)用程序資源編寫(xiě)上下文感知訪(fǎng)問(wèn)控制策略來(lái)增強(qiáng)授權(quán)控制。
- 使用直觀(guān)的 YAML 配置語(yǔ)言編寫(xiě)訪(fǎng)問(wèn)規(guī)則
- 使用 Git-ops 基礎(chǔ)架構(gòu)來(lái)測(cè)試和部署
- 向 Cerbos PDP 發(fā)出簡(jiǎn)單的 API 請(qǐng)求,以評(píng)估策略并做出動(dòng)態(tài)訪(fǎng)問(wèn)決策
用例:
派生角色:根據(jù)上下文數(shù)據(jù)為用戶(hù)動(dòng)態(tài)分配新角色。
--- apiVersion: "api.cerbos.dev/v1" derivedRoles: name: common_roles definitions: - name: owner parentRoles: ["user"] condition: match: expr: request.resource.attr.owner == request.principal.id - name: abuse_moderator parentRoles: ["moderator"] condition: match: expr: request.resource.attr.flagged == true
資源策略:為資源編寫(xiě)訪(fǎng)問(wèn)規(guī)則。
--- apiVersion: api.cerbos.dev/v1 resourcePolicy: importDerivedRoles: - common_roles resource: "album:object" version: "default" rules: - actions: ['*'] effect: EFFECT_ALLOW derivedRoles: - owner - actions: ['view', 'flag'] effect: EFFECT_ALLOW roles: - user condition: match: expr: request.resource.attr.public == true - actions: ['view', 'delete'] effect: EFFECT_ALLOW derivedRoles: - abuse_moderator
API 請(qǐng)求
cat <<EOF | curl --silent "http://localhost:3592/api/check?pretty" -d @- { "requestId": "test01", "actions": ["view"], "resource": { "kind": "album:object", "instances": { "XX125": { "attr": { "owner": "alicia", "id": "XX125", "public": false, "flagged": false } } } }, "principal": { "id": "alicia", "roles": ["user"] } } EOF
API 響應(yīng)
{
"requestId": "test01",
"resourceInstances": {
"XX125": {
"actions": {
"view": "EFFECT_ALLOW"
}
}
}
}
評(píng)論
圖片
表情
