
# 创建命令控制策略
#### 操作场景
命令控制策略用于控制用户在Linux主机运维过程中，对命令的执行权限，可实现命令操作的细粒度控制，有效防止用户执行高危命令，提升运维安全。
针对SSH和Telnet协议类型的Linux主机，根据管理员配置的策略限制，Guacd代理对用户运维过程中执行的命令进行审计和过滤，并返回审计的命令、过滤结果和命令返回的内容，用于会话操作记录、动态授权、断开连接等动作。
命令控制策略支持以下功能项：
- 有效期：设置策略生效的日期范围，即策略的生效时间和失效时间。若不设置，则永久有效。
- 时间限制：设置策略生效或失效的星期和时刻。
- 执行动作：设置策略控制用户的执行动作。
  - 断开连接：触发该策略规则后，拒绝执行该命令，断开会话连接，界面提示"本次连接已被管理员强制断开！"。
  
  - 拒绝执行：触发该策略规则后，拒绝执行该命令，界面提示"命令"xxx"已被拦截"。
  
  - 动态授权：触发该策略规则后，拒绝执行该命令，界面提示"命令"xxx"已被拦截，请提交命令授权工单申请动态授权"，同时生成命令授权工单。用户需提交工单，并审核通过后，才能继续执行该命令。
  
  - 允许执行：触发该策略规则后，放行命令操作。默认允许执行所有操作。
   
 
#### 约束与限制
- 仅SSH和Telnet协议类型的Linux主机，支持命令控制策略设置操作细粒度控制。
- 命令授权工单优先级高于命令控制策略。
 
#### 注意事项
在策略列表页面，策略排序区分优先级，排序越靠前优先级越高。可选中策略行上下拖动策略，改变策略排序。
#### 前提条件
当前用户所属角色已拥有"命令控制策略"模块的管理权限，如何查看各角色的权限，请参见[角色](https://support.huaweicloud.com/usermanual-cbh/cbh_02_001402.html)。
#### 方式一：创建命令控制策略
1. [登录堡垒机系统](https://support.huaweicloud.com/usermanual-cbh/cbh_02_0003.html)。
2. 在左侧导航栏，选择"策略 \> 命令控制策略 \> 策略列表"，进入命令控制策略列表页面。
3. 单击"新建"，弹出配置窗口。
4. 配置策略基本信息。 
    表1命令控制策略参数说明 
   | 参数   | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
   |:---|:---|
   | 策略名称 | 自定义命令控制策略的名称，系统内"策略名称"不能重复。 名称规则：长度1-64个汉字或字符，允许输入英文字母、数字、或"-"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
   | 执行动作 | 设置策略控制用户的执行动作。 - 断开连接：触发该策略规则后，拒绝执行该命令，断开会话连接，界面提示"本次连接已被管理员强制断开！"。  - 拒绝执行：触发该策略规则后，拒绝执行该命令，界面提示"命令"xxx"已被拦截"。  - 动态授权：触发该策略规则后，拒绝执行该命令，界面提示"命令"xxx"已被拦截，请提交命令授权工单申请动态授权"，同时生成命令授权工单。用户需提交工单，并审核通过后，才能继续执行该命令。  - 允许执行：触发该策略规则后，放行命令操作。默认允许执行所有操作。   |
   | 有效期  | 设置策略生效的日期范围，即策略的生效时间和失效时间。若不设置，则永久有效。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   | 时间限制 | 设置策略生效或失效的星期和时刻。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
      
   
   
5. 单击"下一步"，关联命令或命令集。
   
   - 关联命令 在输入框中输入命令，可输入多条命令。详细设置说明请参见[自定义关联命令格式说明]。
     
   
   - 关联命令集
     - 可同时关联多个命令集，如何创建命令集，请参见[创建和管理命令集](https://support.huaweicloud.com/usermanual-cbh/cbh_02_002403.html)。
       - 选择命令集：在"关联命令集"页签，在"可选择的命令集"框中勾选命令集后，单击![](https://support.huaweicloud.com/usermanual-cbh/zh-cn_image_0000002629012194.png "点击放大")，将其移动到"已选择的命令集"框中。
       
       - 移除命令集：在"关联命令集"页签，在"已选择的命令集"框中勾选命令集后，单击![](https://support.huaweicloud.com/usermanual-cbh/zh-cn_image_0000002659491405.png "点击放大")，将其移动到"可选择的命令集"框中。
        
     
     - 当命令集关联策略后，新加入到命令集中的命令会自动继承命令集的策略权限。
     
     - 若此处未关联命令或命令集，后续可在命令控制策略列表页或详情页进行关联。
      
   
   
   
   
6. 单击"下一步"，关联用户或用户组。
   
   请确保关联的用户或关联的用户组中的用户拥有提交命令授权工单的权限，即用户所属角色已拥有"命令授权工单"模块的管理权限，否则用户登录系统后无法查看命令授权工单模块，则不能提交工单获取资源运维权限。如何查看各角色的权限，请参见[角色](https://support.huaweicloud.com/usermanual-cbh/cbh_02_001402.html)。
   - 可同时关联多个用户或用户组。
     - 选择用户或用户组：在"关联用户"/"关联用户组"页签，在"可选择的用户"/"可选择的用户组"框中勾选用户或用户组后，单击![](https://support.huaweicloud.com/usermanual-cbh/zh-cn_image_0000002624447296.png "点击放大")，将其移动到"已选择的用户"/"已选择的用户组"框中。
     
     - 移除用户或用户组：在"关联用户"/"关联用户组"页签，在"已选择的用户"/"已选择的用户组"框中勾选用户或用户组后，单击![](https://support.huaweicloud.com/usermanual-cbh/zh-cn_image_0000002654766659.png "点击放大")，将其移动到"可选择的用户"/"可选择的用户组"框中。
      
   
   
   
   - 当用户组关联策略后，新用户加入到用户组中会自动继承用户组的策略权限。
   
   - 若此处未关联用户或用户组，后续可在命令控制策略列表页或详情页进行关联。
    
   
   
7. 单击"下一步"，关联资源账户或账户组。
   
   - 可同时关联多个资源账户或账户组。
     - 选择资源账户或账户组：在"关联资源账户"/"关联账户组"页签，在"可选择的资源账户"/"可选择的账户组"框中勾选资源账户或账户组后，单击![](https://support.huaweicloud.com/usermanual-cbh/zh-cn_image_0000002624607192.png "点击放大")，将其移动到"已选择的资源账户"/"已选择的账户组"框中。
     
     - 移除资源账户或账户组：在"关联资源账户"/"关联账户组"页签，在"已选择的资源账户"/"已选择的账户组"框中勾选资源账户或账户组后，单击![](https://support.huaweicloud.com/usermanual-cbh/zh-cn_image_0000002654646607.png "点击放大")，将其移动到"可选择的资源账户"/"可选择的账户组"框中。
      
   
   - 当账户组关联策略后，新资源账户加入到账户组中会自动继承账户组的策略权限。
   
   - 若此处未关联资源账户或账户组，后续可在命令控制策略列表页或详情页进行关联。
   
   
   
   
8. 单击"确定"。 
   返回策略列表页面，可查看新建的命令控制策略。后续，用户在运维过程中，触发策略规则，即会被限制相关操作。
   
   
 
#### 方式二：插入命令控制策略
插入策略为在已创建的策略前新建一个策略，其优先级更高。
1. [登录堡垒机系统](https://support.huaweicloud.com/usermanual-cbh/cbh_02_0003.html)。
2. 在左侧导航栏，选择"策略 \> 命令控制策略 \> 策略列表"，进入命令控制策略列表页面。
3. 在目标策略所在行的"操作"列，单击"插入"。
4. 参考[表1]，配置策略信息后，单击"下一步"。
5. 参考[5]，关联命令或命令集后，单击"下一步"。
6. 参考[6]，关联用户或用户组后，单击"下一步"。
7. 参考[7]，关联资源账户或账户组后，单击"确定"。
   
   在命令控制策略列表页面，可查看插入的策略。
   
   
 
 #### 自定义关联命令格式说明
命令控制策略关联的自定义的命令，关联命令后，在执行相关命令或参数时，触发拦截和允许操作。
自定义关联命令大小写敏感，严格按照设置的关联命令进行审核和过滤，若执行命令与设置命令不一致，则不能触发策略规则。详细设置说明和示例，请参考如下说明：
- 每行输入一条命令，命令中只能包含大小写字母、数字、"-"和"_"。
- 支持单命令格式。 如设置拒绝执行查询命令，即设置关联命令为**ls**，执行单命令操作时触发策略规则。
  
- 支持命令路径格式。 如设置动态授权查询日志，即设置关联命令为**ls /var/log/** ，执行命令参数操作时触发策略规则。此时若执行**ls /var/log**，则无法触发策略拦截规则。
  
- 支持命令带"\*"通配符，"\*"表示任意多个字符。 如设置拒绝执行所有删除命令，即设置关联命令为**rm \*** ，执行命令加任意参数触发策略拦截，如执行**rm -rf。** 此时若执行**rm**命令本身，则不会触发策略拦截规则。
  
- 支持命令带"?"通配符，"?"表示任意单个字符，输入几个"?"就代表几个未知字符。 如设置拒绝执行删除两个字符名称的文件或目录，即设置关联命令为**rm -rf** **??** ，执行命令加任意两个字符触发策略拦截，如执行**rm -rf** **ts** 。此时若执行**rm -rf** **test**，则不会触发策略拦截规则。
  
- 支持命令带"\[\]"通配符，"\[\]"表示框内的任意字符、范围、取反（使用"\|"或"\^"取反）。 如设置动态授权删除带abcd名称的文件或目录，即设置关联命令为**rm -rf** **\[abcd\]** ，执行命令加任意abcd字符触发策略拦截，如执行**rm -rf** **cloud** 。此时若执行**rm -rf** **test** 或**rm -rf ABCD**，则不会触发策略拦截规则。
  
 
