翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
複数のコード成果物のセキュリティ問題を一斉に検出するパイプラインをデプロイする
Amazon Web Services、Benjamin Morris、Tim Hahn、Sapeksh Madan、Dina Odum、および Isaiah Schisler
概要
Simple Code Scanning Pipeline (SCSP)
SCSP の前に、この特定のツール一式を使用してコードをスキャンするには、開発者がソフトウェア分析ツールを特定、手動でインストール、設定する必要がありました。ローカルにインストールされている場合でも、Automated Security Helper (ASH) などの一体型のツールを実行するには、Docker コンテナを設定する必要があります。しかし、SCSP では、業界標準のコード分析ツール一式が AWS クラウドで自動的に実行されます。このソリューションでは、Git を使用してコード成果物を反映した後、セキュリティチェックが失敗した対象に対する分析情報が一目で見てわかる出力を受け取れます。
前提条件と制限事項
アクティブな AWS アカウント
セキュリティ上の問題をスキャンする 1 つ以上のコード成果物
Python バージョン 3.0 以降、および pip バージョン 9.0.3 以降がインストール済み
「インストール済み
」Git ローカルワークステーションへの git-remote-codecommit のインストール
アーキテクチャ
ターゲットテクノロジースタック
AWS CodeCommit リポジトリ
AWS CodeBuild プロジェクト
AWS CodePipeline パイプライン
Amazon Simple Storage Service (Amazon S3) バケット
AWS CloudFormation テンプレート
ターゲットアーキテクチャ
静的コード分析用の SCSP は、成果物コードに関するセキュリティフィードバックを提供するように設計された DevOps プロジェクトです。

で AWS マネジメントコンソール、ターゲットにログインします AWS アカウント。パイプラインをデプロイする AWS リージョン にいることを確認します。
コードリポジトリの CloudFormation テンプレートを使用して SCSP スタックをデプロイします。これにより、新しい CodeCommit リポジトリと CodeBuild プロジェクトが作成されます。
注記
代替のデプロイオプションとして、スタックのデプロイ中にリポジトリの Amazon リソースネーム (ARN) をパラメータとして指定することで、既存の CodeCommit リポジトリを使用できます。
リポジトリをローカルワークステーションに複製し、複製されたリポジトリ内のそれぞれのフォルダにファイルを追加します。
Git を使用して、CodeCommit リポジトリにファイルを追加、確定、反映します。
CodeCommit リポジトリに反映すると、CodeBuild ジョブが開始されます。CodeBuild プロジェクトは、セキュリティツールを使用してコード成果物をスキャンします。
パイプラインの出力を確認します。エラーレベルの問題を検出したセキュリティツールでは、パイプラインにおけるアクションが失敗します。これらのエラーを修正するか、誤検出として抑制します。CodePipeline の [アクション詳細] またはパイプラインの S3 バケットでツール出力の詳細を確認します。
ツール
AWS のサービス
AWS CloudFormation は、 AWS リソースをセットアップし、迅速かつ一貫してプロビジョニングし、 AWS アカウント および リージョン全体のライフサイクルを通じてリソースを管理するのに役立ちます。
AWS CodeBuild は完全マネージド型の構築サービスです。ソースコードのコンパイル、ユニットテストの実行、すぐにデプロイできるアーティファクトの生成を行います。
AWS CodeCommit は、独自のソースコントロールシステムを管理することなく、Git リポジトリを非公開で保存および管理できるバージョン管理サービスです。
その他のツール
SCSP がコード成果物のスキャンに使用するツールの完全なリストについては、GitHub の「SCSP readme
コードリポジトリ
このパターンのコードは、GitHub の Simple Code Scanning Pipeline (SCSP)
エピック
| タスク | 説明 | 必要なスキル |
|---|---|---|
CloudFormation スタックを更新する。 |
これにより、CodeCommit リポジトリ、CodePipeline パイプライン、いくつかの CodeBuild ジョブ定義、および S3 バケットが作成されます。ビルド実行とスキャン結果がこのバケットにコピーされます。CloudFormation スタックが完全にデプロイされると、SCSP が使用できるようになります。 | AWS DevOps、AWS 管理者 |
| タスク | 説明 | 必要なスキル |
|---|---|---|
スキャンの結果を調べる。 |
| アプリ開発者、AWS DevOps |
トラブルシューティング
| 問題 | ソリューション |
|---|---|
HashiCorp Terraform または AWS CloudFormation ファイルはスキャンされません。 | Terraform (.tf) および CloudFormation (.yml、.yaml、または .json) ファイルが、複製された CodeCommit リポジトリの適切なフォルダに配置されていることを確認します。 |
| がインストールされていること、 |
| CodePipeline コンソール |
関連リソース
SCSP プロジェクトに対するフィードバックを提供します
追加情報
よくある質問
SCSP プロジェクトは Automated Security Helper (ASH) と同じですか?
いいえ。コンテナを使用してコードスキャンツールを実行する CLI ツールが必要な場合は、ASH を使用します。Automated Security Helper (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 リポジトリにコミットをプッシュする」(AWS ブログ記事) を参照してください。
注記
ウェブインターフェイスを介した変更を避けるなど、予期しない変更に注意してください。
独自のアクションの提供と追加
SCSP セットアップは、SCSP AWS Cloud Development Kit (AWS CDK) アプリケーションのソースコードを含む GitHub プロジェクトとして維持されます。パイプラインにチェックを追加するには、 AWS CDK アプリケーションを更新し、 AWS アカウント パイプラインを実行するターゲットに合成またはデプロイする必要があります。これを行うには、まず SCSP GitHub プロジェクトlib フォルダでスタック定義ファイルを見つけます。
追加するチェックがある場合、 AWS CDK コードの StandardizedCodeBuildProject クラスを使用すると、アクションを簡単に追加できます。名前、説明、installまたは build コマンドを指定します。 は、適切なデフォルト値を使用して CodeBuild プロジェクト AWS CDK を作成します。ビルドプロジェクトの作成に加えて、ビルドステージの CodePipeline アクションにそれを追加する必要があります。新しいチェックを設計するとき、スキャンツールが問題を検出した場合、または実行に失敗した場合、アクションは FAIL になります。スキャンツールが問題を検出しない場合、アクションは PASS になります。ツールの設定例については、Bandit アクションのコードを確認してください。
予想される入力と出力の詳細については、リポジトリのドキュメント
カスタムアクションを追加する場合は、cdk deploy または cdk synth + CloudFormation deploy を使用して SCSP をデプロイする必要があります。これは、スタックのクイック作成 CloudFormation テンプレートがリポジトリ所有者によって維持されるためです。