$30 off During Our Annual Pro Sale. View Details »

サーバーレス技術とDevSecOps: 安全かつ迅速なデプロイメントの新時代

サーバーレス技術とDevSecOps: 安全かつ迅速なデプロイメントの新時代

ServerlessDays Tokyo 2023
DevOps/DevSecOpsでの登壇資料になります。
どうぞ!

Tsukasa Komatsubara

September 23, 2023
Tweet

Other Decks in Technology

Transcript

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

    View Slide

  2. 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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  13. 13
    サーバーレス開発におけるGitLabのポテンシャル
    マージリクエス
    トとブランチの
    作成
    自動ビルド
    自動テスト
    コラボレーション
    レビュー
    承認
    コードのpush
    コード修正
    デプロイした
    アプリのレビュー
    イシューの割当
    セキュリティ
    スキャン
    リリース
    マージ
    受け入れ
    デプロイ
    エピック
    マイルストーン
    イシュー
    フィーチャーブランチのマージ前にセキュリティスキャンするこ

    ● 早期のセキュリティテスト
    ● 開発チーム主体のスキャン
    ● 脆弱性に対する適切なライフサイクルの運用
    (検出、選別、影響調査、修正、解決)
    セキュアなコードだけをマージ
    DevSecOps
    AWS Lambda等へのSASTはもちろん、API Gatewayに対す
    るDASTといったセキュリティスキャンで”ガワだけ先にセ
    キュリティチェック”が可能。
    AIによるセキュリティ対応支援

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  19. 19
    デモ

    View Slide

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

    View Slide

  21. 21
    ここであなたは、なにをつくるのか
    AWS GitLab SaaS
    あなたの
    パソコン
    のブラウザ
    Lambda
    Pages
    (要はWebサーバ)




    使う技術
    JavaScript, AWS Lambda, AWS API Gateway
    と GitLab Pages

    View Slide

  22. 22
    スタート

    View Slide

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

    View Slide

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

    View Slide

  25. 25
    あった!

    View Slide

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

    View Slide

  27. 27
    インポート直後

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  36. 36
    Variables で設定

    View Slide

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

    View Slide

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

    View Slide

  39. 39
    確認

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  46. 46
    このURLがそれ

    View Slide

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

    View Slide

  48. 48
    おさらい – 以下をつくりました
    AWS GitLab SaaS
    あなたの
    パソコン
    のブラウザ
    Lambda
    Pages
    (要はWebサーバ)




    使う技術
    JavaScript, AWS Lambda, AWS API Gateway
    と GitLab Pages

    View Slide

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

    View Slide

  50. 50
    (参考) Serverless Frameworkとは

    View Slide

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

    View Slide

  52. 52
    SASTを使う

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  59. 59
    もっと知りたい方は

    View Slide

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

    View Slide

  61. 61
    THANK YOU

    View Slide