Managing permissions
重要
此页面仅显示 部分常用操作。
有关
Pulsar admin
的最新完整信息,包括命令、标志、描述和更多信息,详见 Pulsar admin doc。关于
REST API
最新最完整的信息,包括参数、响应、示例等等,可参阅 REST API 文档。有关
Java admin API
的最新完整信息,包括类、方法、描述等,请参阅 Java admin API 文档。
Pulsar 允许您授予用户命名空间级别或主题级别权限。
如果您授予用户命名空间级别权限,用户可以访问命名空间下的所有主题。
如果您授予用户主题级权限,用户只能访问主题。
以下章节演示如何授予用户命名空间级权限。 如何授予用户主题级权限,请参阅 管理主题。
授权
你可以授权给指定的角色一系列操作权限,例如 produce
和 consume
。
pulsar-admin
REST API
Java
使用 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
等都可以生产和消费消息。
Note: A wildcard matching works at the beginning or end of the role name only.
例如:
$ pulsar-admin namespaces grant-permission test-tenant/ns1 \ --actions produce,consume \ --role 'my.*.role'
In this case, only the role my.*.role
has permissions.
Roles my.1.role
, my.2.role
, my.foo.role
, my.bar.role
, etc. cannot produce and consume.
POST /admin/v2/namespaces/:tenant/:namespace/permissions/:role
admin.namespaces().grantPermissionOnNamespace(namespace, role, getAuthActions(actions));
获取权限
查看在单个命名空间中,不同角色的权限。
pulsar-admin
REST API
Java
使用 permissions 子命令,指定命名空间:
$ pulsar-admin namespaces permissions test-tenant/ns1{ "admin10": [ "produce", "consume" ]}
GET /admin/v2/namespaces/:tenant/:namespace/permissions
admin.namespaces().getPermissions(namespace);
取消权限
取消某些角色的权限后,这些角色将不再可以访问指定的命名空间。
pulsar-admin
REST API
Java
使用 revoke-permission 子命令,使用--role
flag 指定命名空间和角色:
$ pulsar-admin namespaces revoke-permission test-tenant/ns1 \ --role admin10
DELETE /admin/v2/namespaces/:tenant/:namespace/permissions/:role
admin.namespaces().revokePermissionsOnNamespace(namespace, role);