揭秘 Kubernetes Secret:安全存储敏感信息的秘密武器

news2024/12/24 8:33:18

Kubernetes Secret

Secret 是 Kubernetes 中用于存储敏感信息的资源,例如密码、API 密钥和 SSH 密钥。Secret 可以被 Pod 和其他 Kubernetes 资源使用,而无需将敏感信息暴露在配置文件或环境变量中。

1. Secret 类型

Kubernetes 支持多种类型的 Secret,包括:

  • Opaque Secret: 用于存储任意类型的数据,例如密码和 API 密钥。

  • DockerConfig Secret: 用于存储 Docker 镜像仓库的认证信息。

  • TLS Secret: 用于存储 TLS 证书和密钥。

  • SSH Secret: 用于存储 SSH 密钥。

2. Secret 用途

Secret 可用于以下场景:

  • 存储数据库密码

  • 存储 API 密钥

  • 存储 SSH 密钥

  • 存储 TLS 证书和密钥

  • 存储任何其他敏感信息

3. Secret 类型选择

选择合适的 Secret 类型取决于您要存储的数据类型。

  • 如果您要存储任意类型的数据,请使用 Opaque Secret。

  • 如果您要存储 Docker 镜像仓库的认证信息,请使用 DockerConfig Secret。

  • 如果您要存储 TLS 证书和密钥,请使用 TLS Secret。

  • 如果您要存储 SSH 密钥,请使用 SSH Secret。

4. 创建 Secret

您可以使用 kubectl 命令行工具或 Kubernetes API 创建 Secret。

示例:创建 Opaque Secret

apiVersion: v1kind: Secretmetadata:  name: my-secretdata:  username: my-username  password: my-password
  • 创建 DockerConfig Secret:

apiVersion: v1kind: Secretmetadata:  name: my-dockerconfig-secretdata:  .dockercfg: $(echo -n "{\"auths\":{\"https://index.docker.io/v1/\":{\"username\":\"my-username\",\"password\":\"my-password\"}}}") | base64 -w 0
  • 创建 TLS Secret:

apiVersion: v1kind: Secretmetadata:  name: my-tls-secretdata:  tls.crt: $(cat my-tls.crt | base64 -w 0)  tls.key: $(cat my-tls.key | base64 -w 0)
  • 创建 SSH Secret:

apiVersion: v1kind: Secretmetadata:  name: my-ssh-secretdata:  ssh-privatekey: $(cat my-ssh-privatekey | base64 -w 0)

5. 使用 Secret

您可以使用以下两种方式将 Secret 注入到 Pod 中:

  • 环境变量: 使用 envFrom 字段将 Secret 数据注入到 Pod 的环境变量中。

  • Volume: 将 Secret 挂载到 Pod 的 Volume 中。

  • YAML文件

示例:使用环境变量注入 Secret

apiVersion: v1kind: Podmetadata:  name: my-podspec:  containers:  - name: my-container    envFrom:    - secretRef:        name: my-secret

创建 Pod

apiVersion: v1kind: Podmetadata:  name: my-podspec:  containers:  - name: my-container    envFrom:    - secretRef:        name: my-secret

查看 Pod 环境变量​​​​​​​

kubectl exec -it my-pod -- env | grep -i username
输出结果username=my-username

示例:使用 Volume 注入 Secret

创建 Secret​​​​​​​

apiVersion: v1kind: Secretmetadata:  name: my-secretdata:  username: my-username  password: my-password

创建 Pod​​​​​​​

apiVersion: v1kind: Podmetadata:  name: my-podspec:  containers:  - name: my-container    volumeMounts:    - name: my-secret      mountPath: /etc/secret  volumes:  - name: my-secret    secret:      secretName: my-secret

查看 Pod 中的文件​​​​​​​

kubectl exec -it my-pod -- cat /etc/secret/username输出:my-username

6.管理 Secret

查看 Secret

kubectl get secret

编辑 Secret

  • 编辑 Secret YAML 文件。

  • 使用 kubectl 命令应用 YAML 文件

kubectl apply -f my-secret.yaml

删除 Secret

kubectl delete secret my-secret

7.示例:使用 OpenSSL 加密 Secret 数据

安装 OpenSSL

  • 查看系统是否已安装 OpenSSL

openssl version -a
  • 下载 OpenSSL 源码

    从 OpenSSL 官方网站: https://www.openssl.org/source/ 下载最新版本的 OpenSSL 源码。

  • 解压 OpenSSL 源码

tar -xzf openssl-*.tar.gz
  • 编译和安装 OpenSSL​​​​​​​

cd openssl-*
./config
make
make install
  • 配置环境变量

    • 在 /etc/ld.so.conf 文件的末尾添加以下内容:

/usr/local/ssl/lib
    • 运行以下命令更新环境变量:

ldconfig
  • 验证 OpenSSL 安装

openssl version -a输出OpenSSL 3.0.13  7 MAR 2024

生成加密密钥

openssl genrsa -out my-secret.key 2048

加密 Secret 数据

openssl aes-256-cbc -in my-secret.yaml -out my-secret.yaml.enc -kfile my-secret.key

创建 Secret​​​​​​​

apiVersion: v1kind: Secretmetadata:  name: my-secretdata:  secret-data: $(cat my-secret.yaml.enc | base64 -w 0)

使用环境变量注入 Secret 并解密​​​​​​​

apiVersion: v1kind: Podmetadata:  name: my-podspec:  containers:  - name: my-container    envFrom:    - secretRef:        name: my-secret

输出解密 Secret 数据​​​​​​​

kubectl exec -it my-pod -- sh -c 'echo $SECRET_DATA | base64 -d | openssl aes-256-cbc -d -kfile my-secret.key'# 这是您的明文 Secret 数据

Secret 是 Kubernetes 中用于存储敏感信息的强大工具。 通过选择合适的 Secret 类型并使用安全实践,可以保护您的敏感信息并确保您的应用程序安全可靠。

关注我,我们一起学习更多知识,带你了解更多职场信息内容.

想要了解更多技术文章请关注公众号“职谷智享”,关注后回复关键字【秒杀】可以领取秒杀系统学习资料

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1512677.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智能家居涉及到的12个物联网传感器!

智能家居领域涉及到的物联网传感器种类繁多,下面列举一些常见的物联网传感器: 温度传感器:用于检测室内温度,可以实现智能温控和节能控制。湿度传感器:用于检测室内湿度,可以实现智能湿度控制和防潮功能。…

Python Excel 文本编辑库之xlsxwriter使用详解

概要 在现代数据处理和报表生成中,Excel 文件是一个非常常见的格式。Python XlsxWriter 库是一个强大的工具,可以帮助开发者轻松创建和编辑 Excel 文件,并且具有高度的灵活性和可定制性。本文将全面介绍 XlsxWriter 库的原理、功能、用法,并通过丰富的示例代码来展示其强大…

Linux 安装 Gitblit

1.下载Gitblit 官网地址:Gitblit,目前最新的是1.9.3 2.上传到服务器 ①在服务器上新建目录:/usr/local/gitblit ②将下载的文件上传到服务器:/usr/local/gitblit/gitblit-1.9.3.tar.gz ③解压文件: cd /usr/local…

如何考上东南大学计算机学院?

东南大学招生学院是计算机科学与工程学院、苏州联合研究生院,复试公平,不歧视双非考生,985院校中性价比较高,但近年热度在逐年上涨,需要警惕。 建议报考计算机科学与工程学院081200计算机科学与技术专业目标分数为380…

doris安装(docker方式)

背景 doris有两个进程 fe,处理用户请求,查询,元数据管理,节点管理be,数据存储,查询计划执行 架构图如下: 参考:https://doris.apache.org/zh-CN/docs/get-starting/what-is-apache-doris 1、定义docker-compose文件 version: 3 services:docker-fe:image: "apac…

1137. 第N个泰波那契数- 力扣

1. 题目 泰波那契序列 Tn 定义如下: T0 0, T1 1, T2 1, 且在 n > 0 的条件下 Tn3 Tn Tn1 Tn2 给你整数 n,请返回第 n 个泰波那契数 Tn 的值。 2. 示例 3. 分析 1. 状态表示:dp[i]表示:第i个泰波那契数的值 2. 状态转移…

安装配置Redis

Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并…

【网络原理】TCP 协议中比较重要的一些特性(二)

目录 1、TCP 状态转换 1.1、三次握手状态 1.2、四次挥手状态 2、滑动窗口 3、流量控制 1、TCP 状态转换 TCP 状态和“线程状态”是类似的概念,用于描述 TCP 连接过程中正在执行什么操作。 TCP 服务器和客户端都有一定的数据结构来保存连接信息,而…

字节跳动后端工程师实习生笔试题-c++

字节跳动后端工程师实习生笔试题链接 笔试题 1. 最大映射2. 木棒拼图3. 魔法权值4. 或与加 1. 最大映射 有 n 个字符串,每个字符串都是由 A-J 的大写字符构成。现在你将每个字符映射为一个 0-9 的数字,不同字符映射为不同的数字。这样每个字符串就可以看…

[WUSTCTF2020]朴实无华

查看robots.txt 找到/fAke_flagggg.php 显然这是个假的flag&#xff0c;但是我们在header处发现了fl4g.php 近来发现中文全部变成了乱码 插件转成utf8后正常显示 <?php header(Content-type:text/html;charsetutf-8); error_reporting(0); highlight_file(__file__);//leve…

LeetCode - 和为K的子数组

LCR 010. 和为 K 的子数组 看到这道题的时候&#xff0c;感觉还挺简单的&#xff0c;找到数组中和为k的连续子数组的个数&#xff0c;无非就是一个区间减去另一个区间的和等于k&#xff0c;然后想到了用前缀和来解决这道问题。再算连续子数组出现的个数的时候&#xff0c;可以使…

汽车大灯汽车尾灯破裂裂纹破损破洞掉角崩角等问题能修复吗?修复后灯罩颜色和之前相比有什么变化?

答案是肯定的&#xff0c;汽车大灯汽车尾灯破裂裂纹破损破洞掉角崩角等问题是可以修复的。 修复后的汽车灯罩颜色可能会与之前有所不同&#xff0c;这主要取决于修复的方法和使用的材料。 首先&#xff0c;如果修复过程中使用了喷漆翻新&#xff0c;那么灯罩的颜色可能会与原来…

学习笔记-华为IPD转型2020:1,IPD的重要意义

华为产品开发转型&#xff1a;IPD计划 大多数公司发现&#xff0c;当公司大幅增长时&#xff0c;在较小规模上有效的管理实践不再有效。产品开发过程也是如此。随着华为的发展&#xff0c;该公司遇到了产品故障率更高、开发周期更长和研发成本增加等问题。然后&#xff0c;它转…

基于GIS技术的智慧农业大数据平台解决方案

1.建设背景 国务院促进大数据发展纲要 纲要提出大力推动政府信息系统和公共数据互联开放共享&#xff0c;加快政府信息平台整合&#xff0c;推动数据资源整合&#xff0c;提升治理水平。按照“五个统一”建设“大平台“&#xff0c;融合“大数据”&#xff0c;构建“大系统”落…

C语言sizeof操作符与strlen函数

1.sizeof与strlen的介绍 (1).sizeof 计算变量的内存空间大小。底层实际上是对变量类型的计算。是一个单目操作符&#xff0c;不是函数&#xff0c;后面的括号可以省略 (2).strlen 函数原型 strlen是一个函数&#xff0c;返回的size_t类型的数据,头文件为string.h计算字符串…

运维自动化之——Ansible

一、自动化运维 1、通过xshell实现自动化运维 xshell提供会话窗口同步发送命令功能&#xff0c;但是必须将多台机器同时通过xshell窗口连接然后输入命令&#xff0c;如下点击xshell的工具---发送输入--到所有窗口或者指定窗口。 2、Ansible简介 Ansible是基于模块工作的&…

TSINGSEE青犀视频AI方案:数据+算力+算法,人工智能的三大基石

背景分析 随着信息技术的迅猛发展&#xff0c;人工智能&#xff08;AI&#xff09;已经逐渐渗透到我们生活的各个领域&#xff0c;从智能家居到自动驾驶&#xff0c;从医疗诊断到金融风控&#xff0c;AI的应用正在改变着我们的生活方式。而数据、算法和算力&#xff0c;正是构成…

安装Android Studio遇到Unable to access Android SDK add-on list的错误

第一次安装android studio的时候&#xff0c;提示&#xff1a;unable to access Android sdk add-on list 解决办法 这个错误一般是android studoi代理没有设置导致的&#xff0c;需要在setting里面设置&#xff1a; 点击Android Studio - Preferences&#xff0c;在 Appeara…

开源导出html表格项目-easyHtml

开源导出html表格项目-easyHtml 背景介绍 背景 项目的由来&#xff0c;在面试的过程中&#xff0c;发现这个需求&#xff08;导出html表格&#xff09;比较常见&#xff0c;同时也引起我的兴趣&#xff0c;所以就有了开源项目easyHtml第一个版本 介绍 功能 支持自定义表格标…

算法-图的存储,图的转置,拓扑排序

1.图的存储 图用来对关系建模&#xff0e;图是节点和边构成的集合&#xff0e;节点反映图的元素集合&#xff0c;边反映图的元素集合中元素间的关系&#xff0e; 上述是由五个节点&#xff0c;三条边构成的结构&#xff0e;我们可以用图对其建模&#xff0e; 对由节点&#x…