セキュリティ フレーム:監査とログ記録 | 対応策

製品/サービス [アーティクル]
Dynamics CRM
Web アプリケーション
[データベース]
Azure ストレージ
WCF
Web API
IoT フィールド ゲートウェイ
IoT クラウド ゲートウェイ

ソリューションにおける機密性の高いエンティティを識別し、変更の監査を実装する

タイトル 詳細
コンポーネント Dynamics CRM
SDL フェーズ Build
適用できるテクノロジ ジェネリック
属性 該当なし
参照 該当なし
手順 機密データが含まれるソリューション内のエンティティを識別し、それらのエンティティとフィールドに対する変更の監査を実装します。

監査とログ記録がアプリケーションに適用されていることを確認する

タイトル 詳細
コンポーネント Web アプリケーション
SDL フェーズ Build
適用できるテクノロジ ジェネリック
属性 該当なし
参照 該当なし
手順 すべてのコンポーネントで監査とログ記録を有効にします。 監査ログでは、ユーザー コンテキストをキャプチャする必要があります。 すべての重要なイベントを識別し、それらのイベントをログに記録します。 一元化されたログ記録を実装します。

ログのローテーションと分離の準備ができていることを確認する

タイトル 詳細
コンポーネント Web アプリケーション
SDL フェーズ Build
適用できるテクノロジ ジェネリック
属性 該当なし
参照 該当なし
手順

ログのローテーションとは、日付付きログ ファイルがアーカイブされるシステム管理において使用される、自動化されたプロセスです。 大規模なアプリケーションを実行するサーバーは、多くの場合、すべての要求をログに記録します。ログのローテーションは、最近のイベントの分析を継続しながらログの合計サイズを制限する方法の 1 つです。

ログの分離とは、基本的に、OS またはアプリケーションが実行されている別のパーティションにログ ファイルを格納する必要があることを指し、サービス拒否攻撃またはアプリケーションのパフォーマンスの低下を回避するために実施されます。

アプリケーションによって機密性の高いユーザー データがログに記録されないことを確認する

タイトル 詳細
コンポーネント Web アプリケーション
SDL フェーズ Build
適用できるテクノロジ ジェネリック
属性 該当なし
参照 該当なし
手順

ユーザーからサイトに送信される機密データをログに記録していないことを確認します。 設計上の問題から発生する副次的な影響だけでなく、意図的なログ記録の有無も確認します。 機密データの例は次のとおりです。

  • ユーザーの資格情報
  • 社会保障番号やその他の識別情報
  • クレジット カード番号やその他の金融情報
  • 健康に関する情報
  • 暗号化された情報の復号化に使用される可能性がある秘密キーやその他のデータ
  • アプリケーションへのさらに効果的な攻撃に使用される可能性があるシステムまたはアプリケーションの情報

監査ファイルとログ ファイルでアクセス制限が行われていることを確認する

タイトル 詳細
コンポーネント Web アプリケーション
SDL フェーズ Build
適用できるテクノロジ ジェネリック
属性 該当なし
参照 該当なし
手順

ログ ファイルへのアクセス権が適切に設定されていることを確認します。 アプリケーション アカウントには書き込み専用アクセスが必要で、オペレーターとサポート担当者には必要に応じて読み取り専用アクセスが必要です。

フル アクセスが必要なのは管理者アカウントだけです。 ログ ファイルで、Windows ACL が適切に制限されていることを確認します。

  • アプリケーション アカウントには書き込み専用アクセスが必要です。
  • オペレーターとサポート担当者には必要に応じて読み取り専用アクセスが必要です。
  • フル アクセスが必要なのは管理者だけです。

ユーザー管理イベントがログ記録されていることを確認する

タイトル 詳細
コンポーネント Web アプリケーション
SDL フェーズ Build
適用できるテクノロジ ジェネリック
属性 該当なし
参照 該当なし
手順

アプリケーションが、ユーザーのログイン、パスワードのリセット、パスワードの変更、アカウントのロックアウト、ユーザー登録などのユーザー管理イベントの成功と失敗を監視していることを確認します。 これを利用して、疑わしい動作を検出して対処を行います。 操作データを収集することもできます。たとえば、だれがアプリケーションにアクセスしているのかを追跡します。

システムに悪用防止機能が組み込まれていることを確認する

タイトル 詳細
コンポーネント Web アプリケーション
SDL フェーズ Build
適用できるテクノロジ ジェネリック
属性 該当なし
参照 該当なし
手順

アプリケーションが悪用された場合にセキュリティ例外がスローされるように設定する必要があります。 例: 攻撃者が正規表現に一致しない悪意のあるコードを挿入しようとした場合に、セキュリティ例外がスローされることでシステムの悪用に気付くことができます。

たとえば、セキュリティ例外をログに記録し、次の問題に対してアクションを実行することをお勧めします。

  • 入力の検証
  • CSRF による違反
  • ブルート フォース攻撃 (リソースごとのユーザーあたりの要求数の上限値)
  • ファイル アップロードの違反

    Azure App Service の Web アプリの診断ログの有効化

    タイトル 詳細
    コンポーネント Web アプリケーション
    SDL フェーズ Build
    適用できるテクノロジ ジェネリック
    属性 EnvironmentType - Azure
    参照 該当なし
    手順

    Azure では、組み込みの診断機能により、App Service Web アプリのデバッグを容易に行うことができます。 これは、API アプリとモバイル アプリにも当てはまります。 App Service Web Apps は、Web サーバーと Web アプリケーションの両方のログ情報を診断する機能を備えています。

    これらは論理的に Web サーバー診断とアプリケーション診断に分けられます。

    SQL Server でログインの監査が有効になっていることを確認する

    タイトル 詳細
    コンポーネント データベース
    SDL フェーズ Build
    適用できるテクノロジ ジェネリック
    属性 該当なし
    参照 ログインの監査の構成
    手順

    パスワード推測攻撃の検出と確認のために、データベース サーバーのログインの監査を有効にする必要があります。 失敗したログイン試行をキャプチャすることが重要です。 成功したログイン試行と失敗したログイン試行の両方をキャプチャすると、フォレンジック調査でのさらなるメリットになります。

    Azure SQL での脅威の検出を有効にする

    タイトル 詳細
    コンポーネント データベース
    SDL フェーズ Build
    適用できるテクノロジ SQL Azure
    属性 SQL バージョン - V12
    参照 SQL Database 脅威の検出の概要
    手順

    脅威の検出は、データベースに対する潜在的なセキュリティ脅威を示す異常なデータベース アクティビティを検出します。 これによって提供される新しいセキュリティ階層により、異常なアクティビティに対するセキュリティ アラートが提供され、発生した潜在的な脅威にユーザーが検出して対応できるようになります。

    ユーザーは、Azure SQL Database の監査を使用して疑わしいイベントを調査し、データベース内のデータに対するアクセス、侵害、または悪用の試行による結果かどうかを判断できます。

    脅威の検出を使用すると、データベースに対する潜在的な脅威に簡単に対処できます。セキュリティの専門家である必要や、高度なセキュリティ監視システムを管理する必要はありません。

    Azure Storage Analytics を使用して Azure Storage のアクセスを監査する

    タイトル 詳細
    コンポーネント Azure Storage
    SDL フェーズ デプロイ
    適用できるテクノロジ ジェネリック
    属性 該当なし
    参照 Storage Analytics を使用して承認の種類を監視する
    手順

    各ストレージ アカウントで、Azure Storage Analytics を有効にして、ログ記録を実行し、メトリック データを保存することができます。 Storage Analytics ログでは、だれかがストレージにアクセスするときに使用される認証方法などの重要な情報を確認できます。

    ストレージへのアクセスを厳密に保護する場合、この方法が推奨されます。 たとえば、Blob Storage では、すべてのコンテナーを非公開に設定し、アプリケーション全体で SAS サービスの使用を実装できます。 次に、ログを定期的にチェックし、BLOB がストレージ アカウント キーを使用してアクセスされたか (セキュリティ違反が発生している可能性があります)、パブリックにすべきではない BLOB がパブリックであるかどうかを確認します。

    ログ記録を十分に実装する

    タイトル 詳細
    コンポーネント WCF
    SDL フェーズ Build
    適用できるテクノロジ .NET Framework
    属性 該当なし
    参照 MSDNFortify Kingdom
    手順

    セキュリティ インシデントが発生した後の正確な監査証跡が欠如していると、フォレンジック調査の妨げとなる場合があります。 Windows Communication Foundation (WCF) には、成功または失敗した認証の試行回数をログ記録する機能が用意されています。

    失敗した認証の試行をログ記録することで、管理者は潜在的なブルート フォース攻撃を警戒することができます。 同様に、成功した認証の試行をログ記録することで、正当なアカウントが侵害された場合に有用な監査証跡となる可能性があります。 WCF のサービス セキュリティ監査機能を有効にします。

    監査が有効化された構成例は次のとおりです。

    <system.serviceModel>
        <behaviors>
            <serviceBehaviors>
                <behavior name=""NewBehavior"">
                    <serviceSecurityAudit auditLogLocation=""Default""
                    suppressAuditFailure=""false"" 
                    serviceAuthorizationAuditLevel=""SuccessAndFailure""
                    messageAuthenticationAuditLevel=""SuccessAndFailure"" />
                    ...
                </behavior>
            </servicebehaviors>
        </behaviors>
    </system.serviceModel>
    

    監査のエラーの処理を十分に実装する

    タイトル 詳細
    コンポーネント WCF
    SDL フェーズ Build
    適用できるテクノロジ .NET Framework
    属性 該当なし
    参照 MSDNFortify Kingdom
    手順

    開発されたソリューションは、監査ログへの書き込みに失敗した場合でも例外を生成しないように構成されているものです。 WCF が監査ログに書き込むことができない場合に例外をスローしないように構成されている場合、プログラムに失敗が通知されません。また、重要なセキュリティ イベントの監査も発生しない可能性があります。

    次の WCF 構成ファイルの <behavior/> 要素は、WCF が監査ログへの書き込みに失敗した場合に、アプリケーションへの通知を行わないよう WCF に指示しています。

    <behaviors>
        <serviceBehaviors>
            <behavior name="NewBehavior">
                <serviceSecurityAudit auditLogLocation="Application"
                suppressAuditFailure="true"
                serviceAuthorizationAuditLevel="Success"
                messageAuthenticationAuditLevel="Success" />
            </behavior>
        </serviceBehaviors>
    </behaviors>
    

    監査ログに書き込むことができない場合に、必ずプログラムに通知を行うように WCF を構成してください。 プログラムには、監査証跡が保持されていないことを組織に警告するための代替通知スキーマを用意しておく必要があります。

    監査とログ記録が Web API に適用されていることを確認する

    タイトル 詳細
    コンポーネント Web API
    SDL フェーズ Build
    適用できるテクノロジ ジェネリック
    属性 該当なし
    参照 該当なし
    手順 Web API で監査とログ記録を有効にします。 監査ログでは、ユーザー コンテキストをキャプチャする必要があります。 すべての重要なイベントを識別し、それらのイベントをログに記録します。 一元化されたログ記録を実装します。

    フィールド ゲートウェイに適切な監査とログ記録が適用されていることを確認する

    タイトル 詳細
    コンポーネント IoT フィールド ゲートウェイ
    SDL フェーズ Build
    適用できるテクノロジ ジェネリック
    属性 該当なし
    参照 該当なし
    手順

    複数のデバイスがフィールド ゲートウェイに接続するときは、個々のデバイスの接続の試行と認証状態 (成功または失敗) がログに記録され、フィールド ゲートウェイに保持されるようにします。

    また、フィールド ゲートウェイによって個々のデバイスの IoT Hub 資格情報が保持されている場合は、これらの資格情報が取得されたときに監査が実行されていることを確認します。長期保存用の Azure IoT Hub またはストレージに定期的にログをアップロードするプロセスを設けてください。

    クラウド ゲートウェイに適切な監査とログ記録が適用されていることを確認する

    タイトル 詳細
    コンポーネント IoT クラウド ゲートウェイ
    SDL フェーズ Build
    適用できるテクノロジ ジェネリック
    属性 該当なし
    参照 IoT Hub 操作の監視の概要
    手順

    IoT Hub 操作の監視を通じて収集された監査データを収集および格納できるように設計します。 次の監視のカテゴリを有効にします。

    • デバイス ID の操作
    • デバイスからクラウドへの通信
    • クラウドからデバイスへの通信
    • 接続
    • ファイルのアップロード