8.2. コンプライアンスポリシーの定義

セキュリティまたはコンプライアンスポリシーがまったくのゼロから書かれることはめったにありません。ISO 27000 標準シリーズやその派生物、他のソースなどがセキュリティポリシーのテンプレートや実践上の推奨事項を提供するので、最初はこれらが便利です。しかし、情報セキュリティプログラムを構築している組織では、個別のニーズに合わせるためにポリシーテンプレートを修正する必要があります。テンプレートは、企業環境への関連性に基づいて選択すべきです。テンプレートには組織に適用できない埋め込みの前提が含まれていたり、テンプレートで特定の判断が明らかに必要であることなどから、テンプレート選択後にこれを調整する必要があります。
Red Hat Enterprise Linux の監査機能は、Security Content Automation Protocol (SCAP) 標準をベースとしています。SCAP は相互運用可能な使用を統合したもので、形式と命名を標準化します。これらの形式と命名により、ソフトウェアの弱点およびセキュリティ設定の情報がマシンとユーザーの両方に通信されます。SCAP は、自動設定、脆弱性とパッチのチェック、技術的制御コンプライアンスアクティビティー、およびセキュリティ措置などをサポートする仕様の複数目的のフレームワークです。
言い換えると、SCAP は、ベンダーにとらわれないセキュリティポリシーの表示方法です。このため、現代の企業では幅広く使われています。SCAP 仕様は、セキュリティコンテンツの形式が周知かつ標準化されたエコシステムを作り出す一方で、スキャナーやポリシーエディターの導入は義務化されません。このような状態では、企業がいくつものセキュリティベンダーを用いていても、組織がセキュリティポリシー (SCAP コンテンツ) を構築するのは一度で済みます。
SCAP の最新バージョンには、いくつかの基礎的標準が含まれています。これらのコンポーネントは、SCAP 内での機能により、以下のようにグループ化されています。

SCAP コンポーネント

  • 言語 — このグループは、コンプライアンスポリシーを表現する標準的な語彙および慣習を定義する SCAP 言語で構成されます。
    • eXtensible Configuration Checklist Description Format (XCCDF) — セキュリティガイダンスを表示、組織、および管理するための言語です。
    • Open Vulnerability and Assessment Language (OVAL) — スキャンされたシステムの状態について論理的アサーションを実行するための言語です。
    • Open Checklist Interactive Language (OCIL) — ユーザーにクエリを行い、その質問に対するユーザーの返答を解釈するための標準的な方法を提供する言語です。
    • Asset Identification (AI) — セキュリティアセットを特定するためのデータモデル、方法、およびガイダンスを提供する言語です。
    • Asset Reporting Format (ARF) — 収集されたセキュリティアセットおよびアセットとセキュリティレポートとの関係についての情報の送信形式を表示する言語です。
  • 列挙 — このグループには、命名形式および興味のある特定のセキュリティ関連の分野からのアイテムの公式一覧または辞書を定義する、SCAP 基準が含まれています。
    • Common Configuration Enumeration (CCE) — アプリケーションおよびオペレーティングシステム用のセキュリティ関連設定要素の列挙です。
    • Common Platform Enumeration (CPE) — 情報技術 (IT) システム、プラットホーム、およびソフトウェアパッケージの特定に使用される構造化命名スキームです。
    • Common Vulnerabilities and Exposures (CVE) — 周知のソフトウェア脆弱性および露出のコレクションへの参照方法です。
  • メトリクス — このグループは、セキュリティリスクを特定、評価するフレームワークで構成されています。
    • Common Configuration Scoring System (CCSS) — セキュリティ関連の設定要素を評価し、それらをスコアに割り当ててユーザーが適切な応答ステップの優先度を決定できるようにする、メトリクスシステムです。
    • Common Vulnerability Scoring System (CVSS) — ソフトウェアの脆弱性を評価し、それらをスコアに割り当ててユーザーがセキュリティリスクの優先度を決定できるようにするメトリクスシステムです。
  • 整合性 — SCAP コンポーネントとスキャンの結果の整合性を維持するための SCAP 仕様です。
    • Trust Model for Security Automation Data (TMSAD) — セキュリティ自動化ドメイン内の XML ファイルのコンテンツにおいて、署名、ハッシュ、鍵情報、および ID 情報を表示するための既存の仕様の使い方を説明した推奨事項です。
各 SCAP コンポーネントには、XML ベースのドキュメント形式とその XML ネームスペースがあります。SCAP で表示されているコンプライアンスポリシーは、単一の OVAL 定義 XML ファイル、データストリームファイル、単一 zip アーカイブ、またはポリシーチェックリストを表示する XCCDF ファイルを含む別個の XML ファイルセットのいずれかになります。

8.2.1. XCCDF ファイル形式

XCCDF 言語は、情報交換、ドキュメント生成、組織および状況に応じた調整、自動コンプライアンステスト、およびコンプライアンススコアリングをサポートするように設計されています。この言語は主に記述的で、セキュリティスキャンを実行するコマンドは含まれていません。しかし XCCDF ドキュメントは他の SCAP コンポーネントを参照できるため、関連する評価ドキュメント (OVAL, OCIL) を除くすべてのターゲットプラットホームのなかで移植可能なコンプライアンスポリシーの作成に使用することができます。
コンプライアンスポリシーを表示する一般的な方法は XML ファイルセットで、このうちのひとつが XCCDF チェックリストになります。この XCCDF は通常、評価リソース、複数の OVAL、OCIL および Script Check Engine (SCE) ファイルを参照しています。さらに、このファイルセットには、CPE 辞書ファイルとこの辞書用のオブジェクトを定義する OVAL ファイルを含めることができます。
XCCDF は XML ベースの言語であることから、非常に多くの XML 要素と属性を定義、使用します。以下では、主要な XCCDF 要素を簡単に説明しています。XCCDF の詳細については、NIST Interagency Report 7275 Revision 4 を参照してください。

XCCDF ドキュメントの主要 XML 要素

  • <xccdf:Benchmark> — XCCDF ドキュメント全体を囲むルート要素です。これには、タイトル、説明、作者一覧、最新の修正日、チェックリスト受け付けのステータスなどのチェックリストのメタデータが含まれる場合があります。
  • <xccdf:Rule> — チェックリスト要件を表示し、その説明を保持する重要な要素です。これには、特定のルールのコンプライアンスを確認または強制したり、ルール自体を修正するアクションを定義する、子要素が含まれる場合があります。
  • <xccdf:Value> — ベンチマーク内の他の XCCDF 要素の属性を表示するために使用される重要な要素です。
  • <xccdf:Group> — この要素は、XCCDF ドキュメントを組織化して、要件と同じコンテキストまたはタイプのグループや構造体を含みます。これは、<xccdf:Rule><xccdf:Value>、および <xccdf:Group> 要素を収集することでなされます。
  • <xccdf:Profile> — この要素は、XCCDF ベンチマークの名前付き調整に使われます。ベンチマークがいくつかの異なるテーラリングを持つことが可能になります。<xccdf:Profile> は、<xccdf:select><xccdf:refine-rule> などのいくつかのセレクター要素を使って、どの要素が実行中に修正されたり処理されたりするかを決定します。
  • <xccdf:Tailoring> — この要素では、ベンチマーク外のベンチマークプロファイルの定義が可能になります。これは、コンプライアンスポリシーの手動のテーラリングでは、妥当なものになる場合があります。
  • <xccdf:TestResult> — この要素は、ターゲットシステム上の特定のベンチマークのスキャン結果を保持する役割を果たします。各 <xccdf:TestResult> は、特定のスキャンのコンプライアンスポリシーを定義する際に使用されたプロファイルを参照するようにしてください。また、スキャンに関連するターゲットシステムについての重要情報も含めるようにしてください。
  • <xccdf:rule-result><xccdf:TestResult> の子要素で、ベンチマークからターゲットシステムに特定のルールを適用した結果を保持するために使用されます。
  • <xccdf:fix><xccdf:Rule> の子要素で、特定のルールに従っていないターゲットシステムの改善に使われます。これにターゲットシステム上で実行するコマンドまたはスクリプトを含めると、システムをルールにしたがわせることができます。
  • <xccdf:check><xccdf:Rule> の子要素で、特定ルールの評価方法を定義する外部ソースを参照します。
  • <xccdf:select> — ポリシーから特定のルールまたはルールのグループを除外もしくは含めるために使われるセレクター要素です。
  • <xccdf:set-value><xccdf:Value> 要素の属性を変更せずに、この要素で指定された現在の値の上書きに使われるセレクター要素です。
  • <xccdf:refine-value> — ポリシーテーラリング中に特定の <xccdf:Value> 要素の制限を指定するために使われるセレクター要素です。
  • <xccdf:refine-rule> — このセレクター要素は、選択されたルールの属性の上書きを可能にします。

例8.1 XCCDF ドキュメントの例

        
<?xml version="1.0" encoding="UTF-8"?>
<Benchmark xmlns="http://checklists.nist.gov/xccdf/1.2"
    id="xccdf_com.example.www_benchmark_test">
  <status>incomplete</status>
  <version>0.1</version>
  <Profile id="xccdf_com.example.www_profile_1">
    <title>Profile title is compulsory</title>
    <select idref="xccdf_com.example.www_group_1" 
        selected="true"/>
    <select idref="xccdf_com.example.www_rule_1" 
        selected="true"/>
    <refine-value idref="xccdf_com.example.www_value_1"
        selector="telnet service"/>
  </Profile>
  <Group id="xccdf_com.example.www_group_1">
    <Value id="xccdf_com.example.www_value_1">
      <value selector="telnet_service">telnet-server</value>
      <value selector="dhcp_servide">dhcpd</value>
      <value selector="ftp_service">tftpd</value>
    </Value>
    <Rule id="xccdf_com.example.www_rule_1">
      <title>The telnet-server Package Shall Not Be Installed </title>
      <rationale>
        Removing the telnet-server package decreases the risk
        of the telnet service’s accidental (or intentional) activation
      </rationale>
      <fix platform="cpe:/o:redhat:enterprise_linux:6" 
          reboot="false" 
          disruption="low" 
          system="urn:xccdf:fix:script:sh">
        yum -y remove 
        <sub idref="xccdf_com.example.www_value_1"/>
      </fix>
      <check system="http://oval.mitre.org/XMLSchema/oval-definitions-5">
        <check-export value-id="xccdf_com.example.www_value_1" 
            export-name="oval:com.example.www:var:1"/>
        <check-content-ref href="examplary.oval.xml" 
            name="oval:com.example.www:def:1"/>
      </check>
      <check system="http://open-scap.org/page/SCE">
        <check-import import-name="stdout"/>
        <check-content-ref href="telnet_server.sh"/>
      </check>
    </Rule>
  </Group>
</Benchmark>