

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 git-secrets 掃描 Git 儲存庫是否有敏感資訊和安全問題
<a name="scan-git-repositories-for-sensitive-information-and-security-issues-by-using-git-secrets"></a>

*Saurabh Singh，Amazon Web Services*

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

此模式說明如何使用 AWS Labs 的開放原始碼 [git-secrets](https://github.com/awslabs/git-secrets) 工具掃描 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 版及更新版本）

## Architecture
<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_tw/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>

### 連線至 EC2 執行個體
<a name="connect-to-an-ec2-instance"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 使用 SSH 連線至 EC2 執行個體。 | 使用 SSH 和金鑰對檔案連線至 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體。如果您要掃描本機電腦上的儲存庫，可以略過此步驟。 | 一般 AWS | 

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


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 安裝 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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 複製 Git 來源儲存庫。 | 若要複製您要掃描的 Git 儲存庫，請從主目錄中選擇 **Git 複製**命令。 | 一般 AWS | 
| 複製 git-secrets。 | 複製 `git-secrets` Git 儲存庫。<pre>git clone https://github.com/awslabs/git-secrets.git</pre>將`git-secrets`某個位置放在 中，`PATH `讓 Git 在您執行 時收取它`git-secrets`。 | 一般 AWS | 
| 安裝 git-secrets。 | **對於 Unix 和變體 (Linux/macOS)：**您可以使用 `install`的目標 `Makefile`（在 `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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 前往來源儲存庫。 | 切換到您要掃描的 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)