Managing permissions

重要

此页面仅显示 部分常用操作

  • 有关 Pulsar admin 的最新完整信息,包括命令、标志、描述和更多信息,详见 Pulsar admin doc

  • 关于 REST API 最新最完整的信息,包括参数、响应、示例等等,可参阅 REST API 文档。

  • 有关 Java admin API 的最新完整信息,包括类、方法、描述等,请参阅 Java admin API 文档

Pulsar 允许您授予用户命名空间级别或主题级别权限。

  • 如果您授予用户命名空间级别权限,用户可以访问命名空间下的所有主题。

  • 如果您授予用户主题级权限,用户只能访问主题。

以下章节演示如何授予用户命名空间级权限。 如何授予用户主题级权限,请参阅 管理主题

授权

你可以授权给指定的角色一系列操作权限,例如 produceconsume

pulsar-admin

REST API

Java

使用 grant-permission 子命令指定命名空间,通过 --actions flag 指定操作,通过 --role flag 指定角色:

  1. $ pulsar-admin namespaces grant-permission test-tenant/ns1 \ --actions produce,consume \ --role admin10

当设置 broker.conf 中的authorizationAllowWildcardsMatchingtrue 时,可以使用通配符授权。

例如:

  1. $ pulsar-admin namespaces grant-permission test-tenant/ns1 \ --actions produce,consume \ --role 'my.role.*'

角色 my.role.1my.role.2my.role.foomy.role.bar 等都可以生产和消费消息。

  1. $ pulsar-admin namespaces grant-permission test-tenant/ns1 \ --actions produce,consume \ --role '*.role.my'

角色 1.role.my2.role.myfoo.role.mybar.role.my 等都可以生产和消费消息。

Note: A wildcard matching works at the beginning or end of the role name only.

例如:

  1. $ 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

  1. admin.namespaces().grantPermissionOnNamespace(namespace, role, getAuthActions(actions));

获取权限

查看在单个命名空间中,不同角色的权限。

pulsar-admin

REST API

Java

使用 permissions 子命令,指定命名空间:

  1. $ pulsar-admin namespaces permissions test-tenant/ns1{ "admin10": [ "produce", "consume" ]}

GET /admin/v2/namespaces/:tenant/:namespace/permissions

  1. admin.namespaces().getPermissions(namespace);

取消权限

取消某些角色的权限后,这些角色将不再可以访问指定的命名空间。

pulsar-admin

REST API

Java

使用 revoke-permission 子命令,使用--role flag 指定命名空间和角色:

  1. $ pulsar-admin namespaces revoke-permission test-tenant/ns1 \ --role admin10

DELETE /admin/v2/namespaces/:tenant/:namespace/permissions/:role

  1. admin.namespaces().revokePermissionsOnNamespace(namespace, role);