

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 複数のコード成果物のセキュリティ問題を一斉に検出するパイプラインをデプロイする
<a name="deploy-a-pipeline-that-simultaneously-detects-security-issues-in-multiple-code-deliverables"></a>

*Amazon Web Services、Benjamin Morris、Tim Hahn、Sapeksh Madan、Dina Odum、および Isaiah Schisler*

## 概要
<a name="deploy-a-pipeline-that-simultaneously-detects-security-issues-in-multiple-code-deliverables-summary"></a>

[Simple Code Scanning Pipeline (SCSP)](https://github.com/awslabs/simple-code-scanning-pipeline) では、業界標準のオープンソースセキュリティツールを並行して実行するコード分析パイプラインを 2 クリックで作成できます。これにより、開発者はツールをインストールしたり、それらの実行方法を理解したりすることなく、コードの品質とセキュリティを確認できます。これにより、コード成果物の脆弱性や設定ミスを減らすことができます。また、組織がセキュリティツールのインストール、調査、設定に費やす時間も短縮されます。

SCSP の前に、この特定のツール一式を使用してコードをスキャンするには、開発者がソフトウェア分析ツールを特定、手動でインストール、設定する必要がありました。ローカルにインストールされている場合でも、Automated Security Helper (ASH) などの一体型のツールを実行するには、Docker コンテナを設定する必要があります。しかし、SCSP では、業界標準のコード分析ツール一式が AWS クラウドで自動的に実行されます。このソリューションでは、Git を使用してコード成果物を反映した後、セキュリティチェックが失敗した対象に対する分析情報が一目で見てわかる出力を受け取れます。

## 前提条件と制限事項
<a name="deploy-a-pipeline-that-simultaneously-detects-security-issues-in-multiple-code-deliverables-prereqs"></a>
+ アクティブな AWS アカウント
+ セキュリティ上の問題をスキャンする 1 つ以上のコード成果物
+ AWS Command Line Interface (AWS CLI)、[インストール](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)および[設定](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)済み
+ Python バージョン 3.0 以降、および pip バージョン 9.0.3 以降が[インストール済み](https://www.python.org/downloads/windows/)
+ 「[インストール済み](https://github.com/git-guides/install-git)」Git
+ ローカルワークステーションへの [git-remote-codecommit](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-git-remote-codecommit.html#setting-up-git-remote-codecommit-install) のインストール

## アーキテクチャ
<a name="deploy-a-pipeline-that-simultaneously-detects-security-issues-in-multiple-code-deliverables-architecture"></a>

**ターゲットテクノロジースタック**
+ AWS CodeCommit リポジトリ
+ AWS CodeBuild プロジェクト
+ AWS CodePipeline パイプライン
+ Amazon Simple Storage Service (Amazon S3) バケット
+ AWS CloudFormation テンプレート

**ターゲットアーキテクチャ**

静的コード分析用の SCSP は、成果物コードに関するセキュリティフィードバックを提供するように設計された DevOps プロジェクトです。

![\[AWS リージョンでコード分析を実行する SCSP。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/61fe4f99-7dfc-48a8-90e4-a25253cc140d/images/fbc13150-0970-48d6-87bc-84dfaed90d4b.png)


1. で AWS マネジメントコンソール、ターゲットにログインします AWS アカウント。パイプラインをデプロイする AWS リージョン にいることを確認します。

1. コードリポジトリの CloudFormation テンプレートを使用して SCSP スタックをデプロイします。これにより、新しい CodeCommit リポジトリと CodeBuild プロジェクトが作成されます。
**注記**  
代替のデプロイオプションとして、スタックのデプロイ中にリポジトリの Amazon リソースネーム (ARN) をパラメータとして指定することで、既存の CodeCommit リポジトリを使用できます。

1. リポジトリをローカルワークステーションに複製し、複製されたリポジトリ内のそれぞれのフォルダにファイルを追加します。

1. Git を使用して、CodeCommit リポジトリにファイルを追加、確定、反映します。

1. CodeCommit リポジトリに反映すると、CodeBuild ジョブが開始されます。CodeBuild プロジェクトは、セキュリティツールを使用してコード成果物をスキャンします。

1. パイプラインの出力を確認します。エラーレベルの問題を検出したセキュリティツールでは、パイプラインにおけるアクションが失敗します。これらのエラーを修正するか、誤検出として抑制します。CodePipeline の **[アクション詳細]** またはパイプラインの S3 バケットでツール出力の詳細を確認します。

## ツール
<a name="deploy-a-pipeline-that-simultaneously-detects-security-issues-in-multiple-code-deliverables-tools"></a>

**AWS のサービス**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) は、 AWS リソースをセットアップし、迅速かつ一貫してプロビジョニングし、 AWS アカウント および リージョン全体のライフサイクルを通じてリソースを管理するのに役立ちます。
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) は完全マネージド型の構築サービスです。ソースコードのコンパイル、ユニットテストの実行、すぐにデプロイできるアーティファクトの生成を行います。
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) は、独自のソースコントロールシステムを管理することなく、Git リポジトリを非公開で保存および管理できるバージョン管理サービスです。

**その他のツール**

SCSP がコード成果物のスキャンに使用するツールの完全なリストについては、GitHub の「[SCSP readme](https://github.com/awslabs/simple-code-scanning-pipeline/blob/main/README.md)」を参照してください。

**コードリポジトリ**

このパターンのコードは、GitHub の [Simple Code Scanning Pipeline (SCSP)](https://github.com/awslabs/simple-code-scanning-pipeline) リポジトリから入手可能です。

## エピック
<a name="deploy-a-pipeline-that-simultaneously-detects-security-issues-in-multiple-code-deliverables-epics"></a>

### SCSP をデプロイする
<a name="deploy-the-scsp"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| CloudFormation スタックを更新する。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/deploy-a-pipeline-that-simultaneously-detects-security-issues-in-multiple-code-deliverables.html)これにより、CodeCommit リポジトリ、CodePipeline パイプライン、いくつかの CodeBuild ジョブ定義、および S3 バケットが作成されます。ビルド実行とスキャン結果がこのバケットにコピーされます。CloudFormation スタックが完全にデプロイされると、SCSP が使用できるようになります。 | AWS DevOps、AWS 管理者 | 

### パイプラインを使用する
<a name="use-the-pipeline"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| スキャンの結果を調べる。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/deploy-a-pipeline-that-simultaneously-detects-security-issues-in-multiple-code-deliverables.html) | アプリ開発者、AWS DevOps | 

## トラブルシューティング
<a name="deploy-a-pipeline-that-simultaneously-detects-security-issues-in-multiple-code-deliverables-troubleshooting"></a>


| 問題 | ソリューション | 
| --- | --- | 
| HashiCorp Terraform または AWS CloudFormation ファイルはスキャンされません。 | Terraform (.tf) および CloudFormation (.yml、.yaml、または .json) ファイルが、複製された CodeCommit リポジトリの適切なフォルダに配置されていることを確認します。 | 
| `git clone` コマンドは失敗しています。 | がインストールされていること、`git-remote-codecommit`および CLI が CodeCommit リポジトリを読み取るアクセス許可を持つ AWS 認証情報にアクセスできることを確認します。 | 
| `Project-level concurrent build limit cannot exceed the account-level concurrent build limit of 1` などの同時実行エラー。 | [CodePipeline コンソール](https://console.aws.amazon.com/codesuite/codepipeline/home)で **[変更をリリースする]** ボタンを選択して、パイプラインを再実行します。これは、パイプラインが実行される最初の数回で最も一般的と思われる既知の問題です。 | 

## 関連リソース
<a name="deploy-a-pipeline-that-simultaneously-detects-security-issues-in-multiple-code-deliverables-resources"></a>

SCSP プロジェクトに対する[フィードバックを提供します](https://github.com/awslabs/simple-code-scanning-pipeline/issues)。

## 追加情報
<a name="deploy-a-pipeline-that-simultaneously-detects-security-issues-in-multiple-code-deliverables-additional"></a>

**よくある質問**

*SCSP プロジェクトは Automated Security Helper (ASH) と同じですか?*

いいえ。コンテナを使用してコードスキャンツールを実行する CLI ツールが必要な場合は、ASH を使用します。[Automated Security Helper (ASH)](https://github.com/awslabs/automated-security-helper) は、新しいコードインフラストラクチャ、または IAM リソース設定でセキュリティ違反が発生する可能性を減らすために設計されたツールです。ASH は、ローカルで実行できるコマンドラインユーティリティです。ローカルで使用するには、システムでコンテナ環境をインストールして運用する必要があります。

ASH よりも簡単な設定パイプラインが必要な場合は、SCSP を使用します。SCSP はローカルインストールを必要としません。SCSP は、パイプラインで個別にチェックを実行し、ツール別に結果を表示するように設計されています。SCSP は、Docker の設定に伴うオーバーヘッドも回避し、オペレーティングシステム (OS) に依存しません。

*SCSP はセキュリティチーム専用ですか?*

いいえ。誰でもパイプラインをデプロイして、コードのどの部分がセキュリティチェックに合格していないかを判断できます。例えば、セキュリティ以外のユーザーは、セキュリティチームと見直す前に SCSP を使用してコードを確認できます。

*GitLab、GitHub、または Bitbucket といった別のタイプのリポジトリを使用している場合、SCSP を使用できますか?*

2 つの異なるリモートリポジトリを指すようにローカル git リポジトリを設定できます。たとえば、既存の GitLab リポジトリのクローンを作成し、SCSP インスタンス (必要に応じて CloudFormation、Terraform、および AWS Config Rules Development Kit (AWS RDK) フォルダを指定) を作成し、 を使用して SCSP CodeCommit リポジトリの`git remote add upstream <SCSPGitLink>`ローカルリポジトリを指すことができます。これにより、コード変更を最初に SCSP に送信し、検証してから、検出結果に対応するために追加の更新が行われた後に、GitLab、GitHub、または Bitbucket リポジトリに反映できます。複数のリモートの詳細については、[「追加の Git リポジトリにコミットをプッシュする](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-mirror-repo-pushes.html)」(AWS ブログ記事) を参照してください。

**注記**  
ウェブインターフェイスを介した変更を避けるなど、予期しない変更に注意してください。

**独自のアクションの提供と追加**

SCSP セットアップは、SCSP AWS Cloud Development Kit (AWS CDK) アプリケーションのソースコードを含む GitHub プロジェクトとして維持されます。パイプラインにチェックを追加するには、 AWS CDK アプリケーションを更新し、 AWS アカウント パイプラインを実行するターゲットに合成またはデプロイする必要があります。これを行うには、まず SCSP [GitHub プロジェクト](https://github.com/awslabs/simple-code-scanning-pipeline)の複製を作成し、`lib` フォルダでスタック定義ファイルを見つけます。

追加するチェックがある場合、 AWS CDK コードの `StandardizedCodeBuildProject` クラスを使用すると、アクションを簡単に追加できます。名前、説明、`install`または `build` コマンドを指定します。 は、適切なデフォルト値を使用して CodeBuild プロジェクト AWS CDK を作成します。ビルドプロジェクトの作成に加えて、ビルドステージの CodePipeline アクションにそれを追加する必要があります。新しいチェックを設計するとき、スキャンツールが問題を検出した場合、または実行に失敗した場合、アクションは `FAIL` になります。スキャンツールが問題を検出しない場合、アクションは `PASS` になります。ツールの設定例については、`Bandit` アクションのコードを確認してください。

予想される入力と出力の詳細については、[リポジトリのドキュメント](https://github.com/awslabs/simple-code-scanning-pipeline/blob/main/README.md)を参照してください。

カスタムアクションを追加する場合は、`cdk deploy` または `cdk synth + CloudFormation deploy` を使用して SCSP をデプロイする必要があります。これは、**スタックのクイック作成** CloudFormation テンプレートがリポジトリ所有者によって維持されるためです。