6.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 ファイルセットのいずれかになります。

6.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> — このセレクター要素は、選択されたルールの属性の上書きを可能にします。

例6.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>        
        

6.2.2. OVAL ファイル形式

Open Vulnerability Assessment Language (OVAL) は、SCAP の必須かつ最も古いコンポーネントです。OVAL 標準の主なゴールは、セキュリティー製品の間で相互運用性を確保することです。これは、以下の 3 つのドメインの標準化でなされます。
  1. ターゲットシステム設定の表示。
  2. ターゲットシステムが特定のマシン状態にあるかを分析。
  3. 指定されたマシン状態と観察されたマシン状態の比較結果のレポーティング。
他のツールやカスタム化されたスクリプトとは異なり、OVAL 言語は宣言型でリソースの望ましい状態を記述します。OVAL 言語コードはスキャナーと呼ばれる OVAL インタープリターツールを用いて実行されますが、直接実行されることは決してありません。OVAL が宣言型であるために、評価されるシステムの状態が偶然に修正されることはありません。セキュリティースキャナーは可能な限り高い権限で実行されることが多いので、これは重要な点になります。
OVAL 仕様はコメントと貢献を公開で受け付けています。また、多くの IT 企業が米連邦政府の援助を受けた NPO である MITRE Corporation と協力しています。OVAL 仕様は継続的に発展しており、バージョン番号で改訂版を区別しています。最新バージョンは 2015 年 4 月にリリースされた 5.11.1 になります。
他のすべての SCAP コンポーネントと同様に、OVAL は XML に基づいています。OVAL 標準は、いくつかのドキュメント形式を定義します。これらはそれぞれ異なる種類の情報を含み、異なる目的に使われます。

OVAL ドキュメント形式

  • OVAL Definitions 形式は、最も一般的な OVAL ファイル形式で、システムスキャンに直接使用されます。OVAL Definitions のドキュメントは、ターゲットシステムの望ましい状態を記述します。
  • OVAL Variables 形式は、OVAL Definitions ドキュメントの修正に使用される変数を定義します。OVAL Variables ドキュメントは通常、OVAL Definitions ドキュメントと一緒に使われ、ランタイム時にターゲットシステムのセキュリティーコンテンツを調整します。
  • OVAL System Characteristics 形式は、評価対象のシステムについての情報を保持します。OVAL System Characteristics ドキュメントは通常、実際のシステムの状態と、OVAL Definitions ドキュメントが定義する期待された状態を比較するために使用されます。
  • OVAL Results は、最も包括的な OVAL 形式で、システム評価の結果を報告するために使われます。OVAL Results ドキュメントには通常、評価された OVAL 定義のコピー、バインドされた OVAL 変数、OVAL システムの特徴、システムの特徴と定義の比較に基づいて計算されたテスト結果が含まれます。
  • OVAL Directives 形式は、特定の詳細を除外または含めることで、OVAL Result ドキュメントの長さを調整するために使われます。
  • OVAL Common Model 形式には、いくつかの他の OVAL スキームに使用される構造体と列挙の定義が含まれます。これは、OVAL 定義を再利用して、複数のドキュメントでの重複を防ぐために使われます。
OVAL Definitions ドキュメントは、設定要件一式で構成されます。各要件は、definitionstestsobjectsstates、および variables の 5 つの基本的なセクションで構成されます。definitions セクション内における要素は、特定の定義を満たすためにどのテストが実行されるかを記述します。test 要素は、objects と states をリンクさせます。システム評価中に、ある object 要素が示す評価システムのリリースが特定の state 要素に対応すると、テストが成功したとみなされます。variables セクションでは、states セクションからの要素の調整に使用される可能性のある外部の変数を定義します。これらのセクションに加えて、OVAL Definitions ドキュメントには通常、generator および signature の各セクションも含まれています。generator セクションには、ドキュメントの出所についての情報とそのコンテンツに関連する様々な追加情報が含まれます。
OVAL ドキュメントの基本的セクションからの各要素は、以下の形式の識別子で明確に特定されます。
oval:namespace:type:ID
ここでの namespace は、識別子を定義するネームスペースです。type は、definitions 要素の場合は def、tests 要素の場合は tst、objects 要素の場合は obj、states 要素の場合は ste、variables 要素の場合は var になります。ID は、識別子の整数値になります。

例6.2 OVAL Definitions ドキュメントの例

          
<?xml version="1.0" encoding="utf-8"?>
<oval_definitions
    xmlns:lin-def="http://oval.mitre.org/XMLSchema/oval-definitions-5#linux"
    xmlns:oval="http://oval.mitre.org/XMLSchema/oval-common-5"
    xmlns="http://oval.mitre.org/XMLSchema/oval-definitions-5"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <generator>
    <oval:product_name>vim</oval:product_name>
    <oval:schema_version>5.10.1</oval:schema_version>
    <oval:timestamp>2012-11-22T15:00:00+01:00</oval:timestamp>
  </generator>
  <definitions>
    <definition class="inventory" 
        id="oval:org.open-scap.cpe.rhel:def:7" 
        version="1">
      <metadata>
        <title>Red Hat Enterprise Linux 7</title>
        <affected family="unix">
          <platform>Red Hat Enterprise Linux 7</platform>
        </affected>
        <reference ref_id="cpe:/o:redhat:enterprise_linux:7" 
            source="CPE"/>
        <description>
          The operating system installed on the system is Red Hat Enterprise Linux 7
        </description>
      </metadata>
      <criteria>
        <criterion comment="Red Hat Enterprise Linux 7 is installed" 
            test_ref="oval:org.open-scap.cpe.rhel:tst:7"/>
      </criteria>
    </definition>
  </definitions>
  <tests>
    <lin-def:rpminfo_test check_existence="at_least_one_exists" 
        id="oval:org.open-scap.cpe.rhel:tst:7" 
        version="1" 
        check="at least one" 
        comment="redhat-release is version 7">
      <lin-def:object object_ref="oval:org.open-scap.cpe.redhat-release:obj:1"/>
      <lin-def:state state_ref="oval:org.open-scap.cpe.rhel:ste:7"/>
    </lin-def:rpminfo_test>
  </tests>
  <objects>
    <lin-def:rpmverifyfile_object id="oval:org.open-scap.cpe.redhat-release:obj:1" 
        version="1">
      <!-- This object represents rpm package which owns /etc/redhat-release file -->
      <lin-def:behaviors nolinkto='true' 
          nomd5='true' 
          nosize='true' 
          nouser='true' 
          nogroup='true' 
          nomtime='true' 
          nomode='true' 
          nordev='true' 
          noconfigfiles='true' 
          noghostfiles='true' />
      <lin-def:name operation="pattern match"/>
      <lin-def:epoch operation="pattern match"/>
      <lin-def:version operation="pattern match"/>
      <lin-def:release operation="pattern match"/>
      <lin-def:arch operation="pattern match"/>
      <lin-def:filepath>/etc/redhat-release</lin-def:filepath>
    </lin-def:rpmverifyfile_object>
  </objects>
  <states>
    <lin-def:rpminfo_state id="oval:org.open-scap.cpe.rhel:ste:7" 
        version="1">
      <lin-def:name operation="pattern match">^redhat-release</lin-def:name>
      <lin-def:version operation="pattern match">^7[^\d]</lin-def:version>
    </lin-def:rpminfo_state>
  </states>
</oval_definitions>
          

6.2.3. データストリームの形式

SCAP データストリームは、SCAP バージョン 1.2 から使用されているファイル形式で、XCCDF や OVAL、その他のコンポーネントファイルなど、XCCDF チェックリストで表示されているコンプライアンスポリシーの定義に使用可能なもののバンドルを表します。また、特定のデータストリームを SCAP コンポーネントにしたがってファイルに分割することを可能にするインデックスとカタログも含まれています
データストリームは XML 形式を使用し、これはコンテンツのテーブルで形成されたヘッダーと <ds:component> 要素の一覧で構成されています。これらの要素にはそれぞれ、XCCDF や OVAL、CPE などの SCAP コンポーネントが含まれます。データストリームファイルには同じタイプの複数のコンポーネントが含まれている場合があり、組織で必要とされるセキュリティーポリシーすべてがカバーされます。

例6.3 データストリームヘッダーの例

        
<ds:data-stream-collection xmlns:ds="http://scap.nist.gov/schema/scap/source/1.2" 
    xmlns:xlink="http://www.w3.org/1999/xlink" 
    xmlns:cat="urn:oasis:names:tc:entity:xmlns:xml:catalog" 
    id="scap_org.open-scap_collection_from_xccdf_ssg-rhel7-xccdf-1.2.xml"
    schematron-version="1.0">
  <ds:data-stream id="scap_org.open-scap_datastream_from_xccdf_ssg-rhel7-xccdf-1.2.xml" 
      scap-version="1.2" use-case="OTHER">
  <ds:dictionaries>
    <ds:component-ref id="scap_org.open-scap_cref_output--ssg-rhel7-cpe-dictionary.xml" 
        xlink:href="#scap_org.open-scap_comp_output--ssg-rhel7-cpe-dictionary.xml">
      <cat:catalog>
        <cat:uri name="ssg-rhel7-cpe-oval.xml" 
            uri="#scap_org.open-scap_cref_output--ssg-rhel7-cpe-oval.xml"/>
      </cat:catalog>
    </ds:component-ref>
  </ds:dictionaries>
  <ds:checklists>
    <ds:component-ref id="scap_org.open-scap_cref_ssg-rhel7-xccdf-1.2.xml" 
        xlink:href="#scap_org.open-scap_comp_ssg-rhel7-xccdf-1.2.xml">
      <cat:catalog>
        <cat:uri name="ssg-rhel7-oval.xml" 
            uri="#scap_org.open-scap_cref_ssg-rhel7-oval.xml"/>
      </cat:catalog>
    </ds:component-ref>
  </ds:checklists>
  <ds:checks>
    <ds:component-ref id="scap_org.open-scap_cref_ssg-rhel7-oval.xml" 
        xlink:href="#scap_org.open-scap_comp_ssg-rhel7-oval.xml"/>
    <ds:component-ref id="scap_org.open-scap_cref_output--ssg-rhel7-cpe-oval.xml" 
        xlink:href="#scap_org.open-scap_comp_output--ssg-rhel7-cpe-oval.xml"/>
    <ds:component-ref id="scap_org.open-scap_cref_output--ssg-rhel7-oval.xml" 
        xlink:href="#scap_org.open-scap_comp_output--ssg-rhel7-oval.xml"/>
  </ds:checks>
</ds:data-stream>
<ds:component id="scap_org.open-scap_comp_ssg-rhel7-oval.xml"
    timestamp="2014-03-14T16:21:59">
  <oval_definitions xmlns="http://oval.mitre.org/XMLSchema/oval-definitions-5" 
      xmlns:oval="http://oval.mitre.org/XMLSchema/oval-common-5" 
      xmlns:ind="http://oval.mitre.org/XMLSchema/oval-definitions-5#independent" 
      xmlns:unix="http://oval.mitre.org/XMLSchema/oval-definitions-5#unix" 
      xmlns:linux="http://oval.mitre.org/XMLSchema/oval-definitions-5#linux" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://oval.mitre.org/XMLSchema/oval-common-5 
      oval-common-schema.xsd 
          http://oval.mitre.org/XMLSchema/oval-definitions-5 
      oval-definitions-schema.xsd
          http://oval.mitre.org/XMLSchema/oval-definitions-5#independent 
      independent-definitions-schema.xsd
          http://oval.mitre.org/XMLSchema/oval-definitions-5#unix 
      unix-definitions-schema.xsd
          http://oval.mitre.org/XMLSchema/oval-definitions-5#linux 
      linux-definitions-schema.xsd">