GitHub Advanced Security を使用して脆弱性をすばやく発見して修正し、高い修復速度とワークフローへのシームレスな統合を保証します。
コードを保護する
アプリケーション セキュリティとそのしくみ
アプリケーション セキュリティ (AppSec) とは、許可されていないアクセス、使用、開示、中断、変更、破棄からソフトウェアを保護するために使用されるセキュリティ対策を指します。アプリケーション セキュリティの手法により、ソフトウェアをサイバー脅威から保護するための安全装置と対策を実装し、アプリケーションおよびそのデータの機密性、整合性、可用性を確保できます。
アプリケーション セキュリティが重要な理由
クラウドベースのアプリケーションやサービスの増加に伴い、アプリケーションは、弱点を悪用して極秘データにアクセスしようとする攻撃者の標的となることがよくあります。アプリケーションの脆弱性は、単純なコーディング エラーから、安全でない設定や環境の構成エラーといったより複雑なものまで多岐にわたります。
セキュリティ侵害による極秘データの損失、金銭的リスク、会社の評判の低下などの深刻な結果は十分に裏付けられており、ほぼ毎日のように発生しています。このことからも、アプリケーションの設計、開発、展開といったあらゆる段階でセキュア ソフトウェアを開発することの重要性が明確に示されています。これらのビジネスへの影響は、開発者にも及ぶ可能性があります。多くの企業では、開発チームとセキュリティ チームがサイロ化されているか、アプリケーション セキュリティの専門家やリソースが限られている場合があります。これは企業が一度に数百件のアプリケーションを展開する場合に特に問題となり、開発者にコードを記述してソフトウエアをより早く出荷するというプレッシャーに加え、組織のセキュリティとコンプライアンスという負担が強いられる環境が生まれます。
セキュア ソフトウェアを開発する重要性について、詳しくは e ブック「Empowering developers to build secure software faster (開発者がより迅速にセキュア ソフトウェアを開発できるよう支援する)」を参照してください。
事前対応型のアプリケーション セキュリティの重要性
事前対応型セキュリティのアプローチでは防御に焦点を当て、最初のアプリケーションの設計段階からセキュリティを組み込みます。このアプローチでは、コード、シークレット、依存関係スキャンなどの手法を使用して、セキュリティを開発者ワークフローに統合します。
アプリケーション セキュリティへの事前対応型アプローチが重要な理由は、以下のとおりです。
悪意のあるハッキングから保護する: 弱点を特定して、データ侵害が起こる前に阻止します。
データ保護法を順守する: 違反による罰則を回避します。
極秘データをプロアクティブに保護する: 機密情報を漏洩させるおそれのあるエラーを見つけます。
開発者の時間を開放する: より安全で耐障害性に優れたアプリケーションを作成する時間を増やし、修復やパッチ適用に費やす時間を短縮します。
事前対応型セキュリティ戦略がコードを保護する最適な方法である理由を、e ブック「Proactive vs Reactive Security (事前対応型セキュリティと事後対応型セキュリティ)」でご確認ください。
アプリケーション セキュリティの種類について
アプリケーション セキュリティ対策は、次のようないくつかの重複するカテゴリに分類されます。
ネットワーク セキュリティは、ネットワーク経由で送信されるデータの整合性と機密性を保護するのに役立ちます。例として、ファイアウォール、SSL/TLS 暗号化、仮想プライベート ネットワーク (VPN) に加え、マイクロセグメンテーション、リアルタイム検知、エンド ツー エンド暗号化などが含まれます。
データ セキュリティは、データを許可されていないアクセス、変更、廃棄から保護します。例として、データ暗号化、アクセス コントロール、データのバックアップ手法やリカバリ手法が含まれます。
アクセス コントロールは、アプリケーション内のリソースへのユーザー アクセスを管理します。例として、認証、認可、権限の管理が含まれます。
アプリケーション ランタイム セキュリティは、アプリケーションの実行中に機能する保護機能です。例として、入力検証、認証と認可の管理、セキュア コーディング プラクティスが含まれます。
暗号化は、アルゴリズムを使用してデータをエンコードおよびデコードし、許可されていないユーザーによるアクセスや変更を困難にします。例として、対称キー暗号化、公開キー暗号化、デジタル署名が含まれます。
アプリケーション セキュリティの 5 つの共通コンポーネント
一般的に、アプリケーション セキュリティには大きく 5 つのコンポーネントがあります。
脆弱性評価は、組織のシステム内で特定および分析を行い、修正の優先順位をつけるプロセスです。さまざまなツールや手法を使用してネットワーク、システム、アプリケーションをスキャンし、弱点を見つけてリスクを評価します。
セキュリティ対策は、脅威や脆弱性から保護するためのあらゆる対策とプロセスです。これにはファイアウォール、ウイルス対策ソフトウェア、暗号化などの技術的な対策のほか、アクセス コントロールやセキュリティ ポリシーなども含まれます。
セキュリティに関するポリシーと手順は、組織がシステムとデータのセキュリティを確保するために制定したルールとガイドラインです。これにはパスワード管理、アクセス コントロール、データ保護、インシデント対応についてのポリシーが含まれる場合があります。
セキュリティ トレーニングと企業の意識向上を通じて、従業員にセキュリティ対策について教育し、ゼロ トラストやセキュア コーディングなどのベストプラクティスを活用するセキュリティ文化を創出します。
インシデント対応とリカバリは、インシデントを検知して対応するための計画と手順、およびインシデントからリカバリし、その影響を最小限に抑えるプロセスを指します。
あらゆる段階でのセキュリティ
アプリケーション セキュリティのしくみ
アプリケーション セキュリティの実践方法について、より具体的な例を以下に示します。
脆弱性評価: コードとアーキテクチャのレビューを含みます。一般的な脆弱性としては、クロスサイト スクリプティング (XSS)、SQL インジェクション攻撃、未検証入力、セキュリティの構成エラーなどが挙げられます。
セキュリティ テスト: 静的コード分析、動的アプリケーション セキュリティ テスト (DAST)、侵入テスト、ファズ テストなど、さまざまなテスト手法があります。
モニタリング: ネットワーク トラフィック、ログ、その他の潜在的な脅威の兆候の監視が含まれます。
アプリケーション セキュリティの 8 つのベストプラクティス
アプリケーション セキュリティのみに特化したプラットフォームやサービスは多数存在しますが、次の 8 つのセキュリティのベストプラクティスを取り入れることは、アプリケーション開発者やあらゆる規模の企業にメリットをもたらします。
入力検証を実装する: システムに入力されたデータが有効で、必須基準を満たしていることを確認します。これにより SQL インジェクションなどの攻撃を防ぐことができます。
アクセス コントロールを有効にする: パスワード管理、パスワード生成、場合によってはパスワードレス オプションなどの強力なパスワード ポリシーを使用して、パスワードのセキュリティを強化します。
強力な認証を導入する: これにはユーザー名とパスワードのほか、VPN トークン、指紋などの生体認証、その他の手法を使用してユーザーの ID を確認することが含まれます。
常にデータを暗号化する: 転送中および保存時のデータを暗号化することは、データ転送への許可されていないアクセスを防止する最適な方法の 1 つです。強力な暗号化により、漏洩したデータを悪意のある攻撃者にとって役に立たないものにすることができます。
パッチ管理を実装する: 定期的にシステムを更新してパッチを適用し、脆弱性を修正して攻撃を防御します。
リスク評価を受ける: リアルタイムの分析ツールとモニタリングの使用方法を学習し、ユーザー アクセスの管理、シャドウ IT の発見、アプリケーションの増加抑制に役立てます。
セキュリティ テストを実施する: 脆弱性評価、侵入テスト、その他のタイプのテストを使用して、システムを定期的にテストし、アプリケーションとデータが安全であることを確認します。
ソース コードの保護を強化する: 安全なプログラミング言語とフレームワークを使用するなど、セキュア コードを記述するためのベストプラクティスに従います。
これらのベストプラクティスに従うことで、アプリケーション開発者はアプリケーションとデータのセキュリティを大幅に向上し、ハッキング、マルウェア、その他のサイバー攻撃などの脅威から保護することができます。
コードとシークレットのセキュリティを維持するための次のステップ
GitHub では、アプリケーションのテストと保護に役立つ次のようなツールや機能を用意しています。
コード スキャンにより、開発者はアプリケーションを本番環境にリリースする前にコード内のセキュリティ問題を見つけて修正することができます。これは静的アプリケーション セキュリティ テスト (SAST) とも呼ばれます。
シークレット スキャンは、既知のシークレット形式がないかリポジトリを監視し、シークレットが見つかり次第開発者に通知することで、許可されていないアクセスを防止します。
Dependabot により、リポジトリ内の脆弱な依存関係を修正しやすくなります。この機能はリポジトリの依存関係グラフ内で脆弱性のアラートを発生させ、自動修正を試みます。
サプライ チェーン セキュリティは、ソフトウェア構成分析 (SCA) により脆弱な依存関係を検出し、コードベースに導入される前にフラグを立てます。
セキュリティ概要では、組織全体および個別のリポジトリ内の全てのセキュリティ リスクを一元的に表示し、セキュリティ管理とポリシーを簡素化します。
コードとシークレットを保護するための総合的なソリューションについては、GitHub Advanced Security をご覧ください。静的コード分析、Dependency Scanning、シークレット スキャンを利用して、コード内の脆弱性を特定して修正するのに役立ちます。
FAQ
アプリケーション セキュリティとは何ですか
アプリケーション セキュリティ (AppSec) とは、サイバー脅威から保護するための安全装置と対策を実装し、アプリケーションとデータの整合性、可用性、機密性を維持する手法を指します。
アプリケーション セキュリティの例としては、どのようなものがありますか。
アプリケーションを保護する方法の例をいくつかご紹介します。
強力なパスワード ポリシー、場合によってはパスワードレス オプションにより、適切なパスワードの使用方法を維持します。
多要素認証により、アクセスを付与する前に ID を確認します。
セキュリティのパッチ適用と更新により、脆弱性を修正し、セキュリティ侵害を阻止します。
暗号化により、アプリケーションを通じて送信される極秘データを保護します。
セキュリティ テストにより、脆弱性を生み出すエラーを特定して修正します。
セキュリティの監視により、不審なアクティビティを検知し、許可されていないアクセスを防止します。
なぜアプリケーション セキュリティが必要なのですか
現代のデジタル時代においてアプリケーション セキュリティの重要性が増しているのは、より多くの極秘情報が電子的に保管および送信されているためです。これらの情報には、個人や組織のプライバシーとセキュリティの維持のために保護される必要がある財務情報、個人情報、診療記録、その他の極秘データが含まれます。