执行模板中使用加密参数

当操作密码、密钥等敏感类的数据时,使用存储仓库中的加密参数功能后,此类数据便不会以明文形式显示了,而且保存的数据还可以直接调用。如使用系统运维管理 OOS(CloudOps Orchestration Service)的模板功能便可以直接在模板中使用加密参数。

操作步骤

  1. 登录系统运维管理 OOS(CloudOps Orchestration Service)控制台。

  2. 选择参数仓库,创建加密参数,具体步骤请参考创建加密参数中的创建加密参数一节。本示例中提供的是一个名称为InstancePassword的加密参数。如下所示:image

  3. 在创建好加密参数后,创建系统运维管理 OOS(CloudOps Orchestration Service)的自定义模板或选择已经创建好的自定义模板或公共模板。本示例为一个修改实例密码的模板,具体模板如下:

    FormatVersion: OOS-2019-06-01
    Description: Bulky modify the password of an ECS instance.
    Parameters:
      regionId:
        Type: String
        Description: The id of region.
        AssociationProperty: RegionId
        Default: '{{ ACS::RegionId }}'
      targets:
        Type: Json
        AssociationProperty: Targets
        AssociationPropertyMetadata:
          ResourceType: 'ALIYUN::ECS::Instance'
          RegionId: regionId
      instancePassword:
        Description: The password of the ECS instance.
        Type: String
      rateControl:
        Description: Concurrency ratio of task execution.
        Type: Json
        AssociationProperty: RateControl
        Default:
          Mode: Concurrency
          MaxErrors: 0
          Concurrency: 10
      OOSAssumeRole:
        Description: The RAM role to be assumed by OOS.
        Type: String
        Default: OOSServiceRole
    RamRole: '{{ OOSAssumeRole }}'
    Tasks:
      - Name: getInstance
        Description: Views the ECS instances.
        Action: 'ACS::SelectTargets'
        Properties:
          ResourceType: 'ALIYUN::ECS::Instance'
          RegionId: '{{ regionId }}'
          Filters:
            - '{{ targets }}'
        Outputs:
          instanceIds:
            Type: List
            ValueSelector: 'Instances.Instance[].InstanceId'
      - Name: resetPassword
        Action: 'ACS::ECS::ResetPassword'
        Description: Modify the password of an ECS instance.
        Properties:
          regionId: '{{ regionId }}'
          instanceId: '{{ ACS::TaskLoopItem }}'
          password: '{{ instancePassword }}'
        Loop:
          RateControl: '{{ rateControl }}'
          Items: '{{ getInstance.instanceIds }}'
        Outputs:
          instanceId:
            Type: String
            ValueSelector: instanceId
  4. 模板创建完成后,选中模板,单击创建执行。并单击下一步:设置参数

  5. 在页面中显示的为需要输入加密参数的instancePassword字段,由于在步骤2中已经创建出一个加密参数,此时可以直接点击参数框后面的选择参数功能。如下所示:

    instance-secret-password-02

  6. 单击选择参数按钮后。在弹出的页面中单击加密参数选项,搜索到已经创建好的加密参数,并单击确定

    instance-secret-password-03

  7. 在设置完参数后,此时就可以单击页面下方的下一步:确定按钮了,继续执行模板。

    instance-secret-password-04

  8. 在执行模板前的参数详情页面确定参数无误后,单击创建

    instance-secret-password-05

  9. 找到在上一步已经创建的执行,进入执行详情页面,查看当前模板的执行。在基本详情页面发现使用加密参数部分的参数:InstancePassword,并未在当前展示页面显示明文密码。secret-instance-password-09

  10. 在执行页面中,单击日志选项。找到调用加密参数部分的日志,查看发送的原始请求,在日志中可以看到调用的加密参数也处于加密状态,此时不难发现类似于密码等有安全要求的数据使用加密参数便达到了加密的效果。instance-secret-password-08

  11. 等待模板执行成功后,找到修改密码的实例,使用加密参数中预设置的密码来登录实例,验证可以登录成功。

    instance-secret-password-07