日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OpenShift 4 - 在 GitOps 中使用 SealedSecret 保护敏感数据

發布時間:2023/12/18 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenShift 4 - 在 GitOps 中使用 SealedSecret 保护敏感数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

《OpenShift / RHEL / DevSecOps 匯總目錄》
文本已在 OpenShift 4.10 環境中進行驗證。

為什么在 GitOps 過程中要保護 Secret 中的敏感數據

在 Kubernetes 或 OpenShift 環境中通常使用 Secret 類型對象保存用戶和密碼等敏感信息。雖然 Secret 會使用 Base64 對明文數據進行加密保存,但是這還不夠安全。尤其是在基于 GitOps 的自動化部署過程中,保存這些敏感數據的 Secret 就放在可能任何人都可以訪問的 Git Repository 中,因此就需要保護在 GitOps 過程中使用的 Secret 敏感數據。

SealedSecret 工作原理

kubeseal 運行包括兩部分:部署在 OpenShift 中的 SealedSecretController,以及客戶端 kubeseal 命令。使用過程大致如下:

  • 通過 kubeseal 命令并使用 OpenShift 認可的公鑰對 Secret 中的敏感數據進行加密,生成 SealedSecret 類型 YAML。加密后的 SealedSecret YAML 文件就可以放心存放在 Git Repository 中了。
  • 在 GipOps 過程中首先 SealedSecret 對象會被部署在 OpenShift 項目中,然后 SealedSecretController 會根據 SealedSecret 對象以及系統私鑰生成 Secret 對象。
  • 安裝環境

    安裝服務端

  • 執行命令,在 kube-system 項目中部署 sealed-secrets-controller。
  • $ oc apply -f https://github.com/bitnami-labs/sealed-secrets/releases/download/v0.18.2/controller.yaml
  • 確認 sealed-secrets-controller 已經部署成功。
  • $ oc get deploy -n kube-system sealed-secrets-controller NAME READY UP-TO-DATE AVAILABLE AGE sealed-secrets-controller 1/1 1 1 2m
  • 查看 sealed-secrets-controller 的運行日志,確認 sealed-secrets-controller 創建了 kube-system/sealed-secrets-keyXXXXX 證書。
  • $ oc logs -n kube-system deploy/sealed-secrets-controller controller version: 0.18.2 2022/09/21 03:02:28 Starting sealed-secrets controller version: 0.18.2 2022/09/21 03:02:28 Searching for existing private keys 2022/09/21 03:02:32 New key written to kube-system/sealed-secrets-keyzbk87 2022/09/21 03:02:32 Certificate is -----BEGIN CERTIFICATE----- MIIEzDCCArSgAwIBAgIQXDpPt5ppBPmawIpBqzYNlzANBgkqhkiG9w0BAQsFADAA MB4XDTIyMDkyMTAzMDIzMloXDTMyMDkxODAzMDIzMlowADCCAiIwDQYJKoZIhvcN AQEBBQADggIPADCCAgoCggIBAM4JVqTLoPrM/1uFI0GdrSPFgkyHpXLipZr4KGEa 53eBWZ7XeHX3RVNTwXQXCuveZPMSDiXL3JBVt/WwKHopowuq1XCK0G5PUQlzM9c3 l6eAfB8Se6lUofVRVThD75k/RwkDskdx4xxSvYrQKi9CrG7OvdrKEFxSJbuOWAIL VyXG+MR9cWtKg2NTYu7cFBYjhAVymk6IotGbjRL352LP9XyEUYE0XCLYaP57WwVL jGOUUqRy0oWtYd9UH2b7tZbY5JMM7imCCEZtCltM9SqKgZU3Q07DJ51O025++bYg GyDztof1B8MwSErvWx0QCbI+RsSIIgRy6Rc3gOqV0nu5RWml6zg3T0TGFbuWsjLe SfC6tpnxeGdizm8qwWOKxa1hfrdP/CQx3LdkSuAWO1+MQh9ZW09bzRM36xOxHU5B aUN9QJ6dcpUnmLF6ptWm77mllhPN0fJh2i4e/hmm7dGZI6MYFn6Vt1dYy0YMEcA6 DaBJIlzHPuqckU00pc3qn0MCujH50w+PoZNK0I0mtRL9b1hFWMVQ0s0PWpfHgX8X QjsT/LN2gm0nM0/SktjDC28pI2FZpCo0Kc9U8uqM0AUf7wb7rzB1noPizKnawsVe aM9WGV+Wx7yQmchiaFRWgllzyR58164hhw5emelVVUMEY+iKmPRyNM2ralpSjoFY m8t/AgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIAATAPBgNVHRMBAf8EBTADAQH/MB0G A1UdDgQWBBRUzpEg1KGpzint0spIRo6C97tHxDANBgkqhkiG9w0BAQsFAAOCAgEA kzHDA4XSAkD62aZi5kpoJ87SxkfsEhkio9ZQZFrOfMu+G3INmLZcKqokXXEJeEyn hUsA2RS6toQO+devaTW312Ggrwn5XMQFWXPsZ7dUn/Ph1y25B+h0ekfv1B9J3pab PvLcOY1F9bZRd2qj2FPUZBRIz8uO8nsHc/AZxxLAfkle72pvjRErRYYP0O1rZm90 iutQfe77NMtYisk3n/2wXx6S8iAiSQn81ECwJaGCbvggFrnSn/JJYAAiG2eMkt9l t/HbTvzVBnXIJOZXaazKd2Na5wNmSKcsknVQhkAIf7VHYXA6eMIAYgai8fEh3KB3 pMEkaOhPUZUWgxv+bq+um5KDpQzgZx+Dx/nGCdJfa7yQHMHRzMgYOoryb6BwtL8h Ue3Y9N9OCcpoW1aXjmffV2Z7+udKTFpOp/sFQc5DJnunTFS9dyqESQiA55U/PLGy vkjSfA6+ybIeFzy1DlcQcAOE5ewOiVaATp4Em8T1c75/eU+dBsU9w07NRYA4H8NB PT2GUG/d656AkMOn/OBEKoDZc9AaiaCXjIWJHAiart4u9W3tdpi2ymDOUyDXgXPa WjGGkOx6rabMdeb6GxTSZNoUKcNkEdJqshoBrAZ1rS8b29xjZcugRFHmurxEZWRv S4VjvLJqAeDW1BkOGLfi9L44AcKW/yyMAUwQ1cglEMY= -----END CERTIFICATE-----2022/09/21 03:02:32 HTTP server serving on :8080
  • 查看 sealed-secrets-keyzbk87 中包含的秘鑰內容。
  • $ oc get secret -n kube-system sealed-secrets-keyzbk87 -oyaml
  • 執行命令可將公鑰證書下載到本地(確認其內容和上面日志中的證書相同),以便在 kubeseal 無法訪問 OpenShift 時使用。
  • $ kubeseal --fetch-cert > my-pub-cert.pem $ cat my-pub-cert.pem -----BEGIN CERTIFICATE----- MIIEzDCCArSgAwIBAgIQXDpPt5ppBPmawIpBqzYNlzANBgkqhkiG9w0BAQsFADAA MB4XDTIyMDkyMTAzMDIzMloXDTMyMDkxODAzMDIzMlowADCCAiIwDQYJKoZIhvcN AQEBBQADggIPADCCAgoCggIBAM4JVqTLoPrM/1uFI0GdrSPFgkyHpXLipZr4KGEa 53eBWZ7XeHX3RVNTwXQXCuveZPMSDiXL3JBVt/WwKHopowuq1XCK0G5PUQlzM9c3 l6eAfB8Se6lUofVRVThD75k/RwkDskdx4xxSvYrQKi9CrG7OvdrKEFxSJbuOWAIL VyXG+MR9cWtKg2NTYu7cFBYjhAVymk6IotGbjRL352LP9XyEUYE0XCLYaP57WwVL jGOUUqRy0oWtYd9UH2b7tZbY5JMM7imCCEZtCltM9SqKgZU3Q07DJ51O025++bYg GyDztof1B8MwSErvWx0QCbI+RsSIIgRy6Rc3gOqV0nu5RWml6zg3T0TGFbuWsjLe SfC6tpnxeGdizm8qwWOKxa1hfrdP/CQx3LdkSuAWO1+MQh9ZW09bzRM36xOxHU5B aUN9QJ6dcpUnmLF6ptWm77mllhPN0fJh2i4e/hmm7dGZI6MYFn6Vt1dYy0YMEcA6 DaBJIlzHPuqckU00pc3qn0MCujH50w+PoZNK0I0mtRL9b1hFWMVQ0s0PWpfHgX8X QjsT/LN2gm0nM0/SktjDC28pI2FZpCo0Kc9U8uqM0AUf7wb7rzB1noPizKnawsVe aM9WGV+Wx7yQmchiaFRWgllzyR58164hhw5emelVVUMEY+iKmPRyNM2ralpSjoFY m8t/AgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIAATAPBgNVHRMBAf8EBTADAQH/MB0G A1UdDgQWBBRUzpEg1KGpzint0spIRo6C97tHxDANBgkqhkiG9w0BAQsFAAOCAgEA kzHDA4XSAkD62aZi5kpoJ87SxkfsEhkio9ZQZFrOfMu+G3INmLZcKqokXXEJeEyn hUsA2RS6toQO+devaTW312Ggrwn5XMQFWXPsZ7dUn/Ph1y25B+h0ekfv1B9J3pab PvLcOY1F9bZRd2qj2FPUZBRIz8uO8nsHc/AZxxLAfkle72pvjRErRYYP0O1rZm90 iutQfe77NMtYisk3n/2wXx6S8iAiSQn81ECwJaGCbvggFrnSn/JJYAAiG2eMkt9l t/HbTvzVBnXIJOZXaazKd2Na5wNmSKcsknVQhkAIf7VHYXA6eMIAYgai8fEh3KB3 pMEkaOhPUZUWgxv+bq+um5KDpQzgZx+Dx/nGCdJfa7yQHMHRzMgYOoryb6BwtL8h Ue3Y9N9OCcpoW1aXjmffV2Z7+udKTFpOp/sFQc5DJnunTFS9dyqESQiA55U/PLGy vkjSfA6+ybIeFzy1DlcQcAOE5ewOiVaATp4Em8T1c75/eU+dBsU9w07NRYA4H8NB PT2GUG/d656AkMOn/OBEKoDZc9AaiaCXjIWJHAiart4u9W3tdpi2ymDOUyDXgXPa WjGGkOx6rabMdeb6GxTSZNoUKcNkEdJqshoBrAZ1rS8b29xjZcugRFHmurxEZWRv S4VjvLJqAeDW1BkOGLfi9L44AcKW/yyMAUwQ1cglEMY= -----END CERTIFICATE-----

    安裝客戶端

  • 運行命令安裝客戶端
  • $ wget https://github.com/bitnami-labs/sealed-secrets/releases/download/v0.18.2/kubeseal-0.18.2-linux-amd64.tar.gz $ tar -xvzf kubeseal-0.18.2-linux-amd64.tar.gz kubeseal $ sudo install -m 755 kubeseal /usr/local/bin/kubeseal

    驗證

  • 創建測試項目
  • $ oc new-project mysecret
  • 執行命令生成定義 Secret 的 YAML 格式定義文件,其中包含 username 和 password 兩個敏感數據。
  • $ oc create secret generic db-secret --from-literal=username=admin --from-literal=password='password' --dry-run=client -o yaml > db-secret.yaml
  • 根據 Secret 對象生成 SealedSecret 對象定義文件
  • $ kubeseal < db-secret.yaml > db-sealedsecret.yaml
  • 如果 kubeseal 無法訪問到 OpenShift,可執行以下命令生成 SealedSecret 對象定義文件
  • $ kubeseal --format=yaml --cert=my-pub-cert.pem < db-secret.yaml > db-sealedsecret.yaml
  • 根據 YAML 文件創建 SealedSecret 對象。
  • $ oc create -f db-sealedsecret.yaml
  • 確認 SealedSecret 和 Secret 對象都創建成功。
  • $ oc get sealedsecret db-secret NAME AGE db-secret 2m40s$ oc get secret db-secret NAME TYPE DATA AGE db-secret Opaque 2 2m9s
  • 確認 sealed-secrets-controller 日志中有 SealedSecret unsealed successfully 提示。
  • $ oc logs -n kube-system deploy/sealed-secrets-controller 2022/09/21 07:02:23 Updating mysecret/db-secret 2022/09/21 07:02:23 Event(v1.ObjectReference{Kind:"SealedSecret", Namespace:"mysecret", Name:"db-secret", UID:"4a7096f1-0c80-4098-a8ce-8c7da5ab9bf0", APIVersion:"bitnami.com/v1alpha1", ResourceVersion:"521438", FieldPath:""}): type: 'Normal' reason: 'Unsealed' SealedSecret unsealed successfully
  • 執行命令,查看創建的 db-secret 對象中 username 和 password 內容正確。
  • $ oc get secret db-secret -o jsonpath='{.data.username}' | base64 -d $ oc get secret db-secret -o jsonpath='{.data.password}' | base64 -d

    其他

    另外
    https://cloud.redhat.com/blog/a-guide-to-secrets-management-with-gitops-and-kubernetes

    參考

    https://cloud.redhat.com/blog/gitops-secret-management
    https://cloud.redhat.com/blog/integrating-hashicorp-vault-in-openshift-4
    https://blog.stderr.at/openshift/2021-09-25-sealed_secrets/
    https://medium.com/@jerome_tarte/managing-your-sensitive-information-during-gitops-process-with-secret-sealed-27498c77e2b8

    總結

    以上是生活随笔為你收集整理的OpenShift 4 - 在 GitOps 中使用 SealedSecret 保护敏感数据的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。