云服务器内容精选

  • 使用场景 以最基础的数据库用户名及密码管理为示例,为您介绍凭据管理服务基本的使用场景。 使用场景:管理员角色负责存入、更新凭据值的操作,使用者通过第三方应用服务获取所需的凭据值,具体使用流程如图1所示。 图1 凭据登录流程 流程说明如下: 您首先需要在凭据管理服务中使用控制台或者API创建一个凭据,用来存储数据库的相关信息(例如:数据库地址、端口、密码)。 当您使用应用程序访问数据库时,凭据管理服务会去查询管理员通过步骤1所创建的凭据内存储的内容。 凭据管理服务检索并解密凭据密文,将凭据中保存的信息通过凭据管理API安全地返回到应用程序中。 应用程序获取到解密后的凭据明文信息,使用这些安全的信息访问数据库。 父主题: 凭据管理
  • 轮转凭据使用流程 流程说明: 创建一个轮转凭据。 设置凭据名称、标签等。 配置自动轮转策略。 应用系统在使用过程中需要访问数据库时,可以向 CS MS服务请求访问凭据,获取凭据值,调用API接口详情请参见查询凭据版本和凭据值。 应用系统通过访问返回的凭据值解析明文数据,获取账号和密码后,可以访问该用户对应的目标数据库。 开启自动轮转后,数据库实例所托管的密码将定时轮转更新,请确认使用该数据库实例的应用端已完成代码适配,可在数据库连接建立时,动态获取最新凭据。 不要轻易缓存凭据中的任何信息,避免账号密码轮转后失效,导致数据库连接失败。
  • 组件说明 表1 dew-provider组件 容器组件 说明 资源类型 dew-provider dew-provider负责与凭据管理服务交互,从凭据管理服务中获取指定的凭据,并挂载到业务Pod内。 DaemonSet secrets-store-csi-driver secrets-store-csi-driver负责维护两个CRD资源,即SecretProviderClass(以下简称为SPC)和SecretProviderClassPodStatus(以下简称为spcPodStatus),其中SPC用于描述用户感兴趣的凭据信息(比如指定凭据的版本、凭据的名称等),由用户创建,并在业务Pod中进行引用;spcPodStatus用于跟踪Pod与凭据的绑定关系,由csi-driver自动创建,用户无需关心。一个Pod对应一个spcPodStatus,当Pod正常启动后,会生成一个与之对应的spcPodStatus;当Pod生命周期结束时,相应的spcPodStatus也会被删除。 DaemonSet
  • 使用控制台安装插件 在CCE服务控制台,单击集群名称进入对应集群,单击左侧导航栏的“插件中心”,在右侧找到dew-provider插件,单击“安装”。 在安装插件页面,在参数配置栏进行参数配置。参数配置说明如表 参数配置表所示。 表2 参数配置表 参数 参数说明 rotation_poll_interval 轮转时间间隔。单位:分钟,即m(注意不是min)。 轮转时间间隔表示向云凭据管理服务发起请求并获取最新的凭据的周期,合理的时间间隔范围为[1m, 1440m],默认值为2m。 单击“安装”。待插件安装完成后,选择对应的集群,然后单击左侧导航栏的“插件中心”,可在“已安装插件”页签中查看相应的插件。 插件成功使用需使用已在 数据加密 服务中创建好的凭据,否则挂载失败会导致Pod无法运行。具体创建凭据操作请参见创建通用凭据。 插件安装完成后即可进行使用,具体操作步骤参见CCE密钥管理插件使用说明。
  • 使用凭据登录数据库 下文为您介绍如何创建凭据,并且通过API调用凭据来登录到您的数据库。 您首先需要确保您的账号拥有KMS Administrator或者KMS CMKFullAccess权限,详情见DEW权限管理。 图1 凭据登录流程 流程说明如下: 您首先需要在凭据管理服务中使用控制台或者API创建一个凭据,用来存储数据库的相关信息(例如:数据库地址、端口、密码)。 当您使用应用程序访问数据库时,凭据管理服务会去查询步骤1所创建的凭据存储的内容。 凭据管理服务检索并解密凭据密文,将凭据中保存的信息通过凭据管理API安全地返回到应用程序中。 应用程序获取到解密后的凭据明文信息,使用这些安全的信息访问数据库。
  • 响应示例 状态码: 200 OK { "total" : 2, "size" : 2, "app_codes" : [ { "app_code" : "GjOD3g80AABuuFeEJpVQADBlAjBh3UzC7W+gr4VJBB5BtJ4fdVOQoSvoji3gFxUDb5pWBz9wUcw9+8/bFZ1B/4pq29wCMQC0pQWX6zTndljDEl99As1pw+WntAU9xcq+ffagoH6zDpKUvdxV6Ezj8LcCcPZN6BU=", "app_id" : "9ed8b7fe84224de681e7d7a5587e76dc", "id" : "32dc8ca22d1b4b9cb94022186880576b", "create_time" : "2020-07-24T02:37:24Z" }, { "app_code" : "fdc8d90a30174460a91ddacfa54d6f04c92e523a85cc4a1894f87cb13b6f572a", "app_id" : "9ed8b7fe84224de681e7d7a5587e76dc", "id" : "b3d34f746d0847fb95138670e10207ed", "create_time" : "2020-07-24T02:31:45Z" } ] } 状态码: 400 Bad Request { "error_code" : "APIG.2012", "error_msg" : "Invalid parameter value,parameterName:app_id. 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.3004", "error_msg" : "App 9ed8b7fe84224de681e7d7a5587e76dc does not exist" } 状态码: 500 Internal Server Error { "error_code" : "APIG.9999", "error_msg" : "System error" }
  • URI GET /v2/{project_id}/apigw/instances/{instance_id}/apps/{app_id}/app-codes 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目ID,获取方式请参见获取项目ID。 instance_id 是 String 实例ID,在API网关控制台的“实例信息”中获取。 app_id 是 String 应用编号 表2 Query参数 参数 是否必选 参数类型 描述 offset 否 Long 偏移量,表示从此偏移量开始查询,偏移量小于0时,自动转换为0 缺省值:0 limit 否 Integer 每页显示的条目数量,条目数量小于等于0时,自动转换为20,条目数量大于500时,自动转换为500 最小值:1 最大值:500 缺省值:20
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 size Integer 本次返回的列表长度 total Long 满足条件的记录数 app_codes Array of AppCodeBaseInfo objects App Code列表 表5 AppCodeBaseInfo 参数 参数类型 描述 app_code String App Code值 支持英文、数字,+_!@#$%-/=,且只能以英文、数字和+、/开头,64-180个字符。 id String 编号 app_id String 应用编号 create_time String 创建时间 状态码: 400 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 401 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 403 表8 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 404 表9 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 500 表10 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述
  • 响应示例 状态码: 200 OK { "app_id" : "9ed8b7fe84224de681e7d7a5587e76dc", "app_acl_type" : "PERMIT", "app_acl_values" : [ "192.168.0.1", "192.168.0.5-192.168.0.10", "192.168.0.100/28" ] } 状态码: 400 Bad Request { "error_code" : "APIG.2012", "error_msg" : "Invalid parameter value,parameterName:app_id. 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.3004", "error_msg" : "App 9ed8b7fe84224de681e7d7a5587e76dc does not exist" } 状态码: 500 Internal Server Error { "error_code" : "APIG.9999", "error_msg" : "System error" }
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 app_id String APP编号 app_acl_type String 类型 PERMIT (白名单类型) DENY (黑名单类型) app_acl_values Array of strings ACL策略值,支持IP、IP范围和CIDR方式。IP范围以英文中划线分隔。 状态码: 400 表4 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 401 表5 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 403 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 404 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 500 表8 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述
  • URI GET /v2/{project_id}/apigw/instances/{instance_id}/apps/{app_id}/app-acl 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目ID,获取方式请参见获取项目ID。 instance_id 是 String 实例ID,在API网关控制台的“实例信息”中获取。 app_id 是 String 应用编号
  • 已申请权限,但是仍然没有权限操作 检查 IAM 和ACMS是否属于应用平台的同一个站点,需要在哪个站点操作ACMS,就通过该站点的应用平台进入IAM申请权限。 如果站点一致,则检查ACMS上的服务和IAM里有权限的服务是否一致。当前服务下,必须有服务运维岗位权限或运维管理员权限。 如果上述检查正确,但仍然没有权限,那么重新登录,再回到ACMS,查看是否有权限。 如果重新登录后依然没有权限,在ACMS中,按F12,打开工作台,刷新页面,找到findUserPolicies,在响应中搜索是否存在SecurityTokenService_SDM。 如果不存在,就是没有申请权限,如果缺少SecurityTokenService_SDM,就需要申请服务的服务运维岗位权限或运维管理员权限 如果存在,但页面上依然报错,请联系支撑人员定位,将站点名称、定位过程、findUserPolicies中的响应内容,提供给支撑人员。 父主题: 运行时引擎访问凭据管理服务
  • 运行时引擎访问凭据管理服务功能介绍 访问凭据管理服务(Access Credential Management Service,简称ACMS,也称为Security Token Service,简称STS)为云服务业务提供了以下两个功能: 微服务之间请求认证 ACMS为每个接入的微服务,颁发了用于通信中进行认证的STS认证凭据,两个微服务之间通信时,可以使用该认证凭据,进行STS认证。 为了让微服务可以安全地获取到STS认证凭据,STS给每个接入的微服务颁发了一张身份证书,该证书中包含了微服务的名称等信息。该证书在微服务部署时,安装到微服务所在的虚拟机或容器里。微服务使用该证书,就可以到STS-Server上获取认证凭据。 两个微服务之间通信时,被调用方(Provider)需要在ACMS管理台上给调用方(Consumer)配置访问权限(Access Control List,简称ACL),开通后,Consumer就可以使用STS下发的认证凭据,用于消息的签名和加密。 敏感配置的托管和分发功能 ACMS为每个接入的微服务都分配了一个用于加密敏感数据的密钥(KEK),对服务也分配了加密敏感数据的密钥(ServiceKEK)。同一个服务下的所有微服务,ServiceKEK是相同的。 利用这两个密钥,微服务可以将一些敏感配置托管到STS,STS会使用KEK或ServiceKEK对数据进行加密,在微服务部署时,由部署平台将敏感数据密文下发到微服务部署的环境上。 微服务启动时,利用微服务身份证书,可以同时获取KEK和ServiceKEK,从而把敏感数据明文解密出来。 父主题: 配置访问凭据管理服务
  • 访问凭据管理服务概述 访问凭据管理服务(Access Credential Management Service,简称ACMS,也称为Security Token Service,简称STS)为云服务业务提供了以下两个功能: 微服务之间请求认证 ACMS为每个接入的微服务,颁发了用于通信中进行认证的STS认证凭据,两个微服务之间通信时,可以使用该认证凭据,进行STS认证。 为了让微服务可以安全地获取到STS认证凭据,STS给每个接入的微服务颁发了一张身份证书,该证书中包含了微服务的名称等信息。该证书在微服务部署时,安装到微服务所在的虚拟机或容器里。微服务使用该证书,就可以到STS-Server上获取认证凭据。 两个微服务之间通信时,被调用方(Provider)需要在ACMS管理台上给调用方(Consumer)配置访问权限(Access Control List,简称ACL),开通后,Consumer就可以使用STS下发的认证凭据,用于消息的签名和加密。 敏感配置的托管和分发功能 ACMS为每个接入的微服务都分配了一个用于加密敏感数据的密钥(KEK),对服务也分配了加密敏感数据的密钥(ServiceKEK)。同一个服务下的所有微服务,ServiceKEK是相同的。 利用这两个密钥,微服务可以将一些敏感配置托管到STS,STS会使用KEK或ServiceKEK对数据进行加密,在微服务部署时,由部署平台将敏感数据密文下发到微服务部署的环境上。 微服务启动时,利用微服务身份证书,可以同时获取KEK和ServiceKEK,从而把敏感数据明文解密出来。 父主题: 访问凭据管理服务
  • 使用AppCode进行API请求的简易认证 在创建API时,选择“APP认证”并且开启“支持简易认证”。 如果您修改已有API为简易认证,需要在修改完成后,将API重新发布,使简易认证模式生效。 将支持简易认证的API绑定到已创建的凭据。 发送请求时,增加请求头部参数“X-Apig-AppCode”,省略请求签名相关信息。 以Curl方式为例,增加头部参数名称:X-Apig-AppCode,参数值填已生成的AppCode。 curl -X GET "https://api.exampledemo.com/testapi" -H "content-type: application/json" -H "host: api.exampledemo.com" -H "X-Apig-AppCode: xhrJVJKABSOxc7d***********FZL4gSHEXkCMQC"