阿里云消息队列用户权限访问策略设置

权限策略配置

权限策略有两种类型:系统权限策略 和 自定义权限策略,分别实现BMS的产品级权限和级权限控制。

  • 系统策略:阿里云系统为管理资源而预定义的权限集,这类策略可直接为子用户授权,用户只能使用而不能修改。
  • 自定义策略:由用户自己创建,更细化的管理资源的权限集,可以针对单个配置权限,更加灵活的满足账户对不同用户的差异化权限管理。。

系统权限策略

系统权限策略是被用户经常使用的权限集合,不可被用户编辑。Kafka默认提供了3种系统权限策略,供配置系统权限策略时选择,如下表:

策略名称 描述 包含权限
KAFKAReadPolicy 只读权限 topic查询操作权限;证书查询操作权限;
KAFKAWritePolicy 读写权限 topic查询操作权限;topic更新操作权限;
证书查询操作权限;证书更新操作权限;
KAFKAFullControlPolicy 完全控制权限 kafka产品的全部权限;

自定义权限策略

自定义权限策略允许用户根据自己的需求灵活配置自己的权限策略;配置方式包含2中方式:策略生成器 和 编辑策略文件。

使用策略生成器配置权限

策略生成器,适合于需要控制资源访问的场景。kafka权限控制的资源包括topic和证书两种,使用策略生成器定义的策略,可以控制到某个具体要访问的资源;比如:可以设置用户允许下载哪些证书,也可以设置用户可以修改和删除哪些topic。

场景举例:配置用户可以下载的证书。

操作步骤:

创建权限策略:多用户访问控制 -> 策略管理 -> 创建策略;

填写策略名称,选择服务类型为【阿里消息队列 KAFKA】;

策略生成方式,选择【策略生成器】;

因为我们不配置针对topic的角色,所以不需要配置kafka主题的权限。直接配置kafka证书的权限。选择【下载证书】权限 -> 选择证书所在的地域 -> 选择要授权的证书;点击【完成】按钮后,完成策略配置;

此时从策略管理的【自定义策略】列表中可以看到刚刚定义的策略;

使用ACL策略文件配置权限

ACL策略配置文件,可以理解为配置权限策略规则的json字符串,无论是系统策略还是用户自定义策略,最终都会映射成为一个ACL的json串。使用ACL策略配置文件,用户可以非常灵活的定义权限策略,但是需要用户理解ACL字符串的含义。Kafka提供了一个公用的ACL配置字符串模板,用户可以参照模板配置自己的策略。比如:配置单独的一个创建topic的权限策略;编辑ACL权限策略的语法可参考文档策略语法。

场景举例:配置创建topic的权限策略,并授权给用户。

操作步骤:

创建权限策略:多用户访问控制 -> 策略管理 -> 创建策略;

填写策略名称,选择服务类型为【阿里消息队列 KAFKA】,策略生成方式,选择【编辑策略文件】,策略模板选择【kafka_acl】;

配置ACL字符串,包含创建topic权限,创建topic权限使用CreateTopic字符串标识;其它权限标签可参考下文的权限模型中的权限标签。

点击【完成】后,可以在【自定义策略】列表中查看到新建的策略;

用户授权

在“用户管理->子用户管理列表页”的对应子用户的“操作”列选择“添加权限”,并为用户选择系统权限或自定义策略进行授权。

说明:如果在不修改已有策略规则的情况下修改某子用户的权限,只能通过删除已有的策略并添加新的策略来实现,不能取消勾选已经添加过的策略权限。

子用户登录

主账号完成对子用户的授权后,可以将链接发送给子用户;子用户可以通过IAM用户登录链接登录主账号的管理控制台,根据被授权的策略对主账户资源进行操作和查看。

其他详细操作参考:多用户访问控制。

Kafka权限模型

kafka权限模型主要描述用户可以控制哪些操作的权限,以及控制权限的粒度。

  • kafka权限模型涉及2种资源的权限管理:topic权限和证书权限;对topic权限的管理,即子用户对topic具有哪些操作的权限;同理,对证书权限的管理,即子用户对证书具有哪些操作权限;
  • 整个权限模型分为3层,其中叶子节点为粒度最细的权限定义,每种权限都通过一个字符串标签唯一标识,用于在定义权限策略时区分权限。权限的含义如下表;

    • 权限标签 层级 描述
      FULL_CONTROL 1 等同于拥有『父账号』的全部权限;
      AdminTopic 1 针对topic的增删改查权限,包含所有对topic操作的细粒度权限
      比如:创建topic;
      AdminCertificate 1 针对证书的增删改查权限,包含所有对证书操作的细粒度权限;
      TopicReadOper 2 topic的查询操作权限,包含topic列表、详情等查询操作;
      TopicWriteOper 2 topic的更新操作权限,包含topic的创建、修改、删除等操作;
      CertificateReadOper 2 证书的查询操作权限,包含证书列表、下载证书等查询操作;
      CertificateWriteOper 2 证书的更新操作权限,包含证书的创建、修改、删除
      重新生成等操作;
      ListTopic 3 查看topic列表权限,对应主题列表页面;
      DescTopic 3 查看topic详情权限,对应主题列表中点击topic名称后进入的页面;
      DescTopicCertificate 3 查看topic授权的证书列表权限,对应主题列表页面中
      【查看证书】操作;
      CreateTopic 3 查看topic授权的证书列表权限,对应主题列表页面中
      【创建主题】操作;
      AlterTopic 3 修改topic元信息权限,在目前的控制台中没有对应操作;
      DeleteTopic 3 删除topic权限,对应主题列表页面中【创建主题】操作;
      AddTopicPartition 3 为topic添加分区的权限,对应主题列表页面中【扩容分区】操作;
      UpdateTopicCertificate 3 修改topic证书授权,对应主题列表页面中
      【查看证书】页面中对证书权限的编辑操作;
      ListCertificate 3 查看证书列表权限,对应证书列表页面;
      DescCertificate 3 查看证书详情权限,在目前的控制台中没有对应操作;
      DownloadCertificate 3 下载证书权限,对应证书列表页面中的密钥下载链接;
      DescCertificateTopic 3 查看证书对应topic列表,对应证书列表页面中的
      【查看主题】操作打开的页面;
      CreateCertificate 3 创建证书权限,对应证书列表页面中的【创建证书】操作;
      AlterCertificate 3 修改证书权限,对应证书列表页面中的修改证书名称操作;
      DeleteCertificate 3 删除证书权限,对应证书列表页面中的【删除证书】操作;
      RebuildCertificate 3 重新生成证书权限,对应证书列表页面中的【重新生成】操作;
      UpdateCertificateTopic 3 修改证书可以访问的topic权限,对应证书列表页面中
      【查看主题】页面中对证书权限的编辑操作;