上一篇我們提到如何讓GKE用KMS來加密這樣可以使我們的資料更安全,但是如果我們今天要讓secret.yaml放上去到git, base64的資料是可以隨時被decrypt的。
因此我們今天使用sops一套mozilla開發的工具來加密我們的secret
首先我們寫一個secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: sample
type: Opaque
data:
extra: YmFyCg==
extra的部分是我們經由base64 encode姐出來是
echo "YmFyCg==" | base64 -d
bar
那接下來先安裝我們的sops 官網連結https://github.com/mozilla/sops
大家可到stable release抓下來安裝,安裝好以後
我們先找到昨天的kms key位置並且export成KSM_PATH
gcloud kms keys list --location <region> --keyring <key ring name>
projects/<project>/locations/region/keyRings/<key ring name>/cryptoKeys/<key name>
export KMS_PATH="projects/<project/locations/asia-east1/keyRings/<key ring name>/cryptoKeys/<key>"
然後我們就可以用KMS和sops來加密我們的secret.yaml啦
sops --encrypt --gcp-kms $KMS_PATH secret.yaml > secret.enc.yaml
我們會得到一個全文加密的secret.enc.yaml
要解密的話呢
sops --decrypt --gcp-kms $KMS_PATH secret.enc.yaml
如果只想要加密部分欄位我們也可以透過regular expression的部分來做
sops --encrypt --encrypted-regex '^(extra)$' --gcp-kms $KMS_PATH secret.yaml > secret_partial.enc.yaml
cat secret_partial.enc.yaml
apiVersion: v1
kind: Secret
metadata:
name: sample
type: Opaque
data:
extra: ENC[AES256_GCM,data:ZdIrxKINFeQ=,iv:bFEgGrUolwScM7tLYKv8HrXp0RqYS2W9PxFKEbbt6SQ=,tag:mbUN3m4onfzze+upyPFOpA==,type:str]
這樣我們就可以安心的把secret放在git上啦。不過大家還是要記得key還是要記得rotate。