如何在云上使用confd+ACM管理敏感数据
在前面的一些文章中,我們介紹了如何在云上安全的存放配置數(shù)據(jù),但是上面的方法都是有代碼侵入性的,也就是說需要修改應(yīng)用程序,本文會講解如何使用 confd+ACM 在不修改代碼的情況下動態(tài)修改應(yīng)用所需的配置,并且可以重新啟動應(yīng)用加載最新的配置。這樣做可以在無代碼侵入的情況下加強應(yīng)用程序的安全性和運維效率:
- 安全性:應(yīng)用程序的數(shù)據(jù)可能是敏感數(shù)據(jù),ACM 具有健壯的訪問控制機制,可以對敏感數(shù)據(jù)進行加密來安全的保存密碼、API密鑰、證書等敏感信息;
- 運維效率:當(dāng)需要修改應(yīng)用的某些配置內(nèi)容時,如果只有一兩臺機器可以手工操作,但是當(dāng)涉及幾十上百臺數(shù)量的時候,confd+ACM可以通過配置的發(fā)布批量進行配置修改和重啟操作;
- 無代碼侵入:通過confd+ACM的組合可以做到無需修改應(yīng)用代碼即可達到讓應(yīng)用配置動態(tài)生效的效果
下面以應(yīng)用的數(shù)據(jù)庫配置為例講解如何使用confd+ACM安全管理應(yīng)用配置
準(zhǔn)備工作
在操作本文的示例之前需要配置好開通ACM和對confd的使用有基本概念。
創(chuàng)建confd配置文件
創(chuàng)建confd所需的toml格式配置文件
vim /etc/confd/conf.d/myapp.toml指定模版文件,
ACM中的加密配置需要以/cipher-開頭
check_cmd用于檢驗配置的正確性,防止錯誤配置導(dǎo)致應(yīng)用加載失敗
reload_cmd用于重啟應(yīng)用或者讓應(yīng)用動態(tài)加載配置
創(chuàng)建模版文件
vim /etc/confd/templates/jdbc.properties.tmplgetv從ACM中獲取對應(yīng)dataId的配置:
/cipher-myapp/database/jdbc對應(yīng)的dataId為cipher-myapp.database.jdbc
confd基于kms會自動對/cipher-開頭的配置進行解密
在ACM上創(chuàng)建所需的配置文件
創(chuàng)建dataId為cipher-myapp.database.jdbc的配置文件,group使用默認的DEFAULT_GROUP即可,配置內(nèi)容為
{ "url":"jdbc:mysql://localhost:3306/dbName", "username":"testuser", "password":"testpassword" }啟動confd
和官網(wǎng)文檔不同的是,要支持解密功能,需要設(shè)置confd的-openKMS開關(guān),并且設(shè)置kms服務(wù)的regionId,這個信息可以從示例代碼中獲得
confd -backend nacos -endpoint {endpoint}:8080 -namespace {namespace} -accessKey {accessKey} -secretKey {secretKey} -openKMS true -regionId {regionId} -watch生成配置文件
查看生成的/tmp/jdbc.properties配置文件,如果生成了該文件,并且文件內(nèi)容如下則說明整個流程運行正常
jdbc.url=jdbc:mysql://localhost:3306/dbName jdbc.username=testuser jdbc.password=testpassword變更ACM配置內(nèi)容
當(dāng)需要修改數(shù)據(jù)庫的連接串的時候,直接在ACM上修改cipher-myapp.database.jdbc配置,confd會重新生成數(shù)據(jù)庫配置文件,并讓應(yīng)用加載最新配置。當(dāng)然在實際生產(chǎn)環(huán)境中,可以使用ACM的Beta功能對幾臺機器先進行灰度發(fā)布,檢驗沒問題再繼續(xù)全量發(fā)布
原文鏈接
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的如何在云上使用confd+ACM管理敏感数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 今天的这个小成绩,需要向阿里云的朋友报告
- 下一篇: 首次公开 | 淘系技术总监马鏖谈淘系用户