用参数仓库的加密参数批量修改实例密码

重要

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

背景

参数仓库系统运维管理提供的一个可以在云端保存数据的功能,如有依赖使用云端数据的需求,使用参数仓库可以随时调用保存的数据、方便更新与维护。

而且在参数仓库功能内部还提供了一种加密参数选项,如当您想批量修改ECS实例的密码时,简单的介绍两种方法:

  1. 可以选择使用阿里云提供的SDK编辑脚本的方式来修改。

  2. 使用系统运维管理的模板来修改密码。

无论是第一种还是第二种方法,如果直接输入密码,此时您的密码是以明文的形式输入的,并不是一种安全的状态,当您想查看使用过的密码历史记录时,也没有关于此方面的自动化记录。

当您选择使用第二种方法时,系统运维管理提供了集成加密参数的功能,它可以解决明文密码的窘境。具体应该怎么样做呢?下面为您详细介绍。

警告

使用本模板时,会重启ECS实例,请确保重启ECS实例不会对您的业务造成影响。

操作步骤

  1. 登录系统运维管理控制台

  2. 单击参数仓库 > 加密参数

  3. 创建加密参数。

    在维护您的密码前,首先需要先创建一个包含密码的加密参数,如何创建加密参数请参考创建加密参数此文档。

    secret-password

  4. 创建修改密码的运维模板。

    当您创建了加密参数后,怎么使用它呢?此时就用到了系统运维管理的模板相关的功能,编辑并创建您的修改密码的模板,关于如何创建模板请参考新建模板文档。此文档为您提供了一个测试模板请参考附录一:修改实例密码模板

    secret-password-01

  5. 创建执行。

    选择已经创建完成的模板,单击创建执行 > 下一步:设置参数

    secret-password-02

  6. 输入参数。

    1. 选择相应的regionId与实例。

    2. 在输入密码框后面选择参数仓库功能,并单击其功能按钮。

      secret-parameter-04

    3. 在选择参数时,选择加密参数这一功能,搜索并选择已经创建完成的加密参数,单击确定。

    secret-parameter-05

  7. 在参数输入完成后,就可以去执行模板了,单击下一步:确定 > 创建,等待模板执行成功。

  8. 验证模板中的使用加密参数是否生效。

    登录实例,当到输入实例密码的步骤时,输入使用加密参数设置的密码,此时发现可以直接连接进入实例中。如下所示:

    secret-password-03

附录一:修改实例密码模板

FormatVersion: OOS-2019-06-01
Description:
  en: Bulky modify the password of an ECS instance(Resetting the password will restart the ECS instance you selected).
  zh-cn: 批量修改ECS实例的密码(重置密码会重启您选定的ECS实例).
Parameters:
  regionId:
    Type: String
    Description:
      en: The id of region.
      zh-cn: 地域ID。
    AssociationProperty: RegionId
    Default: '{{ ACS::RegionId }}'
  targets:
    Type: Json
    AssociationProperty: Targets
    AssociationPropertyMetadata:
      ResourceType: 'ALIYUN::ECS::Instance'
      RegionId: regionId
  password:
    Description:
      en: The password of the ECS instance.
      zh-cn: ECS实例的密码。支持长度为8至30个字符,必须同时包含大小写英文字母、数字和特殊符号中的三类字符
    Type: String
  rateControl:
    Description:
      en: Concurrency ratio of task execution.
      zh-cn: 任务执行的并发比率。
    Type: Json
    AssociationProperty: RateControl
    Default:
      Mode: Concurrency
      MaxErrors: 0
      Concurrency: 10
  OOSAssumeRole:
    Description:
      en: The RAM role to be assumed by OOS.
      zh-cn: OOS扮演的RAM角色。
    Type: String
    Default: OOSServiceRole
RamRole: '{{ OOSAssumeRole }}'
Tasks:
  - Name: getInstance
    Description:
      en: Views the ECS instances.
      zh-cn: 获取ECS实例。
    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:
      en: Modify the password of an ECS instance.
      zh-cn: 修改实例密码。
    Properties:
      regionId: '{{ regionId }}'
      instanceId: '{{ ACS::TaskLoopItem }}'
      password: '{{ password }}'
    Loop:
      RateControl: '{{ rateControl }}'
      Items: '{{ getInstance.instanceIds }}'
    Outputs:
      instanceId:
        Type: String
        ValueSelector: instanceId