Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GitHubとAzureで加速する“Code-to-Cloud” 開発 (DevSecOps 編)

GitHubとAzureで加速する“Code-to-Cloud” 開発 (DevSecOps 編)

3/21 開催
〜 開発を加速する GitHub x Azure 最新開発ベストプラクティス Vol. 3 〜
GitHub と Azure で加速する ”Code-to-Cloud“ 開発 (DevSecOps 編)
のセッション資料です。

https://aka.ms/GHAzure23Q3v3

Akira Inoue

March 22, 2023
Tweet

More Decks by Akira Inoue

Other Decks in Technology

Transcript

  1. ž クラウド ネイティブ を⽀える技術 ž 開発環境のモダナイゼーション ž DevOps の効果とテクノロジ ž

    シフトレフトとシフトライト ž セキュア DevOps (DevSecOps) プラクティス ž GitHub Code Security
  2. クラウド ネイティブ アプリケーション 能⼒ エクスペリエンス 技術 アーキテクチャ 回復⼒ 監視・問題検知⼒ (Observability)

    管理⼒ 疎結合 コンテナー マイクロサービス オーケストレーター サーバレス, PaaS 弾⼒性 ⾃動化, CI/CD Cloud Native Definition v1.0
  3. を⽬指して 〜 The Journey to the Cloud 〜 Containers &

    PaaS Minimal code changes Microservices Architecture & Serverless Architected for the cloud modernized/rewrite IaaS “Lift & shift” No code changes On-Premises Infrastructure Platform 移⾏ モダナイゼーション 既存 アプリ&サービス on-premises Rehost クラウド インフラ対応 apps クラウド ネイティブ apps Rearchitect / Rebuild クラウド 最適化 apps PaaS & コンテナー利⽤ CI/CD ⾃動化
  4. クラウドネイティブな 展開メカニズム クラウドネイティブの プロセス実装 クラウドネイティブな 組織構造 クラウドネイティブな アーキテクチャ クラウドネイティブの ツール利⽤

    クラウドネイティブな コントロール IT 組織はクラウドネイティブの真の価値を得るために、以下のような技術や開発プロセスに⼤きく変⾰する必要がある
  5. Code faster, work smarter with the Visual Studio 2022 Visual

    Studio 2022 for Mac Visual Studio Code
  6. Anywhere on any device Ready to code in seconds クラウドホスト型開発環境

    Codespaces は、あらゆるタイプ のプロジェクトのリモート開発環境を数分で構築可能 On-demand development クラウドでのコンピューティングとストレージは、開発者が 各プロジェクトの開発環境に必要な専⽤リソースを提供 Familiar tools, consistent experience ブラウザでの Codespaces に加えて、使い慣れた デスクトップ版 VS Code でも利⽤可能 GitHub 開発者エクスペリエンスに完全に統合
  7. プロジェクトA グループ 認証基盤 かんばんボード ⾃動ビルド・⾃動テスト プロジェクト 責任者 ⾃動リリース インフラ構成テンプレート (IaC)

    コード管理 プロジェクト X A さん プロジェクト Y B さん (多要素認証 必須) モバイル⽤ビルドサーバー Container Registry 開発環境 ステージング環境 本番環境 承認プロセス ソースコード解析 Microsoft Defender インフラ担当 ② 開発者のコミュニケーション • PJ ごとのかんばんボード • 課題や進捗を数値化しプロジェクト 横串で可視化 ID 管理者 機密性 (情報のガバナンス) 完全性 (正しい情報の維持) 可⽤性 (情報のポータビリティ) 設計 開発 テスト GoLive〜(本番運⽤) Web ⽤ビルドサーバー ➋ コミュニケーション • クラウド上の開発マシンを利⽤する • 必要なツールが⼊ったテンプレートか ら仮想マシンを作成/開発環境の 差異を減らす • ライセンス管理の⼀元化 • 認証基盤と連携し、プロジェクトが 終わったら権限をはく奪 ❶ 開発環境の整備 成果物管理 アプリ ver.1.0.0 ② 開発者のコミュニケーション • ソースコードのバージョン管理 • ビルド・テストをツールで⾃動化 • ソースコード解析による品質向上 • 専⽤サーバによるビルド処理 ➌ ビルド・テストの⾃動化 (CI) 合格 • 承認済みの成果物のみを本番 環境にリリース • リリース作業の⾃動化によるオペ ミス撲滅 • ベストプラクティスに基づく インフラ環境をテンプレートから⾃ 動⽣成 ➍ 本番への安全な展開 (CD) プロジェクトX グループ 契約満了 • Microsoft Defender に よる脆弱性の検知 • アラートによる通知 • 監査ログ収集 ❺ 脅威検知・対策
  8. DevOps は ⼈・組織 / プロセス / プロダクト を変⾰し テクノロジーによって⽣産性を⾼め、ビジネス価値を⽣み出すまでのコストを下げ 顧客価値を⾼めることにより、ビジネスを継続的に成功に導く

    ROI = Customer Value 顧客が製品やサービスに感じる価値 Business Cost 企業が価値 (Business Value) を ⽣み出すのにかかるコスト Agility 速さ Quality 品質 Productivity ⽣産性 DevOps によって 小さく する DevOps によって 大きく する
  9. • DevOps は、エンドユーザーに価値を継続的に提供できるようにするための⼈、プロセス、製品の集合 • Azure や GitHub / Azure DevOps

    などを活⽤することで、IT 部⾨の規模や使⽤しているツールにかかわらず より迅速かつ確実にソフトウェアを提供可能 継続的インテグレーション (CI) ソフトウェアの開発品質と速度を向上 GitHub Actions や Azure Pipelines などを使⽤ してクラウドでアプリを構築し、コードをコミットするた びに、そのコードが⾃動的にビルドおよびテストされ、 バグを迅速に検出 継続的配置 (CD) 継続的インテグレーションとコードとしてのインフラスト ラクチャ (IaC) を組み合わせることにより、同⼀の配 置、およびいつでも実稼働環境に配置できる信頼 性を実現 継続的配置により、コードのコミットから、CI/CD テ ストに合格すれば、実稼働まですべてのプロセスを ⾃動化 継続的な学習と監視 Azure Application Insights により、アプリケー ションの実⾏状況を特定し、最近⾏った配置によ り好転したのか悪化したのかを確認 CI/CD のプラクティスを使⽤して、監視ツールと組 み合わせ、ソフトウェアを安全にお客様に提供
  10. Code から Cloud までの全ワークフローの⾃動化 Accelerate delivery through automation 20 以上のプロジェクト

    イベントのオートメーション トリガにより、単なる CI/CD だけでなく、さまざまな API とも連携したワークフローの⾃動化 が可能 Simple and easy to use 多くのサンプルワークフローも⽤意される YAML ベースのワークフロー 定義の利⽤ Global community for actions Microsoft Azure を含む統合機能を提供する企業やコミュニティに よって管理されている数多くのオープンソース Actions
  11. Outer Loop Inner Loop PR Loop Analyze Review PR Build

    Test Deploy Validate CI Build Test Build Test Debug Code Staging / Production Quality / Security Operate / Monitor Feedback Loop Pull Request Merge Close (Reject)
  12. Testing – シフトレフト テスト Automated unit test Telemetry generation CI/CD

    integration TDD & BDD Mocks & Stubs Plan & Design Develop & Build Test Deploy & Release Monitor & Analyze ATTENTION TO QUALITY Plan & Design Develop & Build Test Deploy & Release Monitor & Analyze ATTENTION TO QUALITY 開発サイクルの後半まで実施を遅らせる従来 のテストモデルが開発のボトルネックになること から、 Shift-Left Testing は⾼速レーン開発 のためのより良いモデルとして設計されている Shift-Left Testing は、ソフトウェアテストを⾼ 速化し、開発サイクルの初期段階にテストプロ セスを移⾏することで開発を促進するために使 ⽤されるアプローチ “シフト レフト” とは、タイムライン上で左にテス トを移動するための⼀つのリファレンス Shift-Left Model Traditional Quality Model
  13. メモリ内での単体テスト 依存関係を含めた 単体テスト API の 機能テスト 製品 L0: プルリクエストで実⾏, <

    60 ms L1: プルリクエストで実⾏, < 2000 ms (平均 400 ms) L2: ステージング環境、認証はモック L3: プロダクション環境
  14. Testing – シフトライト テスト Plan & Design Develop & Build

    Test Deploy & Release Monitor & Analyze ATTENTION TO QUALITY Plan & Design Develop & Build Test Deploy & Release Monitor & Analyze ATTENTION TO QUALITY アプリケーションの安定性と復元性は、予期し ない負荷や新しい要素が発⽣したときに、アプ リケーションを監視する新機能を組み合わせた Shift-Right Testing を実⾏することで改善さ れる DevOps の⼀般的なプラクティスは、開発サイ クルの早い段階でテストを実⾏するだけではな く、多くの場合、アプリケーションの動作は運 ⽤環境でもテストされる (Shift-Right Testing) Shift-Left Model Shift-Right Testing は、顧客からのフィード バックを⾼め、仮説駆動型テストを推進し、⾼ いテストカバレッジを可能にする Shift-Left Model Shift-Right Model Feature Flags Insights gained from Telemetry Fault Injection Release rings Hypothesis- driven testing
  15. = 不変の = その状態を変えることができないこと = ⼀度構築した環境を修正しない⼿法 • 変更が必要な場合は、新規に構築して古いものを捨てる • 仮想化やクラウドの弾⼒性を享受

    • Ansible/Terraform/Chef などの構成管理、⾃動構築ツールの活⽤ • 既存環境はそのままに新規環境を⽤意して、ロードバランサーでアクセス先を切り替えることで 環境を⼊れ替える⼿法 Blue – 既存環境 Green – 新規環境 ロードバランサー 切り替え (スワップ) トラフィック
  16. 95% traffic 5 % • 更新をカナリアクラスタに デプロイ • 受け⼊れ試験実施 •

    少しのトラフィックをカナリア クラスタに流し、順次増やす Primary Cluster Canary Cluster 2. 新しいサービスのデプロイと試験 • 100% のトラフィックを カナリアクラスタに送信 • 古いプライマリークラスタは廃棄 • 必要があればロールバック 100% traffic (Old) Primary Cluster New Primary Cluster 3. 試験が終われば完全スイッチ • デプロイ準備 • カナリアクラスタ作成 • カナリアリリースの準備 Primary Cluster 100% traffic Canary Cluster 1. アップグレード準備 • 新しいサービスや機能を⼀部ユーザに先⾏リリースし、その後に段階を経て全ユーザにリリースする⼿法 (Dark Launch とも呼ばれる) • Blue/Green デプロイメントや A/B テストも類似の⼿法
  17. Tracking Deployments to Production Ring 1 : カナリア (内部ユーザー) Ring

    2 : ⼀部の外部データセンターと外部ユーザー Ring 3 : 広範囲の外部データセンターと外部ユーザー Ring 4 : 国際データセンター間など遅延が⼤きいエリア Ring 5 : 残りすべて
  18. 開発プロセスのより早い段階でのセキュリティ対策が費⽤対効果として重要 Development Build Test/QA Production Breach 改修 コスト SDLC ステージ

    Develop Build Test Deploy Breach $80 $240 $960 $7,600 Security Shifting Left $ Millions Sources: NIST, Polemon Institute
  19. Pre-commit 脅威モデリング IDE Security プラグイン Pre-commit フック セキュア コーディング標準 ピア

    レビュー Operate & Monitor 継続的な監視 脅威インテリジェンス ⾮難なき事後分析 Commit (CI) 静的コード解析 セキュリティ単体テスト 依存関係の管理 資格情報のスキャン Deploy (CD) Infra as code (IaC) セキュリティ スキャン クラウド構成 セキュリティ受け⼊れテスト
  20. 🔮 ソフトウェア 構成解析 - - - - - - -

    - - - Dependabot 🤖 🕵 シークレットの検出 (および漏洩防⽌) - - - - - - - - - - - - - - Secret Scanning 包括的な 静的解析 - - - - - - - - - - - - Code Scanning
  21. 脆弱で古い依存関係を⾃動的に更新 セキュリティとバージョン更新のための⾃動 Pull Request 脆弱で古いコンポーネントがないかプロジェクトを監視することで、プロジェクトを安 全に最新の状態に保ち、推奨される更新プログラムが⾒つかった場合は、推奨さ れる修正を含む Pull Request を⾃動的に⽣成

    開発者ワークフローとの統合 Dependabot は開発者のワークフローに直接統合され、スムーズなエクスペリエンス と迅速な修正を実現 豊富な脆弱性データ セキュリティ研究者、メンテナ、および国家脆弱性データベースからのデータを使⽤し て、サポートされているパッケージマネージャーのパッケージの脆弱性を追跡
  22. ソースコードレベルでのシークレット監視と検出 できるだけ早くシークレットを特定 GitHub にプッシュされた時点でシークレットを検索 ⾒つかった時点ですぐに開発者に通知 シークレットスキャン パートナーのコミュニティ リポジトリに対して⾏われたすべてのコミットと完全な git 履歴に

    対して、パートナー提供のシークレット フォーマットを元にして検索 カスタムパターンの定義 リポジトリ全体で組織内部にある特定パターンをスキャン パブリック / プライベートのリポジトリをサポート シークレット スキャンは、潜在的なシークレットの脆弱性について、 パブリック リポジトリとプライベート リポジトリの両⽅を監視
  23. Azure / AWS / GCP / オンプレミス を含めた全 体のセキュリティの状態を俯瞰的に確認可能 マルチクラウドのさまざまなリソースを継続的に

    監視し保護 NIST / CIS 等の客観的な指標を活⽤し 準拠のためのベストプラクティスを提案 Azure 環境のコンプライアンス状況を可視化し ガバナンスアクションを実⾏ Hybrid-cloud coverage Microsoft Azure Google Cloud Amazon Web Services On- Premise Microsoft Defender for Cloud とは | Microsoft Docs
  24. Accelerate and secure “ ” development Codespaces Microsoft Dev Box

    GitHub Repos Azure Azure Pipelines GitHub Actions GitHub Code Security (GitHub Advanced Security) Code scanning Secret scanning Dependency review Azure AD Visual Studio Code Visual Studio Azure Repos
  25. 年次最⼤の開発者会議 オンライン(無料) : ⽇本時間 5 ⽉ 24 ⽇ (⽔) 〜

    25 ⽇ (⽊) シアトル会場 : ⽶国時間(PDT) 5 ⽉ 23 ⽇ (⽕) 〜 25 ⽇ (⽊) 最新情報・登録はQRコードまたは以下URLよりご確認ください https://build.microsoft.com 今年はオンラインと⽶国シアトルで開催! 日本の開発者様向けに、 Microsoft Build Spotlight on Japan を 6月27日-28日に開催します
  26. © Copyright Microsoft Corporation. All rights reserved. n 本書に記載した情報は、本書各項⽬に関する発⾏⽇現在の Microsoft

    の⾒解を表明するものです。Microsoftは絶えず変化する市場に対応しなければならないため、ここに記載した情報に 対していかなる責務を負うものではなく、提⽰された情報の信憑性については保証できません。 n 本書は情報提供のみを⽬的としています。 Microsoft は、明⽰的または暗⽰的を問わず、本書にいかなる保証も与えるものではありません。 n すべての当該著作権法を遵守することはお客様の責務です。Microsoftの書⾯による明確な許可なく、本書の如何なる部分についても、転載や検索システムへの格納または挿⼊を⾏うこと は、どのような形式または⼿段(電⼦的、機械的、複写、レコーディング、その他)、および⽬的であっても禁じられています。これらは著作権保護された権利を制限するものではあり ません。 n Microsoftは、本書の内容を保護する特許、特許出願書、商標、著作権、またはその他の知的財産権を保有する場合があります。Microsoftから書⾯によるライセンス契約が明確に供給さ れる場合を除いて、本書の提供はこれらの特許、商標、著作権、またはその他の知的財産へのライセンスを与えるものではありません。 n Microsoft, Windows, その他本⽂中に登場した各製品名は、Microsoft Corporation の⽶国およびその他の国における登録商標または商標です。 その他、記載されている会社名および製品名は、⼀般に各社の商標です。