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