4.3. 为基于 Operator 的代理部署创建安全配置


4.3.1. 为基于 Operator 的代理部署创建安全配置

以下流程演示了如何使用自定义资源(CR)实例将用户和关联的安全配置添加到基于 Operator 的代理部署中。

先决条件

流程

您可以在创建代理部署前或之后部署安全 CR。但是,如果您在创建代理部署后部署安全 CR,代理 Pod 将重启来接受新配置。

  1. 开始配置自定义资源(CR)实例,以定义代理部署的用户和相关安全配置。

    1. 使用 OpenShift 命令行界面:

      1. 以有权在项目中部署代理部署的 CR 的用户登录到 OpenShift。

        oc login -u <user> -p <password> --server=<host:port>
        Copy to Clipboard Toggle word wrap
      2. 打开名为 broker_activemqartemissecurity_cr.yaml 的示例 CR 文件,该文件包含在您下载和提取的 Operator 安装存档的 deploy/crs 目录中。
    2. 使用 OpenShift Container Platform Web 控制台:

      1. 以有权在项目中部署 CR 的用户登录到控制台,以进行代理部署。
      2. 根据地址 CRD 启动新的 CR 实例。在左侧窗格中,单击 Administration Custom Resource Definitions
      3. 单击 ActiveMQArtemisSecurity CRD。
      4. 实例 选项卡。
      5. 单击 Create ActiveMQArtemisSecurity

        在控制台中,会打开 YAML 编辑器,供您配置 CR 实例。

  2. 在 CR 的 spec 部分,添加行来定义用户和角色。例如:

    apiVersion: broker.amq.io/v1beta1
    kind: ActiveMQArtemisSecurity
    metadata:
      name: ex-prop
    spec:
      loginModules:
        propertiesLoginModules:
          - name: "prop-module"
            users:
              - name: "sam"
                password: "samspassword"
                roles:
                  - "sender"
              - name: "rob"
                password: "robspassword"
                roles:
                  - "receiver"
      securityDomains:
        brokerDomain:
          name: "activemq"
          loginModules:
            - name: "prop-module"
              flag: "sufficient"
      securitySettings:
        broker:
          - match: "#"
            permissions:
              - operationType: "send"
                roles:
                  - "sender"
              - operationType: "createAddress"
                roles:
                  - "sender"
              - operationType: "createDurableQueue"
                roles:
                  - "sender"
              - operationType: "consume"
                roles:
                  - "receiver"
                  ...
    Copy to Clipboard Toggle word wrap
    注意

    始终为上例中的元素指定值。例如,如果没有为 role 指定 securityDomains.brokerDomain 或 values 的值,则生成的配置可能会导致意外结果。

    上述配置定义了两个用户:

    • 名为 prop-modulepropertiesLoginModule 定义一个名为 sam 的用户,角色名为 sender
    • 名为 prop-modulepropertiesLoginModule,它定义名为 rob 的角色以及名为 receiver 的角色。

    这些角色的属性在 securityDomainsbrokerDomainbroker 部分中定义。例如,定义了 send 角色,以允许具有该角色的用户在任何地址上创建持久队列。默认情况下,配置会应用到当前命名空间中 CR 定义的所有已部署代理。要将配置限制为特定的代理部署,请使用 第 8.1.3 节 “安全自定义资源配置参考” 中描述的 applyToCrNames 选项。

    注意

    metadata 部分中,您需要包含 namespace 属性,只有在 使用 OpenShift Container Platform Web 控制台来创建 CR 实例时才指定一个值。您应该指定的值是代理部署的 OpenShift 项目的名称。

  3. 部署 CR 实例。

    1. 使用 OpenShift 命令行界面:

      1. 保存 CR 文件。
      2. 切换到代理部署的项目。

        $ oc project <project_name>
        Copy to Clipboard Toggle word wrap
      3. 创建 CR 实例。

        $ oc create -f <path/to/address_custom_resource_instance>.yaml
        Copy to Clipboard Toggle word wrap
    2. 使用 OpenShift Web 控制台:

      1. 配置完 CR 后,点 Create

4.3.2. 将用户密码存储在 secret 中

为基于 Operator 的代理部署流程创建安全配置中,用户密码存储在 ActiveMQArtemisSecurity CR 中的明文中。如果您不想在 CR 中以明文形式存储密码,您可以从 CR 中排除密码并将其存储在 secret 中。应用 CR 时,Operator 会从 secret 检索每个用户的密码,并将它插入到代理 pod 的 artemis-users.properties 文件中。

流程

  1. 使用 oc create secret 命令创建 secret,并添加每个用户名和密码。secret 名称必须遵循 security-properties-module name 的命名约定,其中 module name 是 CR 中配置的登录模块的名称。例如:

    oc create secret generic security-properties-prop-module \
      --from-literal=sam=samspassword \
      --from-literal=rob=robspassword
    Copy to Clipboard Toggle word wrap
  2. 在 CR 的 spec 部分中,添加您在 secret 中指定的用户名以及角色信息,但不包括每个用户的密码。例如:

    apiVersion: broker.amq.io/v1beta1
    kind: ActiveMQArtemisSecurity
    metadata:
      name: ex-prop
    spec:
      loginModules:
        propertiesLoginModules:
          - name: "prop-module"
            users:
              - name: "sam"
                roles:
                  - "sender"
              - name: "rob"
                roles:
                  - "receiver"
      securityDomains:
        brokerDomain:
          name: "activemq"
          loginModules:
            - name: "prop-module"
              flag: "sufficient"
      securitySettings:
        broker:
          - match: "#"
            permissions:
              - operationType: "send"
                roles:
                  - "sender"
              - operationType: "createAddress"
                roles:
                  - "sender"
              - operationType: "createDurableQueue"
                roles:
                  - "sender"
              - operationType: "consume"
                roles:
                  - "receiver"
                  ...
    Copy to Clipboard Toggle word wrap
  3. 部署 CR 实例。

    1. 使用 OpenShift 命令行界面:

      1. 保存 CR 文件。
      2. 切换到代理部署的项目。

        $ oc project <project_name>
        Copy to Clipboard Toggle word wrap
      3. 创建 CR 实例。

        $ oc create -f <path/to/address_custom_resource_instance>.yaml
        Copy to Clipboard Toggle word wrap
    2. 使用 OpenShift Web 控制台:

      1. 完成配置 CR 后,点 Create

其他资源

如需有关 OpenShift Container Platform 中 secret 的更多信息,请参阅 OpenShift Container Platform 文档中的 向 pod 提供敏感数据。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat