# MeDaCA ECR脆弱スキャンツール

## 前提

- `docker cli`インストール済み(WSL想定)
- `AWS CLI`インストール済み
- AWS CLIでアカウント情報設定されていること

## 実行方法

### ECRをビルド、タグ、プッシュする

- `vulnerability-scan`の直下フォルダで以下コマンド実行する

```bash
bash build-push-scanpoint.sh
```

- 実行したコマンド失敗したとき、スクリプトが停止する
- その場合は`build-push-scanpoint`直下から失敗したコマンド単体実行できる
  - 例：`bash build-dataimport.sh`
- スクリプトを強制停止したい場合、`Ctrl + C`で停止できる

### ビルドしたECRをlatestに再タグ、プッシュする

- **前提：ECRにプッシュした`scan-point`タグのイメージでステージング環境での動作確認が完了していること。**
- `vulnerability-scan`の直下フォルダで以下コマンド実行する

```bash
bash retag-push-latest.sh
```

- 実行したコマンド失敗したとき、スクリプトが停止する
- その場合は`retag-push-latest`直下から失敗したコマンド単体実行できる
- 例：`bash retag-dataimport.sh`
- スクリプトを強制停止したい場合、`Ctrl + C`で停止できる

### チェックスクリプト実行方法

- `cd validate-image-digest`コマンドでディレクトリ変更する
- `bash validate-stg-latest-scanpoint-digest.sh` でステージングECRのlatestとscan-pointダイジェストを比較するスクリプト実行する
- `bash validate-stg-prd-ecr-digest.sh` でステージングECRのlatestと本番ECRのlatestダイジェストを比較するスクリプト実行する
- `bash validate-prd-lambda-digest.sh` で本番ECRのlatestと本番Lambdaのダイジェストを比較するスクリプト実行する

## フォルダ構成

├── build-push-scanpoint.sh                                      -- 全ECRモジュールをアップデート、Dockerイメージにビルドし、プッシュするスクリプト
├── retag-push-latest.sh                                         -- ビルドしたDockerイメージをlatestの再タグして、ステージング環境と本番環境にプッシュするスクリプト
├── README.md                                                    -- 当ファイル
├── build-push-scanpoint
│    ├── build-dataimport.sh                                     -- データ登録機能の脆弱性スキャンスクリプト
│    ├── build-sap-data-decrypt.sh                               -- SAPデータ登録 SAPデータ復号化機能脆弱性スキャンスクリプト
│    ├── build-check-view-security-option.sh                     -- Viewセキュリティオプションチェック機能脆弱性スキャンスクリプト
│    ├── build-crm-datafetch.sh                                  -- CRMデータ連携 CRMデータ取得機能脆弱性スキャンスクリプト
│    ├── build-jskult-dbdump.sh                                  -- 実消化&アルトマーク日次バッチ実行前dump取得機能脆弱性スキャンスクリプト
│    ├── build-jskult-batch-daily.sh                             -- 実消化&アルトマーク日次バッチ機能脆弱性スキャンスクリプト
│    ├── build-jskult-batch-laundering.sh                        -- 実消化&アルトマーク週次バッチ機能脆弱性スキャンスクリプト
│    ├── build-jskult-webapp.sh                                  -- 実消化&アルトマークWebアプリケーション脆弱性スキャンスクリプト
|    ├── build-export-dbdump.sh                                  -- DBダンプ取得機能脆弱性スキャンスクリプト
|    └── build-transfer-medpass-data.sh                          -- medパス社データ転送機能脆弱性スキャンスクリプト
├── retag-push-latest
|    ├── retag-dataimport.sh                                     -- データ登録機能の再タグ本番環境にプッシュスクリプト
|    ├── retag-sap-data-decrypt.sh                               -- SAPデータ登録 SAPデータ復号化機能再タグ本番環境にプッシュスクリプト
|    ├── retag-check-view-security-option.sh                     -- Viewセキュリティオプションチェック機能再タグ本番環境にプッシュスクリプト
|    ├── retag-crm-datafetch.sh                                  -- CRMデータ連携 CRMデータ取得機能再タグ本番環境にプッシュスクリプト
|    ├── retag-jskult-dbdump.sh                                  -- 実消化&アルトマーク日次バッチ実行前dump取得機能再タグ本番環境にプッシュスクリプト
|    ├── retag-jskult-batch-daily.sh                             -- 実消化&アルトマーク日次バッチ機能再タグ本番環境にプッシュスクリプト
|    ├── retag-jskult-batch-laundering.sh                        -- 実消化&アルトマーク週次バッチ機能再タグ本番環境にプッシュスクリプト
|    ├── retag-jskult-webapp.sh                                  -- 実消化&アルトマークWebアプリケーション再タグ本番環境にプッシュスクリプト
|    ├── retag-export-dbdump.sh                                  -- DBダンプ取得機能再タグ本番環境にプッシュスクリプト
|    └── retag-transfer-medpass-data.sh                          -- medパス社データ転送機能再タグ本番環境にプッシュスクリプト
└── validate-image-digest
     ├── validate-prd-lambda-digest.sh                           -- LambdaとECRのダイジェストチェックスクリプト
     ├── validate-stg-latest-scanpoint-digest.sh                 -- ステージングlatestとscan-pointのダイジェストチェックスクリプト
     └── validate-stg-prd-ecr-digest.sh                          -- 本番とステージングのダイジェストチェックスクリプト

## 作成タイミングと作成方法

### 作成タイミング

- ECRリポジトリにて資材を管理する機能のUAT完了後、脆弱性スキャン手順を作成するタイミングで、当スクリプトをreleaseブランチに登録する。

### 作成方法

- 脆弱性スキャンスクリプトを`build-push-scanpoint`フォルダ配下に作成する。
  - `vulnerability-scan/build-push-scanpoint/build-crm-datafetch.sh` を参考にしてスクリプト実装する
  - リポジトリによってコマンドの組み方が微妙に異なるため、作成後にレビューを受けること
- 実装したスクリプトを親スクリプト`vulnerability-scan/build-push-scanpoint.sh`に追加する
- 再タグ&本番環境へのPUSHスクリプトを`retag-push-latest`フォルダ配下に作成する。
  - `vulnerability-scan/retag-push-latest/retag-dataimport.sh` を参考にしてスクリプト実装する
- 実装したスクリプトを親スクリプト`vulnerability-scan/retag-push-latest.sh`に追加する
