Slide 1

Slide 1 text

キラキラミラクルな呪文でIaCを実現
 ~あなたも魔法を使い倒しませんか~
 1 クラスメソッド株式会社
 アライアンス事業部
 木田雅伊子/きだぱん


Slide 2

Slide 2 text

魔法使いになりたい... そう思ったことはありませんか。

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

自己紹介 4 4 https://dev.classmethod.jp/author/kidapan/ 木田 雅伊子 /きだぱん クラスメソッド株式会社 アライアンス事業部 エンジニアグループ 担当:DevOps製品 フェレット (1歳) ハム太郎 (1歳10ヶ月)

Slide 5

Slide 5 text

AWS活用を支援するアライアンスパートナー製品
 クラスメソッドはユーザー企業様の創造活動を支援するために、さまざまな企業とビジネスパートナー契約を締結し、
 外部サービスのライセンス販売や導入支援を行っています。
 5 脆弱性診断サービス
 ログ管理分析SaaS
 セキュリティ
 Webアプリケーション保護 
 次世代統合型認証基盤サービス 
 カスタマーサービスプラットフォーム
 サービス
 グローバルネットワークのエッジサービス 
 データ準備・分析
 データプラットフォーム
 クラウドデータウェアハウス 
 データ活用
 クラウドデータパイプライン 
 アンチマルウェア製品
 DevOps
 Observability
 CI / CDプラットフォーム 
 セキュリティプラットフォーム 
 Infrastructure as Code(IaC) 
 マーテックソリューション 
 DevOpsプラットフォーム 


Slide 6

Slide 6 text

IaCとは Infrastructure as Code(IaC) ● AWS環境やOSなどのインフラを構成する要素 をコード化し、構築や管理をサービス・ツール で自動化する手法 ● モダンなシステム開発・管理においては必須 要件として設定されるケースも増えている

Slide 7

Slide 7 text

構築 土台を作る 設定 仕上げる 試験 品質を担保 コード管理

Slide 8

Slide 8 text

IaCの価値 ● コスト(削減) ● スピード(実行の高速化) ● リスク(エラーとセキュリティ違反の除去)

Slide 9

Slide 9 text

魔法使いになりたい... そう思ったことはありませんか。

Slide 10

Slide 10 text

キラキラミラクルな呪文でIaCを実現
 ~あなたも魔法を使い倒しませんか~

Slide 11

Slide 11 text

キラキラミラクルな呪文でIaCを実現
 ~あなたも魔法を使い倒しませんか~ 人間の力ではなしえない不思議なことを行う術。魔術。

Slide 12

Slide 12 text

キラキラミラクルな呪文でIaCを実現
 ~あなたも魔法を使い倒しませんか~ SaaS製品たち

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

IaCがもたらす大きな責任 もし、IaCファイルにセキュリティ上の問題があったら 例)タイプミスのために誤ったパーミッションが設定されるな ど → セキュリティ問題のほとんどがスキャンされるか、   実行時に発見される流れに沿って実行していくこと  になる

Slide 15

Slide 15 text

CI/CD Continuous Integration/ Continuous Delivery 継続的インテグレーション/ 継続的デリバリー CI/CDは、何か特定の技術を指すものではなく、ソフトウェアの変 更を常にテストし、自動で本番環境に適用できるような状態にし ておく開発手法

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

たぬきのアイコンが目印。 実はキツネではない。 以前より、丸くなりました。

Slide 18

Slide 18 text

GitLabを使用するメリット ● バージョン管理ができる ● 変更履歴も残り、レビュー可能 ● 手順書や環境定義書が不要になり、それらに 起因するヒューマンエラーを防げる ● 雛形を作っておくことで、様々なプロジェクトで それを使い回せる

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

21 リリース前のテスト段階で脆弱性が確認された。大規模なソースコードの変更が必要となり、納期 に間に合わせることが難しくなった・・・ リリースの延長によって機会損失を招き、ビジネス的にも大きな影響を及ぼした。 原因 ● セキュア開発導入に手を回す余裕がなかった ● セキュア開発を実施できる人員が少なかった ● セキュリティ検査をする時間的余裕がなかった ● セキュアな開発といっても何から始めればよいか分からない

Slide 22

Slide 22 text

22 システム開発に求められること 開発スピード セキュリティ ● ソフトウェア製品やウェブサイトの 脆弱性は毎年多数報告 ● セキュア開発の重要性の高まり

Slide 23

Slide 23 text

23 脆弱性の増加 企業や利用者をサイバー攻撃から守るためにも開発段階で セキュリティを組み込むことの重要性が高まっている IPA:ソフトウェア等の脆弱性関連情報に関する届出状況 [2022年第4四半期(10月~12月) ソフトウェア製品や ウェブサイトの脆弱性は 毎年多数報告されている

Slide 24

Slide 24 text

24 脆弱性にはどんなものがあるの?

Slide 25

Slide 25 text

25 コードレベルでのSQL Injection対策例 サニタイジング ● 入力画面でのバリデーションチェック ○ データベース接続前に入力すべきでない文字が 含まれていないかどうかのチェック ● エスケープ処理 ○ 特別な機能を持つ文字を別の文字列に変える ● プリペアドステートメント ○ SQL文を最初に用意しておき、クエリ内のパラ メータの値だけを変更してクエリを実行 できる機能

Slide 26

Slide 26 text

26 コードの脆弱性を悪用された例 クレジットカード決済基盤を提供する企業が不正アクセスを受け最大46万件のカード番号 やセキュリティコード流出してしまった事件。約半年にわたり攻撃を受けており、不正利用 懸念の連絡を受けてからも、原因特定が出来ず対応に時間がかかってしまった。 要因1:管理画面のクロスサイト・スクリ プティングに関する 脆弱性を悪用 要因2:アプリケケーションに存在した SQL インジェクション脆弱性の悪用 要因3:バックドアプログラムの 設置及び攻撃 脆弱性が放置された理由 ● ソースコードレビューを実施することが社内規定で定められていなかった ● 決済システム以外の脆弱性対策は必要ないとの認識があった

Slide 27

Slide 27 text

27 今までの手法 企画 リリース ・運用 テスト 実装 設計 案件定義 開発ライフサイクルの下流工程(右側)でテストを行いリリース ● ここで脆弱性が発見された場合はソースコードへの修正が発生(手戻り) ● リリース時にセキュリティに関する考慮事項が増え、リリースに影響することも ● エンジニアの負担増

Slide 28

Slide 28 text

28 なんとかスピードを 落とさずセキュリティも担保 出来ないかな・・

Slide 29

Slide 29 text

29 Shift-Left 企画 リリース ・運用 テスト 実装 設計 案件定義 開発ライフサイクルの上流工程(左側)でテストを行う ● ソースコードの修正は早期に実装するほど対策コストがかからない ● 早期に脆弱性の検知を行うことでリリーススピードの向上が見込める ● 開発チームのセキュリティ意識向上 Shift Left

Slide 30

Slide 30 text

30 セキュリティの考慮事項と開発ライフサイクル AWS:Security For Developers – 開発者のためのセキュリティ これまでの手法 ● テストの段階からセキュリティについて 考慮し始める ● リリースのころに考慮事項が一番増え る ● 考慮漏れや手戻りの発生 ● リリース への影響 シフトレフト ● 構築段階で一番考慮事項が増える ● リリースのころにはセキュリティについて考 慮することは減少している

Slide 31

Slide 31 text

31 ソースコードの検証とセキュリティレビュー PR しました! レビューお願いします。 コード OK LGTM ! 次の issue アサイン! 脆弱性もなし LGTM ! すべてを人力でこなすのは負担も大きいし時間もかかる ● コードに論理的なミスはないか ● 利便性、分かりやすさなど、運用しやすいコード か ● issue の要件を満たしているか ● ライブラリに脆弱性が無いか ● コードレベルのセキュリティ対策 ● 最新の脆弱性に関してのセキュリティ対策 ● オープンソースの脆弱性がないか Security Engineer シニア Developer

Slide 32

Slide 32 text

32 脆弱性を自動で見つけて 修正出来るような製品ないかな・・・?

Slide 33

Slide 33 text

No content

Slide 34

Slide 34 text

34 https://snyk.io/ So, Now You Know Snykは、安全な開発を迅速に行うことを支援。 ● 多くの言語・開発フレームワークに対応 ● コーディング段階で脆弱性をチェック ● IaC・コンテナに対応 ● 依存しているOSSの脆弱性チェック ● CI/CD連携・IDE連携 ● 3大クラウドプラットフォームと連携

Slide 35

Slide 35 text

Snykで何ができる

Slide 36

Slide 36 text

36 DevSecOps Dev Sec Ops Development 開発 Security セキュリティ Operations 運用

Slide 37

Slide 37 text

37 Shift-Left 企画 リリース ・運用 テスト 実装 設計 案件定義 開発ライフサイクルの上流工程(左側)でテストを行う ● ソースコードの修正は早期に実装するほど対策コストがかからない ● 早期に脆弱性の検知を行うことでリリーススピードの向上が見込める ● 開発チームのセキュリティ意識向上 Shift Left

Slide 38

Slide 38 text

Snykプロダクト Snyk Code ソースコードをリアルタイムに静的解析 (SAST) Snyk Open Source オープンソースソフトウェアの依存関係解析 (SCA) Snyk Container コンテナ/k8sワークロードを継続的に脆弱性から保護 Snyk IaC 脆弱なIaCコードを検知し指摘 Snyk IaC + クラウド実行環境の構成チェック (CSPM) https://snyk.io/

Slide 39

Slide 39 text

No content

Slide 40

Slide 40 text

実際に見ていきましょう

Slide 41

Slide 41 text

まとめ ● IaC導入には 開発のスピード+セキュリティ管理も重要 ○ CI/CD、シフトレフト、コードの脆弱性スキャン →SaaS製品を使い倒して安心安全なIaCライフを! →これであなたも魔法使い

Slide 42

Slide 42 text

No content

Slide 43

Slide 43 text

43 参考情報

Slide 44

Slide 44 text

44 脆弱性に関する情報 CVE NIST JVN IPA:安全なウェブサイトの作り方 ● 資料を参考に新しい脆弱性に関しての 情報をリサーチ ● どういった攻撃にどのような対策が有効 なのかを学ぶ

Slide 45

Slide 45 text

次世代脆弱性診断ツール https://snyk.co/ufLKa

Slide 46

Slide 46 text

46 Snyk × AWS AWS CodePipeline との連携

Slide 47

Slide 47 text

47 脆弱性に関する情報 CVE NIST JVN IPA:安全なウェブサイトの作り方 ● 資料を参考に新しい脆弱性に関しての 情報をリサーチ ● どういった攻撃にどのような対策が有効 なのかを学ぶ

Slide 48

Slide 48 text

48 よくあるセキュリティリスクの概要と対策 https://owasp.org/www-project-top-ten/ ● クロスサイト・スクリプティング ● ゼロデイアタック ● サーバーサイドリクエストフォージェリ ● ハードコードされたパスワードの使用 ● 不適切な暗号化アルゴリズム ● 適切に保護されていないクレデンシャル ● 保護されていない認証情報の保存 / 不適切な認証 ● セッションの固定化 ● ログファイルへの不適切な出力 etc.. https://owasp.org/Top10/ja/