Skip to content

RyosukeDTomita/devsecops-demo-aws-ecs

Repository files navigation

DevSecOps demo React application for AWS ECS on Fargate

no license jest Semgrep trivy-dependency-check actions-lint

INDEX


ABOUT

Sample React application for Trying to Use DevSecOps tools.

Warning

Since it costs money to maintain the AWS environment created with copilot-cli for the demo environment, I plan to use GitHub-Pages for future demos. I have archived this branch. デモ環境に対してcopilot-cliで作ったAWS環境を維持するのにお金がかかるのはもったいないので,以降はgithub-pagesを使ってデモを動かそうと思います。このブランチをアーカイブとして残してあります。

  1. PREPARINGの設定を先にやる。
  2. commit時にはpre-commitとgit-secretが作動。
  3. push時にはGitHub ActionsによりSAST(semgrep),UnitTest(jest),Dependency Check(trivy)が実行される。
  4. github-pagesにデプロイされる。 # TODO: more info

FEATURE

このRepositoryで学べること。

GitHub Actions等(git push後)で使用されるツールの使い方

  • ghalint: GitHub Actionsで実行されるworkflows用のlinter
  • github-comment: GitHub Actionsで実行されるCIが失敗したときにコメントとしてエラーを出力する。
  • semgrep: GitHub Actionsで実行するSASTツール
  • trivy: イメージのスキャンやdependency checkができる。dependency checkはGitHub Actionsで実行,イメージスキャンはTODO

GitHub Actionsのテクニック

GitHub Actions関連のバージョン管理ツールの使い方

  • aqua: GitHub Actions等で使用するCLIツールのバージョン管理ができる。
  • pinact: GitHub Actionsで使うactionsのバージョンをフルコミットハッシュに変換。

pre commit(git committ前)に使うツールの使い方

  • pre-commit: git commit前に特定のツールを実行し,失敗ならcommitさせない。
  • git-secret: git commit時にクレデンシャルのパターンにマッチするものがあれば,commitさせない。

VSCode Extensions(Securityに関係のありそうなものだけ抜粋)

その他細かいGitHubのテクニック


ENVIRONMENT

デプロイするアプリ

create-react-appで作られるデフォルトそのまま。


PREPARING

最初にやること

  • Reopsitoryをforkしてcloneする。
  • ghコマンドをインストールする。

GitHubの設定

RepositoryにEnvironment variablesを登録する

  • RepositoryのsettingsからEnvironmentを作る。 Environment例
  • ローカルに3環境分の.envファイルを作成する。これによってブラウザからどの環境のアプリ化識別する。
# 作成
for environment in development staging production;
do
  touch .env.${environment}
  echo $REACT_APP_MESSAGE=${environment} > .env.${environment}
done
  • github actions enrironment variablesに登録/更新する。
source ./update_github_actions_variables.sh

GitHub Actionsで実行したスキャン結果をアップロードできるようにGitHubリポジトリの設定を変更する

  • GitHub Actionsがスキャン結果のファイルをアップロードできるようにGitHubリポジトリの設定を変更。詳細はsemgrepのyamlを参照。

GitHub Actionsでghコマンドを使うための設定

  • Personal access tokensを作り,repository secretsに登録する。 TODO: 一旦これくらいで作成。もっと権限しぼれるかも personal acccess token例
  • repository secretsに登録する。 Actions secrets and variables

GitHub Pagesの設定

./doc/github-pages.md

その他ローカルにインストールするツール

  • pre-commit
  • git secret
  • VSCodeのExtensionsもお好みでインストール。TODO: Devcontainer化する。

ERROR LOG

error.mdを参照。