diff --git a/vulnerability-scan/README.md b/vulnerability-scan/README.md index 9eb3fd2e..0c564675 100644 --- a/vulnerability-scan/README.md +++ b/vulnerability-scan/README.md @@ -35,33 +35,44 @@ bash retag-push-latest.sh - 例:`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.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パス社データ転送機能再タグ本番環境にプッシュスクリプト +│ ├── 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 -- 本番とステージングのダイジェストチェックスクリプト ## 作成タイミングと作成方法 diff --git a/vulnerability-scan/validate-image-digest/validate-prd-lambda-digest.sh b/vulnerability-scan/validate-image-digest/validate-prd-lambda-digest.sh new file mode 100644 index 00000000..0d463bfc --- /dev/null +++ b/vulnerability-scan/validate-image-digest/validate-prd-lambda-digest.sh @@ -0,0 +1,49 @@ +#!/bin/bash + +# AWSがログインしているかどうかをチェックする関数 +function check_aws_login() { + if ! aws sts get-caller-identity &>/dev/null; then + echo "❌ AWS credentials are not configured or are incorrect. Exiting." + exit 1 + fi +} + +# ログインチェックを実行 +check_aws_login + +# プロダクションECRとLambda名のペアの配列 +resources=( + "mbj-newdwh2021-product-sap-data-decrypt mbj-newdwh2021-product-lambda-sap-data-decrypt" + "mbj-newdwh2021-product-check-view-security-option-ecr mbj-newdwh2021-product-lambda-check-view-security-option" + "mbj-newdwh2021-product-transfer-medpass-data-ecr mbj-newdwh2021-product-lambda-transfer-medpass-data" +) + +# 各リソースをループ +for resource_set in "${resources[@]}"; do + # 本番環境のECRとLambda関数名を分割 + product_repo=$(echo $resource_set | awk '{print $1}') + lambda_function=$(echo $resource_set | awk '{print $2}') + + # 本番環境のlatestタグのダイジェストを取得 + product_digest=$(aws ecr describe-images --repository-name "$product_repo" --image-ids imageTag=latest --query 'imageDetails[0].imageDigest' --output text 2>/dev/null) + + # Lambda関数のダイジェストを取得 + lambda_digest=$(aws lambda get-function --function-name "$lambda_function" --query 'Code.ImageUri' --output text 2>/dev/null | sed 's/.*@//') + + # 両方のダイジェストが正常に取得されたかチェック + if [[ -z "$product_digest" || -z "$lambda_digest" ]]; then + echo "Failed to retrieve digest for $product_repo or $lambda_function." + continue + fi + + # ダイジェストを比較 + if [[ "$product_digest" == "$lambda_digest" ]]; then + echo "✅ Digests match for product ECR and Lambda in $product_repo." + echo " Product Digest: $product_digest" + echo " Lambda Digest: $lambda_digest" + else + echo "❌ Digests do not match for $product_repo and $lambda_function." + echo " Product Digest: $product_digest" + echo " Lambda Digest: $lambda_digest" + fi +done diff --git a/vulnerability-scan/validate-image-digest/validate-stg-latest-scanpoint-digest.sh b/vulnerability-scan/validate-image-digest/validate-stg-latest-scanpoint-digest.sh new file mode 100644 index 00000000..9aedef6c --- /dev/null +++ b/vulnerability-scan/validate-image-digest/validate-stg-latest-scanpoint-digest.sh @@ -0,0 +1,53 @@ +#!/bin/bash + +# AWSがログインしているかどうかをチェックする関数 +function check_aws_login() { + if ! aws sts get-caller-identity &>/dev/null; then + echo "❌ AWS credentials are not configured or are incorrect. Exiting." + exit 1 + fi +} + +# ログインチェックを実行 +check_aws_login + +# ステージングリポジトリ名の配列 +staging_repositories=( + "mbj-newdwh2021-staging-ecr" + "mbj-newdwh2021-staging-sap-data-decrypt" + "mbj-newdwh2021-staging-check-view-security-option-ecr" + "mbj-newdwh2021-staging-crm-datafetch-ecr" + "mbj-newdwh2021-staging-jskult-dbdump-ecr" + "mbj-newdwh2021-staging-jskult-batch-daily-ecr" + "mbj-newdwh2021-staging-jskult-batch-laundering-ecr" + "mbj-newdwh2021-staging-jskult-webapp-ecr" + "mbj-newdwh2021-staging-export-dbdump-ecr" + "mbj-newdwh2021-staging-transfer-medpass-data-ecr" +) + +# 各ステージングリポジトリをループ +for staging_repo in "${staging_repositories[@]}"; do + + # ステージングのlatestタグのダイジェストを取得 + latest_digest=$(aws ecr describe-images --repository-name "$staging_repo" --image-ids imageTag=latest --query 'imageDetails[0].imageDigest' --output text 2>/dev/null) + + # ステージングのscan-pointのダイジェストを取得 + scan_point_digest=$(aws ecr describe-images --repository-name "$staging_repo" --image-ids imageTag=scan-point --query 'imageDetails[0].imageDigest' --output text 2>/dev/null) + + # 両方のダイジェストが正常に取得されたかチェック + if [[ -z "$latest_digest" || -z "$scan_point_digest" ]]; then + echo "Failed to retrieve digest for 'latest' or 'scan-point' tag in $staging_repo." + continue + fi + + # ダイジェストを比較 + if [[ "$latest_digest" == "$scan_point_digest" ]]; then + echo "✅ Digests match for 'latest' and 'scan-point' tags in $staging_repo." + echo " Latest Tag Digest: $latest_digest" + echo " Scan-Point Tag Digest: $scan_point_digest" + else + echo "❌ Digests do not match for 'latest' and 'scan-point' tags in $staging_repo." + echo " Latest Tag Digest: $latest_digest" + echo " Scan-Point Tag Digest: $scan_point_digest" + fi +done diff --git a/vulnerability-scan/validate-image-digest/validate-stg-prd-ecr-digest.sh b/vulnerability-scan/validate-image-digest/validate-stg-prd-ecr-digest.sh new file mode 100644 index 00000000..a14253f7 --- /dev/null +++ b/vulnerability-scan/validate-image-digest/validate-stg-prd-ecr-digest.sh @@ -0,0 +1,56 @@ +#!/bin/bash + +# AWSがログインしているかどうかをチェックする関数 +function check_aws_login() { + if ! aws sts get-caller-identity &>/dev/null; then + echo "❌ AWS credentials are not configured or are incorrect. Exiting." + exit 1 + fi +} + +# ログインチェックを実行 +check_aws_login + +# リポジトリ名のペアの配列(ステージングと本番) +repositories=( + "mbj-newdwh2021-staging-ecr mbj-newdwh2021-product-ecr" + "mbj-newdwh2021-staging-sap-data-decrypt mbj-newdwh2021-product-sap-data-decrypt" + "mbj-newdwh2021-staging-check-view-security-option-ecr mbj-newdwh2021-product-check-view-security-option-ecr" + "mbj-newdwh2021-staging-crm-datafetch-ecr mbj-newdwh2021-product-crm-datafetch-ecr" + "mbj-newdwh2021-staging-jskult-dbdump-ecr mbj-newdwh2021-product-jskult-dbdump-ecr" + "mbj-newdwh2021-staging-jskult-batch-daily-ecr mbj-newdwh2021-product-jskult-batch-daily-ecr" + "mbj-newdwh2021-staging-jskult-batch-laundering-ecr mbj-newdwh2021-product-jskult-batch-laundering-ecr" + "mbj-newdwh2021-staging-jskult-webapp-ecr mbj-newdwh2021-product-jskult-webapp-ecr" + "mbj-newdwh2021-staging-export-dbdump-ecr mbj-newdwh2021-product-export-dbdump-ecr" + "mbj-newdwh2021-staging-transfer-medpass-data-ecr mbj-newdwh2021-product-transfer-medpass-data-ecr" +) + +# 各ペアのリポジトリをループ +for repo_pair in "${repositories[@]}"; do + # ステージングと本番のリポジトリ名を分割 + staging_repo=$(echo $repo_pair | awk '{print $1}') + product_repo=$(echo $repo_pair | awk '{print $2}') + + # ステージングのダイジェストを取得 + staging_digest=$(aws ecr describe-images --repository-name "$staging_repo" --image-ids imageTag=latest --query 'imageDetails[0].imageDigest' --output text 2>/dev/null) + + # 本番環境のダイジェストを取得 + product_digest=$(aws ecr describe-images --repository-name "$product_repo" --image-ids imageTag=latest --query 'imageDetails[0].imageDigest' --output text 2>/dev/null) + + # 両方のダイジェストが正常に取得されたかチェック + if [[ -z "$staging_digest" || -z "$product_digest" ]]; then + echo "Failed to retrieve digest for either $staging_repo or $product_repo." + continue + fi + + # ダイジェストを比較 + if [[ "$staging_digest" == "$product_digest" ]]; then + echo "✅ Digests match for $staging_repo and $product_repo." + echo " Staging Digest: $staging_digest" + echo " Product Digest: $product_digest" + else + echo "❌ Digests do not match for $staging_repo and $product_repo." + echo " Staging Digest: $staging_digest" + echo " Product Digest: $product_digest" + fi +done