Slide 1

Slide 1 text

© 2023, CHARA-WEB Co.,Ltd. All rights reserved. GitLabを活用したDevSecOps Keiichi Nakayama Vice General Manager Cloud Partner Group CHARA-WEB Co., Ltd.

Slide 2

Slide 2 text

© 2023, CHARA-WEB Co.,Ltd. All rights reserved. 自己紹介 • 中山 桂一 ( @k1nakayama ) • 株式会社キャラウェブ クラウドパートナーグループ 副部長 • クラウドインテグレーション事業をリード • AWS Community Builders (Serverless) • AWS x Serverless / GitLab / DevSecOps

Slide 3

Slide 3 text

© 2023, CHARA-WEB Co.,Ltd. All rights reserved. 会社概要 ISO/IEC 27001:2013 & JIS Q 27001:2014 クラウドに関するコンサルティング、設計、 構築、運用、管理 における認証

Slide 4

Slide 4 text

© 2023, CHARA-WEB Co.,Ltd. All rights reserved.

Slide 5

Slide 5 text

© 2023, CHARA-WEB Co.,Ltd. All rights reserved. GitLab Features AI-powered DevSecOps Platform GitLabはDevSecOpsのプラットフォームであり、ソフトウェア開発 ライフサイクル(SDLC)全体を通じて一気通貫で管理が行える

Slide 6

Slide 6 text

© 2023, CHARA-WEB Co.,Ltd. All rights reserved. GitLabの主な機能 Ø ソースコード管理(SCM) Ø CI/CD Ø イシュートラッキング/ Portfolio Management Ø コードレビュー Ø Wiki Ø Pages Ø タイムトラッキング Ø セキュリティテスティング Ø Review Apps Ø 各種レジストリ Ø サービスデスク Ø 依存パッケージ管理/SBOM Ø バリューストリーム分析 Ø Web IDE / Remote Development

Slide 7

Slide 7 text

© 2023, CHARA-WEB Co.,Ltd. All rights reserved. CI/CD GitLabのCI/CDは、`.gitlab- ci.yml`に、ジョブの定義を指定 することで、様々なテスト、ビル ド、デプロイを実現することが可 能です。 ジョブ毎にそのジョブが適用さ れるルールを設定できるほか、 実行環境として使用するDocker Imageを指定したり、ジョブの依 存関係や依存するファイル等を 定義することが可能です。

Slide 8

Slide 8 text

© 2023, CHARA-WEB Co.,Ltd. All rights reserved. ポートフォリオマネジメント GitLabでは、イシュートラッキン グの機能と併せて、Epicやマイ ルストーンという機能を提供して います。 Epicでは、イシューよりも大きな テーマに対するスケジュールや 関連するイシューを管理し、マイ ルストーンではリリースに向け た期間内で処理するべきイ シューの進捗等を管理すること ができます。 出典:GitLab

Slide 9

Slide 9 text

© 2023, CHARA-WEB Co.,Ltd. All rights reserved.

Slide 10

Slide 10 text

© 2023, CHARA-WEB Co.,Ltd. All rights reserved. DevSecOpsとは セキュリティへの取り組みを早い段階に組み込み(シフトレフト)、 手戻りを最小限に抑える セキュリティ診断 セキュリ ティ診断

Slide 11

Slide 11 text

© 2023, CHARA-WEB Co.,Ltd. All rights reserved. シフトレフトによる効果の具体例 Ø ストレージの暗号化をせずデプロイし、公開してしまったが、リ リース後の監査により、社内のセキュリティポリシーに違反して いることが判明 u既にデータが入り始めており、過去データのマイグレーション と、暗号化設定済みのストレージに移行することになり、本来 必要なかった作業が大幅に発生 ü IaCスキャンを設計後の早い段階などで実施していたら、 暗号化設定を追加するだけで済んでいた

Slide 12

Slide 12 text

© 2023, CHARA-WEB Co.,Ltd. All rights reserved. シフトレフトによる効果の具体例 Ø 自社のSaaSサービスに対して、AGPLライセンスを使用してい る疑いがある旨の問い合わせと、その場合にサービス全体の コード開示を要求する指摘が入った u1つの依存ライブラリのライセンスを管理できていなかったこ とで、ビジネスにおいて致命的な問題に発展した ü テスト段階において、依存関係スキャンや依存ライブラリに おけるライセンスチェックを行っていたら、公開前に他のラ イブラリに差し替えることが出来ていた

Slide 13

Slide 13 text

© 2023, CHARA-WEB Co.,Ltd. All rights reserved. GitLabを使ったセキュリティテスト uSAST(Static Application Security Testing) ソースコードを解析し、脆弱性を検出する 25種類もの言語やフレームワークに対応 uDependency Scanning パッケージマネージャーの依存関係から、既存のライブラリの脆 弱性を検出する 併せて、各パッケージのライセンスをチェックする uSecret Detection ソースコード内のシークレット等の秘匿情報漏えいをチェックする

Slide 14

Slide 14 text

© 2023, CHARA-WEB Co.,Ltd. All rights reserved. GitLabを使ったセキュリティテスト uContainer Scanning Dockerベースのアプリケーションについて、イメージや使用され ているライブラリ等についての脆弱性を検出します uInfrastructure as Code Scanning(IaC Scan) CloudFormationテンプレートやTerraform、OpenAPI、 Dockerfileなど、IaCを解析し、ベストプラクティスに沿っていない 点を検出します AWS CDKやServerless Framework等もCloud Formationテン プレートとして出力することで解析可能

Slide 15

Slide 15 text

© 2023, CHARA-WEB Co.,Ltd. All rights reserved. GitLabを使ったセキュリティテスト uDAST(Dynamic Application Security Testing) URLに対しWebアプリをクローリングし、動的に様々なリクエスト を実際に行うことで、脆弱性を検出する uAPI Fuzz Testing OpenAPIドキュメントに沿って、実際にランダムなリクエストを APIに行うことで、脆弱性を検出する

Slide 16

Slide 16 text

© 2023, CHARA-WEB Co.,Ltd. All rights reserved. GitLabを使ったその他のテスト uCode Quality ソースコードを解析し、ソースコードの保守性やスタイル等のコー ド品質をチェックします uBrowser Performance Testing Webサイトのレンダリングパフォーマンスを測定します

Slide 17

Slide 17 text

© 2023, CHARA-WEB Co.,Ltd. All rights reserved. GitLabでのセキュリティテスト実施設定 GitLabのCIの設定を記述する 「.gitlab-ci.yml」に、右記のよう なGitLabが提供するテンプレー トの読み込み設定を追加するだ けで、各種セキュリティテストが 有効化され、実施される ※ DAST、Browser Performance Testな どは、CIの中でアプリケーションをデプロイ し、結果のURLを渡す必要がある stages: - build - test - deploy - dast - performance - cleanup include: - template: Code-Quality.gitlab-ci.yml - template: Jobs/SAST.latest.gitlab-ci.yml - template: Jobs/Secret-Detection.latest.gitlab-ci.yml - template: Jobs/SAST-IaC.latest.gitlab-ci.yml - template: Jobs/Dependency-Scanning.gitlab-ci.yml - template: DAST.latest.gitlab-ci.yml - template: Verify/Browser-Performance.gitlab-ci.yml 上記は、Code Quality、SAST、Secret Detection、IaC Scanning、Dependency Scanning、DAST、Browser Performance Testingを実施する場合の設定

Slide 18

Slide 18 text

© 2023, CHARA-WEB Co.,Ltd. All rights reserved. マージ前にテスト結果を確認し判断 フィーチャーブランチで変更を行 い、マージリクエスト (MR,GitHub等でいうところのプ ルリクエスト)を行う画面上で、 それぞれのセキュリティテストの 結果を確認でき、このままマー ジを承認してよいかを判断する ことができる

Slide 19

Slide 19 text

© 2023, CHARA-WEB Co.,Ltd. All rights reserved. セキュリティポリシー、コンプライアンス テスト結果に応じて、特定のライ センスが使用されていることが 検出された場合や、脆弱性が検 出された場合などに、特定の人 や一定のロールを持つ人の承 認を一定数得られなければマー ジできない、といったルールを設 定できます。 また、特定のテストを実行してい なければマージ出来ないという ポリシーも設定できます。

Slide 20

Slide 20 text

© 2023, CHARA-WEB Co.,Ltd. All rights reserved. マージ後も継続的に脆弱性を一元管理 マージ後にプロジェクトに残され た脆弱性について、脆弱性ダッ シュボードにて一元管理でき、 それぞれの脆弱性について、ト リアージして管理することが可 能。 必要に応じてワンクリックで Issue化することもできる。

Slide 21

Slide 21 text

© 2023, CHARA-WEB Co.,Ltd. All rights reserved. AIを活用した脆弱性対応 脆弱性として検出される内容は 多種多様なものがあり、セキュ リティの専門家であっても、その 脆弱性についての説明や対応 方法を全て提示することは難し いです。 GitLabは、AIを活用し、ボタン1 つで脆弱性の説明、脅威の内 容、対応策を説明します • レビュアーの提案 • コードの提案(Visual Studio Code等 のIDE上で、コード提案を受けながら コーディングを進められる) • コードの説明(選択したコード部分が 何をしているコードかを説明する) • GitLab Chat • マージリクエストのサマリー • マージリクエストに対するレビューの サマリー • マージリクエスト時のコードに対する テストコードの生成 • イシューのディスカッションについて のサマリー

Slide 22

Slide 22 text

© 2023, CHARA-WEB Co.,Ltd. All rights reserved.

Slide 23

Slide 23 text

© 2023, CHARA-WEB Co.,Ltd. All rights reserved. デプロイまでの基本フロー コードプッシュ毎に セキュリティテストの実行 マージ後も再度 セキュリティテストの実行 コードプッシュ毎にReviewAppを デプロイし、実際のアプリを対象 にDAST等も行える ※マージしたら ReviewAppやフィー チャーブランチは自動的 に削除する まずはマージリクエストを作成し、 同時にフィーチャーブランチ作成

Slide 24

Slide 24 text

© 2023, CHARA-WEB Co.,Ltd. All rights reserved. 設計段階の成果物としてIaC Ø IaCでインフラのセキュリティを固める クラウド上でのイベントフローなどを設計した上で、全体的なアー キテクチャを設計したら、AWS CDKやTerraform等で全体的な コンポーネントを定義し、APIについてもOpenAPIドキュメント (Swagger)を作成しIaCスキャンにかける ü アプリケーション構築前から、足回りのセキュリティを考慮して おくことで、アプリケーション開発時に実装するべき内容が明 確になり、セキュリティ対応に掛ける時間が短縮できる

Slide 25

Slide 25 text

© 2023, CHARA-WEB Co.,Ltd. All rights reserved. ReviewAppを必ずデプロイ Ø 実際にデプロイすると網羅的にチェックできる マージリクエスト時に変更されたコードだけ見ても、本当に意図し た通り動くかを正確に見極めることは難しく、マージした後で実 際にデプロイしたら動かないだと、全体的な手戻りが発生する ü 実際のデプロイされた環境があれば、コードと併せて実際の 意図した動きをするかを確認できるだけでなく、ReviewAppに 対するDASTやPerformance Test、Fuzz Testなどを実行する ことができる ü クラウド上の各種サービスに対する権限設定が正しいかも、 実際の動きをみて確認できる

Slide 26

Slide 26 text

© 2023, CHARA-WEB Co.,Ltd. All rights reserved. WAF等での対応策も検討 Ø 全部の脆弱性を潰してからリリースは非現実的 プロジェクトの規模感によっては、最初からDevSecOpsを実践し、 初期段階からセキュリティテストをしていても、大量の脆弱性の 指摘がでることも ü 全部対応することが絶対ではなく、市場への価値提供のリー ドタイムを優先するべき状況もあり得る ü AIによる脆弱性の説明機能を活用し、脅威や攻撃手法の把 握を行い、必要に応じてWAF等で軽減処置を行うことも検討 するべき

Slide 27

Slide 27 text

© 2023, CHARA-WEB Co.,Ltd. All rights reserved. まずはセキュリティテストから始めてみる

Slide 28

Slide 28 text

© 2023, CHARA-WEB Co.,Ltd. All rights reserved.

Slide 29

Slide 29 text

© 2023, CHARA-WEB Co.,Ltd. All rights reserved. DevSecOpsが上手く進められているか Four Keys

Slide 30

Slide 30 text

© 2023, CHARA-WEB Co.,Ltd. All rights reserved. Four Keys

Slide 31

Slide 31 text

© 2023, CHARA-WEB Co.,Ltd. All rights reserved. 自サービスの状態を知る GitLab Blog

Slide 32

Slide 32 text

© 2023, CHARA-WEB Co.,Ltd. All rights reserved. 開発フェーズで改善できるところはないか? 上記は、とあるプロジェクトのバリューストリーム分析をカスタム設 定により、開発フェーズ毎に分析したものです。 イシューがBacklogに入った後、1日程度後で着手され、そのイ シューは7時間で構築が完了しレビューに移行しています。そして、 レビュー状態が1日経過して、ようやくリリース出来る状態になって いることが分かります。 これを見ることで、このチームは、レビューをもっと早く進められれ ば、市場への価値提供が1日早く改善できることが分かります。

Slide 33

Slide 33 text

© 2023, CHARA-WEB Co.,Ltd. All rights reserved.

Slide 34

Slide 34 text

© 2023, CHARA-WEB Co.,Ltd. All rights reserved. 導入効果 Ø コード品質が向上 脆弱性対応を進めやすくするためにも、コード品質を上げてコー ド修正がしやすい形に変えていこうとするため、コード品質が向 上する Ø スキル向上 脆弱性対応を進めるために、自分たちが持っていない知識を調 べて対応するため、広い範囲での知識が身につきやすい Ø 手戻りが少なくなる 早い段階で網羅的にテストするため、手戻りが少なくなり生産性 向上していく

Slide 35

Slide 35 text

© 2023, CHARA-WEB Co.,Ltd. All rights reserved. 導入効果 Ø マージ時の心理的ハードルが下がる ReviewAppにより実際に動くことをマージ前に確認できることや、 様々なテストの結果、指摘がない状態でレビュー依頼ができると、 レビューイ側も自信をもってリクエストできる。 レビュアー側も同様に、自分の確認漏れによるマージ後の問題 を気にすることが少なくなり、スムーズにレビューが行える Ø クラウドのベストプラクティスに対応できる IaCスキャンの結果に対応していくことで、必然とクラウドのベス トプラクティスに対応していくことができる

Slide 36

Slide 36 text

© 2023, CHARA-WEB Co.,Ltd. All rights reserved.

Slide 37

Slide 37 text

© 2023, CHARA-WEB Co.,Ltd. All rights reserved. まとめ ØGitLabはSDCL全般に必要な、網羅的な機能を提供している ØDevSecOpsの実践には、GitLabを使うことで一気通貫で解決 ØGitLabのセキュリティテスティングは、アプリケーションセキュリ ティのテストに必要な各種テストを実行できる ØIaCにより、クラウドのベストプラクティスに対応 ØAIの活用で、セキュリティ専門家不在でも内製で対応可能 Øバリューストリーム分析で、開発生産性を向上させられる

Slide 38

Slide 38 text

© 2023, CHARA-WEB Co.,Ltd. All rights reserved.

Slide 39

Slide 39 text

© 2023, CHARA-WEB Co.,Ltd. All rights reserved. GitLab導入支援 • GitLabを活用したCI/CDの構築支援 • GitLab Self-Managed版 環境構築 (AWS上での構築) • GitLab Runner(Specific Runner)構築(AWS上での構築) • GitLab活用についてのコンサルティング • ラベル運用の自動化支援 • AWSとのインテグレーション支援 • 各種ハンズオンやFree Trialのご提供

Slide 40

Slide 40 text

© 2023, CHARA-WEB Co.,Ltd. All rights reserved. AWS導入支援 • サーバーレス関連を中心としたアドバイザリー AWS Lambda SDP 取得済み • 開発内製化支援(顧客と共創する形での開発支援など) • AWSアカウントリセール Solution Partner Program 取得済み • Momento x AWSのインテグレーション Momento リセラー

Slide 41

Slide 41 text

Accelerate your business with the cloud.