安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

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

5月9日 碧落盟投稿
  当涉及处理机密信息(如密码、令牌、密钥文件等)等,以下问题值得考虑:安全性十分重要,但高安全性往往伴随着高度的不便。在团队中,共享某些密钥有时无法避免(因此现在我们需要考虑在多人之间分发和更新密钥的安全方法)。具体的密钥通常取决于环境。
  目前市面上已经存在许多较为成熟的密钥管理产品,比如HashiCorpVault,AWSSecretsManager以及GCPSecretManager。由于这些产品需要集成和维护等服务,因此在项目中引入会增加一定的成本和开销。阅读本文,将带你了解如何在Docker容器中设置gitsecret和gpg。
  本文将对以下几点展开讲解:识别包含密钥的文件确保将密钥添加到。gitignore通过gitsecret进行加密将加密文件提交到存储库
  在最后我们将能够调用:makesecretdecrypt
  这将会披露代码库中的密钥,在必要时对其进行修改,然后运行:makesecretencrypt
  需要再次加密密钥,以便提交(并推送到远程存储库),要查看实际效果请运行以下命令:checkoutthebranchgitcheckoutpart6gitsecretencryptrepositorydockerbuildandstartthedockersetupmakemakeinitmakedockerbuildmakedockerupcreatethesecretkeythefilesecret。gpg。examplewouldusuallyNOTliveintherepo!cpsecret。gpg。examplesecret。gpginitializegpgmakegpginitensurethatthedecryptedsecretfiledoesnotexistlspasswords。txtdecryptthesecretfilemakesecretdecryptshowthecontentofthesecretfilecatpasswords。txtTooling
  我们在PHPbase镜像中设置gpg和gitsecret以便这些工具在所有其他容器中都可用。以下所有命令都在application容器中执行。
  请注意,gitsecret在主机系统和docker容器之间共享的文件夹中使用时需要注意。将在下面称为gitsecret目录和gpgagentsocket的部分中更详细地解释这一点。gpg
  gpg是TheGNUPrivacyGuard的缩写,是OpenPGP标准的开源实践。简而言之,GNU允许我们创建一个个人密钥文件对(类似于SSH密钥),其中包含一个私有密钥和一个可以与您想要解密其消息的其他方共享的公共密钥。
  gpg安装
  关于安装,我们可以简单地运行apkaddgnupg并相应更新。dockerimagesphpbaseDockerfile:File:。dockerimagesphpbaseDockerfileRUNapkaddupdatenocachebashgnupgmake。。。创建gpg密钥对
  我们需要通过以下方式创建gpg密钥对(KeyPair):namePascalLandauemailpascal。landauexample。comgpgbatchgenkeyEOFKeyType:1KeyLength:2048SubkeyType:1SubkeyLength:2048NameReal:nameNameEmail:emailExpireDate:0noprotectionEOF
  noprotection创建一个没有密码的key。
  输出:namePascalLandauemailpascal。landauexample。comgpgbatchgenkeyEOFKeyType:1KeyLength:2048SubkeyType:1SubkeyLength:2048NameReal:nameNameEmail:emailExpireDate:0noprotectionEOFgpg:keyE1E734E00B611C26markedasultimatelytrustedgpg:revocationcertificatestoredasroot。gnupgopengpgrevocs。d74082D81525723F5BF5B2099E1E734E00B611C26。rev
  也可以在没有batch标志的情况下以交互方式引导整个过程运行gpggenkey,然后导出、列出和导入私有gpgKey,可以通过以下方式导出:emailpascal。landauexample。compathsecret。gpggpgoutputpatharmorexportsecretkeyemail
  记住不能共享此密钥。BEGINPGPPRIVATEKEYBLOCKlQOYBF7VVBwBCADo9unSySuInHSkPDpFVKuZXgs4BbZmqFtYjvUUSoRAeSejvG21nwttQGutFGdpDJL6W4pmLS31Kxpt6LCAxhIDPRYiJQ4k3inJfeUx7Ws339XDPO3RysCmnZchcEgnbOfQlEqo51DMj6mRF2Ra6svh7lqhrixGx1BaKn6VlHkC。。。ncIcHxNZt7eK644nWDn7j52HsRiwcWsZ9mjkUgZLtyMPJNB5qlKQ18QgVdEAhuZxT3SieoBPdtZikhu3BqyIifmLnxOJOjOIhbQrgFiblvzU1iOUOTOcSIB7AYmRmENDPGPPRIVATEKEYBLOCK
  所有密钥都可以通过以下方式列出:gpglistsecretkeys
  输出:gpglistsecretkeysroot。gnupgpubring。kbxsecrsa204820220327〔SCEA〕74082D81525723F5BF5B2099E1E734E00B611C26uid〔ultimate〕PascalLandaupascal。landauexample。comssbrsa204820220327〔SEA〕
  可以通过以下方式导入私钥:pathsecret。gpggpgimportpath
  得到以下输出:pathsecret。gpggpgimportpathgpg:keyE1E734E00B611C26:PascalLandaupascal。landauexample。comnotchangedgpg:keyE1E734E00B611C26:secretkeyimportedgpg:Totalnumberprocessed:1gpg:unchanged:1gpg:secretkeysread:1gpg:secretkeysunchanged:1
  注意:如果secretkey需要密码,这里会提示输入密码。我们可以使用以下方法绕过提示batchyespinentrymodeloopback:pathsecret。gpggpgimportbatchyespinentrymodeloopbackpath
  目前还不需要提供密码,但需要在稍后尝试解密文件时提供。
  导出、列出和导入gpg公钥,可以通过以下方式导出public。gpg:emailpascal。landauexample。compathpublic。gpggpgarmorexportemailpath
  导出如下:BEGINPGPPUBLICKEYBLOCKmQENBF7VVBwBCADo9unSySuInHSkPDpFVKuZXgs4BbZmqFtYjvUUSoRAeSejvG21nwttQGutFGdpDJL6W4pmLS31Kxpt6LCAxhIDPRYiJQ4k3inJfeUx7Ws339。。。3LLbK7Qxz0cV12K7Bn2ei466QAYXo03a7WlsPWn0JTFCsHoCOphjaVsncIcHxNZt7eK644nWDn7j52HsRiwcWsZ9mjkUgZLtyMPJNB5qlKQ18QgVdEAhuZxT3SieoBPdtZikhu3BqyIifmLnxOJOjOIhbQrgFiblvzU1iOUOTOcSIB7Ag0hFENDPGPPUBLICKEYBLOCK
  通过以下方式列出所有公钥:gpglistkeys
  输出:gpglistkeysroot。gnupgpubring。kbxpubrsa204820220327〔SCEA〕74082D81525723F5BF5B2099E1E734E00B611C26uid〔ultimate〕PascalLandaupascal。landauexample。comsubrsa204820220327〔SEA〕
  通过以下方式以与私钥相同的方式导入公钥:pathpublic。gpggpgimportpath
  例如:gpgimportvarwwwapppublic。gpggpg:keyE1E734E00B611C26:PascalLandaupascal。landauexample。comnotchangedgpg:Totalnumberprocessed:1gpg:unchanged:1gitsecret
  gitsecret的官方网站可以找到详细介绍该工具的内容。gitsecret允许将某些文件声明为secret并通过gpg加密。然后可以将加密的文件直接安全地存储在Git存储库中,并在需要时进行解密。本文使用gitsecretv0。4。0:gitsecretversion0。4。0gitsecret安装
  Alpine的安装说明如下:shcechohttps:gitsecret。jfrog。ioartifactorygitsecretapkallmainetcapkrepositorieswgetOetcapkkeysgitsecretapk。rsa。pubhttps:gitsecret。jfrog。ioartifactoryapisecuritykeypairpublicrepositoriesgitsecretapkapkaddupdatenocachegitsecret
  。dockerimagesphpbaseDockerfile进行更新:File:。dockerimagesphpbaseDockerfileinstallgitsecretseehttps:gitsecret。ioinstallationalpineADDhttps:gitsecret。jfrog。ioartifactoryapisecuritykeypairpublicrepositoriesgitsecretapketcapkkeysgitsecretapk。rsa。pubRUNechohttps:gitsecret。jfrog。ioartifactorygitsecretapkallmainetcapkrepositoriesapkaddupdatenocachebashgitsecretgnupgmake。。。gitsecret用法
  初始化gitsecret
  gitsecret通过在Git存储库的根目录中运行的以下命令进行初始化。gitsecretinitgitsecretinitgitsecret:initcreated:varwwwapp。gitsecret
  只需这样操作一次,稍后会把文件夹提交到Git,将包含以下文件:gitstatusgrep。gitsecretnewfile:。gitsecretkeyspubring。kbxnewfile:。gitsecretkeyspubring。kbxnewfile:。gitsecretkeystrustdb。gpgnewfile:。gitsecretpathsmapping。cfg
  该pubring。kbx文件(带有波浪号)只是一个临时文件,可以安全地被git忽略。
  gitsecretDirectory和gpgagentSocket
  要gitsecret在主机系统和Docker之间共享的目录中使用,还需要运行以下命令:tee。gitsecretkeysS。gpgagentEOFAssuansockettmpS。gpgagentEOFtee。gitsecretkeysS。gpgagent。sshEOFAssuansockettmpS。gpgagent。sshEOFtee。gitsecretkeysgpgagent。confEOFextrasockettmpS。gpgagent。extrabrowsersockettmpS。gpgagent。browserEOF
  这一步很必要,因为gitsecret在主机系统和Docker容器之间共享代码库的设置中使用时存在问题,具体如下:gpg使用gpgagent来执行其任务,这两个工具通过在pgpagent的homedirectory中创建的套接字进行通信。代理通过gitsecret使用的gpg命令隐式启动,使用。gitsecretkeys目录作为homedirectory。由于homedirectory的位置与主机系统共享,因此套接字创建将失败。
  对应的错误信息是:gpg:cantconnecttotheagent:IPCconnectcallfailedgpgagent:errorbindingsockettovarwwwapp。gitsecretkeysS。gpgagent:IOerror
  解决此问题,可以通过将其他gpg配置文件放在。gitsecretkeys目录中,将gpg配置为对套接字使用不同的位置:
  S。gpgagentAssuansockettmpS。gpgagent
  s。gpgagent。sshAssuansockettmpS。gpgagent
  gpgagent。confextrasockettmpS。gpgagent。extrabrowsersockettmpS。gpgagent。browser添加、列出和删除用户
  要添加新用户,必须首先导入其公共gpg密钥。然后运行:emailpascal。landauexample。comgitsecrettellemail
  在这种情况下,用户pascal。landauexample。com现在将能够解密这些密钥。要显示用户请运行:gitsecretwhoknowsgitsecretwhoknowspascal。landauexample。com
  要删除用户,请运行:emailpascalexample。comgitsecretkillpersonemail
  这时此命令在gitsecret0。5。0中已重命名为removepersongitsecretkillpersonpascal。landauexample。comgitsecret:removedkeys。gitsecret:now〔pascal。landauexample。com〕donothaveanaccesstotherepository。gitsecret:makesuretohidetheexistingsecretsagain。
  用户pascalexample。com将无法再解密这些密钥。
  注意删除用户后需要重新加密机密,并轮换加密的密钥。
  添加、列出和删除文件以进行加密
  运行gitsecretadd〔filenames。。。〕来为文件加密:gitsecretadd。env
  如果。env没有被添加到。gitignore,gitsecret将显示警告并自动添加。gitsecret:thesefilesarenotin。gitignore:。envgitsecret:autoaddingthemto。envgitsecret:1item(s)added。
  如已添加,则添加文件时不会发出警告。gitsecretadd。envgitsecret:1item(s)added。
  只需要添加一次文件。然后将它们存在。gitsecretpathsmapping。cfg:cat。gitsecretpathsmapping。cfg。env:505070fc20233cb426eac6a3414399d0f466710c993198b1088e897fdfbbb2d5
  还可以通过以下方式显示添加的文件:gitsecretlistgitsecretlist。env
  需要主要的是,这个时候文件尚未加密,如果要从加密中删除文件,请运行:gitsecretlistgitsecretlist。env
  输出:gitsecretremove。envgitsecret:removedfromindex。gitsecret:ensurethatfiles:〔。env〕arenownotignored。加密文件
  要加密文件,请运行:gitsecrethide
  输出:gitsecrethidegitsecret:done。1of1filesarehidden。
  所有通过gitsecrettell被添加的用户能够解密这些已经加密的文件,这也意味着每当添加新用户时,您都需要再次运行此命令。解密文件
  可以通过以下方式解密文件:gitsecretreveal
  输出:gitsecretrevealFilevarwwwapp。envexists。Overwrite?(yN)ygitsecret:done。1of1filesarerevealed。文件被解密并将覆盖当前未加密的文件。使用f选项强制覆盖并以非交互方式运行。如果只想检查加密文件的内容,可以使用gitsecretcatfilename例如,gitsecretcat。env。
  当gpg密钥受密码保护时,需要通过p选项传递密码。以下是密码示例123456:gitsecretrevealp123456显示加密和解密文件间的变化
  加密文件的一个问题是,无法在远程工具的代码审查期间审查加密文件。为了了解进行了哪些更改,显示加密文件和解密文件之间的更改能够帮助解决这个问题。可以通过以下方式完成:gitsecretchanges
  输出:echofoo。envgitsecretchangesgitsecret:changesinvarwwwapp。env:devfd63varwwwapp。env34,334,4MAILENCRYPTIONnullMAILFROMADDRESSnullMAILFROMNAME{APPNAME}foo
  注意底部的foo。它是通过在第一行echofoo。env添加的。
  本文是gitsecret用法的上篇,在下篇中我们将会介绍gitsecret的初始设置、Makefile调整等内容,保持关注哦
投诉 评论 转载

gitsecret在Git存储库中加密和存储密钥(上)当涉及处理机密信息(如密码、令牌、密钥文件等)等,以下问题值得考虑:安全性十分重要,但高安全性往往伴随着高度的不便。在团队中,共享某些密钥有时无法避免(因此现在我们需要考虑在多……蔚来进军欧洲四国只租不售,月租价高于市场行情蔚来(09866。HK)正式进入BBA(奔驰、宝马、奥迪)老家。10月8日凌晨,蔚来在NIOBerlin2022上宣布,同时进入德国、荷兰、丹麦、瑞典四个欧洲国家(以下简……一个治鼻炎厉害的方子,鼻塞流鼻涕鼻痒打喷嚏,一方统统搞定大家好,我是沈医生,今天给大家介绍一个专治鼻炎的奇方,无论是鼻塞,流鼻涕,还是鼻子痒,总打喷嚏,内眼角发痒,这个方子都能统统搞定!有鼻炎,经常感觉鼻子发干发痒,总想挖鼻子……远大医药(00512。HK)全球创新放射性核素偶联药物TLX远大医药(00512。HK)公布,该集团在放射性核素偶联药物(RDC)领域用于诊断前列腺癌的药物TLX591CDx(Illuccix?,galliumGa68PSMA11)的新……夜读丨在变老的路上,善待自己,活出快乐。文字丨春暖花开主播丨非凡自由人生的旅途山一程水一程,错过的,都是风景,留下的,都是记忆,生活起起落落,终会归于平淡,我们也在慢慢变老。逝去的岁月,老是……A股又破3000点了!如此惨烈,我们该怎么办?北京时间10月10日下午1点22分,上证指数破3000点。时隔5个多月,A股再破3000点,喜迎2000多点!作为A股股民,惨痛的经历一次接一次在自己身上上演,是自……今晚CBA联赛上海久事VS山东高速中央5现场直播2022年10月25日晚19:30分,20222023赛季中国男子篮球职业联赛常规赛第7轮上海久事男篮迎战山东高速。两支球队近十次历史交锋,上海男篮以4胜6负的战绩,稍占……后中争先,演绎经典,折叠屏手机vivoXFold实力亮相vivo推出的首款折叠屏机型vivoXFold,该机型内外屏幕素质都很不错,各方面的性能配置也可圈可点,受到了消费者的高度关注。该手机不是最早一批折叠屏机型,从其整体的配置来看……这一政策,将延续9月26日,据财政部消息,财政部、税务总局、工业和信息化部发布关于延续新能源汽车免征车辆购置税政策的公告,对购置日期在2023年1月1日至2023年12月31日期间内的新能源汽……使用红米手机的你,恭喜你中奖了国货之光第一款产品横空出世一年的努力,小米公司于2013年7月31日发布了第一款红米系列手机红米1。产品一经发布,受到了消费者的喜爱,在手机市场刮起了一阵飓风。90……苹果停止销售5WUSB充电头,一个时代终结说起苹果的5V1A充电器,绝大部分iPhone用户都用过甚至有的用户现在还在用,毕竟从2010年发布的iPhone4开始到2019年发布的iPhone11,苹果附赠的都是5V1……中国男篮战强敌12人名单出炉!新疆签NBA2米26中锋山西内北京时间8月25日晚22点,中国男篮将迎来世预赛第四阶段的首个对手哈萨克斯坦,该队目前亚洲排名第九,仅落后中国男篮一位,近年来进步有目共睹,尤其是内线球员不惜力的冲抢篮板球,让……
西藏,此生必体验的天堂空前盛大!张常宁婚礼全程直播数十万网友共同见证,接亲阵仗十足痒的时候起疙瘩不痒的时候消失点名刘金凤!吵了那么久,国产影视剧还敢安排倭风服化道?杨鸣果然留一手!辽篮激活2米18高中锋,总冠军争夺或已失去悬21条个人想法梦回大唐!梦幻西游联动西安中国年,剑侠客亮相长安灯会苗侨伟返港后为妻子庆生!多位圈中人现身撑场,两夫妻甜蜜亲吻分析师称MetaQuest3进展顺利,但SoC仍未有更多信息2022年成都新老商圈交相辉映公园商业发展迎来新阶段世界杯总决赛最便宜516欧元?外媒称票价难以置信ai写小说年农民创业项目做什么赚钱这几个暴利项目投资少利润ROG魔霸新锐混合模式综合体验跑赢独显直连,240Hz好屏是恐龙和人类祖先是否共存?为啥有些老板身价上千万,子女却在事业单位拿几千的工资?交易签约过后,两支球队打造超级4巨头豪阵,他们能硬刚勇士吗?小苗的历程作文500字神秘肌肤一部令人心碎的残酷青春爱情电影,谁的青春不荒诞棉花育苗如何预防烧苗发生?孩子是“脚”教育是“鞋”犹他爵士将再次出局,何去何从?中学语文课堂教学论文“你弟回来了,你搬去宾馆住吧”“好,我永。。。

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利