
# 镜像签名
#### 操作场景
容器镜像服务企业版支持使用密码安全中心（DEW）中创建的密钥对镜像进行签名，保障镜像分发部署过程中的一致性，避免中间人攻击和非法镜像更新及运行。支持命名空间级别的自动镜像签名，容器镜像上传后都会根据签名规则自动签名。在使用镜像签名功能时，请先在密码安全中心（DEW）中创建非对称密钥，然后创建签名规则，设置参数。之后根据规则设置的触发模式完成手动或者自动签名。
#### 约束与限制
- 镜像验签功能仅支持V1.23及以上集群版本
- 当前支持密钥算法类型见[表1]
- 单个注册表最多同时支持100000 tag，单个注册表的签名速度为1分钟300个tag本；验签插件安装后，验签速度为1分钟300个镜像版本。
 
#### 前提条件
- 已[购买企业版实例](https://support.huaweicloud.com/usermanual2-swr/swr_02_0408.html)
- 已[购买CCE集群](https://support.huaweicloud.com/usermanual-cce/cce_10_0028.html)
 
 #### 创建非对称密钥
1. 登录[DEW控制台](https://console.huaweicloud.com/dew/?locale=zh-cn)。
2. 在左侧导航栏选择"密钥管理"，单击右上角的"创建密钥"。
3. 在"创建密钥"对话框中配置参数，然后单击"确定"。 
   镜像签名功能需要非对称密钥算法的支持，创建密钥时，密钥算法需选择ECC或SM2类型，*密钥用途选择SIGN_VERIFY* ，详情请见[表1]。其他参数根据需要进行配置。详细配置可参见[创建密钥](https://support.huaweicloud.com/usermanual-dew/dew_01_0178.html)。
   ![](https://support.huaweicloud.com/usermanual2-swr/zh-cn_image_0000002401376541.png)
   
    表1容器镜像服务支持的密钥算法类型 
   | **密钥类型** | **算法类型** | **密钥规格**                                                                                                                                                                                                                                                                                                                                                                                                                                         | **说明**               | **用途**         |
   |:---|:---|:---|:---|:---|
   | 非对称密钥    | ECC      | - EC_P256 - ECDSA_SHA_256      - EC_P384 - ECDSA_SHA_384     | 椭圆曲线密码，使用NIST推荐的椭圆曲线 | 数字签名           |
   | 非对称密钥    | SM2      | SM2                                                                                                                                                                                                                                                                                                                                                                                                                                              | 国密SM2非对称密钥           | 小量数据的加解密或数字签名。 |
      
   
   
 
#### 创建签名规则
1. 由于容器镜像服务企业版目前处于公测阶段，如果您的租户登录页面后看不到"企业版"链接，请提交[工单](https://console.huaweicloud.com/ticket/?locale=zh-cn#/ticketindex/createIndex)申请入口。申请成功后，登录容器镜像服务企业版控制台，在页面左上角切换Region到您所在的Region，单击注册表名称进入注册表详情页面。
2. 在左侧导航栏选择" 镜像签名"。
3. 在右上角单击"创建签名规则"。
4. 填写具体规则。 
   表2参数说明 
   | 参数名称  | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | 示例                          |
   |:---|:---|:---|
   | 规则名称  | 镜像签名规则的名称。 由字母、汉字、数字、下划线(_)、中划线、(-)组成，1-256个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | SignatureRule               |
   | 命名空间  | 选择要签名的镜像所在的命名空间。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | library                     |
   | 规则范围  | **镜像** ：镜像名称，默认使用正则表达式。单击![](https://support.huaweicloud.com/usermanual2-swr/zh-cn_image_0000001821225386.png)可手动选择镜像。 正则表达式规则可填写如nginx-\*、{repo1, repo2} 等，其中： - **\***：匹配不包含路径分隔符"/"的任何字段。  - **\*\***：匹配包含路径分隔符"/"的任何字段。  - **?**：匹配任何单个非"/"的字符。  - **{选项1, 选项2, ...}**：同时匹配多个选项。匹配上其中一个即可。   **版本**：镜像的版本，同样使用正则表达式，匹配规则与镜像名称相同。 | nginx-\*：表示匹配"nginx-"开头的镜像。 |
   | 签名方式  | 当前支持使用KMS签名。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | KMS                         |
   | 签名Key | 选择在[创建非对称密钥]中创建的密钥。请注意以下几点： - *非支持算法的无法选择；*  - *密钥用途非SIGN_VERIFY的无法选择；*  - *密钥状态非"启用"的无法选择*。                                                                                                                                                                                                                                                                                               | key1                        |
   | 触发模式  | - 手动：手动触发，规则创建完成后需要您手动单击执行。  - 事件触发 + 手动：事件触发指当有新镜像上传到仓库且符合匹配规则时触发镜像签名。                                                                                                                                                                                                                                                                                                                                                                                                                                               | 事件触发 + 手动                   |
   | 规则描述  | 规则的描述信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | -                           |
      
   图1创建签名规则   
   ![](https://support.huaweicloud.com/usermanual2-swr/zh-cn_image_0000001867825273.png)
   
   
5. 单击"确定"完成规则创建。
 
#### 签名功能生效验证
由于容器镜像服务企业版目前处于公测阶段，如果您的租户登录页面后看不到"企业版"链接，请提交[工单](https://console.huaweicloud.com/ticket/?locale=zh-cn#/ticketindex/createIndex)申请入口。申请成功后，登录容器镜像服务企业版控制台，在页面左上角切换Region到您所在的Region，单击注册表名称进入注册表详情页面。单击"镜像签名"创建签名规则并执行。执行成功之后进入"仓库"，查看镜像签名选择的镜像可以发现"镜像制品"下面的存在附件，该附件即该镜像的签名文件。
![](https://support.huaweicloud.com/usermanual2-swr/public_sys-resources/caution_3.0-zh-cn.png)
开启了阻止潜在漏洞镜像特性后，含有漏洞且符合下载阻断的条件的镜像制品不支持镜像签名。关于阻止潜在漏洞镜像以及下载阻断条件请参见[表1](https://support.huaweicloud.com/usermanual2-swr/swr_02_0430.html#swr_02_0430__table5373183610219)中的**阻止潜在漏洞镜像**一行
