NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

当 DR 灾备遇到 KMS(二)

  • 2019-12-20
  • 本文字数:1420 字

    阅读完需:约 5 分钟

当 DR 灾备遇到 KMS(二)

3. 场景三,客户端加密场景扩展,需要固定 DEK 支持密文对比

某些场景下,加密数据不会解密使用,而是用密文做对比,比如用户的密码,数据库存放的就是密文。用户在客户端输入的密码,在加密之后传输,通过密文与密文的对比来判断密码是否一致。这样的情况下,都不会涉及解密过程,但是要求不管任何时间对同样的明文,加密的密文保持不变。这样就要求 DEK 必须固定不变。在场景二介绍的 Encryption SDK 中,为了提高安全等级,DEK 是调用的时候临时生成的,每次调用,生成的 DEK 是不一样的。因此场景二的解决方案不能直接用于场景三。调整如下


为了保证 DEK 不变,需要将 DEK 从封装的方法中剥离出来,Client 端自己管理 DEK。具体如下

DEK 的生成和管理

首先,调用 Encryption SDK 中的 generateDataKey 方法,生成一个 DEK ****


Java


// generate data key, with CMK, with AES_128        GenerateDataKeyRequest dataKeyRequest = new GenerateDataKeyRequest();        //dataKeyRequest.setKeyId(KEYID);        dataKeyRequest.setKeyId(this.CMKKeyID);        dataKeyRequest.setKeySpec("AES_128");        GenerateDataKeyResult dataKeyResult = kms.generateDataKey(dataKeyRequest);```    ****
其次,对该DEK进行加密保护,在加密的时候,为了保证该DEK能够在DR场景下使用,也需要使用场景二中介绍的包含多个区域的CMK的Provider,对DEK进行加密保护,这样,我们就可以在不同的区域都可以将加密的DEK进行解密了。 ****
Java

复制代码


// plain text data key


ByteBuffer plainTextKey = dataKeyResult.getPlaintext();


// 使用 multiple provider 加密管理 datakey,以便跨区域使用


CryptoResult<byte[], ?> result = new AwsCrypto().encryptData(this.provider, plainTextKey.array());



经过加密的DEK,就可以保存在数据库中备用了。当然,还可以放一份在S3上作为冷备保存,借助S3高达11个9的持久性,更为放心。因为DEK已经加密了,所以也不担心安全的风险。
#### 数据加解密环节
从数据库中取出加密的DEK,调用场景二中的解密方法**decryptData()**,得到明文的DEK,这时候就可以使用该DEK对数据进行加解密了。由于encryption SDK 中包含的方法都有自己的DEK,因此建议使用成熟的库支持AES加密的SDK,对数据做加密和解密。比如java中的Cipher库 **javax.crypto.Cipher;**
### 4. 总结
无论是使用客户端加密还是服务器端加密的方式,AWS都提供了对应的DR(多区域)的方案。但是从具体的操作方式来看,服务器端的加密,更加简单方便,无需修改代码;而客户端的方式,是需要在代码层面进行调整的。因此我们建议优先使用服务器端加密的方式,在服务器端加密不能满足的场景下,再考虑客户端加密的方式。
**作者介绍:**
<footer> ![](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/Author/shengbo.jpg)
### [](https://amazonaws-china.com/cn/blogs/china/tag/%E9%99%88%E6%98%87%E6%B3%A2/)
亚马逊AWS解决方案架构师,负责基于AWS的云计算方案架构的咨询和设计,同时致力于AWS云服务在国内的应用和推广。现致力于网络安全和大数据分析相关领域的研究。在加入AWS之前,在爱立信东北亚区担任产品经理,负责产品规划和方案架构设计和实施,在用户体验管理以及大数据变现等服务方面有丰富经验。</footer>
**本文转载自AWS技术博客。**
**原文链接:https://amazonaws-china.com/cn/blogs/china/when-the-dr-disaster-prepared-encounter-kms/**
复制代码


2019-12-20 15:26511

评论

发布
暂无评论
发现更多内容

克服传统企业数字化转型的十大阻力

天津汇柏科技有限公司

数字化转型

FlowJo 10 for Mac(流式细胞分析软件)v10.4激活版

iMac小白

喜报!博睿数据荣获数据猿“年度创新服务企业奖、年度创新服务产品奖”

博睿数据

可观测性 博睿数据 运维监控

JNPF低代码平台的表单设计器

高端章鱼哥

低代码 表单设计 JNPF

泛互联网行业A/B测试全解析:产品优化的创新之道

字节跳动数据平台

A/B 测试

Mac无损音乐播放器 Audirvana中文激活版下载

iMac小白

QCN9024 and QCN9074: Wallys DR9074 Triband Module ATH11k QSDK Supported

wallyslilly

QCN9074 QCN9024

“一次不过、免费再考” 限时活动开启,快来考取亚马逊云科技认证吧!

亚马逊云科技 (Amazon Web Services)

培训与认证

阿里云PolarDB开发者大会首度召开,让数据库开发像“搭积木”一样简单

阿里云瑶池数据库

数据库 云计算 阿里云 云原生 开发者大会

万界星空科技注塑行业生产管理MES系统管理

万界星空科技

mes 万界星空科技 注塑制造业 注塑MES 注塑生产管理系统

智能开发助手——华为云CodeArts Snap,揭开智能研发新篇章

华为云PaaS服务小智

人工智能 华为云

一款轻量级、基于Java语言开发的低代码开发框架,开箱即用!

互联网工科生

Java 低代码 数字化 开发框架 JNPF

一、nextjs如何使项目工程化(c-shopping电商开源)

Geek_9da61c

开源 eslint prettier husky next.js

原型设计软件Axure RP 9 for Mac 中文正式破解版下载

iMac小白

​食品饮料行业如何进行数字化转型?

万界星空科技

数字化转型 mes 万界星空科技 食品饮料行业数字化转型 食品MES

手机崩溃日志的查找与分析

雪奈椰子

Premiere Pro 2024 for Mac(PR 2024视频编辑软件)v24.1中文激活版

iMac小白

克魔助手抓包教程:网络数据包分析利器

阿里云容器服务助力万兴科技 AIGC 应用加速

阿里巴巴云原生

阿里云 云原生 容器服务

NTFS Disk by Omi NTFS for mac (NTFS 磁盘管理器)v1.1.4中文版下载

iMac小白

Sketch for mac(专业矢量绘图设计软件)v99.1中文激活版

iMac小白

国外服务器租用:如何在预算内选择最优服务

一只扑棱蛾子

国外服务器

ClickHouse分析效率翻倍提升,揭秘奇点云对归因分析场景的优化实践

先锋IT

鸿蒙Next来了,企业应该如何快速应对

Onegun

鸿蒙 鸿蒙系统

百度基于金融场景构建高实时、高可用的分布式数据传输系统的技术实践

JackJiang

网络编程 即时通讯 IM

详解KubeEdge EdgeMesh v1.15 边缘CNI特性

华为云开发者联盟

开发 华为云 容器网络 华为云开发者联盟

微信公众号短链实时获取阅读量、点赞数爬虫方案(不会Hook可用)

不在线第一只蜗牛

爬虫 微信公众号 工具分享 hook

华为云DTSE助力无锡云数IoT系统:打造超可靠数字化之源

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 华为云DTSE

Permute 3 for mac(全能媒体格式转换器)v3.11.4中文版下载

iMac小白

Web Components从技术解析到生态应用个人心得指北

zhoulujun

Spring Boot 整合 Camunda 实现工作流

EquatorCoco

Java 后端 开发 springboot

当 DR 灾备遇到 KMS(二)_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章