DevOps - (3)使用SOPS 和Terraform来加密/解密敏感信息文件

news2024/11/17 23:46:50

一:背景

每个人都想将自己的敏感数据以加密格式存储在一个安全的地方。例如我们的数据库的账号密码,不能以纯文本的方式来记录。让我们利用Mozilla SOPS以一种安全的方式实现它。SOPS支持将文件加密为二进制文件,除此之外,它还具有只加密配置文件值的特性,只要它们是正确的格式,如JSON、YAML、.env或.ini。

SOPS是一个加密文件编辑器,支持YAML, JSON, ENV, INI和BINARY格式,并可以通过AWS KMS, GCP KMS, Azure密钥库、PGP、age等加密。

sops官方github https://github.com/mozilla/sops

二:安装

确定以下的前提条件都以满足

1)安装terraform

Install | Terraform | HashiCorp Developer

2)安装age

你可以在这里GitHub - FiloSottile/age: A simple, modern and secure encryption tool (and Go library) with small explicit keys, no config options, and UNIX-style composability.的readme中找到适合您系统的安装方式。

我是通过choco在windons系统上进行安装的。

通过age-keygen -o key.txt 命令产生一个public key”SOPS_AGE_RECIPIENTS"和private key"SOPS_AGE_KEY", 你可以找到这两个值在你当前目录下的key.txt文件中。

3)安装sops

 你可以在这里Releases · mozilla/sops · GitHub的readme中找到适合您系统的安装方式。

我在windons上还是使用的choco install sops进行的安装

sops/README.rst at master · mozilla/sops · GitHub 这里可以查看age加密方式的一些说明

二:本地加密及测试

以下流程描述了如何在本地local进行加密

export SOPS_AGE_RECIPIENTS=xxxx ##在key.txt中

export SOPS_AGE_KEY=xxxxx ##在key.txt中

例如我有一个examplefile-sensitive.yaml的文件内容如下

mysql_accout: root

mysql_password: adasdsewqweqwasd!@3

加密

sops --e  examplefile-sensitive.yaml> examplefile-sensitive.enc.yaml

解密

sops -d examplefile-sensitive.enc.yaml >examplefile-sensitive.yaml

三:sops与terraform的集成

在terraform中引用sops,可以参照GitHub - carlpett/terraform-provider-sops: A Terraform provider for reading Mozilla sops files

terraform {
  required_providers {
    sops = {
      source = "carlpett/sops"
      version = "~> 0.7.0"
    }
  }
}

可以在terraform的官网看一下sops_file(即你的加密文件)的写法Terraform Registry

data "sops_file" "demo-secret" {
  source_file = "demo-secret.enc.json"
}

您可以通过以下的方式来将敏感信息上传并存储到terraform 的variable中

resource "tfe_variable" "example" {
  for_each        = nonsensitive(toset([for k, v in data.sops_file.example_file.data : k]))
  key             = each.key
  value           = data.sops_file.example_file.data[each.key]
  sensitive       = true
  category        = "terraform"
  variable_set_id = tfe_variable_set.example_workspace.id
}

 当然我们需要在terraform的variable中手动先配置变量SOPS_AGE_KEY

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

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

相关文章

尘埃粒子计数器 审计追踪 权限管理 洁净室等级确认干货分享

尘埃粒子计数器实用干货汇总 随着我国医药行业的不断发展,越来越多的医药企业需要应用洁净技术以达到控制实验室安全卫生的目的。在医药、电子、机械微生物等行业中,需要严格把关空间的洁净度以符合相关的标准和产品的质量。其中包括对各种洁净等级的工作…

Qt 助手简介

在探讨Qt帮助框架之前,我们先了解一下Qt帮助文档,可以让大家更好的理解。 当你使用Qt时,你可能会发现Qt帮助文档是一个非常有用的资源。Qt帮助文档提供了关于Qt框架和其各种组件的详细信息,包括类和函数的文档、示例代码和教程等…

抖音seo系统源码*SaaS+部署搭建(开源)

抖音seo源码,抖音seo系统源码,抖音seo系统搭建,部署 抖音作为一个全球性的短视频平台,用户数量已经超过了10亿。这也给企业带来了巨大的发展机遇。为了吸引更多的用户,企业可以通过抖音seo源码来提高自己的搜索引擎排…

有没有什么好的C++项目推荐?

据我粗略估计,问我“有没有什么好的C项目推荐“这个问题出现的频率仅次于“问我帅不帅“。 「C」是一门贴近底层的语言,不像「Java」那样能够快速搭建一个业务系统,比如「XX」秒杀系统、「XX」电商系统这种看着“高大上“的项目,「…

python按行写入json文件,每一行都是一个标准json对象,但是整体文件却非json对象

今天这篇文章主要是一个小小的偏向于应用的实践,为啥会写这个,还要回溯到2017年,那时候做项目的时候有一个是要做数据处理分析的工作,给到我的数据集我拿到的时候总觉得怪怪的,每一行都是一个字典对象,但是…

聊聊部署在K8S的项目如何获取客户端真实IP

前言 最近部门有个需求,需要对一些客户端IP做白名单,在白名单范围内,才能做一些业务操作。按我们的部门的一贯做法,我们会封装一个client包,提供给业务方使用。(注: 我们的项目是运行在K8S上&a…

LAMP的实战应用之部署wordpress论坛,并实现正常访问登录论坛

目录 环境配置: 一、安装配置基础环境 步骤一:配置本地yun 步骤二:安装Remi 仓库配置包(清华源获取) 步骤三:配置Remi 仓库配置包 步骤四:安装php的加速器配置 步骤五:启动服…

Cesium实战 - 实现大气云层效果

Cesium实战 - 实现大气云层效果 Cesium 实现大气云层效果主要思路核心代码在线示例 Cesium 实现大气云层效果 在实际开发中,一般会有天气的效果,雨雪雾比较常见,相关的博客也很多,但是关于云层的天气效果还是比较少,而…

【调峰】储能辅助电力系统调峰的容量需求研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

经典神经网络(6)ResNet及其在Fashion-MNIST数据集上的应用

经典神经网络(6)ResNet及其在Fashion-MNIST数据集上的应用 1 ResNet的简述 ResNet 提出了一种残差学习框架来解决网络退化问题,从而训练更深的网络。这种框架可以结合已有的各种网络结构,充分发挥二者的优势。 ResNet以三种方式挑战了传统的神经网络架…

【LeetCode】342. 4的幂

342. 4的幂(简单) 方法一:二进制 思路 首先考虑一个数字是不是 2 的整数次方:如果一个数字 n 是 2 的整数次方,那么它的二进制一定是 0...010...0 这样的形式,将它和 -n 按位与的结果一定是它本身。如果 …

前沿质谱应用沙龙分享会暨苏州百趣落成仪式即将开幕!

质谱作为一项医学检验新技术,凭借高特异性、高灵敏度、多指标检测等优势,成为了体外诊断领域最富生命力的新技术之一。目前质谱技术能够准确的测定多种生物小分子代谢物,且质谱在大分子物质例如蛋白质方面也应用的非常广泛。目前,…

要电脑重装系统装在哪个盘最好

在进行电脑重装系统时,选择一个合适的系统安装盘是非常重要的。本文将为您介绍如何选择最佳的系统安装盘,以确保系统性能和稳定性的最佳表现。 工具/原料: 系统版本:windows系统 品牌型号:华硕VivoBook14 软件版本…

张小龙发明了小程序,是否意味着失败?

今天微信小程序上线,从开发到上线仅仅用了四天时间,这是一个了不起的成就。 小程序诞生以来,一直存在着一种声音:它是张小龙“伟大的发明”,是微信“伟大的创新”。然而,张小龙在小程序发布会上宣布&#…

Spark SQL概述、数据帧与数据集

文章目录 一、准备工作1、准备数据文件2、启动Spark Shell 二、加载数据为Dataset1、读文件得数据集 三、给数据集添加元数据信息1、定义学生样例类2、导入隐式转换3、将数据集转换成学生数据集4、对学生数据集进行操作(1)显示数据集内容(2&a…

认识熟悉 Stable Diffusion(SD)基本参数

界面样式 界面参数 界面参数说明prompt希望生成的图片的描述negative prompt不希望在图片中出现的描述Batch size每次生成的图片个数Width图片宽度Height图片高度 这里需要注意的就是尺寸,尺寸并非越大越好,需要根据自己的配置和需求适当调整&#xff…

node.js+vue学生读书笔记共享分享系统

从上面的描述中可以基本可以实现软件的功能: 1、开发实现读书笔记共享平台的整个系统程序; 2、管理员;首页、个人中心、用户管理、笔记分享管理、个人笔记管理、管理员管理、交流互动、系统管理等。 3、用户:首页、个人中心、笔记分享管理、个人笔记管理、我的收藏管理。 4、前…

Window10配置Maven详细教程

文章目录 一、Maven概述二、Maven下载三、配置Maven环境变量四、查看Maven是否配置成功五、为Maven配置本地仓库以及指定远程仓库5.1 Maven构件搜索顺序5.2 Maven配置本地仓库5.3 Maven指定远程仓库 一、Maven概述 Maven是专门管理和构建Java项目的工具,Maven的主要…

Linux nohup-后台挂起运行程序神器

一. 场景描述 天黑了,我得离开实验室去吃饭了。为了环保,我必须关闭电脑,减少不必要的浪费!正常情况下当我关闭终端或电脑时,上面运行的任务代码即会自动停止,但我依旧希望保持代码的正常运行,此…

Android 更新后跑不起来?快来适配 AGP8 和 Flamingo/JDK 17

随着 Android Studio Flamingo 正式版的发布,AGP 8(Android Gradle Plugin 8)也正式进入大家的视野,这次 AGP 8 相关更新属于「断代式」更新,同时如果想体验 AGP 8,就需要升级到 Android Studio Flamingo 版…