

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 git-secrets 扫描 Git 存储库中的敏感信息及安全问题
<a name="scan-git-repositories-for-sensitive-information-and-security-issues-by-using-git-secrets"></a>

*Saurabh Singh，Amazon Web Services*

## Summary
<a name="scan-git-repositories-for-sensitive-information-and-security-issues-by-using-git-secrets-summary"></a>

此模式描述了如何使用 AWS 实验室的开源 [git-sec](https://github.com/awslabs/git-secrets) rets 工具扫描 Git 源代码库，并查找可能包含敏感信息（例如用户密码或 AWS 访问密钥）或存在任何其他安全问题的代码。

`git-secrets` 扫描提交、提交消息和合并，以防止密钥等敏感信息被添加至 Git 存储库。例如，如果提交、提交消息或合并历史记录中的任何提交与您配置的、禁用的正则表达式模式之一相匹配，则该提交将被拒绝。

## 先决条件和限制
<a name="scan-git-repositories-for-sensitive-information-and-security-issues-by-using-git-secrets-prereqs"></a>

**先决条件**
+ 活跃的 AWS 账户
+ 需安全扫描的 Git 存储库
+ Git 客户端（版本 2.37.1 及更高版本）已安装

## 架构
<a name="scan-git-repositories-for-sensitive-information-and-security-issues-by-using-git-secrets-architecture"></a>

**目标架构**
+ Git
+ `git-secrets`

![\[使用 git-secrets 工具扫描 Git 源存储库，以查找敏感信息。\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/images/pattern-img/4a18e0c8-0935-4ee2-86bf-c1dfcfbc1bcb/images/e4813a76-83c2-4254-b5f4-aafe2b8f2127.png)


 

## 工具
<a name="scan-git-repositories-for-sensitive-information-and-security-issues-by-using-git-secrets-tools"></a>
+ [git-secrets](https://github.com/awslabs/git-secrets)是一种防止您将敏感信息提交至 Git 存储库的工具。
+ [Git](https://git-scm.com/) 是开源分布式版本控制系统。

## 最佳实践
<a name="scan-git-repositories-for-sensitive-information-and-security-issues-by-using-git-secrets-best-practices"></a>
+ 务必通过包含所有修订版来扫描 Git 仓库：

  ```
  git secrets --scan-history
  ```

## 操作说明
<a name="scan-git-repositories-for-sensitive-information-and-security-issues-by-using-git-secrets-epics"></a>

### Connect 连接到 EC2 实例
<a name="connect-to-an-ec2-instance"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 使用 SSH 连接到 EC2 实例。 | 使用 SSH 和密钥对文件连接到亚马逊弹性计算云 (Amazon EC2) 实例。如果您要在本地计算机上扫描存储库，则可跳过此步骤。 | 常规 AWS | 

### 安装 Git
<a name="install-git"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 安装 Git。 | 通过以下命令安装 Git：<pre>yum install git -y</pre>如果使用的是本地计算机，则可安装适用于特定操作系统版本的 Git 客户端。有关更多信息，请参阅 [Git 网站](https://git-scm.com/downloads/guis)。 | 常规 AWS | 

### 克隆源存储库并安装 git-secrets
<a name="clone-the-source-repository-and-install-git-secrets"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 克隆 Git 源存储库。 | 若要克隆待扫描 Git 存储库，请从主目录中选择 **Git 克隆**命令。 | 常规 AWS | 
| 克隆 git-secrets。 | 克隆 `git-secrets`Git 存储库。<pre>git clone https://github.com/awslabs/git-secrets.git</pre>将 `git-secrets` 放在 `PATH ` 的某个地方，以便其在您运行 `git-secrets` 时被 Git 选中。 | 常规 AWS | 
| 安装 git-secrets。 | **对于 Unix 及其变体 (Linux/macOS)：**您可以使用 `Makefile` 的 `install` 目标（在 `git-secrets` 存储库中提供）安装工具。您可以使用 `PREFIX` 和 `MANPREFIX` 变量自定义安装路径。<pre>make install</pre>**对于 Windows：**运行`git-secrets`存储库中提供的 PowerShell `install.ps1`脚本。此脚本将安装文件复制到安装目录（默认为 `%USERPROFILE%/.git-secrets`），并将该目录添加至当前用户 `PATH`。<pre>PS > ./install.ps1</pre>**对于 Homebrew（macOS 用户）：**运行：<pre>brew install git-secrets</pre> | 常规 AWS | 

### 扫描 git 代码存储库
<a name="scan-git-code-repository"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 前往源存储库。 | 切换至要扫描的 Git 存储库目录：<pre>cd my-git-repository</pre> | 常规 AWS | 
| 注册 AWS 规则集（Git 钩子）。 | 若要配置 `git-secrets` 以在每次提交时扫描 Git 存储库，请运行此命令：<pre>git secrets --register-aws</pre> | 常规 AWS | 
| 扫描 存储库。 | 运行以下命令，以开始扫描存储库：<pre>git secrets -–scan</pre> | 常规 AWS | 
| 查看输出文件。 | 如果在您的 Git 存储库中发现了漏洞，该工具将生成输出文件。例如：<pre>example.sh:4:AWS_SECRET_ACCESS_KEY = *********<br /><br />[ERROR] Matched one or more prohibited patterns<br /><br />Possible mitigations:<br />- Mark false positives as allowed using: git config --add secrets.allowed ...<br />- Mark false positives as allowed by adding regular expressions to .gitallowed at repository's root directory<br />- List your configured patterns: git config --get-all secrets.patterns<br />- List your configured allowed patterns: git config --get-all secrets.allowed<br />- List your configured allowed patterns in .gitallowed at repository's root directory<br />- Use --no-verify if this is a one-time false positive</pre> | 常规 AWS | 

## 相关资源
<a name="scan-git-repositories-for-sensitive-information-and-security-issues-by-using-git-secrets-resources"></a>
+ [git-secrets 工具](https://github.com/awslabs/git-secrets)