🛡️

Azure 上で DevSecOps 環境を作ろう

2023/05/05に公開

はじめに

  • そろそろ研究成果の検証に入るからDevSecOps環境を作ろうということで、Azure上に構築してみました。

  • 研究内容の概要は以下にまとまているので興味があればご覧くださいー

https://zenn.dev/link/comments/01e7196238af71

  • AWSさんにはDevSecOps環境をしゅっと作れるサンプルがあるんですが、Azureさんにはまだないので、自分で作ろうと思います。

https://github.com/aws-samples/devsecops-cicd

  • 検証環境のソースをを一気に作ることはできないので、徐々に作成しながら追記していきます。
  • 個人用のメモを兼ねてるので、説明不足の点はご容赦ください

構成

  • 作るものはこれです。  

https://learn.microsoft.com/ja-jp/azure/architecture/guide/devsecops/devsecops-on-aks

  • 構成図からサンプルコードを作ってくれるGPT系のサービスがあるのですが、Azureは2023/05月現在まだ対応してないようです。残念、、

https://infracopilot.io/

準備

  • 開発はGithub CodeSpaceでやります。

https://github.com/features/codespaces

  • IaCツールは使い慣れている Terraform を使います。

https://developer.hashicorp.com/terraform

  • Azureのアカウントは持っている前提になります。

作業

AKSクラスタ作成

  • 以下のドキュメントを元にAKSクラスタを作成します。

https://learn.microsoft.com/ja-jp/azure/developer/terraform/create-k8s-cluster-with-tf-and-aks

  • SSH keyの作成とかサービスプリンシパルの作成とかさらっと前提条件書いてありますが、必要なパスに情報を加筆したりファイルを置かないと terraform plan の段階でエラーが出ます。
  • 成功すると緑色で Apply Complete !が表示されます。

  • こんな感じでnamespaceが作成されます。

  • 余談ですがこのサンプルを実行すると Container Insight が自動で設定されます。

Azure Container Registry作成

  • 以下のドキュメントを元にAzure Container Registryを作成します。

https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/container_registry

App Sample

  • サンプルに使うアプリは以下です。
  • Container Registory に image を pushしデプロイします

https://learn.microsoft.com/ja-jp/azure/aks/tutorial-kubernetes-prepare-app

Azure Key Vault 作成

  • 以下のドキュメントを元にAzure Key Vaultを作成します。

https://learn.microsoft.com/ja-jp/azure/key-vault/keys/quick-create-terraform?tabs=azure-cli

  • KeyVaultの設定は以下を参考にします

https://learn.microsoft.com/ja-jp/azure/aks/csi-secrets-store-driver

Azure Policy 作成

  • Cluster へのPolicy 設定をしていきます

https://github.com/MicrosoftDocs/azure-docs/blob/main/articles/aks/use-azure-policy.md

Potalから設定

Microsoft Defender for DevOps の有効化

  • セキュリティ対応のためDefender for DevOps を有効化します

https://learn.microsoft.com/en-us/azure/defender-for-cloud/defender-for-devops-introduction

  • Defender For Cloud の画面を開くと初回にセキュリティ項目をオンにするか聞かれます

  • Github リポジトリへの接続設定もしていきます

https://learn.microsoft.com/ja-jp/azure/defender-for-cloud/quickstart-onboard-github

  • Github レポジトリの監視をオンにするとセキュリティ上脆弱なレポジトリを確認することができます

アプリケーションの作成

  • GithubにおちてたJavaのサンプルアプリを使います

https://github.com/Azure-Samples/aks-voting-app

  • Github ActionsのCI/CD機能を使ってコンテナレジストリへのPushとAKSへのデプロイを実施します。

https://learn.microsoft.com/ja-jp/azure/architecture/guide/aks/aks-cicd-github-actions-and-gitops

OWASP ZAP

  • 脆弱性診断には OWASP ZAPを使います (TBD)

https://owasp.org/www-project-zap/

ZAP Network

  • OWASP ZAPの設定です (TBD)
GitHubで編集を提案
Microsoft (有志)

Discussion