Kubernetes Secret

閱讀時間約 8 分鐘


raw-image

甚麼是secret

在 Kubernetes 裡,Secret 就像是一個保險箱,可以放你任何不想公開的東西。比如說密碼、API 金鑰、憑證等,這樣的資料可能會被放在 Pod 裡,但你可以用 Secret 來避免直接在應用程式的程式碼中暴露這些機密資料。 可以說 Secret 就像是 ConfigMap 的一個好朋友,但更專門用來保護機密資料的地方。

為甚麼需要secret

最主要的用意是保護你的敏感資訊,不讓它們在 Pod 或容器中以明文流傳。這樣可以讓我們的應用程式變得更安全,減少機密資訊外洩的風險。還能讓你的秘密資料在不同 Pod 之間分享,並且保有安全性。

何時使用secret

  1. 保存必要應用程式的憑證,如 TLS 證書,以確保安全通信。
  2. 儲存應用程式所需的金鑰,包括外部服務的 API 金鑰,確保安全連接。
  3. 保管敏感的環境變數,如資料庫密碼等機密驗證資訊,維護應用程式安全性。
  4. 安全儲存驗證資訊,如 OAuth 令牌,用於與其他應用程式進行安全交互。
  5. 維持隱私的配置設定,如設定文件、金鑰路徑等,確保敏感資訊不外洩。

secret的類型有哪些

  • Opaque:使用者定義的任意資料
  • kubernetes.io/service-account-token:服務帳戶令牌
  • kubernetes.io/dockercfg:~/.dockercfg 檔案的序列化形式
  • kubernetes.io/dockerconfigjson:~/.docker/config.json 檔案的序列化形式
  • kubernetes.io/basic-auth:用於基本身份驗證的憑證
  • kubernetes.io/ssh-auth:用於 SSH 身份驗證的憑證
  • kubernetes.io/tls:用於 TLS 客戶端或伺服器端的資料
  • bootstrap.kubernetes.io/token:啟動引導令牌資料

如何撰寫使用secret

建立secret

  1. 聲明式
apiVersion: v1
kind: Secret
metadata:
name: my-secret
data:
username: YWRtaW4= # Base64 編碼的 "admin"
password: c2VjcmV0cGFzc3dvcmQ= # Base64 編碼的 "secretpassword"

2. 宣告式

  • 從命令行傳遞資訊建立secret
kubectl create secret generic my-secret --from-literal=username=admin --from-literal=password=secretpassword
  • 從檔案建立secret
kubectl create secret generic my-secret --from-file=path/to/username.txt --from-file=path/to/password.txt

使用secret

我們可以用剛剛創建的 my-secret 來做以下的範例

  1. secret作為環境變數
apiVersion: v1
kind: Pod
metadata:
name: secret-env-demo-pod
spec:
containers:
- name: demo-container
image: busybox
command: ["/bin/sh", "-c", "echo Username: $USERNAME && echo Password: $PASSWORD"]
env:
- name: USERNAME
valueFrom:
secretKeyRef:
name: my-secret
key: username
- name: PASSWORD
valueFrom:
secretKeyRef:
name: my-secret
key: password
restartPolicy: Never

透過kubectl logs secret-env-demo-pod查看log

Username: admin
Password: secretpassword

2. 將secret掛載到一個或多個容器

apiVersion: v1
kind: Pod
metadata:
name: secret-volume-demo-pod
spec:
containers:
- name: first-container
image: busybox
command: ["/bin/sh", "-c", "cat /etc/secret/username"]
volumeMounts:
- name: secret-volume
mountPath: /etc/secret
- name: second-container
image: busybox
command: ["/bin/sh", "-c", "cat /etc/secret/password"]
volumeMounts:
- name: secret-volume
mountPath: /etc/secret
volumes:
- name: secret-volume
secret:
secretName: my-secret

使用以下命令檢查輸出

kubectl logs secret-volume-demo-pod -c first-container
kubectl logs secret-volume-demo-pod -c second-container

output

## first-container
admin

## second-container
secretpassword

3. secret作為拉取private registry image時使用

apiVersion: v1
kind: Pod
metadata:
name: secret-imagepull-demo-pod
spec:
containers:
- name: demo-container
image: <private_registry_image>
imagePullSecrets:
- name: my-secret

secret有哪些特點

  1. 強大的資料加密:Secret 的一大優點在於它可以對敏感資料進行強大的加密保護。這保障了秘密資訊不會輕易被未授權的人看到,大幅減低了資訊外洩的風險。
  2. Base64 編碼的轉換:Secret 在儲存資料時會使用 Base64 編碼,但是請注意這並非最高等級的安全標準,它不能取代真正的加密方法。這樣的編碼能夠保護資料,但需要在操作時謹慎以保障資訊安全。
  3. 簡便的整合:透過 Secret,我們能夠輕鬆地將敏感資料整合到應用程式中,例如透過環境變數、掛載資料夾等方式,讓 Pod 可以無縫地使用這些敏感資料。
  4. 安全的資訊分享:Secret 也提供了一種安全的方式,讓不同的 Pod 或其他 Kubernetes 資源可以共用敏感資訊,同時保持資料的保密性。這讓不同部分的應用能夠互相協作,同時不會威脅資訊安全。

Reference

avatar-img
17會員
83內容數
golang
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Alan的開發者天地 的其他內容
👨‍💻簡介 今天早上在下kubectl get pods時,突然跳出了以下錯誤 Unable to connect to the server: x509: certificate has expired or is not yet valid
👨‍💻簡介 因在wsl環境下使用websocket通訊協議,並在windows使用postman發生連線被拒 嘗試了localhost與127.0.0.1都無效,爬文後找到了一些解決辦法,這邊簡單紀錄一下
👨‍💻簡介 從來沒想過部署可以如此的方便快速,第一次接觸到Zeabur的時候覺得他跟一般的雲端服務商差不多,架設網站用個vm之類的,但仔細去摸索後才發現他是個想讓開發人員專注在寫扣這件事上,不需去管任何infra相關事項的一個服務,像是架設wordpress需要sql,就簡單的點兩下即可完
什麼是 Kubernetes Deployment? 一樣先來個官網解說 A Deployment provides declarative updates for Pods and ReplicaSets. You describe a desired state in a Deployment,
👨‍💻Intro 為了實現vscode在wsl環境下使用ssh連接到gce的需求,在爬文後找到一篇解法,因此記錄下來,方便日後查詢 🎯setup 建立ssh.bat檔案,並放在windows下任意位置 2. vscode設定ssh.bat路徑 打開vscode的settings -> exte
GitLab不僅是一個源代碼管理工具,它還提供了一個統一的平台,將開發、運營和安全等流程整合在一起。通過GitLab,可以在單一的應用程序中進行專案計劃、源代碼管理、分支控制、CI/CD等操作。不論角色為何,GitLab提供了一個統一的資訊來源,讓你輕鬆地管理和追蹤整個開發流程。它消除了工具鏈的複雜
👨‍💻簡介 今天早上在下kubectl get pods時,突然跳出了以下錯誤 Unable to connect to the server: x509: certificate has expired or is not yet valid
👨‍💻簡介 因在wsl環境下使用websocket通訊協議,並在windows使用postman發生連線被拒 嘗試了localhost與127.0.0.1都無效,爬文後找到了一些解決辦法,這邊簡單紀錄一下
👨‍💻簡介 從來沒想過部署可以如此的方便快速,第一次接觸到Zeabur的時候覺得他跟一般的雲端服務商差不多,架設網站用個vm之類的,但仔細去摸索後才發現他是個想讓開發人員專注在寫扣這件事上,不需去管任何infra相關事項的一個服務,像是架設wordpress需要sql,就簡單的點兩下即可完
什麼是 Kubernetes Deployment? 一樣先來個官網解說 A Deployment provides declarative updates for Pods and ReplicaSets. You describe a desired state in a Deployment,
👨‍💻Intro 為了實現vscode在wsl環境下使用ssh連接到gce的需求,在爬文後找到一篇解法,因此記錄下來,方便日後查詢 🎯setup 建立ssh.bat檔案,並放在windows下任意位置 2. vscode設定ssh.bat路徑 打開vscode的settings -> exte
GitLab不僅是一個源代碼管理工具,它還提供了一個統一的平台,將開發、運營和安全等流程整合在一起。通過GitLab,可以在單一的應用程序中進行專案計劃、源代碼管理、分支控制、CI/CD等操作。不論角色為何,GitLab提供了一個統一的資訊來源,讓你輕鬆地管理和追蹤整個開發流程。它消除了工具鏈的複雜
你可能也想看
Google News 追蹤
1. 密碼學的核心概念 (1)私鑰與公鑰(Private Key and Public Key) 密碼學中常用非對稱加密技術(Asymmetric Cryptography),其中包含一對密鑰: 私鑰(Private Key): 一個由用戶保密的唯一密鑰,用於對交易進行簽署或解密。私鑰是用戶控
Thumbnail
冷钱包地址公开风险大揭秘!冷钱包地址其实像银行卡号,泄露将危及数字资产安全;钱包地址和私钥是成对出现的,公开地址将让他人知道资产余额,私钥则是密码。因此,冷钱包地址不宜公开。 🚀 币安 - 全球最大加密货币交易所 💥 独家优惠 💥 💰 注册即享 20% 手续费返佣 🔑 专属邀请码:
Thumbnail
加密钱包是一种软件产品或物理设备,可将公钥和私钥存储到您的加密货币帐户中,密钥是一串数字和字母,用于加密和解密加密交易并保护加密账户,那么,如何保护您的加密钱包?币圈有哪些主流的加密钱包?本文将为大家详细介绍 🚀 币安 - 全球最大加密货币交易所 💥 独家优惠 💥 💰 注册即享 20%
了解如何安全存储加密货币,保护您的财富免受黑客和骗子的攻击。掌握正确的存储方法,避免常见的风险,提高投资回报。 引言 加密货币市场的激增,吸引了越来越多的投资者加入其中。但是,加密货币的安全存储问题却成了投资者最大的担忧。黑客攻击、骗局和umanerror等风险随时可能发生,导致投资者损失惨重
了解公钥密码学在加密货币安全中的关键作用,掌握加密货币交易和投资的基本概念,避免风险和损失。 引言 在加密货币市场中,安全是投资者最关心的问题之一。公钥密码学是加密货币安全的基石,它保护着交易者的隐私和资产。然而,对于许多新手投资者来说,公钥密码学仍然是一个陌生的概念。本文将深入探讨公钥密码学
了解分布式存储在边缘计算中的隐私保护技术如何影响加密货币市场的发展,并探索其在隐私保护和数据安全方面的重要性。 引言 分布式存储在边缘计算中的隐私保护技术正变得越来越重要,特别是在加密货币市场中。随着区块链技术的发展和加密货币的普及,数据隐私和安全问题日益突出。分布式存储在边缘计算中的隐私保护
加密资产安全存储策略是加密货币投资者的生命线。了解如何保护您的财富不受损失,避免常见的安全风险,并掌握加密资产安全存储的最佳实践。 在当前加密货币市场中,加密资产安全存储策略变得越来越重要。随着加密货币的普及,安全风险也在增加。因此,了解如何保护您的财富不受损失是非常必要的。 什么是加密资产
在今日數位化的世界中,保護資料的安全性尤為重要。加密憑證(SSL/TLS Certificates)扮演著確保網站和用戶之間資料傳輸安全的重要角色。本文將深入探討加密憑證的原理、作用以及如何選擇適合的加密憑證來保護您的網站。 1. 加密憑證的基本概念 加密憑證是一種數位檔案,用於證明網站身份的真
Thumbnail
本文將探討Kubernetes內部DNS解析的相關流程,並介紹如何利用DNS來找到服務。透過瞭解DNS的工作原理,可以讓應用服務的問題處理更有效率,並提供基本測試與結論。
Thumbnail
進入區塊鏈/Web3的世界,首先需要擁有一個錢包或帳號。本文從重要名詞和觀念入手,介紹公鑰和私鑰的重要性,以及助記詞的作用。探討加密錢包的種類,從私鑰控制權和網路連接的角度進行分類。同時提醒了私鑰保管的重要性,以及在交易所和網路交互中的安全提醒。最後透過實際案例介紹了社交工程和釣魚的危害。
1. 密碼學的核心概念 (1)私鑰與公鑰(Private Key and Public Key) 密碼學中常用非對稱加密技術(Asymmetric Cryptography),其中包含一對密鑰: 私鑰(Private Key): 一個由用戶保密的唯一密鑰,用於對交易進行簽署或解密。私鑰是用戶控
Thumbnail
冷钱包地址公开风险大揭秘!冷钱包地址其实像银行卡号,泄露将危及数字资产安全;钱包地址和私钥是成对出现的,公开地址将让他人知道资产余额,私钥则是密码。因此,冷钱包地址不宜公开。 🚀 币安 - 全球最大加密货币交易所 💥 独家优惠 💥 💰 注册即享 20% 手续费返佣 🔑 专属邀请码:
Thumbnail
加密钱包是一种软件产品或物理设备,可将公钥和私钥存储到您的加密货币帐户中,密钥是一串数字和字母,用于加密和解密加密交易并保护加密账户,那么,如何保护您的加密钱包?币圈有哪些主流的加密钱包?本文将为大家详细介绍 🚀 币安 - 全球最大加密货币交易所 💥 独家优惠 💥 💰 注册即享 20%
了解如何安全存储加密货币,保护您的财富免受黑客和骗子的攻击。掌握正确的存储方法,避免常见的风险,提高投资回报。 引言 加密货币市场的激增,吸引了越来越多的投资者加入其中。但是,加密货币的安全存储问题却成了投资者最大的担忧。黑客攻击、骗局和umanerror等风险随时可能发生,导致投资者损失惨重
了解公钥密码学在加密货币安全中的关键作用,掌握加密货币交易和投资的基本概念,避免风险和损失。 引言 在加密货币市场中,安全是投资者最关心的问题之一。公钥密码学是加密货币安全的基石,它保护着交易者的隐私和资产。然而,对于许多新手投资者来说,公钥密码学仍然是一个陌生的概念。本文将深入探讨公钥密码学
了解分布式存储在边缘计算中的隐私保护技术如何影响加密货币市场的发展,并探索其在隐私保护和数据安全方面的重要性。 引言 分布式存储在边缘计算中的隐私保护技术正变得越来越重要,特别是在加密货币市场中。随着区块链技术的发展和加密货币的普及,数据隐私和安全问题日益突出。分布式存储在边缘计算中的隐私保护
加密资产安全存储策略是加密货币投资者的生命线。了解如何保护您的财富不受损失,避免常见的安全风险,并掌握加密资产安全存储的最佳实践。 在当前加密货币市场中,加密资产安全存储策略变得越来越重要。随着加密货币的普及,安全风险也在增加。因此,了解如何保护您的财富不受损失是非常必要的。 什么是加密资产
在今日數位化的世界中,保護資料的安全性尤為重要。加密憑證(SSL/TLS Certificates)扮演著確保網站和用戶之間資料傳輸安全的重要角色。本文將深入探討加密憑證的原理、作用以及如何選擇適合的加密憑證來保護您的網站。 1. 加密憑證的基本概念 加密憑證是一種數位檔案,用於證明網站身份的真
Thumbnail
本文將探討Kubernetes內部DNS解析的相關流程,並介紹如何利用DNS來找到服務。透過瞭解DNS的工作原理,可以讓應用服務的問題處理更有效率,並提供基本測試與結論。
Thumbnail
進入區塊鏈/Web3的世界,首先需要擁有一個錢包或帳號。本文從重要名詞和觀念入手,介紹公鑰和私鑰的重要性,以及助記詞的作用。探討加密錢包的種類,從私鑰控制權和網路連接的角度進行分類。同時提醒了私鑰保管的重要性,以及在交易所和網路交互中的安全提醒。最後透過實際案例介紹了社交工程和釣魚的危害。