创建GVSM(NIST FIPS)密码机集群

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

加密服务为您提供密码机实例集群功能,实现将处于同一地域不同可用区、用于相同业务的一组密码机实例关联起来,进行统一管理,为业务应用提供密码计算的高可用性、负载均衡以及横向扩展的能力。本文介绍如何使用密码机实例集群。

说明

如果您需要创建KMS硬件密钥管理实例的密码机集群,请参见配置KMS硬件密钥管理实例的密码机集群

适用场景

  • 应用程序可以通过集群内的任何一个密码机实例使用同一个密钥。

  • 应用程序用于生产环境,从而要求加密服务提供业务连续性。

注意事项

一个集群中包括一个主密码机实例与若干个非主密码机实例。集群内一个可用区的密码机实例使用同一VPC子网。

前提条件

  • 已购买并启用密码机实例。具体操作,请参见购买并启用密码机实例

    警告
    • 为了保证密码机实例数据的安全,请不要在实际生产环境中使用测试密钥。

    • 仅启用主密码机实例即可,无需启用子密码机。

  • 已购买Linux系统(CentOS 8或Alibaba Cloud Linux)的ECS实例,且ECS实例需要和密码机实例在同一VPC。具体操作,请参见Linux系统实例快速入门

    说明

    该ECS实例用于安装密码机管理工具,而非用于业务服务器。

创建并激活集群

  1. 登录加密服务管理控制台,在顶部菜单栏,选择目标地域。

  2. 实例列表页面,定位到主密码机实例,单击操作列的创建集群

  3. 创建并激活集群面板,完成①创建集群,然后单击下一步

    配置项

    说明

    集群名称

    自定义集群的名称。名称不能重复且长度不允许超过24个字符。

    设置集群访问白名单

    允许访问集群的IP地址。如果未设置白名单,则所有IP地址都能访问集群,如果设置了白名单,则不在白名单内的访问请求将被拒绝。

    您可以输入单个IP地址或网段地址,每行输入1条数据,最多可以输入10条数据。

    重要
    • 集群的白名单优先级高于集群中密码机实例的白名单。例如,您设置的集群中密码机实例的白名单为10.10.10.10,集群的白名单为172.16.0.1,则您只能通过172.16.0.1访问集群中的密码机实例。

    • 不支持配置为0.0.0.0/0(放行所有来源IP)。

      基于安全考虑,不推荐您放行所有来源IP。如果因临时测试等原因确实需要放行所有来源IP,不配置白名单即可。

    指定集群的交换机(2~4个)

    根据业务需要选择可用区的交换机。

    在密码机实例集群中,您至少配置2个交换机才能成功创建并激活集群。

  4. 创建并激活集群面板,完成②激活集群,然后单击下一步

    1. 导入集群证书。

      1. 导入集群证书区域,单击集群CSR证书下载CSR证书文件,然后上传到ECS实例上保存。例如,保存为cluster.csr。

      2. 创建私钥,并根据提示设置私钥口令。例如,保存为issuerCA.key。

        openssl genrsa -aes256 -out issuerCA.key 2048
      3. 创建自签名证书。例如,保存为issuerCA.crt。

        openssl req -new -x509 -days 3652 -key issuerCA.key -out issuerCA.crt
      4. 签署集群CSR证书,颁发的集群证书存储在cluster.crt文件中。

        说明

        该步骤会使用到cluster.csr、issuerCA.key、issuerCA.crt文件。

        openssl x509 -req -in cluster.csr -days 3652 -CA issuerCA.crt -CAkey issuerCA.key -set_serial 01 -out cluster.crt
      5. 返回加密服务管理控制台,导入集群证书并单击提交

        • 请输入签发者证书(PEM编码)区域,输入issuerCA.crt文件的内容。

        • 请输入签发集群证书(PEM编码)区域,输入cluster.crt文件的内容。

    2. 初始化主密码机实例。

      重要

      仅支持通过密码机管理实例工具初始化主密码机实例,密码机实例管理工具仅支持安装在Linux操作系统。

      步骤

      说明

      步骤1:下载密码机实例管理工具。

      • CentOS

        • 方式一:下载密码机实例管理工具

        • 方式二:执行如下命令下载密码机实例管理工具,该操作需要您的ECS服务器连接公网。

          wget -O hsm-client-v2.03.15.10-1.x86_64.rpm 'https://yundun-hsm4.oss-ap-southeast-1.aliyuncs.com/hsm-client-v2.03.15.10-1.x86_64.rpm'
        • 方式三:在实例列表页面,找到目标密码机实例,通过单击规格列的image图标。

        • 方式四:在激活集群页面,单击下载密码机实例管理工具

      • Debian

        访问hsm-client-2.03.15.10-20240710_1.x86_64.deb,下载密码机实例管理工具。

      步骤2:安装密码机管理工具。

      执行如下命令:请将程序和配置文件安装在/opt/hsm目录下。

      • CentOS

        sudo yum install -y hsm-client-v2.03.15.10-1.x86_64.rpm
      • Debian

        sudo dpkg -i hsm-client-2.03.15.10-20240710_1.x86_64.deb

      步骤3:修改客户端配置文件。

      在密码机管理工具的安装目录下,修改/opt/hsm/etc/hsm_mgmt_tool.cfg文件中的servers配置项。

      • name、hostname修改为主密码机的私有IP地址,您可以在实例列表页面查询IP。

      • owner_cert_path修改为issuerCA.crt的文件路径。

      hsm_mgmt_tool.cfg文件示例

      {

      "servers": [

      {

      "name" : "172.16.XX.XX",

      "hostname" : "172.16.XX.XX",

      "port" : 2225,

      "certificate": "/opt/hsm/etc/client.crt",

      "pkey": "/opt/hsm/etc/client.key",

      "CAfile": "",

      "CApath": "/opt/hsm/etc/certs",

      "ssl_ciphers": "",

      "server_ssl" : "yes",

      "enable" : "yes",

      "owner_cert_path":"<issuerCA.crt file path>"

      }],

      "scard": {

      "enable": "no",

      "port": 2225,

      "ssl": "no",

      "ssl_ciphers": "",

      "certificate": "cert-sc",

      "pkey": "pkey-sc"

      }

      }

      步骤4:登录主密码机并查看用户列表。

      1. 通过以下命令登录主密码机。

        /opt/hsm/bin/hsm_mgmt_tool /opt/hsm/etc/hsm_mgmt_tool.cfg
      2. 执行listUsers命令显示用户列表。

        cloudmgmt>listUsers
        Users on server 0(172.16.XX.XX):
        Number of users found:2
        
            User Id            User Type          User Name                     MofnPubKey       LoginFailureCnt            2FA
                 1             PRECO          admin                                       NO               0                     NO
                 2             AU             app_user                                    NO               0                     NO

      步骤5:将PRECO用户改为CO用户。

      1. 执行loginHSM命令并以PRECO身份登录加密机。

        server0>loginHSM PRECO admin password
        loginHSM success
      2. 执行changePswd命令修改PRECO用户的密码,当您更改密码后,PRECO用户将成为CO用户。

        cloudmgmt>changePswd PRECO admin <NewPassword>
        
        *************************CAUTION********************************
        This is a CRITICAL operation, should be done on all nodes in the
        cluster. Cav server does NOT synchronize these changes with the
        nodes on which this operation is not executed or failed, please
        ensure this operation is executed on all nodes in the cluster.
        ****************************************************************
        
        Do you want to continue(y/n)?y
        Changing password for admin(PRECO) on 1 nodes
      3. 通过listUsers命令查看用户列表,验证PRECO用户是否更改为CO用户。

        cloudmgmt>listUsers
        Users on server 0(172.16.XX.XX):
        Number of users found:2
        
            User Id            User Type          User Name                     MofnPubKey       LoginFailureCnt            2FA
                 1             CO             admin                                       NO               0                     NO
                 2             AU             app_user                                    NO               0                     NO

      步骤6:创建密码机操作员(CU用户)

      警告

      请您先创建CU用户,再将子密码机添加到集群,否则创建的CU用户不会自动同步至子密码机。

      1. 执行createUser命令创建一个CU。

        CU用户名和密码支持ASCII字符,其中CU用户名不超过20个字符,密码为8~32个字符。

        本文以CU用户名为crypto_user为例,您可以根据业务需要自主命名。如果您是配置KMS硬件密钥管理实例的密码机集群,CU用户名请使用kmsuser

        createUser CU crypto_user <enter password>
      2. 执行listUsers命令,查看CU是否已经创建成功。

        预期输出:

        cloudmgmt>listUsers
        Users on server 0(172.16.XX.XX):
        Number of users found:3
        
            User Id         User Type       User Name                  MofnPubKey    LoginFailureCnt         2FA
                 1          CO          admin                                    NO               0               NO
                 2          AU          app_user                                 NO               0               NO
                 3          CU          crypto_user                              NO               0               NO

      步骤7:验证主密码机状态

      返回到加密服务控制台,在激活集群页面单击update图标刷新密码机状态,然后单击下一步

    3. ③添加加密机页面,根据提示添加子密码机到集群,然后单击完成

      如果需要更多的密码机实例,您需要购买密码机实例,并将密码机实例添加到集群。

使用密码机实例集群

您可以通过OpenSSL引擎、JCE或PKCS#11库提供的接口使用密码机集群。更多信息,请参见OpenSSL动态引擎JCEPKCS #11库

管理密码机集群

扩展集群

您可以将处于不同可用区的密码机实例加入到同一集群进行统一管理,提高加密服务的高可用性。添加到集群的密码机实例需符合以下要求:

  • 密码机实例未初始化。

  • 密码机实例为已启用未启用状态。

  • 密码机实例与主密码机为同一类型密码机。

  • 密码机实例未配置交换机或与主密码机属于同一交换机。

重要

如果密码机实例已配置了密码机实例白名单,加入集群后该密码机实例的访问白名单将继承集群的访问白名单,原密码机实例白名单将被清空。

  1. 实例列表页面,定位到目标主密码机实例,单击操作列的扩展集群

  2. 通过以下方式添加密码机实例到集群。

    • 还未购买密码机实例时,在添加密码机实例到集群 对话框,单击订购密码机,新购密码机实例。

      购买的密码机实例会自动添加到集群,同时加密服务会自动为该密码机实例分配IP地址,并完成集群内数据的同步。

    • 已购买密码机实例时,在添加密码机实例到集群 对话框,选择需要添加的密码机实例,单击添加,然后单击确定

修改集群名称和访问白名单

  1. 实例列表页面,找到目标主密码机实例,单击实例ID。

  2. 在弹出的实例详情页面,修改集群名称和访问白名单。

    修改白名单时,您可以输入单个IP地址或网段地址,每行输入1条数据,最多可以输入10条数据。

将子密码机移出集群

仅支持将子密码机实例移出集群,不支持将主密码机实例移出集群。

  1. 停用子密码机。您需要先停用子密码机后,才可以将子密码机移出集群。

    1. 实例列表页面,找到目标子密码机实例,单击操作列的停用

    2. 在弹出的对话框,再次单击停用

  2. 将子密码机移出集群。

    1. 单击目标子密码机实例操作列的移出集群

    2. 在弹出的对话框,再次单击移出集群

将子密码机切换为主密码机

您可以手动将子密码机切换为集群中的主密码机。

  1. 实例列表页面,找到目标子密码机实例,单击操作列的切换主机

  2. 在弹出的对话框,单击切换