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

一:背景

每个人都想将自己的敏感数据以加密格式存储在一个安全的地方。例如我们的数据库的账号密码,不能以纯文本的方式来记录。让我们利用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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LNMT架构之LNMT与nginx动静分离

LNMT架构之LNMT与nginx动静分离 目录 一、实验前提环境配置 (一)关闭防火墙,安装本地yum (二)部署tomcat (三)部署Mariadb (四)部署nginx 二、动静分离 步骤一&a…

RISC-V IDE MRS使用笔记(八):实现局域网下的远程调试功能

RISC-V IDE MRS使用笔记(八):实现局域网下的远程调试功能 1.原理介绍 MRS调试时上位机与硬件的通信基于gdb客户端与服务端的连接。调试时,首先启动openocd以挂载gdbserver的服务到指定端口上。通信建立后,监听到界面操作后以gdb指令的形式发…

Springboot +spring security,OAuth2 四种授权模式概念

一.简介 这篇文章来讲下Spring Security OAuth2 四种授权模式。 二.什么是OAuth2 OAuth 2.0 是一种用于授权的开放标准,允许用户授权第三方应用程序访问他们的资源,例如照片、视频或其他个人信息。OAuth 2.0 提供了一些不同的授权模式,包括…

测试替身Test Doubles的5类型(Mockito)

测试替身Test Doubles的5类型(Mockito) 我们有一个名为 BankAccount 的类。 数据库用于存储和检索银行帐户信息。 我们想测试 BankAccount 中的逻辑,而不必担心它使用的底层数据库.由此类实现——它将 SQL 查询发送到数据库并返回其中包含的值。 测试替身Test Dou…

Django实现接口自动化平台(五)httprunner(4.x)介绍【持续更新中】

上一章: Django实现接口自动化平台(四)解决跨域问题【持续更新中】_做测试的喵酱的博客-CSDN博客 下一章: 一、httpruner介绍 1.1 背景: 之所以学习httpruner的用法,是要把httpruner嵌入我们的自动化平…

自动缩放Kubernetes上的Kinesis Data Streams应用程序

想要学习如何在Kubernetes上自动缩放您的Kinesis Data Streams消费者应用程序,以便节省成本并提高资源效率吗?本文提供了一个逐步指南,教您如何实现这一目标。 通过利用Kubernetes对Kinesis消费者应用程序进行自动缩放,您可以从其…

2023年陕西彬州第八届半程马拉松赛153pb完赛

1、赛事背景 2023年6月3日,我参加了2023陕西彬州第八届半程马拉松赛,最终153完赛,PB了5分钟。起跑时间早上7点30分,毕竟6月天气也开始热了。天气预报显示当天还是小到中雨,上次铜川宜君半马也是雨天跑的,阴…

lecory 波形二进制文件头(.trc)定义

1.文件头,从0字节开始 byte[] lecroy_trc_header new byte[]{0x23,0x39,0x30,0x30,0x32,0x30,0x30,0x30,0x31,0x34,0x34,0x57,0x41,0x56,0x45,0x44,0x45,0x53,0x43,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4C,0x45,0x43,0x52,0x4F,0x59,0x5F,0x32,0x5F,0x33,0x…

研发工程师玩转Kubernetes——使用Ingress进行路由

依据微服务理念,我们希望每个独立的功能由一个服务支持。比如有两个接口:http://www.xxx.com/plus和http://www.xxx.com/minus,前者由一个叫plus-service的服务支持,后者由一个叫minus-service的服务支持。这样就需要一个路由层&a…

Revit问题:创建牛腿柱和快速生成圈梁

一、Revit中如何用体量创建牛腿柱 牛腿:悬臂体系的挂梁与悬臂间必然出现搁置构造,通常就将悬臂端和挂梁端的局部构造,又称梁托。牛腿的作用是衔接悬臂梁与挂梁, 并传递来自挂梁的荷载。牛腿柱可以用于桥梁、厂房的搭建&#xff0c…

西南财经大学李玉周:数智化技术广泛使用推动管理会计加快落地

近日,由用友主办的「智能会计 价值财务」2023企业数智化财务创新峰会收官站圆满举办。来自知名院校的专家学者、央国企等大型企业财务领路人相约成都,一同见证“智能会计”新时代的到来,并肩探讨“价值财务”新主张。 为更好传递智能会计对企…

【接口测试】JMeter接口关联测试

‍‍1 前言 我们来学习接口管理测试,这就要使用到JMeter提供的JSON提取器和正则表达式提取器了,下面我们来看看是如何使用的吧。 2 JSON提取器 1、添加JSON提取器 在线程组右键 > 添加 > 后置处理器 > JSON提取器 2、JSON提取器参数说明 N…

chatgpt赋能python:Python如何删除行:从入门到精通

Python如何删除行:从入门到精通 在Python编程中,删除行是必不可少的操作之一。无论是清除不必要的数据,还是在数据集中删除重复行,或者在文本文件中删除某些行,删除行都是一项极其重要的任务。 什么是Python语言&…

Shell脚本攻略:文本三剑客之sed

目录 一、理论 1.sed 二、实验 1.sed命令的寻址打印 2.显示奇偶 3.查找替换 4.后向引用 一、理论 1.sed (1) 概念 sed 英文全称为stream editor流式编辑器,sed 对输入流(文件或来自管道的输入)执行基本文本转换单通过流,…

Matlab进阶绘图第22期—不等宽柱状图

不等宽柱状图是一种特殊的柱状图。 与常规柱状图相比,不等宽柱状图可以通过柱高与柱宽分别表达两个维度的数据,因此在多个领域得到应用。 在《Matlab论文插图绘制模板第91期》中,虽有介绍过利用Matlab自带bar函数绘制不等宽柱状图的方法&am…

高完整性系统(7)Formal Verification and Validation

文章目录 Specification Process 规格化过程State Invariants案例check ... expect Alloy是一种用于构建和检查抽象模型的语言和工具。当Alloy说所有断言都成立时,这意味着你的模型或规格在给定范围内已成功通过了所有的断言检查。换句话说,对于你所定义…

C#实例:多功能Windows窗体应用程序Helloworld_WinForm

有了创建一个Windows窗体应用程序的经验,就可以开始尝试运用更多的控件实现更多丰富的功能界面。以下分享我基于项目Helloworld_WinForm使用常用C#Windows窗体控件实现一些小功能。 每一节标题为所用到的控件,全文以实际制作过程为序编制。 目录 WinFor…

来了解一下白盒测试,黑盒测试,灰盒测试吧(超详解~)

根据被测对象的不同,软件测试可以分为白盒测试、黑盒测试、灰盒测试三种方式。那么,这三种测试方式具体是如何运行的?各有什么特点?下面,跟着静姐一起了解一下吧! 01、白盒测试 WHITE BOX ●概念&#x…

PACS影像解决方案

现代医学影像技术的迅猛发展,使得PACS系统已逐渐成为各级医院实现信息化建设的重要组成部分。医学影像技术的进步也提升了医学影像的清晰度,推动二维PACS向三维升级转变。这一切都使得医学影像数据量激增,加之医疗行业法规的数据保存要求&…

Android平台OpenCV入门

一、导入OpenCV 别忘记把libopencv_java3.so添加进来。 二、初始化 OpenCVLoader.initDebug();三、常用方法 1. CvType 数据类型 以CV_64FC2为例,64指64位,F指浮点数,C指通道,2为2通道。 数值具体类型取值范围CV_8U8 位无符…