0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何保護Kubernetes的機密信息

馬哥Linux運維 ? 來源:奇妙的Linux世界 ? 作者:奇妙的Linux世界 ? 2022-04-19 17:13 ? 次閱讀

現(xiàn)如今開發(fā)的大多數(shù)應(yīng)用程序,或多或少都會用到一些敏感信息,用于執(zhí)行某些業(yè)務(wù)邏輯。比如使用用戶名密碼去連接數(shù)據(jù)庫,或者使用秘鑰連接第三方服務(wù)。在代碼中直接使用這些密碼或者秘鑰是最直接的方式,但同時也帶來了很大的安全問題,如何保證密碼、秘鑰不被泄露。

如果你的應(yīng)用程序已經(jīng)被容器化,且使用Kubernetes(k8s),那情況會好很多。Kubernetes提供了一個原生資源,稱為“Secret”,可用于管理和存儲敏感信息。敏感信息被編碼為未加密的Base64格式,并被存儲在Secret對象中。Secret可以作為環(huán)境變量被注入到Pod內(nèi)部的容器中,也可以作為數(shù)據(jù)卷掛載到容器內(nèi)部。

為了保證敏感信息的安全性,Secret對象應(yīng)該被加密,并且應(yīng)該使用Kubernetes RBAC機制對訪問進行控制。如果你正在使用AWS公有云來托管Kubernetes集群,則可以利用AWS密鑰管理服務(wù)(KMS)對靜態(tài)數(shù)據(jù)進行加密。

Kubernetes的清單文件通常被提交到代碼倉庫中以進行版本控制。但是你可能不希望將敏感信息以純文本或Base64編碼字符串的形式提交到Git代碼倉庫中。我們都應(yīng)該知道為什么,這不安全!但是,你在Kubernetes集群之外將敏感數(shù)據(jù)保存在何處,以確保它們是安全的?

有很多方法可以解決這個問題。下面列出了其中幾個:

1選項1:加密純文本敏感數(shù)據(jù),然后再提交到Git代碼倉庫中

使用對稱或非對稱算法加密純文本敏感數(shù)據(jù)。

使用Kubernetes Custom Resource Definition(CRD)創(chuàng)建自定義的Secret對象,以使用加密的文本數(shù)據(jù)。

創(chuàng)建一個自定義Kubernetes控制器,該控制器讀取自定義Secret對象中的加密信息,并在運行時解密,并創(chuàng)建一個原生的Secret對象。

使用這種方法,你可以將加密的數(shù)據(jù)提交到Git代碼倉庫中。而且它沒有風(fēng)險,因為數(shù)據(jù)是加密的,只能用你的私鑰解密。但是你把私鑰放在哪里?

如何存儲加密密鑰和管理整個加解密過程,可以使用Bitnami的Sealed Secrets[1]。

2選擇2:使用第三方服務(wù)來存儲敏感數(shù)據(jù)

你可以將敏感數(shù)據(jù)存儲到第三方服務(wù)中,如AWS Secrets Manager或HashiCorp Vault。

創(chuàng)建自定義Kubernetes控制器,基于配置從這些服務(wù)中獲取機密信息,并在運行時創(chuàng)建Kubernetes Secret對象。

External Secrets[2]項目可以幫助你實現(xiàn)選項2。

你還可以增強應(yīng)用程序邏輯,以便在應(yīng)用程序啟動時從第三方服務(wù)讀取機密信息,但這里的整體思想是將機密信息管理與應(yīng)用程序業(yè)務(wù)邏輯分離開來,并利用Kubernetes的功能來進行相同的管理。

3快速概覽Sealed Secrets

在Sealed Secret開源項目中,你可以將你的Secret加密為一個SealedSecret,這樣就可以安全地存儲,甚至可以存儲到公共存儲庫中。SealedSecret只能由運行在目標(biāo)集群中的控制器解密,其他人,甚至包括原始作者,都無法從SealedSecret獲得原始的Secret。

Sealed Secrets由兩部分組成:

服務(wù)器端的控制器

客戶端工具:kubeseal

kubeseal使用非對稱加密來加密數(shù)據(jù),然后只有服務(wù)端的控制器才能解密數(shù)據(jù)。

這些加密數(shù)據(jù)被編碼在SealedSecret資源中,你可以將其視為創(chuàng)建Secret的配方。

下面是如何使用Sealed Secrets來管理Secret的具體步驟。

1、安裝kubeseal,這是一個客戶端工具,可以幫助你創(chuàng)建SealedSecret

>wgethttps://github.com/bitnami-labs/sealed-secrets/releases/download/v0.15.0/kubeseal-linux-amd64-Okubeseal

>sudoinstall-m755kubeseal/usr/local/bin/kubeseal

2、安裝服務(wù)器端控制器,為SealedSecret創(chuàng)建Custom Resource Definition(CRD)

>kubectlapply-fhttps://github.com/bitnami-labs/sealed-secrets/releases/download/v0.15.0/controller.yaml

rolebinding.rbac.authorization.k8s.io/sealed-secrets-service-proxiercreated
role.rbac.authorization.k8s.io/sealed-secrets-key-admincreated
clusterrole.rbac.authorization.k8s.io/secrets-unsealercreated
deployment.apps/sealed-secrets-controllercreated
customresourcedefinition.apiextensions.k8s.io/sealedsecrets.bitnami.comcreated
service/sealed-secrets-controllercreated
clusterrolebinding.rbac.authorization.k8s.io/sealed-secrets-controllercreated
serviceaccount/sealed-secrets-controllercreated
role.rbac.authorization.k8s.io/sealed-secrets-service-proxiercreated
rolebinding.rbac.authorization.k8s.io/sealed-secrets-controllercreated

3、驗證sealed-secret controller Pod是否運行

>kubectlgetpods-nkube-system-lname=sealed-secrets-controller

NAMEREADYSTATUSRESTARTSAGE
sealed-secrets-controller-7c766b885b-d5r2r1/1Running07m39s

如果你查看Pod的日志,你將看到控制器為自己創(chuàng)建的一對秘鑰,這對秘鑰將被用于加解密過程。

>kubectllogssealed-secrets-controller-7c766b885b-d5r2r-nkube-system

controllerversion:v0.15.0
2021/05/012034Startingsealed-secretscontrollerversion:v0.15.0
2021/05/012034Searchingforexistingprivatekeys
2021/05/012035Newkeywrittentokube-system/sealed-secrets-keymt6dg
2021/05/012035Certificateis
-----BEGINCERTIFICATE-----
MIIErjCCApagAwIBAgIRAJqYfaZsali26I8pvBXoFGYwDQYJKoZIhvcNAQELBQAw
ADAeFw0yMTA1MDEyMDEzMzVaFw0zMTA0MjkyMDEzMzVaMAAwggIiMA0GCSqGSIb3
DQEBAQUAA4ICDwAwggIKAoICAQDp/yO5PY8ACHBDuguhtfpOwlbScK9hZorJloyx
ixVCc57j1zMSX0pSVcrk1Yuyf6sYvBQtDi16kM70z6y/ODiz+9g87K/jY7B0UAoi
mpzM/T0tWJiG9ixyNMZhHoNREauokSlbERq3Jl8ZNTfmxHWhLH7DhkJ7MdpQfMpK
a3XHcSZyz1mXFqv+OSCCwllWCRHmHgp/vqudAv8+NYm0gnAxKt2fjlv/ObX8J1RI
CtLnlsCpp/9SyVcSTeYYaqjUsI7fTUZ7tkTE/bdQHwf3xe4DhUty7xLqMF1OPSPw
EetL8fGO0VqoSQFKQ0Bf78+8vhAA2cwkuqB6vQQm9pT3yC5niSCUo+jwFcfyknjr
yx8DINbq6K9B40EXh8X7w4I6zwYpyT0GoNU54wW0ki8pHRm7EnFeBOkUvNspzmKn
t/EZEDVq74Kkl/BRNRvKHYlwudSoJuvvX6JM8DVvRp0lMPnXnG3RLSmCP3gEFQBZ
DhbnkwO+6ADX9Q4vyqelWoHWdVGVULDlMDhSzvEhFFgPcZXzWTShH81vfl8M6lpT
U0ysZkA6i3A29XEJpPj35yWPBDWmKF5fLM3ChMt/NSJEeoJN1RboPDAgVUTxEW59
q+Tq09/zlYD7Ch8PNc3IWNXjFNXmCAAOw9Z1VBbD8p6LrC5JvBtPoWYqufWVXQD9
KDe+6wIDAQABoyMwITAOBgNVHQ8BAf8EBAMCAAEwDwYDVR0TAQH/BAUwAwEB/zAN
BgkqhkiG9w0BAQsFAAOCAgEAvu//VzDREYZPPIW1maTxo9C/nHEEuOP0rQU3zVQr
bBYf8N0b5wpCllESCgi0JDJJXrE8KrjfdtawjoBrBlHOdWHF+fIot2KbrC/i37em
/ulMAgiiJzrKM/ExJuCuH60fsSIx4wrg46tQpU8jHFWq7nGnsaE+UN3QPjuvQ+qo
KKDSBLDxLx+q9vBfaXElblh4okUI8Pr4UEEJrYiPzPM6nA9EPpy53N3si4jyDJJb
2IsCUa2bW6iBhpyZOQQUPn22ziWRQ/sYYNmtP/gX0rwtk+Rr8TTdzPYGZcYfMQ6O
TFq4Zo2/TnpCL/CUr2DiSuF2qdWGGvbQOENYq2FNuDI4zeljElcZHXA8nhpbNSJs
7VNqqz5ZTFCKyL0Gn6SawGT7EdwBT2AD3F33Qd/7bXG/On7KdVw6FKHbZOR2RcoS
YFQv7Xr8g/4atQjxDa7R5+zkxd5unsvpFhYM1UfNJc4cjJ7SmfCCHoPGiwZ0OgqB
6SvUVU64QmMMJ/jYAJkYMOakSHaRITHAvvBjpAMKxSjjb7qZD5FnpXLhRY9lNiY6
MnnQRxJskCw+R6geIAHTMzAofMfc1haIEr+3oMFZfyh1LFFsz3B4hMxXYKrWYDje
+96bhAY9X7L0UfREjmw8HCeZneEuBJjX9z/PyIeMdhViLh9uO/MAL1MBxdBVA55+
LW8=
-----ENDCERTIFICATE-----

2021/05/012035HTTPserverservingon:8080

運行以下命令查看公鑰/私鑰信息。

>kubectlgetsecret-nkube-system-lsealedsecrets.bitnami.com/sealed-secrets-key-oyaml

4、創(chuàng)建一個名為secrets.yaml的Secret清單文件

apiVersion:v1
data:
DB_PWD:cGFzc3dvcmQ=//base64encoded
DB_USER:cm9vdA==//base64encoded
kind:Secret
metadata:
name:db-secrets

現(xiàn)在讓我們使用kubeseal命令,將secrets.yaml轉(zhuǎn)變?yōu)镾ealedSecret資源清單文件。

>kubeseal--format=yamlsealed-secret.yaml

>catsealed-secret.yaml

apiVersion:bitnami.com/v1alpha1
kind:SealedSecret
metadata:
creationTimestamp:null
name:db-secrets
namespace:default
spec:
encryptedData:
DB_PWD:AgDaCRi27RV4/sVI2ok7JlqBSKT5+c7gGJog+...
DB_USER:AgAZG67CrrOBnyKIKha7xhJulr+CQGPaE/PpsjvY8jJR0IDO2...
template:
metadata:
creationTimestamp:null
name:db-secrets
namespace:default

在上面的步驟中,kubeseal從Kubernetes集群獲取公鑰并使用該公鑰加密數(shù)據(jù)。

5、讓我們使用SealedSecret資源清單文件,在Kubernetes中創(chuàng)建資源。

>kubectlapply-fsealed-secret.yaml

如果你再次檢查控制器的日志,你將看到控制器攔截了請求,并解密來自SealedSecret的加密數(shù)據(jù),數(shù)據(jù)被解密后,將創(chuàng)建Kubernetes的Secret對象。

>kubectllogssealed-secrets-controller-7c766b885b-d5r2r-nkube-system

2021/05/012006Updatingdefault/db-secrets
2021/05/012006Event(v1.ObjectReference{Kind:"SealedSecret",Namespace:"default",Name:"db-secrets",UID:"fd89a7e7-c81a-4110-9de6-6b65195169d3",APIVersion:"bitnami.com/v1alpha1",ResourceVersion:"19365",FieldPath:""}):type:'Normal'reason:'Unsealed'SealedSecretunsealedsuccessfully

一旦創(chuàng)建了Kubernetes Secret對象,就可以將它作為環(huán)境變量注入到容器中,或者作為數(shù)據(jù)卷掛載。

上面步驟4中創(chuàng)建的SealedSecret資源清單文件可以被提交到Git代碼倉庫中。secrets.yaml文件可以丟棄,因為它不再需要了。被存儲在sealed-secret.yaml文件中的數(shù)據(jù)是安全的,它是被加密的,且只能由運行在Kubernetes集群中的Controller解密。

希望這篇文章能讓你知道如何保護Kubernetes的機密信息。

原文標(biāo)題:如何優(yōu)雅的保護 Kubernetes 中的 Secrets

文章出處:【微信公眾號:馬哥Linux運維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

審核編輯:彭菁

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 控制器
    +關(guān)注

    關(guān)注

    112

    文章

    16133

    瀏覽量

    177147
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4728

    瀏覽量

    68252
  • kubernetes
    +關(guān)注

    關(guān)注

    0

    文章

    223

    瀏覽量

    8683

原文標(biāo)題:如何優(yōu)雅的保護 Kubernetes 中的 Secrets

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    高通指控蘋果偷竊芯片機密,用于改進英特爾的芯片性能

    9月26日訊,據(jù)CNBC報道,提交至美國加州高等法院的一份文件顯示,高通對蘋果提出了多項指控,其中包括蘋果偷竊其機密信息和商業(yè)機密,以改進高通的競爭對手英特爾的芯片性能。
    的頭像 發(fā)表于 09-26 10:37 ?3469次閱讀

    SK海力士機密信息被盜

    據(jù)韓媒報道,近期SK海力士遭受了黑客組織Maze的勒索攻擊,目前Maze聲稱入侵了SK海力士11TB的數(shù)據(jù),并公布了約600MB的數(shù)據(jù)信息,約占其總數(shù)據(jù)量的5%。
    的頭像 發(fā)表于 08-24 14:21 ?3190次閱讀

    如何讓員工高效地分享企業(yè)知識的同時又能保護機密文件的

    NTA-文檔保密的“硬”辦法如何防止員工離職時擅自拷貝帶走機密資料? 如何防止設(shè)計圖紙、程序源代碼等機密信息等泄露給競爭對手? 如何讓員工高效地分享企業(yè)知識的同時又能保護機密文件的安全
    發(fā)表于 09-16 10:04

    防止u盤機密文件泄露,請給U盤文件加密

    給網(wǎng)絡(luò)攻擊或者丟失,沒有你設(shè)置的密碼也是無法打開U盤中某些重要的文件。 為了保證你U盤中某些機密資料、個人隱私的安全,防止此類信息外泄給你帶來損失,請給你U盤中的文件加密保護。如果你使用的U盤是加密U
    發(fā)表于 04-20 17:15

    CyUSBSerial庫許可條款什么是機密和專有信息?

    所有,2012-2013,保留所有權(quán)利未發(fā)表的、許可的軟件。第七章機密信息和專有信息這是柏樹的特性。第七章這個文件的使用是受支配的由文件中包含的許可協(xié)議第七章安裝和/許可證/許可證/許可證第七章
    發(fā)表于 10-22 14:48

    基于STC的加密信息存儲與游戲操作系統(tǒng)設(shè)計

    HNU小學(xué)期計算機系統(tǒng)設(shè)計與創(chuàng)新基礎(chǔ)訓(xùn)練——加密信息存儲與游戲操作系統(tǒng)一、 選題名稱二、 選題背景三、 實現(xiàn)功能1. 主要功能2. 細節(jié)設(shè)計四、 設(shè)計思路五、 基本原理1. 數(shù)碼管與發(fā)光二極管1.1
    發(fā)表于 02-18 06:13

    彩色遙感影像的機密詮釋信息隱藏技術(shù)

    實現(xiàn)彩色遙感影像的機密詮釋信息隱藏技術(shù),研究信息嵌入域的選擇方法,提出空間信息隱藏W(L) 矩陣方法。實驗結(jié)果表明,該技術(shù)具有透明性較高、信息
    發(fā)表于 03-20 13:40 ?24次下載

    什么是增強保密信

    什么是增強保密信件 為提供電子郵件的保密性,需要一定的機制來向發(fā)送者和接收者確保信息機密的,信息來源可靠并沒有被更改和
    發(fā)表于 04-03 16:19 ?340次閱讀

    高通指控蘋果竊取商業(yè)機密幫助英特爾 最后因證據(jù)不足駁回訴訟請求

    26日,高通提交給加州最高法院的文件顯示,指控蘋果竊取其大量機密信息和商業(yè)機密,從而幫助英特爾公司提升芯片性能。
    的頭像 發(fā)表于 09-28 11:55 ?3329次閱讀

    虛擬局域網(wǎng)的優(yōu)點

    虛擬局域網(wǎng)優(yōu)點之一:具有安全穩(wěn)定性。虛擬的局域網(wǎng)可以使局域網(wǎng)更加的安全,它能夠讓比較敏感的帶有數(shù)據(jù)的用戶和網(wǎng)絡(luò)的其他部分進行一定的隔離,這樣就能夠保護網(wǎng)絡(luò)的機密信息了,可以有效的防止機密信息的泄漏。
    的頭像 發(fā)表于 02-28 14:26 ?1.3w次閱讀

    超過40款高通芯片存在“旁路漏洞”,該漏洞可被用來竊取芯片內(nèi)所儲存的機密信息

    4月28日消息,近日英國安全機構(gòu)NCC Group公布了一則重磅消息:超過40款高通芯片存在“旁路漏洞”,該漏洞可被用來竊取芯片內(nèi)所儲存的機密信息,并波及采用相關(guān)芯片的Android手機等相關(guān)裝置。
    的頭像 發(fā)表于 04-30 14:22 ?3649次閱讀

    晶心科技與Silex Insight達成戰(zhàn)略合作,推出RISC-V信任根完整解決方案

    Silex Insight推出的高級eSecure IP模塊為安全應(yīng)用的完整解決方案,能防止機密信息外泄,并提供安全啟動、密鑰認證與應(yīng)用程序的保護
    發(fā)表于 11-07 14:26 ?1561次閱讀

    LG電子和SK海力士遭遇勒索軟件攻擊,竊取50GB機密信息

    這年頭不管多大的公司,一不小心都有可能被黑客盯上,韓國兩大電子巨頭SK海力士、LG電子就被黑了,多達50GB機密文件被加密勒索。
    的頭像 發(fā)表于 09-11 16:58 ?2019次閱讀

    電腦的機箱風(fēng)扇不聯(lián)網(wǎng)也能泄露機密信息

    想法太天真了。他們用實驗證明,即使不聯(lián)網(wǎng),機箱里的風(fēng)扇也能泄露你的機密信息。 ? 這項研究的作者 Mordechai Guri 來自以色列本·古里安大學(xué)。在最近發(fā)表的一篇論文中,他提出了一種名為 AiR-ViBeR 的數(shù)據(jù)竊取技術(shù)。令人頗為震驚的是,這
    的頭像 發(fā)表于 01-12 09:43 ?2746次閱讀

    特斯拉起訴前供應(yīng)商:干電極電池技術(shù)商業(yè)機密泄露風(fēng)波

    其竊取特斯拉的商業(yè)機密,并試圖為與電動汽車電池相關(guān)的機密信息申請專利,同時將這些敏感信息分享給特斯拉的競爭對手。
    的頭像 發(fā)表于 06-20 10:36 ?1694次閱讀