Pulsar在 namespace 层级管理权限(即在tenants 和clusters内)。
授权
你可以授权给指定的 role 一系列操作权限,例如produce
和consume
。
pulsar-admin
使用 grant-permission
子命令指定命名空间,通过 --actions
flag 指定操作,通过 --role
flag 指定角色:
$ pulsar-admin namespaces grant-permission test-tenant/ns1 \
--actions produce,consume \
--role admin10
当设置 broker.conf
中的authorizationAllowWildcardsMatching
为 true
时,可以使用通配符授权。
例如:
$ pulsar-admin namespaces grant-permission test-tenant/ns1 \
--actions produce,consume \
--role 'my.role.*'
角色 my.role.1
、my.role.2
、my.role.foo
、my.role.bar
等都可以生产和消费消息。
$ pulsar-admin namespaces grant-permission test-tenant/ns1 \
--actions produce,consume \
--role '*.role.my'
角色 1.role.my
、2.role.my
、foo.role.my
、bar.role.my
等都可以生产和消费消息。
注意:通配符只能用于角色名称的开始或末尾。
例如:
$ pulsar-admin namespaces grant-permission test-tenant/ns1 \
--actions produce,consume \
--role 'my.*.role'
这种情况下,只有 my.*.role
有权限, my.1.role
、my.2.role
、my.foo.role
、my.bar.role
等 不可以生产或消费消息。
REST API
POST /admin/v2/namespaces/:tenant/:namespace/permissions/:role
Java
admin.namespaces().grantPermissionOnNamespace(namespace, role, getAuthActions(actions));
获取授权信息
查看在单个命名空间中,不同角色的权限。
pulsar-admin
使用 permissions
子命令,指定命名空间:
$ pulsar-admin namespaces permissions test-tenant/ns1
{
"admin10": [
"produce",
"consume"
]
}
REST API
GET /admin/v2/namespaces/:tenant/:namespace/permissions
Java
admin.namespaces().getPermissions(namespace);
取消权限
取消某些角色的权限后,这些角色将不再可以访问指定的命名空间。
pulsar-admin
使用 revoke-permission
子命令,使用--role
flag 指定命名空间和角色:
$ pulsar-admin namespaces revoke-permission test-tenant/ns1 \
--role admin10
REST API
DELETE /admin/v2/namespaces/:tenant/:namespace/permissions/:role
Java
admin.namespaces().revokePermissionsOnNamespace(namespace, role);