创建签名密钥 - CreateSignatureKeyV2
功能介绍
为了保护API的安全性,建议租户为API的访问提供一套保护机制,即租户开放的API,需要对请求来源进行认证,不符合认证的请求直接拒绝访问。
其中,签名密钥就是API安全保护机制的一种。
租户创建一个签名密钥,并将签名密钥与API进行绑定,则API网关在请求这个API时,就会使用绑定的签名密钥对请求参数进行数据加密,生成签名。当租户的后端服务收到请求时,可以校验这个签名,如果签名校验不通过,则该请求不是API网关发出的请求,租户可以拒绝这个请求,从而保证API的安全性,避免API被未知来源的请求攻击。
调用方法
请参见如何调用API。
授权信息
账号具备所有API的调用权限,如果使用账号下的IAM用户调用当前API,该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权,具体权限要求请参见权限和授权项。
 - 如果使用身份策略授权,需具备如下身份策略权限。 
    
授权项
访问级别
资源类型(*为必须)
条件键
别名
依赖的授权项
apig:signatureKey:create
Write
instance *
g:ResourceTag/<tag-key>
- apig:signs:create
 
apig:instance:get
 
URI
POST /v2/{project_id}/apigw/instances/{instance_id}/signs
| 
        参数  | 
      
        是否必选  | 
      
        参数类型  | 
      
        描述  | 
     
|---|---|---|---|
| 
        project_id  | 
      
        是  | 
      
        String  | 
      
        项目ID,获取方式请参见获取项目ID。  | 
     
| 
        instance_id  | 
      
        是  | 
      
        String  | 
      
        实例ID,在API网关控制台的“实例信息”中获取。  | 
     
请求参数
| 
        参数  | 
      
        是否必选  | 
      
        参数类型  | 
      
        描述  | 
     
|---|---|---|---|
| 
        X-Auth-Token  | 
      
        是  | 
      
        String  | 
      
        用户Token。通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。  | 
     
| 
        参数  | 
      
        是否必选  | 
      
        参数类型  | 
      
        描述  | 
     
|---|---|---|---|
| 
        name  | 
      
        是  | 
      
        String  | 
      
        签名密钥的名称。支持汉字,英文,数字,下划线,且只能以英文和汉字开头。 
         说明: 
         
       
         中文字符必须为UTF-8或者unicode编码。
         
       最小长度:3 最大长度:64  | 
     
| 
        sign_type  | 
      
        否  | 
      
        String  | 
      
        签名密钥类型: 
 basic类型需要实例升级到对应版本,如果不存在可联系技术工程师升级。 public_key类型开启实例配置public_key才可使用,实例特性配置详情请参考“附录 > 实例支持的APIG特性”,如确认实例不存在public_key配置可联系技术工程师开启。 aes类型需要实例升级到对应版本,如果不存在可联系技术工程师升级。  | 
     
| 
        sign_key  | 
      
        否  | 
      
        String  | 
      
        签名密钥的key。 
  | 
     
| 
        sign_secret  | 
      
        否  | 
      
        String  | 
      
        签名密钥的密钥。 
  | 
     
| 
        sign_algorithm  | 
      
        否  | 
      
        String  | 
      
        签名算法。默认值为空,仅aes类型签名密钥支持选择签名算法,其他类型签名密钥不支持签名算法。  | 
     
响应参数
状态码:201
| 
        参数  | 
      
        参数类型  | 
      
        描述  | 
     
|---|---|---|
| 
        name  | 
      
        String  | 
      
        签名密钥的名称。支持汉字,英文,数字,下划线,且只能以英文和汉字开头。 
         说明: 
         
       
         中文字符必须为UTF-8或者unicode编码。
         
       最小长度:3 最大长度:64  | 
     
| 
        sign_type  | 
      
        String  | 
      
        签名密钥类型: 
 basic类型需要实例升级到对应版本,如果不存在可联系技术工程师升级。 public_key类型开启实例配置public_key才可使用,实例特性配置详情请参考“附录 > 实例支持的APIG特性”,如确认实例不存在public_key配置可联系技术工程师开启。 aes类型需要实例升级到对应版本,如果不存在可联系技术工程师升级。  | 
     
| 
        sign_key  | 
      
        String  | 
      
        签名密钥的key。 
  | 
     
| 
        sign_secret  | 
      
        String  | 
      
        签名密钥的密钥。 
  | 
     
| 
        sign_algorithm  | 
      
        String  | 
      
        签名算法。默认值为空,仅aes类型签名密钥支持选择签名算法,其他类型签名密钥不支持签名算法。  | 
     
| 
        update_time  | 
      
        String  | 
      
        更新时间  | 
     
| 
        create_time  | 
      
        String  | 
      
        创建时间  | 
     
| 
        id  | 
      
        String  | 
      
        签名密钥的编号  | 
     
状态码:400
| 
        参数  | 
      
        参数类型  | 
      
        描述  | 
     
|---|---|---|
| 
        error_code  | 
      
        String  | 
      
        错误码  | 
     
| 
        error_msg  | 
      
        String  | 
      
        错误描述  | 
     
状态码:401
| 
        参数  | 
      
        参数类型  | 
      
        描述  | 
     
|---|---|---|
| 
        error_code  | 
      
        String  | 
      
        错误码  | 
     
| 
        error_msg  | 
      
        String  | 
      
        错误描述  | 
     
状态码:403
| 
        参数  | 
      
        参数类型  | 
      
        描述  | 
     
|---|---|---|
| 
        error_code  | 
      
        String  | 
      
        错误码  | 
     
| 
        error_msg  | 
      
        String  | 
      
        错误描述  | 
     
状态码:404
| 
        参数  | 
      
        参数类型  | 
      
        描述  | 
     
|---|---|---|
| 
        error_code  | 
      
        String  | 
      
        错误码  | 
     
| 
        error_msg  | 
      
        String  | 
      
        错误描述  | 
     
状态码:412
| 
        参数  | 
      
        参数类型  | 
      
        描述  | 
     
|---|---|---|
| 
        error_code  | 
      
        String  | 
      
        错误码  | 
     
| 
        error_msg  | 
      
        String  | 
      
        错误描述  | 
     
状态码:500
| 
        参数  | 
      
        参数类型  | 
      
        描述  | 
     
|---|---|---|
| 
        error_code  | 
      
        String  | 
      
        错误码  | 
     
| 
        error_msg  | 
      
        String  | 
      
        错误描述  | 
     
请求示例
创建一个签名密钥并设置key和secret
{
  "name" : "signature_demo",
  "sign_key" : "signkeysignkey",
  "sign_secret" : "sig************ret"
}
 响应示例
状态码:201
Created
{
  "sign_secret" : "sig************ret",
  "update_time" : "2020-08-03T03:39:38.119032888Z",
  "create_time" : "2020-08-03T03:39:38.119032659Z",
  "name" : "signature_demo",
  "id" : "0b0e8f456b8742218af75f945307173c",
  "sign_key" : "signkeysignkey",
  "sign_type" : "hmac"
}
  状态码:400
Bad Request
{
  "error_code" : "APIG.2011",
  "error_msg" : "Invalid parameter value,parameterName:name. Please refer to the support documentation"
}
  状态码:401
Unauthorized
{
  "error_code" : "APIG.1002",
  "error_msg" : "Incorrect token or token resolution failed"
}
  状态码:403
Forbidden
{
  "error_code" : "APIG.1005",
  "error_msg" : "No permissions to request this method"
}
  状态码:404
Not Found
{
  "error_code" : "APIG.3030",
  "error_msg" : "The instance does not exist;id:f0fa1789-3b76-433b-a787-9892951c620ec"
}
  状态码:412
PreconditionFailed
{
  "error_code" : "APIG.3548",
  "error_msg" : "sign_type=public_key not supported by instance 6a29d4e9-69a0-412a-aabe-9898ec0903b0"
}
  状态码:500
Internal Server Error
{
  "error_code" : "APIG.9999",
  "error_msg" : "System error"
}
 状态码
| 
        状态码  | 
      
        描述  | 
     
|---|---|
| 
        201  | 
      
        Created  | 
     
| 
        400  | 
      
        Bad Request  | 
     
| 
        401  | 
      
        Unauthorized  | 
     
| 
        403  | 
      
        Forbidden  | 
     
| 
        404  | 
      
        Not Found  | 
     
| 
        412  | 
      
        PreconditionFailed  | 
     
| 
        500  | 
      
        Internal Server Error  | 
     
错误码
请参见错误码。