B Schemas

This chapter contains schemas for plug-in manifest files and collection plug-ins.

B.1 Sample Schema for a plugin-manifest.xml file

This is the schema for a plugin-manifest.xml file. Please use this Schema to validate any plugin-manifest.xml that you author. Typically, the type of collection plug-in requires you to modify the trailInfo section, and possibly other sections. See Appendix C, "Example Code" for information specific to the collection plug-in type.

Example B-1 Sample plugin-manifest.xsd file

<?xml version="1.0" encoding="utf-8"?>
<!-- This schema defines the structure of the Oracle Audit Vault Plugin -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns="http://xmlns.oracle.com/av/plugin"
           targetNamespace="http://xmlns.oracle.com/av/plugin"
           elementFormDefault="qualified">
  <xs:element name="plugin">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="targetVersion">
          <xs:complexType>
            <xs:attribute name="min" type="xs:string" use="required" />
          </xs:complexType>
        </xs:element>
        <xs:element name="extensionSet">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="extensionPoint">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="fileList">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="jars" minOccurs="0" maxOccurs="1">
                            <xs:complexType>
                              <xs:sequence>
                               <xs:element minOccurs="0"
                                      maxOccurs="0" maxOccurs="unbounded"
                                      name="include">
                                <xs:complexType>
                                 <xs:attribute name="file" type="xs:string"
                                       use="required" />
                                 <xs:attribute name="permission" type="xs:string"
                                       use="optional" />
                                </xs:complexType>
                               </xs:element>
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>
                          <xs:element name="templates" minOccurs="0"
                                       maxOccurs="1">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element minOccurs="0" maxOccurs="unbounded" 
                                       name="include">
                                 <xs:complexType>
                                  <xs:attribute name="file" type="xs:string"
                                       use="required" />
                                  <xs:attribute name="permission" type="xs:string"
                                       use="optional" />
                                 </xs:complexType>
                                </xs:element>
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>
                          <xs:element name="bin" minOccurs="0" maxOccurs="1">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element minOccurs="0" maxOccurs="unbounded" 
                                       name="include">
                                 <xs:complexType>
                                  <xs:attribute name="file" type="xs:string"
                                       use="required" />
                                  <xs:attribute name="permission" type="xs:string"
                                       use="optional" />
                                 </xs:complexType>
                                </xs:element>
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>
                          <xs:element name="config" minOccurs="0" maxOccurs="1">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element minOccurs="0" maxOccurs="unbounded" 
                                       name="include">
                                 <xs:complexType>
                                  <xs:attribute name="file" type="xs:string"
                                       use="required" />
                                  <xs:attribute name="permission" type="xs:string"
                                       use="optional" />
                                 </xs:complexType>
                                </xs:element>
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>
                          <xs:element name="shell" minOccurs="0" maxOccurs="1">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element minOccurs="0" maxOccurs="unbounded" 
                                       name="include">
                                 <xs:complexType>
                                  <xs:attribute name="file" type="xs:string"
                                       use="required" />
                                  <xs:attribute name="permission" type="xs:string"
                                       use="optional" />
                                 </xs:complexType>
                                </xs:element>
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>
                          <xs:element name="patch" minOccurs="0" maxOccurs="1">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element minOccurs="0" maxOccurs="unbounded" 
                                       name="include">
                                 <xs:complexType>
                                  <xs:attribute name="file" type="xs:string"
                                       use="required" />
                                  <xs:attribute name="permission" type="xs:string"
                                       use="optional" />
                                 </xs:complexType>
                                </xs:element>
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>
                          <xs:element name="unresolved-external" minOccurs="0"
                                      maxOccurs="1">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element minOccurs="0" maxOccurs="unbounded" 
                                       name="include">
                                 <xs:complexType>
                                  <xs:attribute name="file" type="xs:string"
                                       use="required" />
                                  <xs:attribute name="permission" type="xs:string"
                                       use="optional" />
                                 </xs:complexType>
                                </xs:element>
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="securedTargetTypeInfo">
                      <xs:complexType>
                        <xs:attribute name="name" type="xs:string" 
                              use="required" />
                      </xs:complexType>
                    </xs:element>
                    <xs:element maxOccurs="unbounded" name="trailInfo">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="trailType" type="xs:string" />
                          <xs:element minOccurs="0" name="trailLocation"
                                 type="xs:string" />
                          <xs:element maxOccurs="unbounded" name="className">
                            <xs:complexType>
                              <xs:attribute name="name" type="xs:string"
                                   use="required" />
                              <xs:attribute name="srcVersion" type="xs:decimal"
                                   use="optional" />
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" maxOccurs="unbounded"
                                  name="eventPatch">
                      <xs:complexType>
                        <xs:attribute name="name" type="xs:string" 
                                 use="required" />
                        <xs:attribute name="order" type="xs:unsignedByte"
                                  use="required" />
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                  <xs:attribute name="type" type="xs:string" use="required" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
      <xs:attribute name="name" type="xs:string" use="required" />
      <xs:attribute name="id" type="xs:string" use="required" />
      <xs:attribute name="version" type="xs:string" use="required" />
      <xs:attribute name="provider-name" type="xs:string" use="required" />
      <xs:attribute name="copyright" type="xs:string" use="optional" />
    </xs:complexType>
  </xs:element>
</xs:schema>

B.2 Database Table Collection Plug-in Mapper File

Example B-2 Database Table Collection Plug-in Mapper Schema

<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<!--Existing Set of Core Fields-->
<xsd:simpleType name="CoreFieldValues">
  <xsd:restriction base="xsd:string">
  <xsd:enumeration value="EventTimeUTC"/>
<xsd:enumeration value="UserName"/>
  <xsd:enumeration value="OSUserName"/>
  <xsd:enumeration value="CommandClass"/>
  <xsd:enumeration value="TargetObject"/>
  <xsd:enumeration value="ClientHostName"/>
  <xsd:enumeration value="ClientIP"/>
  <xsd:enumeration value="TargetOwner"/>
  <xsd:enumeration value="ErrorId"/>
  <xsd:enumeration value="ErrorMessage"/>
  <xsd:enumeration value="EventStatus"/>
  <xsd:enumeration value="EventName"/>
  <xsd:enumeration value="TargetType"/>
  </xsd:restriction>
</xsd:simpleType>
 
<!--Existing Set of Large Fields-->
<xsd:simpleType name="LargeFieldValues">
  <xsd:restriction base="xsd:string">    
    <xsd:enumeration value="CommandText"/>
    <xsd:enumeration value="CommandParam"/>
  </xsd:restriction>
</xsd:simpleType>
 
 
<!-- XML Document Structure-->
<xsd:element name="AVTableCollectorTemplate" >
  <xsd:complexType>
    <xsd:all>
      <!-- Audit table name -->  
      <xsd:element name="TableName" type="xsd:string" minOccurs="1"
                   maxOccurs="1"/>
      <!-- Database connection information -->    
      <xsd:element name="ConnectionInfo" minOccurs="1" maxOccurs="1">
        <xsd:complexType>
          <xsd:sequence>  
            <!-- Datasource class-->
            <xsd:element name="Driver" type="xsd:string"  minOccurs="1"
                   maxOccurs="1"/>
           </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <!-- Source to AV server fields Mapping for Core, Large, Extension fields
                     and Marker-->
      <xsd:element name="FieldMappingInfo" minOccurs="1" maxOccurs="1">
          <xsd:complexType>
          <xsd:all>
            <!-- Core Field Mapping -->
            <xsd:element name="CoreFields" minOccurs="1" maxOccurs="1">
              <xsd:complexType>
                <xsd:sequence>
                  <xsd:element name="Map" minOccurs="1" maxOccurs ="13">
                    <xsd:complexType>
                      <xsd:all>
                        <xsd:element name="Name" type="xsd:string" />
                        <xsd:element name="MapTo" type="CoreFieldValues" />  
                        <xsd:element name="Transformation" minOccurs="0"
                                      maxOccurs="1">
                          <xsd:complexType>
                            <xsd:sequence>
                              <xsd:element name="ValueTransformation"
                                             minOccurs="1" maxOccurs="unbounded">
                                <xsd:complexType>
                                  <xsd:attribute name="from" type="xsd:string"
                                              use="required"/>
                                  <xsd:attribute name="to" type="xsd:string"
                                              use="required"/>
                                </xsd:complexType>  
                              </xsd:element>
                            </xsd:sequence>
                          </xsd:complexType>
                        </xsd:element>  
                      </xsd:all>
                    </xsd:complexType>                  
                  </xsd:element>
                </xsd:sequence>
              </xsd:complexType>
            </xsd:element>  
            <!-- Large Field Mapping -->
            <xsd:element name="LargeFields" minOccurs="0" maxOccurs="1">
              <xsd:complexType>
                <xsd:sequence>
                  <xsd:element name="Map" minOccurs="0" maxOccurs="2">
                    <xsd:complexType>
                      <xsd:all> 
                        <xsd:element name="Name" type="xsd:string" />
                        <xsd:element name="MapTo" type="LargeFieldValues" />
                      </xsd:all>
                    </xsd:complexType>
                  </xsd:element>
                </xsd:sequence>
              </xsd:complexType>
            </xsd:element>  
            <!-- List of fields to be mapped to extension fields-->
            <xsd:element name="ExtensionField" minOccurs="0" maxOccurs="1">
              <xsd:complexType>
                <xsd:sequence>                  
                  <xsd:element name="Name" type="xsd:string" minOccurs="0"
                                  maxOccurs ="unbounded" />
                </xsd:sequence>
              </xsd:complexType>
            </xsd:element>  
            <!-- List of fields which uniquely identify each audit record-->
            <xsd:element name="MarkerField" minOccurs="1" maxOccurs="1">
              <xsd:complexType>
                <xsd:sequence>                
                  <xsd:element name="Name" type="xsd:string"  minOccurs="1"
                                 maxOccurs="unbounded"/>
                </xsd:sequence>
              </xsd:complexType>
            </xsd:element>
          </xsd:all>
        </xsd:complexType>
      </xsd:element>  
    </xsd:all>
    <!-- Source Type-->
    <xsd:attribute name="securedTargetType" type="xsd:string" use="required"/>
    <!-- Max source version supported by the template-->
    <xsd:attribute name="maxSecuredTargetVersion" type="xsd:string" use="required"/>
    <!-- Min source version supported by the template-->
    <xsd:attribute name="minSecuredTargetVersion" type="xsd:string"/>
    <!-- Template file version-->
    <xsd:attribute name="version" type="xsd:string" use="required"/>    
  </xsd:complexType>
</xsd:element>
</xsd:schema>

B.3 Schema for XML File Collection Plug-in Mapper File

Example B-3 XML file collection plug-in Mapper Schema

<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<!--Existing Set of Core Fields-->
<xsd:simpleType name="CoreFieldValues">
  <xsd:restriction base="xsd:string">
  <xsd:enumeration value="EventTimeUTC"/>
  <xsd:enumeration value="UserName"/>
  <xsd:enumeration value="OSUserName"/>
  <xsd:enumeration value="CommandClass"/>
  <xsd:enumeration value="TargetObject"/>
  <xsd:enumeration value="ClientHostName"/>
  <xsd:enumeration value="ClientIP"/>
  <xsd:enumeration value="TargetOwner"/>
  <xsd:enumeration value="ErrorId"/>
  <xsd:enumeration value="ErrorMessage"/>
  <xsd:enumeration value="EventStatus"/>
  <xsd:enumeration value="EventName"/>
  <xsd:enumeration value="TargetType"/>
  </xsd:restriction>
</xsd:simpleType>
 
<!--Existing Set of Large Fields-->
<xsd:simpleType name="LargeFieldValues">
  <xsd:restriction base="xsd:string">    
    <xsd:enumeration value="CommandText"/>
    <xsd:enumeration value="CommandParam"/>
  </xsd:restriction>
</xsd:simpleType>
<!-- XML Document Structure-->
<xsd:element name="AVXMLCollectorTemplate" >
  <xsd:complexType>
    <xsd:all>  
      <xsd:element name="HeaderInfo"  minOccurs="1" maxOccurs="1">
        <xsd:complexType>
          <xsd:all>
            <!-- StartTag tag contains Root element of XML Audit data file-->
            <xsd:element name="StartTag" type="xsd:string" minOccurs="1"
                             maxOccurs="1"/>
          </xsd:all>
        </xsd:complexType>
      </xsd:element>      
      <xsd:element name="RecordInfo"  minOccurs="1" maxOccurs="1">
        <xsd:complexType>
          <xsd:all>
            <!-- start tag of xml audit record in XML audit file-->
            <xsd:element name="StartTag" type="xsd:string" minOccurs="1"
                            maxOccurs="1"/>        
          </xsd:all>
        </xsd:complexType>
      </xsd:element>
      <!-- Source to AV server fields Mapping for Core, Large, Extension fields
                              and Marker-->
      <xsd:element name="FieldMappingInfo" minOccurs="1" maxOccurs="1">
          <xsd:complexType>
          <xsd:all>
            <!-- Core Field Mapping-->
            <xsd:element name="CoreFields" minOccurs="1" maxOccurs="1">
              <xsd:complexType>
                <xsd:sequence>
                  <xsd:element name="Map" minOccurs="1" maxOccurs ="13">
                    <xsd:complexType>
                      <xsd:all>
                        <xsd:element name="Name" type="xsd:string" />
                        <xsd:element name="MapTo" type="CoreFieldValues" />  
                        <xsd:element name="TimestampPattern" type="xsd:string"
                                        minOccurs="0" maxOccurs="1" />
                        <xsd:element name="Transformation" minOccurs="0"
                                        maxOccurs="1">
                          <xsd:complexType>
                            <xsd:sequence>
                              <xsd:element name="ValueTransformation"
                                              minOccurs="1" maxOccurs="unbounded">
                                <xsd:complexType>
                                  <xsd:attribute name="from" type="xsd:string"
                                             use="required"/>
                                  <xsd:attribute name="to" type="xsd:string"
                                             use="required"/>
                                </xsd:complexType>  
                              </xsd:element>
                            </xsd:sequence>
                          </xsd:complexType>
                        </xsd:element>    
                      </xsd:all>
                    </xsd:complexType>
                  </xsd:element>
                </xsd:sequence>
              </xsd:complexType>
            </xsd:element>  
            <!-- Large Field Mapping -->
            <xsd:element name="LargeFields" minOccurs="0" maxOccurs="1">
              <xsd:complexType>
                <xsd:sequence>
                  <xsd:element name="Map" minOccurs="0" maxOccurs="2">
                    <xsd:complexType>
                      <xsd:all> 
                        <xsd:element name="Name" type="xsd:string" />
                        <xsd:element name="MapTo" type="LargeFieldValues" />
                      </xsd:all>
                    </xsd:complexType>
                  </xsd:element>
                </xsd:sequence>
              </xsd:complexType>
            </xsd:element>  
            <!-- List of fields to be mapped to extension fields-->
            <xsd:element name="ExtensionField" minOccurs="0" maxOccurs="1">
              <xsd:complexType>
                <xsd:sequence>                   
                  <xsd:element name="Name" type="xsd:string" minOccurs="0"
                                       maxOccurs ="unbounded" />
                </xsd:sequence> 
              </xsd:complexType>
            </xsd:element>  
            <!-- List of fields which uniquely identify each audit record-->
            <xsd:element name="MarkerField" minOccurs="1" maxOccurs="1">
              <xsd:complexType>
                <xsd:sequence>               
                  <xsd:element name="Name" type="xsd:string"  minOccurs="1"
                                    maxOccurs="unbounded"/>
                </xsd:sequence> 
              </xsd:complexType>
            </xsd:element>
          </xsd:all>
        </xsd:complexType>
      </xsd:element>    
    </xsd:all>
    <!-- Source Type-->
    <xsd:attribute name="securedTargetType" type="xsd:string" use="required"/>
    <!-- Max source version supported by the template-->
    <xsd:attribute name="maxSecuredTargetVersion" type="xsd:string" use="required"/>
    <!-- Min source version supported by the template-->
    <xsd:attribute name="minSecuredTargetVersion" type="xsd:string"/>
    <!-- Template file version-->
    <xsd:attribute name="version" type="xsd:string" use="required"/>    
  </xsd:complexType>
</xsd:element>
</xsd:schema>