数据加密服务 DEW
数据加密服务 DEW
- 最新动态
- 功能总览
- 产品介绍
- 计费说明
- 快速入门
- 用户指南
- 最佳实践
- API参考
- SDK参考
-
常见问题
-
密钥管理类
- 什么是密钥管理?
- 什么是用户主密钥?
- 什么是默认密钥?
- 自定义密钥与默认密钥有什么区别?
- 什么是数据加密密钥?
- 为什么不能立即删除用户主密钥?
- 哪些云服务使用KMS加密数据?
- 华为云服务如何使用KMS加密数据?
- 信封加密方式有什么优势?
- 在KMS中创建的自定义密钥的个数是否有限制?
- 是否可以从KMS中导出用户主密钥?
- 如果自定义密钥被彻底删除,用户数据是否还可以解密?
- 如何使用在线工具加解密数据?
- 是否可以更新KMS管理的密钥?
- 在什么场景下推荐使用导入的密钥?
- 密钥材料被意外删除时如何处理?
- 默认密钥如何生成?
- 没有权限操作KMS,该如何处理?
- 如何修补OpenSSL以使用-id-aes256-wrap-pad包装非对称密钥?
- KMS支持的密钥算法类型
- 请求KMS异常,错误码401,应该如何处理?
- 调用encrypt-data接口,返回的密文和明文有什么关系?
- KMS如何保护创建的密钥?
- 如何使用非对称密钥对公钥对签名结果进行验签?
- 外部导入的密钥支持轮转吗?
- 密钥管理服务支持离线加解密数据吗?
- 如何将原始EC私钥转换成PKCS8格式的私钥对象?
- 凭据管理类
-
密钥对管理类
- 如何创建密钥对?
- 什么是私有密钥对和账号密钥对?
- 导入通过PuTTYgen工具创建的密钥对失败如何处理?
- 使用IE9浏览器无法导入密钥对如何处理?
- 如何使用私钥登录Linux弹性云服务器?
- 如何通过私钥获取Windows弹性云服务器的登录密码?
- 绑定密钥对失败如何处理?
- 替换密钥对失败如何处理?
- 重置密钥对失败如何处理?
- 解绑密钥对失败如何处理?
- 替换密钥对后,服务器需要重启吗?
- 关闭弹性云服务器的密码登录方式后如何重新开启?
- 解绑密钥对后用户无法登录ECS时如何处理?
- 私钥不慎遗失怎么办?
- 如何转换私钥文件格式?
- 密钥对在创建主机成功之后可以更改吗?
- 密钥对是否支持多用户共享?
- 如何获取密钥对的私钥或公钥文件?
- 账号密钥首次创建、首次升级时系统报错如何处理?
- 私有密钥对升级账号密钥对后,会占用账号密钥对配额吗?
- 用户联邦身份登录时,私有密钥对升级账号密钥对之后,为什么私有密钥对会不可见?
- 专属加密类
- 计费类
- 通用类
-
密钥管理类
- 视频帮助
-
更多文档
- 用户指南(阿布扎比区域)
-
用户指南(吉隆坡区域)
- 产品介绍
- 用户指南
-
常见问题
-
密钥管理类
- 什么是密钥管理?
- 什么是用户主密钥?
- 什么是默认密钥?
- 自定义密钥与默认密钥有什么区别?
- 什么是数据加密密钥?
- 为什么不能立即删除用户主密钥?
- 哪些云服务使用KMS加密数据?
- 云服务如何使用KMS加密数据?
- 信封加密方式有什么优势?
- 在KMS中创建的自定义密钥的个数是否有限制?
- 是否可以从KMS中导出用户主密钥?
- 如果自定义密钥被彻底删除,用户数据是否还可以解密?
- 如何使用在线工具加解密数据?
- 是否可以更新KMS管理的密钥?
- 在什么场景下推荐使用导入的密钥?
- 可以导入哪些类型的密钥?
- 密钥材料被意外删除时如何处理?
- 默认密钥如何生成?
- 没有权限操作KMS,该如何处理?
- 如何修补OpenSSL以使用-id-aes256-wrap-pad包装非对称密钥?
- KMS支持的密钥算法类型
- 请求KMS异常,错误码401,应该如何处理?
- 调用encrypt-data接口,返回的密文和明文有什么关系?
- KMS如何保护创建的密钥?
- 凭据管理类
-
密钥管理类
- 修订记录
- API参考(阿布扎比区域)
- API参考(吉隆坡区域)
- 通用参考
更新时间:2024-08-30 GMT+08:00
链接复制成功!
如何使用凭据管理服务解决AK&SK泄露问题
凭据管理,即云凭据管理服务(Cloud Secret Management Service,CSMS),是一种安全、可靠、简单易用的凭据托管服务。用户或应用程序通过凭据管理服务,创建、检索、更新、删除凭据,轻松实现对敏感凭据的全生命周期的统一管理,有效避免程序硬编码或明文配置等问题导致的敏感信息泄露以及权限失控带来的业务风险。
应用场景
保存应用凭据,通过临时访问的方式防止AK&SK泄露。
应用原理
通过统一身份认证服务(Identity and Access Management,IAM )对弹性云服务器(Elastic Cloud Server,ECS)的委托获取临时访问密钥来保护AK&SK。
访问凭证按照时效性可分为永久凭证和临时凭证,相较于永久性访问凭证,例如用户名和密码,临时访问密钥因为有效期短且刷新频率高,所以安全性更高。因此,您可以为ECS实例授予IAM委托,使ECS实例内的应用程序可以使用临时AK&SK+SecurityToken访问CSMS,不需要保存临时访问密钥,每次需要时动态获取,也可以缓存在内存里定时更新。
操作流程
图1 ECS委托操作流程
![](https://support.huaweicloud.com/intl/zh-cn/bestpractice-dew/zh-cn_image_0000001399179772.png)
约束限制
管理员账号或拥有ECS权限的IAM用户才能为ECS实例配置委托。
操作步骤
- IAM创建ECS委托。
- 登录管理控制台。
- 单击页面左侧
,选择“管理与监督 > 统一身份认证服务”,默认进入“用户”界面。
- 在左侧导航树中,选择“委托”,进入“委托”页面。
- 单击右上角的“创建委托”。
- 在弹出的“创建委托”对话框中,填写对应参数。参数说明如表 创建委托参数说明所示。
图2 创建委托
- 单击“下一步”,进入“授权”页面。
- 单击页面右上角“新建策略”,如果已存在需使用的策略忽略此步骤。
- 在“新建策略”页面配置参数,参数详情如表 新建策略参数说明所示。
图3 新建策略
- 在“新建策略”页面配置参数,参数详情如表 新建策略参数说明所示。
- 为委托选择策略。勾选策略后,单击“下一步”。
- 选择授权范围方案,单击“确定”。
- 所有资源:授权后,IAM用户可以根据权限使用账号中所有资源,包括企业项目、区域项目和全局服务资源。
- 指定企业项目资源:授权后,用户根据权限使用已选企业项目中的资源。
- 指定区域项目资源:授权后,用户根据权限使用已选区域项目中的资源。
- 将委托(如ECS_TO_CSMS)赋予ECS实例。
- 如果ECS实例未创建,请参考自定义购买弹性云服务器。在步骤三:高级配置中,“委托”选择新建的委托(如ECS_TO_CSMS)。
- 如果ECS实例已创建,请按照如下流程:
- 单击页面左侧
,选择“计算 > 弹性云服务器 ECS”,进入“弹性云服务器”界面。
- 单击需要配置委托的ECS实例的“名称”,进入“基本信息”界面。
- 在“管理信息”中,单击
选择委托(如ECS_TO_CSMS)。
图4 选择委托
- 单击页面左侧
- 运行在ECS实例上的应用程序调用获取委托临时凭证的API,即可获得用于访问CSMS的临时AK&SK+SecrityToken。
- 获取临时AK&SK(Security Key 目录下 ),详情请参见元数据获取。
- URI
- 方法
- 返回数据内容:
{ "credential":{ "access": "LDHZK30XXXXXXXXXXXXV", "secret":"gyqcdzVXXXXXXXXXXXXXXXXXXXXXXXMl6", "securitytoken": "El9FI2C65qXXXXXXXXXXXXXXXXXXXXXnkcaoV", "expires_at": "2022-07-14T12:09:24.147000Z" } }
- 提取返回数据中的“access”、“secret”、“securitytoken”用于访问CSMS。
- ECS会为您自动轮换临时凭证,从而确保每次申请的临时凭证安全、有效。
- 使用临时AK&SK+SecurityToken访问CSMS。
- 查询凭证列表示例如下,详情请参见凭据管理服务。
- 请准备基础认证信息:
- ACCESS_KEY: 华为账号Access Key,获取方式请参见获取AK/SK。
- SECRET_ACCESS_KEY: 华为账号Secret Access Key,获取方式请参见获取AK/SK。
- 认证用的ak和sk直接写到代码中有很大的安全风险,通过步骤3获取的临时access、secret、securitytoken无需进行本地存储;在使用过程中,直接通过接口调用后访问CSMS即可。
- 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。
package com.huaweicloud.sdk.test; import com.huaweicloud.sdk.core.auth.ICredential; import com.huaweicloud.sdk.core.auth.BasicCredentials; import com.huaweicloud.sdk.core.exception.ConnectionException; import com.huaweicloud.sdk.core.exception.RequestTimeoutException; import com.huaweicloud.sdk.core.exception.ServiceResponseException; import com.huaweicloud.sdk.csms.v1.region.CsmsRegion; import com.huaweicloud.sdk.csms.v1.*; import com.huaweicloud.sdk.csms.v1.model.*; public class ListSecretsSolution { public static void main(String[] args) { * 基础认证信息: * - ACCESS_KEY: 华为账号Access Key * - SECRET_ACCESS_KEY: 华为账号Secret Access Key * - PROJECT_ID: 华为云局点项目ID 详情见https://support.huaweicloud.com/intl/zh-cn/productdesc-iam/iam_01_0023.html * - CSMS_ENDPOINT: 华为云CSMS服务访问终端地址 详情见https://support.huaweicloud.com/intl/zh-cn/api-dew/dew_02_0052.html * - 认证用的ak和sk直接写到代码中有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全。 * - 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。 */ private static final String ACCESS_KEY = System.getenv("HUAWEICLOUD_SDK_AK"); private static final String SECRET_ACCESS_KEY = System.getenv("HUAWEICLOUD_SDK_SK"); String securitytoken = "<YOUR SecurityToken>"; String ak = System.getenv("CLOUD_SDK_AK"); String sk = System.getenv("CLOUD_SDK_SK"); ICredential auth = new BasicCredentials() .withAk(ak) .withSk(sk) .withSecurityToken(securitytoken); CsmsClient client = CsmsClient.newBuilder() .withCredential(auth) .withRegion(CsmsRegion.valueOf("cn-north-1")) .build(); ListSecretsRequest request = new ListSecretsRequest(); try { ListSecretsResponse response = client.listSecrets(request); System.out.println(response.toString()); } catch (ConnectionException e) { e.getMessage(); } catch (RequestTimeoutException e) { e.getMessage(); } catch (ServiceResponseException e) { e.getMessage(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg()); } } }
- 获取临时AK&SK(Security Key 目录下 ),详情请参见元数据获取。
父主题: 凭据管理