Slide 1

Slide 1 text

1 Sr. Solutions Architect - Channel & Alliance Tsukasa Komatsubara | [email protected] サーバーレス技術とDevSecOps: 安全かつ迅速な デプロイメントの新時代 Twitter 後で資料配布します!

Slide 2

Slide 2 text

2 This presentation contains information related to upcoming products, features and functionality. The presentation is for informational purposes only, so please do not rely on the information for purchasing or planning purposes. Just like with all projects, the items mentioned in the presentation are subject to change or delay, and the development, release, and timing of any products, features or functionality remain at the sole discretion of GitLab. Disclaimers

Slide 3

Slide 3 text

3 自己紹介 私のお仕事: パートナー様、アライアンス様とご一緒 にDevOps/DevSecOpsの世界を盛り上げ ていくことです。 趣味: パフェ巡り(ロイヤルホストのパフェはレ ベルが高いと思います) Twitter: https://twitter.com/GL_Tsukasa 2023年6月 京都にて、GitLab APAC Team で Value Stream Assesment 合宿 下の写真は京都駅近郊の「東寺」にて

Slide 4

Slide 4 text

4 アジェンダ 1. イントロダクション 2. DevOpsとDevSecOpsの重要性 3. サーバーレス技術とGitLab 4. AWSのSecurityHubとGitLabの脆弱性管理の比較 5. Explain Vulnerabilityの機能紹介 6. AppSecとの関連性 7. デモ

Slide 5

Slide 5 text

5 1.イントロダクション 1. サーバーレス技術とは 2. GitLabとその関連性の紹介

Slide 6

Slide 6 text

6 GitLabとは? ● DevOps/DevSecOpsの ● 全プロセスを ● 1製品でカバーします。

Slide 7

Slide 7 text

一気通貫のワークフロー 戦略、プロジェクトWBS、個々のタスク(イシュー)、開発物の進捗を一気通貫管理 ロードマップ(エピック、子エピック、マイルストーン) エピック イシュー マージリクエスト(担当者がアサインされ、作業実施) ソースコードの差分 レビュー記録 マージ前の CI/CDパイプライン 承認結果 テスト結果 マージ後の CI/CDパイプライン イシューを発行する 際に、自己チェック できるよう、チェッ ク項目を設ける 過去の経緯、議論は ここで確認する 目的、背景、をしっ かり明記し、誤解を 徹底的に排除する ビジネス戦略/ プロジェクト指針を明確に 進捗状況 PM Team Leader Developer CI/CD,SAST/DAST/脆弱性チェック/SBOM自動対応、コミット時に承認可否を必須化!マージ時フィーチャーブランチ自動削除! 進捗%が自動反映される Weight(大変さ) Estimate Time(見積時間) Spent Time(実績) も設定、記録できる! これで、プランニングチームに大 変さを伝えられる! フィーチャーブランチを 自動生成し、git cloneで作業突入開始!

Slide 8

Slide 8 text

8 2.DevOpsとDevSecOpsの重要性 ● DevOps、DevSecOpsとは

Slide 9

Slide 9 text

9 DevOpsとはDX実現のための要素技術 独立行政法人情報処理推進機構 DX白書2021 DevOpsに求められる機能 リリース頻度を高く保つ ・自動テスト/自動リリース(CI/CD) ・レビューや承認などコミュニケーション効率化 品質の維持 ・自動テスト/セキュリティスキャン(CI/CD) ・シフトレフト(不具合の早期発見) 市場ニーズの吸い上げ ・システム利用状況のモニタリング ・エンドユーザが要望を挙げられる場 ・要望管理、要件管理

Slide 10

Slide 10 text

10 DevSecOpsとは? ● セキュリティテストのシフトレフト ○ 早期のセキュリティテストによる手戻り軽減 ● セキュリティへの取り組みを「セキュリティチームへ集中するモデル」から 「開発チーム主体のモデル」への転換 ○ 開発チームがアプリケーションセキュリティを主導する状態 ● Secに関するプラクティスのDevOpsへの融合 ○ プロセス、ライフサイクルへの定常化 DevSecOps

Slide 11

Slide 11 text

11 3.サーバーレス技術とGitLab ● CI/CDの自動化: ○ 課題: 従来の開発プロセスでは、コードの変更が頻繁に生じると、それを本番環境へ頻繁に デプロイすることは困難でした。 ○ 解決: GitLabのCI/CDツールとサーバーレス技術を組み合わせることで、コードの変更がマ ージされるたびに、自動的にサーバーレス環境にデプロイすることができます。 ● 開発生産性の向上: ○ 課題: サーバーレス技術を使用した開発では、多くのリソースやサービスの組み合わせが一 般的で、どの部分がボトルネックになるかの特定が困難でした。 ○ 解決: 工程の可視化により、プロジェクト、コンポーネント、担当者ごとの分析が容易とな り、問題の所在が明確に認識できるようになります。 ● コストの最適化: ○ 課題: 従来のインフラストラクチャでは、リソースが常に動作しているため、無駄なコスト が発生することがありました。 ○ 解決: サーバーレス技術は実行時にのみコストが発生するので、GitLabを使用してデプロ イメントを最適化することで、全体のコストを削減できます。 ● セキュリティの自動化と最適化: ○ 課題: 新しい脆弱性やセキュリティリスクが常に出現するため、常に最新のセキュリティ対 策を取ることは難しい。 ○ 解決: GitLabは自動セキュリティスキャンや依存関係のスキャンを提供しています。これ らをサーバーレス環境と組み合わせることで、リアルタイムでのセキュリティチェックと アップデートを効率的に行うことができます。

Slide 12

Slide 12 text

12 開発フェーズのセキュリティ対応と、運用フェーズでのセキュリティ対応 1. AWS SecurityHubの機能と特徴 2. GitLabの脆弱性管理とその特徴 a. 早期にベストプラクティスに従っていない 設定の検出 b. ReviewAppの利用でのシフトレフトの効果

Slide 13

Slide 13 text

13 サーバーレス開発におけるGitLabのポテンシャル マージリクエス トとブランチの 作成 自動ビルド 自動テスト コラボレーション レビュー 承認 コードのpush コード修正 デプロイした アプリのレビュー イシューの割当 セキュリティ スキャン リリース マージ 受け入れ デプロイ エピック マイルストーン イシュー フィーチャーブランチのマージ前にセキュリティスキャンするこ と ● 早期のセキュリティテスト ● 開発チーム主体のスキャン ● 脆弱性に対する適切なライフサイクルの運用 (検出、選別、影響調査、修正、解決) セキュアなコードだけをマージ DevSecOps AWS Lambda等へのSASTはもちろん、API Gatewayに対す るDASTといったセキュリティスキャンで”ガワだけ先にセ キュリティチェック”が可能。 AIによるセキュリティ対応支援

Slide 14

Slide 14 text

14 5.Explain Vulnerabilityの機能紹介 1. GitLab Duoの機能のひとつ a. 脆弱性修正アドバイザー * ) “GitLab Duo” は、GitLabにお ける、AI機能の集合体

Slide 15

Slide 15 text

GitLab Copyright 2023 Explain this vulnerability 継続的なセキュリティ改善 開発者がより効率的に脆弱性を修正でき るようにする 開発者のスキルアップを支援し、より安 全なコードを書くことを可能にする Available Experimental Click Here

Slide 16

Slide 16 text

16 6.AppSecとの関連性 1. GitLabとAppSec a. 脆弱性管理 b. SBOMレポート

Slide 17

Slide 17 text

セキュリティ課題を見つけ、納品計画を立て、修正計画を立てる “今回リリースでは直さない” という管理もできる

Slide 18

Slide 18 text

SBOM(Software BOM) 管理・レポート出力機能

Slide 19

Slide 19 text

19 デモ

Slide 20

Slide 20 text

20 Serverless Tokyo 2023 GitLab – 即席チュートリアル! あっという間に Lambdaで環境構築 DevSecOpsもやっちゃう? (補足資料) 要) GitLab SaaS Trial申し込み必須 トライアルはこちら

Slide 21

Slide 21 text

21 ここであなたは、なにをつくるのか AWS GitLab SaaS あなたの パソコン のブラウザ Lambda Pages (要はWebサーバ) ① ② ③ ④ 使う技術 JavaScript, AWS Lambda, AWS API Gateway と GitLab Pages

Slide 22

Slide 22 text

22 スタート

Slide 23

Slide 23 text

23 New Project – Templateから作ってみる

Slide 24

Slide 24 text

24 Serverlessを扱うテンプレートを探す

Slide 25

Slide 25 text

25 あった!

Slide 26

Slide 26 text

26 Project nameを適当につけて保存する

Slide 27

Slide 27 text

27 インポート直後

Slide 28

Slide 28 text

28 (実は、nodejs10.xはもう使えないのでエラーになる – 2023年9月時点)

Slide 29

Slide 29 text

29 証拠 - (実は、nodejs10.xはもう使えない – 2023年9月時点) -> 14.x使おう

Slide 30

Slide 30 text

30 [Edit]ボタンで修正する

Slide 31

Slide 31 text

31 完了? AWSの接続がまだです

Slide 32

Slide 32 text

32 普通、どっかに環境変数として定義してます。普通は・・・。(だいたいこのへん)

Slide 33

Slide 33 text

33 どういう権限のユーザが必要かは、普通Readmeに書いてます。普通は・・・

Slide 34

Slide 34 text

34 AWS Console – IAM でアクセスキー/シークレットキーを取得

Slide 35

Slide 35 text

35 GitLabの左のメニューから、[Settings] – [CI/CD]を選ぶ

Slide 36

Slide 36 text

36 Variables で設定

Slide 37

Slide 37 text

37 以下のように2つ設定 – ( 時代の流れで、今後はOIDC経由で接続が一般的)

Slide 38

Slide 38 text

38 (参考資料) AWSにOpenID Connect (OIDC)でつなぐ方法 Link Link .gitlab-ci.ymlを改造する必要あり

Slide 39

Slide 39 text

39 確認

Slide 40

Slide 40 text

40 からっぽであることを確認しておきます (既に、何かある方は、内容把握ください) – Lambda, S3, CloudFormation, API Gateway

Slide 41

Slide 41 text

41 GitLabのパイプライン画面に移動 AWSの接続設定がまだだったの で、その失敗が残っている

Slide 42

Slide 42 text

42 スタート (パイプラインを実行する)

Slide 43

Slide 43 text

43 終わるのを待つ・・・冒頭の環境すべてを構築しています

Slide 44

Slide 44 text

44 AWS Consoleで、(このひとたちは)何をやったのかを確認 Lambda できあがり! ただし、認証 かかってます

Slide 45

Slide 45 text

45 Webサーバー(GitLab Pagesのこと)のURLを探す – [Deploy]-[Pages]

Slide 46

Slide 46 text

46 このURLがそれ

Slide 47

Slide 47 text

47 クリックして、動作確認 適当に「サーバーレス東京バンザイ」とかを入力 OK!

Slide 48

Slide 48 text

48 おさらい – 以下をつくりました AWS GitLab SaaS あなたの パソコン のブラウザ Lambda Pages (要はWebサーバ) ① ② ③ ④ 使う技術 JavaScript, AWS Lambda, AWS API Gateway と GitLab Pages

Slide 49

Slide 49 text

49 なにをやっているか – Lambdaの基礎勉強をした後に以下をやってみる S3のバケットの中に、上のようなzipファイル があるので、それを確認 今回実施したのは、zipファイルでのLambda関数アップロード (アプリの)フレームワークとして、Serverless Frameworkを使っ た例

Slide 50

Slide 50 text

50 (参考) Serverless Frameworkとは

Slide 51

Slide 51 text

51 肝心なのは、ここからです

Slide 52

Slide 52 text

52 SASTを使う

Slide 53

Slide 53 text

53 マージリクエストで、.gitlab-ci.ymlへの設定追加をおこなう

Slide 54

Slide 54 text

54 マージリクエストを作る

Slide 55

Slide 55 text

55 フィーチャーブランチでなにか見つかるが、無視して「Merge」する

Slide 56

Slide 56 text

56 [Pipeline]を見ると、増えてる!ことがわかる レポジトリの中身をみて、必要なエンジン (ここでは、nodejs用)を呼び出す

Slide 57

Slide 57 text

57 全部終わったら、[Security]タブが出現する

Slide 58

Slide 58 text

58 こんな感じで、SASTの結果がでます

Slide 59

Slide 59 text

59 もっと知りたい方は

Slide 60

Slide 60 text

60 セキュリティ関連のチュートリアル一式 おすすめ よろしければ 日本語資料をどうぞ

Slide 61

Slide 61 text

61 THANK YOU