SOPS對配置文件數(shù)據(jù)進(jìn)行加密

SOPS對數(shù)據(jù)進(jìn)行加密

SOPS 是由Mozilla 開發(fā)的一款開源的文本編輯工具加叁,它支持對YAML, JSON, ENV, INI 和BINARY 文本格式的文件進(jìn)行編輯拜鹤,并利用AWS KMS, GCP KMS, Azure Key Vault 或PGP 等加密方式對編輯的文件進(jìn)行加密和解密硕盹。
在當(dāng)前它還可以與heml secret作用滚婉,為Kubernetes的secret資源數(shù)據(jù)進(jìn)行加密。
本篇主要介紹sops的基本用法,而helm secret的使用不做介紹扭吁。

GPG進(jìn)行加密

  1. 生成GPG文件
$ gpg --generate-key # 根據(jù)引導(dǎo)生成gpg加密文件

或者自動(dòng)生成

gpg --batch --generate-key <<EOF
%echo Generating a basic OpenPGP key for HELM Secret
Key-Type: RSA
Key-Length: 4096
Subkey-Type: RSA
Subkey-Length: 4096
Name-Real: Michael
Name-Comment: Personal PGP
Name-Email: mpan@sample.com
Expire-Date: 0
%no-ask-passphrase
%no-protection
%commit
%echo done
EOF
  1. 查看GPG列表
$ gpg -k
/home/vagrant/.gnupg/pubring.kbx
--------------------------------
pub   rsa3072 2021-04-07 [SC] [expires: 2023-04-07]
      FA21E3EDC58BA05535435756543DF0088828FFCC
uid           [ultimate] Michael <mpan@nvidia.com>
sub   rsa3072 2021-04-07 [E] [expires: 2023-04-07]
  1. 使用SOPS對文件a.yaml進(jìn)行加密
$ echo "A: hello" > a.yaml
$ sops --gpg FA21E3EDC58BA05535435756543DF0088828FFCC -e file.yaml > file_encode.yaml
  1. 解密文件
$ sops -d file_encode.yaml 
$ #或者 使用sops file_encode.yaml對加密文件直接編輯
  1. 通過.sops.yaml來設(shè)置默認(rèn)加密規(guī)則
$ cat <<EOF > .sops.yaml
creation_rules:
        - pgp: 'FA21E3EDC58BA05535435756543DF0088828FFCC'
EOF

公鑰用于加密,私鑰用于解密盲镶。它們的導(dǎo)入與導(dǎo)出對于文件的傳輸與交流很重要侥袜。

  1. 公鑰導(dǎo)入與導(dǎo)出
 $ gpg --export --armor "mpan@sample.com" > personal_gpg.pub
$ gpg --import personal_gpg.pub
  1. 私鑰的導(dǎo)入與導(dǎo)出
gpg --export-secret-key -a "mpan@sample.com" > personal_gpg
gpg --import  personal_gpg
  1. 刪除公鑰與私鑰
$ gpg --delete-keys FA21E3EDC58BA05535435756543DF0088828FFCC
$ gpg --delete-secret-keys FA21E3EDC58BA05535435756543DF0088828FFCC
  1. 保存gpg密鑰的網(wǎng)站(可選)
    KeyBase:https://keybase.io/
    KeysOpenPGPhttps://keys.openpgp.org/

KMS加密

  1. 在aws平臺的KMS服務(wù)創(chuàng)建一個(gè)密鑰,獲取它的arn ID
  2. 文件加密時(shí)使用--kms設(shè)置加密密鑰溉贿。前提是當(dāng)前aws客戶端已經(jīng)設(shè)置了認(rèn)證私鑰枫吧,并賦予了訪問該kms密鑰的權(quán)限
$ sops --kms "arn:aws:kms:ap-east-1:982938942:key/f2232fa3-7678-8922-8778-f2232fa3" -e file.yaml > file_encode.yaml
  1. 解密文件方式一致
$ sops -d file_encode.yaml

使用Age加密

Age 是一個(gè)簡單,現(xiàn)代和安全的文件加密工具宇色。

  1. 安裝
$ brew tap filippo.io/age https://filippo.io/age
$ brew install age
  1. 生成密鑰對
$ age-keygen -o key.txt
Public key: age1st0m5a72gtlk3pz3fnvy08huq8d9llut2vnjwxzkeudejkc0fs9s6dj9ev
  1. 使用公鑰對數(shù)據(jù)進(jìn)行加密
$ sops -a age1st0m5a72gtlk3pz3fnvy08huq8d9llut2vnjwxzkeudejkc0fs9s6dj9ev -e secrets.yaml > secrets_enc.yaml

錯(cuò)誤處理

  1. 在解密時(shí)報(bào)如下錯(cuò)誤
vagrant@ubuntu-focal:~$ sops a2.yaml
Failed to get the data key required to decrypt the SOPS file.

Group 0: FAILED
  FA21E3EDC58BA05535435756543DF0088828FFCC: FAILED
    - | could not decrypt data key with PGP key:
      | golang.org/x/crypto/openpgp error: Could not load secring:
      | open /home/vagrant/.gnupg/secring.gpg: no such file or
      | directory; GPG binary error: exit status 2

需要設(shè)置GPG_TTY環(huán)境變量

export GPG_TTY=$(tty)

參考文章

Helm 插件之 helm-secrets:利用 PGP 加密你的 Values 文件
Cannot decrypt with GPG 2.2.5 and SOPS 3.0.0 #304

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末九杂,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子宣蠕,更是在濱河造成了極大的恐慌例隆,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抢蚀,死亡現(xiàn)場離奇詭異镀层,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)皿曲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進(jìn)店門唱逢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人屋休,你說我怎么就攤上這事惶我。” “怎么了博投?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵绸贡,是天一觀的道長。 經(jīng)常有香客問我毅哗,道長听怕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任虑绵,我火速辦了婚禮尿瞭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘翅睛。我一直安慰自己声搁,他們只是感情好黑竞,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著疏旨,像睡著了一般很魂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上檐涝,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天遏匆,我揣著相機(jī)與錄音,去河邊找鬼谁榜。 笑死幅聘,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的窃植。 我是一名探鬼主播帝蒿,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼巷怜!你這毒婦竟也來了葛超?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤丛版,失蹤者是張志新(化名)和其女友劉穎巩掺,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體页畦,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡胖替,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了豫缨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片独令。...
    茶點(diǎn)故事閱讀 40,424評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖好芭,靈堂內(nèi)的尸體忽然破棺而出燃箭,到底是詐尸還是另有隱情,我是刑警寧澤舍败,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布招狸,位于F島的核電站,受9級特大地震影響邻薯,放射性物質(zhì)發(fā)生泄漏裙戏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一厕诡、第九天 我趴在偏房一處隱蔽的房頂上張望累榜。 院中可真熱鬧,春花似錦灵嫌、人聲如沸壹罚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽猖凛。三九已至赂蠢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間形病,已是汗流浹背客年。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工霞幅, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留漠吻,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓司恳,卻偏偏與公主長得像途乃,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子扔傅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容