4.3. 为基于 Operator 的代理部署创建安全配置
4.3.1. 为基于 Operator 的代理部署创建安全配置 复制链接链接已复制到粘贴板!
以下流程演示了如何使用自定义资源(CR)实例将用户和关联的安全配置添加到基于 Operator 的代理部署中。
先决条件
您必须已安装了 AMQ Broker Operator。有关安装 Operator 的两种替代方法的详情,请参考:
- 您应该熟悉代理安全,如安全 代理所述
- 您应该熟悉如何使用 CR 实例创建基本代理部署。更多信息请参阅 第 3.4.1 节 “部署基本代理实例”。
您可以在创建代理部署前或之后部署安全 CR。但是,如果您在创建代理部署后部署安全 CR,代理 Pod 将重启来接受新配置。
开始配置自定义资源(CR)实例,以定义代理部署的用户和相关安全配置。
使用 OpenShift 命令行界面:
以有权在项目中部署代理部署的 CR 的用户登录到 OpenShift。
oc login -u <user> -p <password> --server=<host:port>
oc login -u <user> -p <password> --server=<host:port>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
打开名为
broker_activemqartemissecurity_cr.yaml
的示例 CR 文件,该文件包含在您下载和提取的 Operator 安装存档的deploy/crs
目录中。
使用 OpenShift Container Platform Web 控制台:
- 以有权在项目中部署 CR 的用户登录到控制台,以进行代理部署。
-
根据地址 CRD 启动新的 CR 实例。在左侧窗格中,单击
。 - 单击 ActiveMQArtemisSecurity CRD。
- 点 实例 选项卡。
单击 Create ActiveMQArtemisSecurity。
在控制台中,会打开 YAML 编辑器,供您配置 CR 实例。
在 CR 的
spec
部分,添加行来定义用户和角色。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意始终为上例中的元素指定值。例如,如果没有为 role 指定
securityDomains.brokerDomain
或 values 的值,则生成的配置可能会导致意外结果。上述配置定义了两个用户:
-
名为
prop-module
的propertiesLoginModule
定义一个名为sam
的用户,角色名为sender
。 -
名为
prop-module
的propertiesLoginModule
,它定义名为rob
的角色以及名为receiver
的角色。
这些角色的属性在
securityDomains
的brokerDomain
和broker
部分中定义。例如,定义了send
角色,以允许具有该角色的用户在任何地址上创建持久队列。默认情况下,配置会应用到当前命名空间中 CR 定义的所有已部署代理。要将配置限制为特定的代理部署,请使用 第 8.1.3 节 “安全自定义资源配置参考” 中描述的applyToCrNames
选项。注意在
metadata
部分中,您需要包含namespace
属性,只有在 使用 OpenShift Container Platform Web 控制台来创建 CR 实例时才指定一个值。您应该指定的值是代理部署的 OpenShift 项目的名称。-
名为
部署 CR 实例。
使用 OpenShift 命令行界面:
- 保存 CR 文件。
切换到代理部署的项目。
oc project <project_name>
$ oc project <project_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 CR 实例。
oc create -f <path/to/address_custom_resource_instance>.yaml
$ oc create -f <path/to/address_custom_resource_instance>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
使用 OpenShift Web 控制台:
- 配置完 CR 后,点 Create。
4.3.2. 将用户密码存储在 secret 中 复制链接链接已复制到粘贴板!
在 为基于 Operator 的代理部署流程创建安全配置中,用户密码存储在 ActiveMQArtemisSecurity
CR 中的明文中。如果您不想在 CR 中以明文形式存储密码,您可以从 CR 中排除密码并将其存储在 secret 中。应用 CR 时,Operator 会从 secret 检索每个用户的密码,并将它插入到代理 pod 的 artemis-users.properties
文件中。
流程
使用
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
oc create secret generic security-properties-prop-module \ --from-literal=sam=samspassword \ --from-literal=rob=robspassword
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 CR 的
spec
部分中,添加您在 secret 中指定的用户名以及角色信息,但不包括每个用户的密码。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 部署 CR 实例。
使用 OpenShift 命令行界面:
- 保存 CR 文件。
切换到代理部署的项目。
oc project <project_name>
$ oc project <project_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 CR 实例。
oc create -f <path/to/address_custom_resource_instance>.yaml
$ oc create -f <path/to/address_custom_resource_instance>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
使用 OpenShift Web 控制台:
- 完成配置 CR 后,点 Create。
其他资源
如需有关 OpenShift Container Platform 中 secret 的更多信息,请参阅 OpenShift Container Platform 文档中的 向 pod 提供敏感数据。