Slide 1

Slide 1 text

開発者のための GitHub Advanced Security入門 セキュリティを向上させよう! 2023/7/25 Cloud Native Days Fukuoka 2023 プレイベント 馬場ひろの Hirono Baba

Slide 2

Slide 2 text

スピーカーについて ◼ 馬場ひろの ◼ (株)オルターブース所属 ◼ ex歯医者さん ◼ 認定スクラムマスター ◼ AzureやGitHub, .NETがんばって ます @nina-sensei

Slide 3

Slide 3 text

アジェンダ ◼ 今日話すこと ◼ GHAS(GitHub Advanced Security)とは ◼ Code Scanningについて ◼ Secret Scanningについて ◼ Dependency reviewについて ◼ 対象者 ◼ GHASって何?なひと ◼ 組織でのセキュリティに課題を抱えているひと ◼ GitHubを扱うすべてのひと

Slide 4

Slide 4 text

開発者として考えなくてはいけない セキュリティのこと 企画 要件 定義 設計 実装 リリース 運用 テスト ◼ 脆弱性に気をつける ◼ コードの脆弱性 ◼ 使用ライブラリ、パッケージの脆弱性 など 誰が どこで 設計、実装の段階からセキュリティを採用すること Shift Left テスト 開発者全員で意識!

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

GitHubはコード管理ツールだけじゃない GitHub Codespaces GitHub Actions GitHub Advanced Security GitHub Copilot GHAS

Slide 7

Slide 7 text

GHASとは? ◼ GitHubが提供するセキュリティ機能群の総称 ◼ 一部すべてのプランで使用可能 ◼ プラスの機能を使いたい場合はGHASのライセンスを購入する必要あり ◼ GitHub Enterpriseプランが必要 ◼ 主に3つの領域を中心に保護 ◼ サプライチェーン ◼ コード ◼ 環境 ◼ GitHubのプラン Free Team Enterprise ・ ・ ・

Slide 8

Slide 8 text

GHASの主な機能 Code Scanning Secret Scanning Dependency review (依存関係の確認) Private repository with GHAS Private repository without GHAS Public repository

Slide 9

Slide 9 text

Shift security left with developer-first tools Commit changes Submit Pull Request Update new branch Dependency Scanning: CVEの自動識別と修復 Secret Scanning: 公開されたトークンの検索と 無効化 Code Scanning: コード内の危険なパターンを 発見し警告する 新しいコードがメインブランチに導入される前に、 脆弱性を検出し、修正する

Slide 10

Slide 10 text

GHASの設定 ◼ Settings > Code security and analisys ◼ リポジトリ単位でも組織レベルでも設定で きる ◼ 親階層の設定を継承する Enterprise Organizations Repo 各リポジトリ …

Slide 11

Slide 11 text

Code Scanning

Slide 12

Slide 12 text

Code Scanningとは ◼ コードを分析して、セキュリティの脆弱性と コーディングエラーを検出ことができる機能 ◼ コード解析エンジン「CodeQL」を利用している ◼ GitHub Actionsを利用して簡単に導入 ◼ たくさんの言語がサポートされている ◼ C/C++ ◼ Java ◼ C# ◼ Python ◼ Go ◼ JavaScript ◼ TypeScript ◼ Ruby

Slide 13

Slide 13 text

セキュアじゃないコードをpushしてみる

Slide 14

Slide 14 text

Secret Scanning

Slide 15

Slide 15 text

Secret Scanningとは ◼ push後シークレットを検知したらアラートを出す ◼ GitHub→ユーザー、GitHub→サービスプロバイダーに通知 ◼ あらゆるプロバイダーのシークレットの形式をサポート ◼ カスタムパターンを作成可能 ◼ 独自のシークレットを作成している場合に使用 ◼ 2023年2月にすべてのリポジトリで使用可能に!

Slide 16

Slide 16 text

シークレットをpushしてみる ◼ push後すぐアラートが出現 ◼ メールも届いた(届く設定にしているため) ◼ Security > Secret scanning からアラートを確認

Slide 17

Slide 17 text

対処したらアラートはクローズしよう ◼ 対処方法が記載されてる ◼ 対処したらアラートはクローズする ◼ 取り消し ◼ テスト用 ◼ まちがい ◼ 修復しない

Slide 18

Slide 18 text

シークレットをpushできないようにする Commit changes Submit Pull Request Update new branch Secret Scanning 新しいコードがメインブランチに導入される前に、 脆弱性を検出し、修正する Push protection ←プライベートリポジトリでは使えない ※2023年7月現在

Slide 19

Slide 19 text

Push protectionをonにしてpush

Slide 20

Slide 20 text

Dependency review

Slide 21

Slide 21 text

依存関係の確認ができるツールたち Dependency graph プロジェクトの依存関係を視覚化 Dependabot alerts コードの依存関係にある脆弱性を通知する Dependabot security updates 発見された脆弱性の修正案のPRを自動作成 Dependabot version updates 使用するパッケージのアップデートのPRを 自動作成 Dependency review PR上で依存関係の変更を視覚化 脆弱性の確認:GitHub Advisory Database GitHub によって脆弱性に関する情報が収集されるところ

Slide 22

Slide 22 text

Dependabot alerts

Slide 23

Slide 23 text

Dependabot security updates

Slide 24

Slide 24 text

Dependabot version updates

Slide 25

Slide 25 text

マージ前に脆弱性を検知したいなら… Commit changes Submit Pull Request Update new branch Dependency review Dependabot 新しいコードがメインブランチに導入される前に、 脆弱性を検出し、修正する

Slide 26

Slide 26 text

Dependency review 脆弱性が検知されたら プルリクエストの段階 ではじかれる name: 'Dependency Review' on: [pull_request] permissions: contents: read jobs: dependency-review: runs-on: ubuntu-latest steps: - name: 'Checkout Repository' uses: actions/checkout@v3 - name: Dependency Review uses: actions/dependency-review-action@v3 .github/workflowsにワークフローを追加

Slide 27

Slide 27 text

まとめ ◼ 開発段階でセキュリティを意識する ◼ 全員が脆弱性を意識する ◼ 脆弱性自動検知ツールの導入おすすめ ◼ GHASはいいぞ