tencent cloud

文档反馈

条件键说明及使用示例

最后更新时间:2022-10-09 16:39:53

    在使用访问策略授予权限时,您可以指定策略的 生效条件,例如限制用户访问来源、上传文件的存储类型等。

    本文档为您提供了在存储桶策略中使用对象存储(Cloud Object Storage,COS)条件键的常用示例,您可以在 生效条件 文档中查看 COS 支持的全部条件键和适用请求。

    说明:

    • 当您使用条件键编写策略时,请务必遵循最小权限原则,仅为适用请求(action)添加相应的条件键,避免在指定操作(action)时使用通配符“*”,导致请求失败,关于条件键的介绍,可参见 生效条件 文档。
    • 当您使用访问管理 CAM 控制台创建策略时,请注意语法格式,version、principal、statement、effect、action、resource、condition 语法元素需保持首字母大写或者全小写。

    条件键使用示例

    限制用户访问 IP(qcs:ip)

    条件键 qcs:ip

    使用条件键qcs:ip限制用户访问 IP,适用于所有请求。

    示例:只允许指定 IP 来源的用户访问

    以下策略示例描述为:允许属于主账号 ID 为100000000001(APPID 为1250000000)下的子账号 ID 100000000002,对北京地域的存储桶 examplebucket-bj 和广州地域的存储桶 examplebucket-gz 下的对象 exampleobject,在访问 IP 为10...10/24网段时,拥有上传对象和下载对象的权限。

    {
    "version": "2.0",
    "principal": {
    "qcs": ["qcs::cam::uin/100000000001:uin/100000000002"]
    },
    "statement": [{
    "effect": "allow",
    "action": ["name/cos:PutObject", "name/cos:GetObject"],
    "resource": ["qcs::cos:ap-beijing:uid/1250000000:examplebucket-bj-1250000000/*",
        "qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-gz-1250000000/exampleobject"
    ],
    "condition": {
        "ip_equal": {
            "qcs:ip": "10.*.*.10/24"
        }
    }
    }]
    }
    

    限制 vpcid(vpc:requester_vpc)

    条件键 vpc:requester_vpc

    使用条件键vpc:requester_vpc限制用户访问的 vpcid,关于 vpcid 的更多介绍,请参见 腾讯云产品 私有网络

    示例:限制 vpcid 为 aqp5jrc1

    以下策略示例描述为:允许属于主账号 ID 为100000000001(APPID 为1250000000)下的子账号 ID 100000000002访问存储桶 examplebucket-1250000000,在 vpcid 为 aqp5jrc1 时请求获得授权。

    {
    "statement": [
      {
        "action": [
          "name/cos:*"
        ],
        "condition": {
          "string_equal": {
            "vpc:requester_vpc": [
              "vpc-aqp5jrc1"
            ]
          }
        },
        "effect": "allow",
        "principal": {
          "qcs": [
            "qcs::cam::uin/100000000001:uin/100000000002"
          ]
        },
        "resource": [
          "qcs::cos:ap-beijing:uid/1250000000:examplebucket-1250000000/*"
        ]
      }
    ],
    "version": "2.0"
    }
    

    只允许访问对象的最新版本或者指定版本(cos:versionid)

    请求参数 versionid

    请求参数versionid表示对象的版本号,关于版本控制相关内容可查看 版本控制概述。您可以在下载对象(GetObject)、删除对象(DeleteObject)时使用请求参数versionid指定需要操作的对象版本。

    • 不带versionid请求参数时,请求默认作用于对象的最新版本。
    • versionid请求参数为一个空字符串时,等同于不带versionid请求参数时。
    • versionid请求参数为字符串"null"的情况。对于一个存储桶在开启版本控制之前上传的对象,开启版本控制后,这批对象的版本号统一是字符串"null"

    条件键 cos:versionid

    条件键cos:versionid用于限制请求参数versionid

    示例1:只允许用户获取指定版本号的对象

    假设主账号(uin:100000000001)拥有存储桶 examplebucket-1250000000,需要向其子用户(uin:100000000002)进行授权,仅允许子用户获取指定版本号的对象。

    采用以下存储桶策略后,子用户(uin:100000000002)发起下载对象请求时,只有在携带了 versionid 参数,且 versionid 的值为版本号 “MTg0NDUxNTc1NjIzMTQ1MDAwODg” 时,请求才会成功。

    {
      "version":"2.0",
      "statement":[
          {
              "principal":{
                  "qcs":[
                      "qcs::cam::uin/100000000001:uin/100000000002"
                  ]
              },
              "effect":"allow",
              "action":[
                  "name/cos:GetObject"
              ],
              "condition":{
                  "string_equal":{
                      "cos:versionid":"MTg0NDUxNTc1NjIzMTQ1MDAwODg"
                  }
              },
              "resource":[
                  "qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"
              ]
          }
      ]
    }
    

    添加显式拒绝

    当使用上述策略为子用户授予权限时,由于子用户可能通过其他途径获得没有任何条件的相同权限,范围更大的授权策略生效。例如,若子用户处于某个用户组中,主账户为用户组赋予了 GetObject 权限而没有附加任何条件,以上策略对版本号的限制将不起作用。

    为了应对这种情况,您可以在上述策略的基础上,通过添加显式拒绝的策略(deny)来完成更严格的权限限制。下面这个 deny 策略的含义是,子用户发起下载对象请求时,若没有携带 versionid 参数,或 versionid 的版本号不是 “MTg0NDUxNTc1NjIzMTQ1MDAwODg”,这个请求将被拒绝。由于 deny 的优先级高于其他策略,因此添加显式拒绝可以最高程度的避免权限漏洞。

    {
      "statement":[
          {
              "principal":{
                  "qcs":[
                      "qcs::cam::uin/100000000001:uin/100000000002"
                  ]
              },
              "effect":"allow",
              "action":[
                  "name/cos:GetObject"
              ],
              "condition":{
                  "string_equal":{
                      "cos:versionid":"MTg0NDUxNTc1NjIzMTQ1MDAwODg"
                  }
              },
              "resource":[
                  "qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"
              ]
          },
          {
              "principal":{
                  "qcs":[
                      "qcs::cam::uin/100000000001:uin/100000000002"
                  ]
              },
              "effect":"deny",
              "action":[
                  "name/cos:GetObject"
              ],
              "condition":{
                  "string_not_equal_if_exist":{
                      "cos:versionid":"MTg0NDUxNTc1NjIzMTQ1MDAwODg"
                  }
              },
              "resource":[
                  "qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"
              ]
          }
      ],
      "version":"2.0"
    }
    

    示例2:只允许用户获取最新版本的对象

    假设主账号(uin:100000000001)拥有存储桶 examplebucket-1250000000,需要限制其子用户(uin:100000000002)只能获取最新版本的对象。

    由于在不携带请求参数versionidversionid为空字符串时,GetObject 默认获取最新版本的对象。因此,我们可以在条件中使用 string_equal_if_exsit:

    1. 若不携带 versionid,默认按照 true 处理,命中 allow 条件,请求将被 allow。
    2. 若请求参数 versionid 为空,即“”,同样会命中 allow 策略,只对获取最新版本的对象的请求进行授权。
      "condition": {
       "string_equal_if_exist": {
           "cos:versionid": ""
       }
      }
      

    添加显式拒绝后,完整的存储桶策略如下所示:

    {
       "statement":[
           {
               "principal":{
                   "qcs":[
                       "qcs::cam::uin/100000000001:uin/100000000002"
                   ]
               },
               "effect":"allow",
               "action":[
                   "name/cos:GetObject"
               ],
               "condition":{
                   "string_equal_if_exist":{
                       "cos:versionid":""
                   }
               },
               "resource":[
                   "qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"
               ]
           },
           {
               "principal":{
                   "qcs":[
                       "qcs::cam::uin/100000000001:uin/100000000002"
                   ]
               },
               "effect":"deny",
               "action":[
                   "name/cos:GetObject"
               ],
               "condition":{
                   "string_not_equal":{
                       "cos:versionid":""
                   }
               },
               "resource":[
                   "qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"
               ]
           }
       ],
       "version":"2.0"
    }
    

    示例3:不允许用户删除开启版本控制前上传的对象

    在开启版本控制前,您的存储桶中可能已上传了一部分对象,这些对象的版本号为“null”。有时候,您需要对这些对象开启额外的保护,例如,禁止用户对这些对象进行永久删除操作,也就是拒绝带版本号的删除操作。

    下面这个存储桶策略示例,包含了两个策略:

    1. 授权子用户使用 DeleteObject 请求删除存储桶中的对象。
    2. 对 DeleteObject 请求的生效条件做了限制。当 DeleteObject 请求携带了请求参数 versionid,且 versionid 为"null"时,拒绝这个 DeleteObject 请求。

    由此,若存储桶 examplebucket-1250000000中先上传了对象 A,随后存储桶开启了版本控制,此时对象 A 的版本号为字符串"null"。

    添加了这个存储桶策略后,对象 A 将被保护起来。对于子用户针对对象 A 发起的 DeleteObject 请求,若请求不带版本号,由于开启了版本控制,对象 A 本身不会被永久删除,而只会被打上删除标记;若请求携带了 A 的版本号"null",这个请求将被拒绝,保护对象 A 不被永久删除。

    {
      "statement":[
          {
              "principal":{
                  "qcs":[
                      "qcs::cam::uin/100000000001:uin/100000000002"
                  ]
              },
              "effect":"allow",
              "action":[
                  "name/cos:DeleteObject"
              ],
              "resource":[
                  "qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"
              ]
          },
          {
              "principal":{
                  "qcs":[
                      "qcs::cam::uin/100000000001:uin/100000000002"
                  ]
              },
              "effect":"deny",
              "action":[
                  "name/cos:DeleteObject"
              ],
              "condition":{
                  "string_equal":{
                      "cos:versionid":"null"
                  }
              },
              "resource":[
                  "qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"
              ]
          }
      ],
      "version":"2.0"
    }
    

    限制上传文件的大小(cos:content-length)

    请求头部 Content-Length

    RFC 2616中定义的 HTTP 请求内容长度(字节),在 PUT 和 POST 请求中经常使用。详情见请求头部列表

    条件键 cos:content-length

    上传对象时,可以通过条件键cos:content-length限制请求头部Content-Length,进而限制上传对象的文件大小,以方便您更加灵活管理存储空间,避免上传过大、过小文件浪费存储空间与网络带宽。

    在下面两个示例中,假设主账号(uin:100000000001)拥有存储桶 examplebucket-1250000000,可以通过cos:content-length条件键限制子用户(uin:100000000002)上传请求的 Content-Length 头的大小。

    示例1: 限制请求头部 Content-Length 的最大值

    限制 PutObject 和 PostObject 上传请求必须携带 Content-Length 头部,且这个头部的值不得大于10。

    {
      "version":"2.0",
      "statement":[
          {
              "principal":{
                  "qcs":[
                      "qcs::cam::uin/100000000001:uin/100000000002"
                  ]
              },
              "effect":"allow",
              "action":[
                  "name/cos:PutObject",
                  "name/cos:PostObject"
              ],
              "resource":[
                  "qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"
              ],
              "condition":{
                  "numeric_less_than_equal":{
                      "cos:content-length":10
                  }
              }
          },
          {
              "principal":{
                  "qcs":[
                      "qcs::cam::uin/100000000001:uin/100000000002"
                  ]
              },
              "effect":"deny",
              "action":[
                  "name/cos:PutObject",
                  "name/cos:PostObject"
              ],
              "resource":[
                  "qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"
              ],
              "condition":{
                  "numeric_greater_than_if_exist":{
                      "cos:content-length":10
                  }
              }
          }
      ]
    }
    

    示例2: 限制请求头部 Content-Length 的最小值

    限制 PutObject 和 PostObject 上传请求的必须携带 Content-Length 头部,且 Content-Length 的值不得小于2。

    {
      "version":"2.0",
      "statement":[
          {
              "principal":{
                  "qcs":[
                      "qcs::cam::uin/100000000001:uin/100000000002"
                  ]
              },
              "effect":"allow",
              "action":[
                  "name/cos:PutObject",
                  "name/cos:PostObject"
              ],
              "resource":[
                  "qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"
              ],
              "condition":{
                  "numeric_greater_than_equal":{
                      "cos:content-length":2
                  }
              }
          },
          {
              "principal":{
                  "qcs":[
                      "qcs::cam::uin/100000000001:uin/100000000002"
                  ]
              },
              "effect":"deny",
              "action":[
                  "name/cos:PutObject",
                  "name/cos:PostObject"
              ],
              "resource":[
                  "qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"
              ],
              "condition":{
                  "numeric_less_than_if_exist":{
                      "cos:content-length":2
                  }
              }
          }
      ]
    }
    

    限制上传文件的类型(cos:content-type)

    请求头部 Content-Type

    RFC 2616中定义的 HTTP 请求内容类型(MIME),例如application/xmlimage/jpeg,详情请参见 请求头部列表

    条件键 cos:content-type

    使用条件键cos:content-type可以对请求的Content-Type头部进行限制。

    示例1: 限定上传对象(PutObject)的 Content-Type 必须为 “image/jpeg”

    假设主账号(uin:100000000001)拥有存储桶 examplebucket-1250000000,可以通过cos:content-type条件键限制子用户(uin:100000000002)上传请求的 Content-Type 头的具体内容。

    下面这个存储桶策略的含义是:限制使用 PutObject 上传对象必须携带 Content-Type 头部,且 Content-Type 的值为“image/jpeg”。

    需要注意的是,string_equal 要求请求必须携带 Content-Type 头部,且 Content-Type 的值必须与规定值完全一致。在实际请求中,您需要明确指定请求的 Content-Type 头部。否则,当您的请求不携带 Content-Type 头部时,请求将会失败;此外,当您使用某些工具发起请求,并未明确指定 Content-Type 时,工具可能会为您自动添加不符合预期的 Content-Type 头部,也可能导致请求失败。

    {
      "version":"2.0",
      "statement":[
          {
              "principal":{
                  "qcs":[
                      "qcs::cam::uin/100000000001:uin/100000000002"
                  ]
              },
              "effect":"allow",
              "action":[
                  "name/cos:PutObject"
              ],
              "resource":[
                  "qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"
              ],
              "condition":{
                  "string_equal":{
                      "cos:content-type":"image/jpeg"
                  }
              }
          },
          {
              "principal":{
                  "qcs":[
                      "qcs::cam::uin/100000000001:uin/100000000002"
                  ]
              },
              "effect":"deny",
              "action":[
                  "name/cos:PutObject"
              ],
              "resource":[
                  "qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"
              ],
              "condition":{
                  "string_not_equal_if_exist":{
                      "cos:content-type":"image/jpeg"
                  }
              }
          }
      ]
    }
    

    限制下载请求返回的文件类型(cos:response-content-type)

    请求参数 response-content-type

    GetObject 接口支持加入请求参数response-content-type,用于设置响应中 Content-Type 头部的值。

    条件键 cos:response-content-type

    使用条件键cos:response-content-type,您可以对请求的是否必须携带请求参数response-content-type参数值做限制。

    示例1:限制 Get Object 的请求参数 response-content-type 必须为 “image/jpeg”

    假设主账号(uin:100000000001)拥有存储桶 examplebucket-1250000000,以下存储桶策略的含义是,限制子用户(uin:100000000002)的 Get Object 请求必须携带请求参数 response-content-type,且请求参数值必须为“image/jpeg”,由于response-content-type是请求参数,发起请求时需要经过 urlencode,即response-content-type=image%2Fjpeg,所以在设置 Policy 时,“image/jpeg”也需要经过 urlencode 填写"image%2Fjpeg"。

    {
      "version":"2.0",
      "statement":[
          {
              "principal":{
                  "qcs":[
                      "qcs::cam::uin/100000000001:uin/100000000002"
                  ]
              },
              "effect":"allow",
              "action":[
                  "name/cos:GetObject"
              ],
              "resource":[
                  "qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"
              ],
              "condition":{
                  "string_equal":{
                      "cos:response-content-type":"image%2Fjpeg"
                  }
              }
          },
          {
              "principal":{
                  "qcs":[
                      "qcs::cam::uin/100000000001:uin/100000000002"
                  ]
              },
              "effect":"deny",
              "action":[
                  "name/cos:GetObject"
              ],
              "resource":[
                  "qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"
              ],
              "condition":{
                  "string_not_equal_if_exist":{
                      "cos:response-content-type":"image%2Fjpeg"
                  }
              }
          }
      ]
    }
    

    只允许使用了 HTTPS 协议的请求通过(cos:secure-transport)

    条件键 cos:secure-transport

    您可以使用条件键cos:secure-transport限制请求必须使用 HTTPS 协议

    示例1:下载请求需要使用 HTTPS 协议

    假设主账号(uin:100000000001)拥有存储桶 examplebucket-1250000000,以下存储桶策略的含义表示仅对由子用户(uin:100000000002)使用了 HTTPS 协议的 GetObject请求进行授权。

    {
      "version":"2.0",
      "statement":[
          {
              "principal":{
                  "qcs":[
                      "qcs::cam::uin/100000000001:uin/100000000002"
                  ]
              },
              "effect":"allow",
              "action":[
                  "name/cos:GetObject"
              ],
              "resource":[
                  "qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"
              ],
              "condition":{
                  "bool_equal":{
                      "cos:secure-transport":"true"
                  }
              }
          }
      ]
    }
    

    示例2:拒绝任何不使用 HTTPS 协议的请求

    假设主账号(uin:100000000001)拥有存储桶 examplebucket-1250000000,以下存储桶策略的含义表示拒绝子用户(uin:100000000002)任何不使用 HTTPS 协议的请求。

    {
      "version":"2.0",
      "statement":[
          {
              "principal":{
                  "qcs":[
                      "qcs::cam::uin/100000000001:uin/100000000002"
                  ]
              },
              "effect":"deny",
              "action":[
                  "*"
              ],
              "resource":[
                  "qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"
              ],
              "condition":{
                  "bool_equal":{
                      "cos:secure-transport":"false"
                  }
              }
          }
      ]
    }
    

    只允许设置指定的存储类型(cos:x-cos-storage-class)

    请求头部 x-cos-storage-class

    用户可以通过请求头部x-cos-storage-class在上传对象时指定存储类型或修改对象的存储类型。

    条件键 cos:x-cos-storage-class

    您可以通过条件键cos:x-cos-storage-class限制请求头部x-cos-storage-class,进而限制可能修改存储类型的请求。

    COS 的存储类型字段包括:STANDARD, STANDARD_IAINTELLIGENT_TIERINGARCHIVEDEEP_ARCHIVE

    示例1:要求 PutObject 时必须将存储类型设置为标准类型

    假设主账号(uin:100000000001)拥有存储桶 examplebucket-1250000000,通过存储桶策略策略,限制子账户(uin:100000000002)的 PutObject 请求必须携带 x-cos-storage-class 头部,并且头部值为STANDARD

    {
      "version":"2.0",
      "statement":[
          {
              "principal":{
                  "qcs":[
                      "qcs::cam::uin/100000000001:uin/100000000002"
                  ]
              },
              "effect":"allow",
              "action":[
                  "name/cos:PutObject"
              ],
              "resource":[
                  "qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"
              ],
              "condition":{
                  "string_equal":{
                      "cos:x-cos-storage-class":"STANDARD"
                  }
              }
          },
          {
              "principal":{
                  "qcs":[
                      "qcs::cam::uin/100000000001:uin/100000000002"
                  ]
              },
              "effect":"deny",
              "action":[
                  "name/cos:PutObject"
              ],
              "resource":[
                  "qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"
              ],
              "condition":{
                  "string_not_equal_if_exist":{
                      "cos:x-cos-storage-class":"STANDARD"
                  }
              }
          }
      ]
    }
    

    只允许设置指定的存储桶/对象 ACL(cos:x-cos-acl)

    请求头部 x-cos-acl

    使用请求头部x-cos-acl,您可以在上传对象、创建存储桶时指定访问控制列表(ACL),或修改对象、存储桶 ACL;关于 ACL 的相关介绍可参见 ACL概述

    • 存储桶的预设 ACL:privatepublic-readpublic-read-writeauthenticated-read
    • 对象的预设 ACL:defaultprivatepublic-readauthenticated-readbucket-owner-readbucket-owner-full-control

    条件键 cos:x-cos-acl

    您可以通过条件键cos:x-cos-acl限制请求的头部x-cos-acl,进而限制可能修改对象或存储桶 ACL 的请求。

    示例1:PutObject 时必须同时将对象的 ACL 设置为私有的

    假设主账号(uin:100000000001)拥有存储桶 examplebucket-1250000000,需要限制子用户(uin:100000000002)只能上传私有对象。以下策略要求发起 PutObject 请求必须携带 x-cos-acl 头部,并且头部值为private

    {
      "version":"2.0",
      "statement":[
          {
              "principal":{
                  "qcs":[
                      "qcs::cam::uin/100000000001:uin/100000000002"
                  ]
              },
              "effect":"allow",
              "action":[
                  "name/cos:PutObject"
              ],
              "resource":[
                  "qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"
              ],
              "condition":{
                  "string_equal":{
                      "cos:x-cos-acl":"private"
                  }
              }
          },
          {
              "principal":{
                  "qcs":[
                      "qcs::cam::uin/100000000001:uin/100000000002"
                  ]
              },
              "effect":"deny",
              "action":[
                  "name/cos:PutObject"
              ],
              "resource":[
                  "qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"
              ],
              "condition":{
                  "string_not_equal_if_exist":{
                      "cos:x-cos-acl":"private"
                  }
              }
          }
      ]
    }
    

    只允许列出指定目录下的对象(cos:prefix)

    条件键 cos:prefix

    您可以通过条件键cos:prefix限制请求参数 prefix。

    注意:

    prefix 的值若为特殊字符(中文、/等),写入存储桶策略前需要先经过 urlencode。

    示例1:只允许列出存储桶指定目录下的对象

    假设主账号(uin:100000000001)拥有存储桶 examplebucket-1250000000,需要限制子用户(uin:100000000002)只可列出存储桶 folder1 目录下的对象。以下存储桶策略规定,子用户发起 GetBucket 请求必须携带 prefix 参数,且值为“folder1”。

    {
     "statement":[
         {
             "principal":{
                 "qcs":[
                     "qcs::cam::uin/100000000001:uin/100000000002"
                 ]
             },
             "effect":"allow",
             "action":[
                 "name/cos:GetBucket"
             ],
             "resource":[
                 "qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"
             ],
             "condition":{
                 "string_equal":{
                     "cos:prefix":"folder1"
                 }
             }
         },
         {
             "principal":{
                 "qcs":[
                     "qcs::cam::uin/100000000001:uin/100000000002"
                 ]
             },
             "effect":"deny",
             "action":[
                 "name/cos:GetBucket"
             ],
             "resource":[
                 "qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"
             ],
             "condition":{
                 "string_equal_if_exist":{
                     "cos:prefix":"folder1"
                 }
             }
         }
     ],
     "version":"2.0"
    }
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持