范文健康探索娱乐情感热点
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

gitsecret在Git存储库中加密和存储密钥(上)

  当涉及处理机密信息(如密码、令牌、密钥文件等)等,以下问题值得考虑: 安全性十分重要 ,但高安全性往往伴随着高度的不便。 在团队中,共享某些密钥有时无法避免(因此现在我们需要考虑在多人之间分发和更新密钥的安全方法)。 具体的密钥通常取决于环境。
  目前市面上已经存在许多较为成熟的密钥管理产品,比如 HashiCorp Vault,AWS Secrets Manager 以及 GCP Secret Manager。由于这些产品需要集成和维护等服务,因此在项目中引入会增加一定的成本和开销。阅读本文,将带你了解如何在 Docker 容器中设置 git-secret 和 gpg。
  本文将对以下几点展开讲解: 识别包含密钥的文件 确保将密钥添加到 .gitignore   通过 git-secret   进行加密 将加密文件提交到存储库
  在最后我们将能够调用: make secret-decrypt
  这将会披露代码库中的密钥,在必要时对其进行修改,然后运行: make secret-encrypt
  需要再次加密密钥,以便提交(并推送到远程存储库),要查看实际效果请运行以下命令: # checkout the branch git checkout part-6-git-secret-encrypt-repository-docker  # build and start the docker setup make make-init make docker-build make docker-up  # "create" the secret key - the file "secret.gpg.example" would usually NOT live in the repo! cp secret.gpg.example secret.gpg  # initialize gpg make gpg-init  # ensure that the decrypted secret file does not exist ls passwords.txt  # decrypt the secret file make secret-decrypt  # show the content of the secret file cat passwords.txtTooling
  我们在 PHP base   镜像中设置 gpg   和 git-secret   以便这些工具在所有其他容器中都可用。以下所有命令都在 application   容器中执行。
  请注意,git-secret   在主机系统和 docker 容器之间共享的文件夹中使用时需要注意。将在下面称为 "git-secret   目录和 gpg-agent   socket"的部分中更详细地解释这一点。 gpg
  gpg   是The GNU Privacy Guard的缩写,是 OpenPGP 标准的开源实践。简而言之,GNU允许我们创建一个个人密钥文件对(类似于 SSH 密钥),其中包含一个私有密钥和一个可以与您想要解密其消息的其他方共享的公共密钥。
  gpg 安装
  关于安装,我们可以简单地运行 apk add gnupg   并相应更新 .docker/images/php/base/Dockerfile  : # File: .docker/images/php/base/DockerfileRUN apk add --update --no-cache          bash          gnupg          make  #...创建 gpg 密钥对
  我们需要通过以下方式创建 gpg   密钥对(Key Pair): name="Pascal Landau" email="pascal.landau@example.com" gpg --batch --gen-key < Key-Type: 1 > Key-Length: 2048 > Subkey-Type: 1 > Subkey-Length: 2048 > Name-Real: $name > Name-Email: $email > Expire-Date: 0 > %no-protection > EOF gpg: key E1E734E00B611C26 marked as ultimately trusted gpg: revocation certificate stored as "/root/.gnupg/opengpg-revocs.d/74082D81525723F5BF5B2099E1E734E00B611C26.rev"
  也可以在没有 --batch   标志的情况下以交互方式引导整个过程运行gpg --gen-key  ,然后导出、列出和导入私有 gpg   Key,可以通过以下方式导出: email="pascal.landau@example.com" path="secret.gpg" gpg --output "$path" --armor --export-secret-key "$email"
  记住不能共享此密钥 。 -----BEGIN PGP PRIVATE KEY BLOCK-----  lQOYBF7VVBwBCADo9un+SySu/InHSkPDpFVKuZXg/s4BbZmqFtYjvUUSoRAeSejv G21nwttQGut+F+GdpDJL6W4pmLS31Kxpt6LCAxhID+PRYiJQ4k3inJfeUx7Ws339 XDPO3Rys+CmnZchcEgnbOfQlEqo51DMj6mRF2Ra/6svh7lqhrixGx1BaKn6VlHkC ... ncIcHxNZt7eK644nWDn7j52HsRi+wcWsZ9mjkUgZLtyMPJNB5qlKQ18QgVdEAhuZ xT3SieoBPd+tZikhu3BqyIifmLnxOJOjOIhbQrgFiblvzU1iOUOTOcSIB+7A =YmRm -----END PGP PRIVATE KEY BLOCK-----
  所有密钥都可以通过以下方式列出: gpg --list-secret-keys
  输出: $ gpg --list-secret-keys /root/.gnupg/pubring.kbx ------------------------ sec rsa2048 2022-03-27 [SCEA]       74082D81525723F5BF5B2099E1E734E00B611C26 uid [ultimate] Pascal Landau  ssb rsa2048 2022-03-27 [SEA]
  可以通过以下方式导入私钥: path="secret.gpg" gpg --import "$path"
  得到以下输出: $ path="secret.gpg" $ gpg --import "$path" gpg: key E1E734E00B611C26: "Pascal Landau " not changed gpg: key E1E734E00B611C26: secret key imported gpg: Total number processed: 1 gpg: unchanged: 1 gpg: secret keys read: 1 gpg: secret keys unchanged: 1
  注意:如果secret key需要密码,这里会提示输入密码。我们可以使用以下方法绕过提示--batch --yes --pinentry-mode loopback  : path="secret.gpg" gpg --import --batch --yes --pinentry-mode loopback "$path"
  目前还不需要提供密码,但需要在稍后尝试解密文件时提供。
  导出、列出和导入gpg  公钥,可以通过以下方式导出public.gpg  : email="pascal.landau@example.com" path="public.gpg" gpg --armor --export "$email" > "$path"
  导出如下: -----BEGIN PGP PUBLIC KEY BLOCK-----  mQENBF7VVBwBCADo9un+SySu/InHSkPDpFVKuZXg/s4BbZmqFtYjvUUSoRAeSejv G21nwttQGut+F+GdpDJL6W4pmLS31Kxpt6LCAxhID+PRYiJQ4k3inJfeUx7Ws339 ... 3LLbK7Qxz0cV12K7B+n2ei466QAYXo03a7WlsPWn0JTFCsHoCOphjaVsncIcHxNZ t7eK644nWDn7j52HsRi+wcWsZ9mjkUgZLtyMPJNB5qlKQ18QgVdEAhuZxT3SieoB Pd+tZikhu3BqyIifmLnxOJOjOIhbQrgFiblvzU1iOUOTOcSIB+7A =g0hF -----END PGP PUBLIC KEY BLOCK-----
  通过以下方式列出所有公钥: gpg --list-keys
  输出: $ gpg --list-keys /root/.gnupg/pubring.kbx ------------------------ pub rsa2048 2022-03-27 [SCEA]       74082D81525723F5BF5B2099E1E734E00B611C26 uid [ultimate] Pascal Landau  sub rsa2048 2022-03-27 [SEA]
  通过以下方式以与私钥相同的方式导入公钥: path="public.gpg" gpg --import "$path"
  例如: $ gpg --import /var/www/app/public.gpg gpg: key E1E734E00B611C26: "Pascal Landau " not changed gpg: Total number processed: 1 gpg: unchanged: 1git-secret
  git-secret的官方网站可以找到详细介绍该工具的内容。git-secret允许将某些文件声明为"secret"并通过 gpg   加密。然后可以将加密的文件直接安全地存储在 Git 存储库中,并在需要时进行解密。本文使用 git-secret v0.4.0  : $ git secret --version 0.4.0git-secret 安装
  Alpine 的安装说明如下: sh -c "echo "https://gitsecret.jfrog.io/artifactory/git-secret-apk/all/main"" >> /etc/apk/repositories wget -O /etc/apk/keys/git-secret-apk.rsa.pub "https://gitsecret.jfrog.io/artifactory/api/security/keypair/public/repositories/git-secret-apk" apk add --update --no-cache git-secret
  .docker/images/php/base/Dockerfile   进行更新: # File: .docker/images/php/base/Dockerfile  # install git-secret # @see https://git-secret.io/installation#alpine ADD https://gitsecret.jfrog.io/artifactory/api/security/keypair/public/repositories/git-secret-apk /etc/apk/keys/git-secret-apk.rsa.pub  RUN echo "https://gitsecret.jfrog.io/artifactory/git-secret-apk/all/main" >> /etc/apk/repositories &&      apk add --update --no-cache          bash          git-secret          gnupg          make  #...git-secret 用法
  初始化 git-secret
  git-secret   通过在 Git 存储库的根目录中运行的以下命令进行初始化。 git secret init$ git secret init git-secret: init created: "/var/www/app/.gitsecret/"
  只需这样操作一次,稍后会把文件夹提交到 Git,将包含以下文件: $ git status | grep ".gitsecret"         new file: .gitsecret/keys/pubring.kbx         new file: .gitsecret/keys/pubring.kbx~         new file: .gitsecret/keys/trustdb.gpg         new file: .gitsecret/paths/mapping.cfg
  该 pubring.kbx~  文件(带有波浪号~  )只是一个临时文件,可以安全地被 git 忽略。
  git-secret Directory 和 gpg-agent Socket
  要 git-secret   在主机系统和 Docker 之间共享的目录中使用,还需要运行以下命令: tee .gitsecret/keys/S.gpg-agent <= 0.5.0   中已重命名为 removeperson   $ git secret killperson pascal.landau@example.com git-secret: removed keys. git-secret: now [pascal.landau@example.com] do not have an access to the repository. git-secret: make sure to hide the existing secrets again.
  用户 pascal@example.com 将无法再解密这些密钥。
  注意删除用户后需要重新加密机密 ,并轮换加密的密钥 。
  添加、列出和删除文件以进行加密
  运行 git secret add [filenames...]   来为文件加密: git secret add .env
  如果 .env   没有被添加到 .gitignore   ,git-secret   将显示警告并自动添加。 git-secret: these files are not in .gitignore: .env git-secret: auto adding them to .env git-secret: 1 item(s) added.
  如已添加,则添加文件时不会发出警告。 $ git secret add .env git-secret: 1 item(s) added.
  只需要添加一次文件。然后将它们存在 .gitsecret/paths/mapping.cfg   : $ cat .gitsecret/paths/mapping.cfg .env:505070fc20233cb426eac6a3414399d0f466710c993198b1088e897fdfbbb2d5
  还可以通过以下方式显示添加的文件: git secret list$ git secret list .env
  需要主要的是,这个时候文件尚未加密,如果要从加密中删除文件,请运行: git secret list$ git secret list .env
  输出: $ git secret remove .env git-secret: removed from index. git-secret: ensure that files: [.env] are now not ignored.加密文件
  要加密文件,请运行: git secret hide
  输出: $ git secret hide git-secret: done. 1 of 1 files are hidden.
  所有通过 git secret tell   被添加的用户能够解密这些已经加密的文件,这也意味着每当添加新用户时,您都需要再次运行此命令。 解密文件
  可以通过以下方式解密文件: git secret reveal
  输出: $ git secret reveal File "/var/www/app/.env" exists. Overwrite? (y/N) y git-secret: done. 1 of 1 files are revealed.文件被解密并将覆盖当前未加密的文件。 使用 -f   选项强制覆盖并以非交互方式运行。 如果只想检查加密文件的内容,可以使用 git secret cat $filename   例如,git secret cat. env  。
  当 gpg   密钥受密码保护时,需要通过 -p   选项传递密码。以下是密码示例 123456  : git secret reveal -p 123456显示加密和解密文件间的变化
  加密文件的一个问题是,无法在远程工具的代码审查期间审查加密文件。为了了解进行了哪些更改,显示加密文件和解密文件之间的更改能够帮助解决这个问题。可以通过以下方式完成: git secret changes
  输出: $ echo "foo" >> .env $ git secret changes git-secret: changes in /var/www/app/.env: --- /dev/fd/63 +++ /var/www/app/.env @@ -34,3 +34,4 @@  MAIL_ENCRYPTION=null  MAIL_FROM_ADDRESS=null  MAIL_FROM_NAME="${APP_NAME}" +foo
  注意底部的 +foo.   它是通过在第一行 echo "foo">>>.env   添加的。
  本文是git-secret用法的上篇,在下篇中我们将会介绍git-secret的初始设置、Makefile调整等内容,保持关注哦~

光大银行2022年中报点评股东分析根据中报披露,光大银行的股东总数从3月底的22。24万户增加到半年报的22。47万户,增加了0。23万户。前十大股东中,沪股通第二季度增持约3900万股,其他股东的持股数不开盘A股三大指数集体低开沪指跌0。33,比亚迪跌超6跌破300元关口金融界8月31日消息今日A股三大指数集体低开,沪指跌0。33,报3216。53点,深成指跌0。51,报11909。31点,创业板指跌0。61,报2596。16点盘面上,卫星通信家用午评沪指跌破3200点创业板指重挫逾2,两市超4200股下跌金融界8月31日消息今日A股三大指数小幅低开,开盘后市场震荡下行,沪指跌超1失守3200点,深成指创业板指跌逾2,两市超4200股下跌。截止午间收盘,沪指跌1。18,报3189。2和平精英信号枪的使用策略因地区而异信号枪在各大地图中非常少见,也是很多玩家追求的目标。在信号枪呼叫的空投中,我们可以获得非常丰富的物资。比如经常可以看到三级头,三级甲这样的高级护甲,甚至一些非常有用的空投都是非常不细节满分!火箭迎利好消息,伊森身材大走样,三大联赛大展拳脚北京时间8月31日,根据休斯顿火箭最新消息,目前已经有大部分球员自发开启休赛期的特训,其中就包括了杰伦格林贾巴里史密斯伊森泰泰华盛顿戈登等球员,在细节方面,确实火箭这批年轻球员太让篮网好消息,湖人恐放假消息威少进退两难,米切尔做新决定北京时间8月31日,自由市场正在如约而至的持续发酵中,各支球队都在跃跃欲试,地震级交易以及顶薪续约合同此起彼伏,联盟也在不断上演着抢人大战,为下赛季的球队崛起保驾护航。湖人在成功引重大利好10家公司发布重大利好消息,1公司净利润大增550上市公司重大利好消息广汽集团16月公司实现营业收入484。48亿元,同比增长41。17归母净利润57。51亿元,同比增长32。61顺丰控股顺丰控股实现营业收入1300。64亿元,同今日全国尿素出厂价格2022年8月31日哈喽,大家好!这里是化肥价格行情!关注我每天看最新尿素复合肥磷铵钾肥价格行情!今天(2022年8月31日)下面是今日国内最新尿素价格行情!今日国内尿素行情整体偏弱势,主流市场下调1转会消息巴塞罗那富勒姆曼城巴黎圣日耳曼拜仁慕尼黑切尔西为了启动贝尔纳多席尔瓦行动,迪拜胜利必须支付皮亚尼奇的全部工资。现在,他们愿意支付他工资的70。(来源gerardromero)德斯特和曼联之间的谈判正在进行中。(来源gerard油价调整消息今天9月1日,全国加油站9295号汽油调后价美联储和欧洲央行对持续性收紧市场的暗示,让海外石油需求可能长期受到破坏的风险进一步升高,国际原油延续了周二的大跌行情,WTI原油价格一度跌至88美元,布伦特原油则跌破95美元,在这下调50200元!今日复合肥磷铵钾肥出厂价格8月31日哈喽,大家好!这里是化肥价格行情!关注我每天看最新化肥价格行情!今天(8月31日)今日国内复合肥磷铵钾肥价格延续弱势运行,价格下调幅度多在50200元吨左右,预计短期行情依旧偏弱运
你可能不信新手机都用旧零件iPhone也不例外稿源中关村在线说出来你可能不信,每年咱们买的新手机,内部的一些零配件都是旧的,先别急,接着往下看。01国内市场每年1亿台废旧手机少量将经过回收相关数据表明国内市场每年都有至少1亿台搭载骁龙865的机型(下)魅族17魅族17搭载骁龙865,魅族17采用6。6英寸极边全面屏,2340x1080像素,120赫兹刷新率,180赫兹触控采样率,局部峰值亮度1100尼特,全局峰值亮度700尼特,3。属性伤害,获取真凶新手很喜欢问怎么做属性伤害?然后我们就会回答自定义值绑定。通常需要自定义值绑定的属性伤害不是指那些一点目标就造成伤害的技能或者说伤害来源脱离英雄本身,也就是马甲伤害,我们才用自定义吃鸡全新抽奖界面曝光!大转盘青春物语,即将在近期上架务实不浮夸!我是你们的情报小能手,微笑十倍镜。吃鸡手游和平精英的SS18赛季已经接近尾声,虽然新版本更新在即,但是关于新军需的爆料却越来越少,如今新的一周已经开始,却没有新皮肤的消手游模拟器通吃的GPDXPPlus全功能游戏掌机SteamDeck不少小伙伴们应该有所耳闻,但由于其生态封闭,看来只是打造成了Steam自家的专用封闭掌机了!而对于PS2PSPWII这些承载了太多玩家经典记忆的游戏和现在玩家人数王者还有反向上分?寂然打野段位114掉到104,水友看呆了王者荣耀的新赛季已经开始了,由于各大主播的实力都很强悍,不会让自己掉下荣耀王者,所以他们赛季初就可以打巅峰赛了,寂然也是如此。说到寂然这位阴间打野,大家对他应该不会太陌生吧?因为他新诛仙手游宠物到底有多萌?被玩家做成表情包,迅速出圈MMORPG手游经常有这么一个现象当发现游戏里出现妹子时,仿佛发掘到什么真系宝物一般,毕竟玩MMO的女玩家实在太少了!不过新诛仙手游却是个例外,凭借着丰富的休闲玩法以及社交内容,意同为2699元,荣耀70和OPPOReno8,怎么选?有些手机价格相同,但是配置相差很大,这时候我们就要做出判断了,到底哪款更值得入手,怎么选才能选到合适自己的手机?这次我们来对比两款同为2699元,配置相差又比较大的荣耀70和OPP与天玑8000完美结合荣耀70Pro性能拍照样样出色手机中国行情今年三月,联发科正式发布5G旗舰芯片天玑8000系列,其中包含天玑8000和天玑8100两款芯片,虽然天玑8100表现优异吸引了绝大部分人的目光,但一旁的天玑8000实闹腾一月,逆水寒手游成全网最期待爆款,玩家倒贴1000万立了大功近些年,国产手游表现亮眼,特别是开放世界冒险游戏原神爆火,直接血洗全球畅销游戏排行榜,流水和口碑获得双丰收,也给予了国产游戏信心。那么原神之后,谁会成为下一个爆款呢?厂商在拼命奋斗2022年电视新品画质综评TCL雄霸MiniLED,大法OLED无敌第二季度很快就会过去了,基本上各家今年的电视新品该在国内发布的,都已经发布了。可能也就是飞利浦今年发布的主力OLED电视以及MiniLED电视,要等今年年末甚至是明年才可能在国内上