下 git-secret:在 Git 存储库中加密和存储密钥( 二 )

.gitignore 被忽略 。

  • 加密文件 。
  • 如果团队其他成员对文件进行更改,则需要解密文件→更新文件→再次提交加密文件
  • 如果对解密的文件进行更改,修改完需要再次重新进行加密 。
  • 下面的“流程挑战”部分展示了一些在可能遇到的问题,“场景”部分将会展示一些常见场景的具体示例 。
    流程中的挑战从流程的角度,一起来看看在过程中可能遇到的一些困难和挑战,以及如何处理解决 。
    更新机密更新机密时 , 请确保先解密文件,从而避免使用可能仍存在本地的旧文件 。可以通过检查最新的 main 分支并运行 git secret reveal,来获得最新版本的机密文件 。也可以使用 post-merge Git hook 自动执行此操作,不过要注意覆盖本地机密文件的风险哦 。
    代码审查和合并冲突由于无法对加密文件进行很好的区分,因此当涉及机密时代码审查变得更加困难 。这是可以尝试使用 GitLab 进行审查 , 首先检查 .gitsecret/paths/mapping.cfg 文件的差异,在 UI 中查看哪些文件已更改 。
    此外,可以根据以下步骤来查看:
    • 检查 main 分支 。
    • 【下 git-secret:在 Git 存储库中加密和存储密钥】通过 git secret reveal -f 解密文件
    • 查看 feature-branch.
    • 运行 git secret changes 来查看 main 的解密文件和feature-branch 中加密文件之间的差异 。
    当多个团队成员需要同时修改不同分支上的机密文件时,情况会更加复杂一些,因为Git 无法智能处理增量更新 。
    本地 git-secret 和 gpg 设置当团队的所有人员将git-secret 安装在本地 , 并且使用他们自己的 gpg 密钥,这也意味着团队的成本会随之增加,原因如下:
    • 新加入开发团队的人员需要:
      • 本地安装 git-secret(*)
      • 在本地安装和设置 gpg(*)
      • 创建 gpg 密钥对
    • 必须由所有其他团队成员 (*) 添加公钥 。
    • 必须通过添加密钥的用户 git secret tell
    • 机密需要重新加密 。
    对于离开团队的人员:
    • 所有其他团队成员(*) 都需要删除公钥 。
    • 通过 git secret killperson 删除密钥的用户 。
    • 机密需要重新加密 。
    另外,需要确保 git-secretgpg 版本保持最新 , 避免遇到任何兼容性问题 。作为替代方案,也可以通过 Docker 处理,而上述步骤中标注(*) 则可以省去,也就是不需要设置本地的 git-secretgpg
    为了更加便捷,将存储库中每个开发人员的公共 gpg 密钥放在 .dev/gpg-keys/,而私钥命名为 secret.gpg 并放在代码库的根目录中 。
    在此设置中,secret.gpg 还必须被添加到 .gitignore 文件中 。
    # File: .gitignore#...vendor/secret.gpg然后可以使用make目标简化导入:
    # gpgDEFAULT_SECRET_GPG_KEY?=secret.gpgDEFAULT_PUBLIC_GPG_KEYS?=.dev/gpg-keys/*.PHONY: gpggpg: ## Run gpg commands. Specify the command e.g. via ARGS="--list-keys"$(EXECUTE_IN_APPLICATION_CONTAINER) gpg $(ARGS).PHONY: gpg-importgpg-import: ## Import a gpg key file e.g. via GPG_KEY_FILES="/path/to/file /path/to/file2"@$(if $(GPG_KEY_FILES),,$(error GPG_KEY_FILES is undefined))"$(MAKE)" -s gpg ARGS="--import --batch --yes --pinentry-mode loopback $(GPG_KEY_FILES)".PHONY: gpg-import-default-secret-keygpg-import-default-secret-key: ## Import the default secret key"$(MAKE)" -s gpg-import GPG_KEY_FILES="$(DEFAULT_SECRET_GPG_KEY)".PHONY: gpg-import-default-public-keysgpg-import-default-public-keys: ## Import the default public keys"$(MAKE)" -s gpg-import GPG_KEY_FILES="$(DEFAULT_PUBLIC_GPG_KEYS)" .PHONY: gpg-initgpg-init: gpg-import-default-secret-key gpg-import-default-public-keys ## Initialize gpg in the container, i.e. import all public and private keys上述操作需要在容器启动后运行一次 。
    场景先假设以下这些条件:
    • 已检查过 Git 存储库 。git checkout part-6-git-secret-encrypt-repository-docker
    • 没有正在运行的 Docker 容器 。make docker-down
    • 已删除现有 git-secret 文件夹、中的密钥.dev/gpg-keyssecret.gpg密钥和 passwords.*文件 。rm -rf .gitsecret/ .dev/gpg-keys/* secret.gpg passwords.*
    gpg 密钥的初始设置不幸的是,我没有找到通过

    推荐阅读