immudb是用于系統和應用程序的輕量級高速不可變數據庫。使用immudb,您可以跟蹤事務數據庫中敏感數據的更改,然后將這些更改永久記錄在防篡改的immudb數據庫中。這樣一來,您就可以保留借記/貸記交易的不可磨滅的歷史記錄。傳統的事務日志很難擴展,并且并非一成不變。immudb是Apachev2.0許可下的開放源代碼,因此無法確定您的數據是否已泄露。
這個怎么運作
因此,immudb可以追溯性地提供無與倫比的洞察力,即使您的permiter受到損害,您的敏感數據也會發生什么。immudb通過內部使用Merkle樹結構提供了不變性的保證。
immudb可以像使用傳統區塊鏈一樣為您提供用SHA-256編寫的數據完整性的密碼驗證,而無需像當今的區塊鏈那樣付出成本和復雜性。
immudb具有4個主要優點:
·immudb是不可變的。您只能添加記錄,而不能更改或刪除記錄。
·像區塊鏈一樣,存儲在immudb中的數據是加密一致且可驗證的,而沒有所有復雜性和高速性。
·任何人都可以在幾分鐘內開始使用immudb。可以使用node.js,Java,Python,Golang,.Net或任何其他語言。它非常易于使用,并且您可以在幾分鐘之內運行不可變數據庫。
·最后,immudb是OpenSource。您可以在本地或云中運行它,它是完全免費的。immudb受Apache2.0許可的約束。
immudb當前在Linux,FreeBSD,Windows和MacOS以及從它們派生的其他系統上運行。
immudb高級
組成部分
·immudb是服務器二進制文件,它偵聽本地主機上的端口3322并提供gRPC接口
·immugw是連接到immudb的智能REST代理,并為應用程序提供RESTful接口。我們建議在單獨的計算機上運行immudb和immugw以增強安全性
·immuadmin是immudb和immugw的管理CLI。您可以安裝和管理兩個組件的服務安裝,并獲取統計信息以及運行時信息。
入門
您可以基于GitHub存儲庫中最常用架構的Dockerfile構建Docker映像,也可以在Linux的Dockerhub上使用預構建的映像。
自己建造
dockerbuild-tmyown/immudb:latest-fDockerfile.
dockerbuild-tmyown/immugw:latest-fDockerfile.immugw.
dockerbuild-tmyown/immuadmin:latest-fDockerfile.immuadmin.
immudbDockerhub
dockerrun-it-d-p3322:3322-p9497:9497—nameimmudbcodenotary/immudb:latest
immugwDockerhub
dockerrun-it-d-p3323:3323--nameimmugw--envIMMUGW_IMMUDB-ADDRESS=immudbcodenotary/immugw:latest
獨立二進制
如果要自己構建二進制文件,只需克隆此存儲庫并根據您的操作系統運行以下命令之一。
#Linux
GOOS=linuxGOARCH=amd64makeimmuadmin-staticimmudb-staticimmugw-static#macOS
GOOS=darwinGOARCH=amd64makeimmuadmin-staticimmudb-staticimmugw-static#MicrosoftWindows
GOOS=windowsGOARCH=amd64makeimmuadmin-staticimmudb-staticimmugw-static
然后您可以運行immudbimmudb服務器
#runimmudbintheforeground
./immudb#runimmudbinthebackground
./immudb-d
將immudb安裝為服務
安裝服務時,請確保構建或下載immudb和immuadmin組件,并將它們保存在同一工作目錄中。
#installimmudbservice
./immuadminserviceimmudbinstall#checkcurrentimmudbservicestatus
./immuadminserviceimmudbstatus#stopimmudbservice
./immuadminserviceimmudbstop#startimmudbservice
./immuadminserviceimmudbstart
immudlinux服務使用以下默認值:
·用戶:immu
·組:immu
·配置:/etc/immudb
·數據:/var/lib/immudb
·日志:/var/log/immudb
·服務端口:3322(immudb),3323(immugw)
·普羅米修斯港:9497
您可以對immugwAPI網關執行相同的操作,出于安全原因,應將其安裝在單獨的系統上。
安裝該服務時,請確保構建或下載immugw和immuadmin組件,并將它們保存在同一工作目錄中。
#installimmugwservice
./immuadminserviceimmugwinstall#checkcurrentimmugwservicestatus
./immuadminserviceimmugwstatus#stopimmugwservice
./immuadminserviceimmugwstop#startimmugwservice
./immuadminserviceimmugwstart
性能
由于經常將immudb與AmazonQLDB進行比較,我們使用簡單的演示應用程序(不使用任何不公平的優化)編寫數據來進行性能基準測試。
測試設置:
·4個CPU核心
·英特爾(R)至強(R)CPUE3–1275v6@3.80GHz
·64GB內存
·固態硬盤
immudb統計要隨時查看統計信息,請使用immuadminstats訪問文本
-t或視覺統計:
./immuadminstats-t
Databasepath:db/immudb
Uptime:1m38.64s
Numberofentries:12
LSMsize:701B
VLogsize:1.1kB
Totalsize:1.8kB
Numberofclients:1
Queriesperclient:
127.0.0.1:26
Lastquery:749.641765msago
Avg.duration(nbcalls):μs
ByIndex(0):0
ByIndexSV(0):0
ChangePassword(0):0
Consistency(0):0
Count(0):0
CreateUser(0):0
CurrentRoot(0):0
DeleteUser(0):0
Dump(0):0
Get(5):20
GetBatch(0):0
GetBatchSV(0):0
GetSV(0):0
Health(16):33
History(0):0
HistorySV(0):0
IScan(0):0
IScanSV(0):0
Inclusion(0):0
Login(0):0
Reference(0):0
SafeGet(0):0
SafeGetSV(0):0
SafeReference(0):0
SafeSet(0):0
SafeSetSV(0):0
SafeZAdd(0):0
Scan(0):0
ScanSV(0):0
Set(5):76
SetBatch(0):0
SetBatchSV(0):0
SetSV(0):0
ZAdd(0):0
ZScan(0):0
ZScanSV(0):0
orvisual(default)
或視覺(默認)Prometheus和Grafana監控
immudb具有一個內置的prometheus導出器,默認情況下會在端口9497(:9497/metrics)上發布所有度量標準。在運行Prometheus實例時,可以像以下示例一樣配置目標:
-job_name:'immudbmetrics'scrape_interval:60sstatic_configs:-targets:['my-immudb-server:9497']
常見用例
我們已經從用戶那里了解了以下用例:
·使用immudb不變地將每個更新存儲到現有應用程序數據庫的敏感數據庫字段(信用卡或銀行帳戶數據);
·將CI/CD配方存儲在immudb中以保護構建和部署管道;
·將公共證書存儲在immudb中;
·使用immudb作為數字對象校驗和的附加哈希存儲;
·存儲日志流防篡改。
Opvizor—適用于VMwarevSphere的不可變日志解決方案
API文檔及其使用方法
您可以在此處找到immudb的靈活模式:
/codenotary/immudb/blob/master/pkg/api/schema/schema.swagger.json
如果要運行SwaggerUI,只需在克隆此倉庫后運行以下docker命令:
dockerrun-d-it-p8080:8080--nameswagger-immudb-v${PWD}/pkg/api/schema/schema.swagger.json:/openapi.json-eSWAGGER_JSON=/openapi.jsonswaggerapi/swagger-ui
或immugw。
一些過程,不同的模式:
dockerrun-d-it-p8081:8080--nameswagger-immugw-v${PWD}/pkg/api/schema/gw.schema.swagger.json:/openapi.json-eSWAGGER_JSON=/openapi.jsonswaggerapi/swagger-ui
沒有程序員嗎?
實際上,如果您不是程序員,但仍想使用immudb只是為了在腳本中或腳本中玩游戲,則可以使用immuclient。
#Linux
GOOS=linuxGOARCH=amd64makeimmuclient-static#MicrosoftWindows
GOOS=windowsGOARCH=amd64makeimmuclient-static
如果您不知道如何構建它,可以使用以下Docker命令和過程:
gitclone
#Linux
dockerrun-it--rm-v$(pwd):/srcgolang:1.13-stretchsh-c'cd/src&&GOOS=linuxGOARCH=amd64makeimmuclient-static'#MicrosoftWindows
dockerrun-it--rm-v$(pwd):/srcgolang:1.13-stretchsh-c'cd/src&&GOOS=windowsGOARCH=amd64makeimmuclient-static'
現在,您將在存儲庫文件夾中找到immuclient二進制文件并準備使用。
./immuclient--help
詳細介紹了如何使用它。
將記錄添加到immudb
#samesystemwhereimmudbserverisrunning
./immuclientsafesetmykeymyvalue#immudbserverrunsonaremotesystem
./immuclient-asafesetmykeymyvalue
您會收到類似于以下內容的信息:
./immuclientsafesetk1v1
index:307
key:k1
value:v1hash:4a6a18172eba5a3ea49a3caf147ac405c874ed4c922cc7dafe0dce5ff85f35aa
time:2020–05–1304:01:30-0400EDT
verified:true
從immudb獲取記錄
#samesystemwhereimmudbserverisrunning
./immuclientsafegetmykey#getthevaluehistory
./immuclienthistorymykey#immudbserverrunsonaremotesystem
./immuclient-asafegetmykey
safeGet和safeSet命令也對值進行一致性檢查。
現在,您可以存儲任何類型的數據,例如敏感數據庫字段,公共證書或什至配置文件的內容。
讓我們嘗試使用本地Dockerfile并確保我們的值中沒有換行或特殊字符。
./immuclientsafesetDockerfile1$(echo-n"$(catDockerfile)"|base64-w0)
要取回數據,您需要確保再次進行轉換。
由于safeget的輸出不僅僅包含值,如下所示:
./immuclientsafegetDockerfile1
index:309
key:Dockerfile1
value:RlJPTSBnb2xhbmc6MS4xMy1zdHJldGNoIGFzIGJ1aWxkCldPUktESVIgL3NyYwpDT1BZIC4gLgpSVU4gR09PUz1saW51eCBHT0FSQ0g9YW1kNjQgbWFrZSBpbW11YWRtaW4tc3RhdGljCkZST00gdWJ1bnR1OjE4LjA0Ck1BSU5UQUlORVIgdkNoYWluLCBJbmMuICA8aW5mb0B2Y2hhaW4udXM+CgpDT1BZIC0tZnJvbT1idWlsZCAvc3JjL2ltbXVhZG1pbiAvdXNyL2xvY2FsL2Jpbi9pbW11YWRtaW4KCkFSRyBJTU1VX1VJRD0iMzMyMiIKQVJHIElNTVVfR0lEPSIzMzIyIgoKRU5WIElNTVVBRE1JTl9JTU1VREItQUREUkVTUz0iMTI3LjAuMC4xIiBcCiAgICBJTU1VQURNSU5fSU1NVURCLVBPUlQ9IjMzMjIiIFwKICAgIElNTVVEQl9NVExTPSJmYWxzZSIgCgpSVU4gYWRkZ3JvdXAgLS1zeXN0ZW0gLS1naWQgJElNTVVfR0lEIGltbXUgJiYgXAogICAgYWRkdXNlciAtLXN5c3RlbSAtLXVpZCAkSU1NVV9VSUQgLS1uby1jcmVhdGUtaG9tZSAtLWluZ3JvdXAgaW1tdSBpbW11ICYmIFwKICAgIGNobW9kICt4IC91c3IvbG9jYWwvYmluL2ltbXVhZG1pbgoKVVNFUiBpbW11CkVOVFJZUE9JTlQgWyIvdXNyL2xvY2FsL2Jpbi9pbW11YWRtaW4iXQ==hash:dfca217e2d87dccb8fd3fe8c1b49e620cc4ece8dc9c9fc2384cb6f6c9617eddb
time:2020-05-1305:19:19-0400EDT
verified:true
命令有點復雜
./immuclientsafegetDockerfile1|grep"^value"|cut-d":"-f2|xargsecho-n|base64-di
對于非開發人員,將來還會有更簡單的選項,以及.net,Java,Node.js和Pythonaso的SDK驅動程序。想要了解更多關于數據庫的信息,請繼續關注中培偉業。