GitHub
ギットハブ
GitHubで実現するセキュリティ
ソースコードのセキュリティにおける課題
アプリケーションセキュリティ
- 自社で利用しているOSSの依存関係と脆弱性を把握できておらず、影響範囲を特定できていない
- 社内のルール上、シークレット情報をソースコードの中に混入させないようにしているが、徹底できていない
- 過去に静的解析ツールを利用したが、膨大な量のアラートが出て運用がうまく回らず、利用をあきらめた
利用者向けセキュリティ
- 開発者自身でリポジトリの公開設定を編集できるため、企業資産等の機密情報が漏えいするリスクがある
- ID/パスワードが盗まれたり、パーソナルアクセストークンやSSHキーが漏洩して不正ログインされる危険性がある
- ある従業員が退職したにも関わらず、退職後もアクセス可能な状態が続いていた
GitHub Enterpriseでセキュリティを担保
Application Security
サプライチェーン
オープンソースコンポーネントの
安全性とコンプライアンス維持
安全性とコンプライアンス維持
コード
ワークフローの一部として
コードの脆弱性を検知・修正
コードの脆弱性を検知・修正
開発ライフサイクル
セキュリティやコンプライアンス
ポリシーをコードとして作成・実行
ポリシーをコードとして作成・実行
Developer Security
サプライチェーン
権限設定による
機密情報漏洩の防止
機密情報漏洩の防止
コード
接続元の確認による
セキュアなアクセス
セキュアなアクセス
開発ライフサイクル
多要素認証・認可により信頼レベルに
応じたアクセス制御
応じたアクセス制御
GitHubが提供する現在のセキュリティ機能
サプライチェーン
- Dependency Graph
依存関係を閲覧・把握 - Advisory database
パッケージの脆弱性を記録しているデータベース - Dependabot alerts
- Dependabot security updates
依存パッケージの脆弱性に関する通知と自動修正用のPull Request作成 - Dependency review※
Pull Request内で新たな依存関係と脆弱性を確認
コード
- Secret scanning※
Git履歴に潜んでいるAPIトークンや他のシークレットを検知 - Code scanning※
すべてのgit push操作に対する静的解析、ワークフローに統合されてCodeQLによる解析
開発ライフサイクル
- Branch protection
ブランチやPull Requestがマージされる際に条件を定義 - Commit signing
すべてのコミットが署名されていることを条件に - Security Center
(Security Overview)
Organization内のリスク状況を可視化
※ GitHub Enterpriseの有償オプション「GitHub Advanced Security」にて提供
コードセキュリティ~シークレット検知~
- 外部サービスと通信するための認証用トークンや秘密鍵の情報(シークレット)がGitHubにPushしたコードに紛れ込んでいないかどうか自動検出
サポートしているシークレット情報はこちら - 機能有効化後、すべてのgitヒストリをスキャン
- Push Protection機能により、シークレット情報が含まれるソースコードがPushされることを未然に防止
GHEC | GHES | |
Secret Scanning | ○ | ○ |
※GitHub Enterpriseの有償オプション「GitHub Advanced Security」にて提供
コードセキュリティ ~コードの脆弱性検知~
- 開発中のコードを自動解析し、脆弱性を引き起こすパターンのコードを書いていないかどうかをチェックすることが可能(CodeQL)
- スキャン項目はGitHub上のコミュニティによって開発されたGitHubクエリセット(2,000以上のパターンに対応)やカスタムクエリを実行可能
- 他の静的解析ツールによる拡張が可能
※現在はShiftLeftやAnchoreなどと連携が可能 - サポート言語・環境
https://codeql.github.com/docs/codeql-overview/supported-languages-and-frameworks/
GHEC | GHES | |
Code Scanning | ○ | ○ |
※GitHub Enterpriseの有償オプション「GitHub Advanced Security」にて提供
Code Scanningの効果
- 開発の早期に脆弱性を発見
既知の脆弱性を開発のフェーズで予防することにより、修正コストの削減 - 正確な解析
CodeQLはコードのコールグラフ、コードの意味を解釈して解析を実行するため、非常に高い正確性(=誤検知が少ない)を実現。また、解析結果のレビューにかかる時間を削減 - 優先順位付けされたアラート
解析結果は3段階に優先順位付けされるため、重要なものから対処することが可能 - コミュニティの活用
GitHubや他の企業、オープンソースコミュニティによって作成されたクエリを活用
お問い合わせ・資料請求
株式会社マクニカ GitHub 担当
- TEL:045-476-2010
- E-mail:github-rt@macnica.co.jp
平日 9:00~17:00