Model Driven Development of Secure XML Data Warehouses: A Case Study
Belén Vela
Rey Juan Carlos University. Madrid. Spain
Carlos Blanco
[email protected] University of Cantabria. Santander. Spain
Eduardo Fernández-Medina
University of Castilla-La Mancha. Spain
Esperanza Marcos
Rey Juan Carlos University. Madrid. Spain
Contents
Contents
1. INTRODUCTION
2. MDD OF SECURE XML DWs
3. CASE STUDY
4. CONCLUSIONS
2
1. Introduction • Importance of Information Security The survival of organizations depends on the correct management of information security and confidentiality Security constraints should be defined from early stages of the development process
• Data Warehouses (DWs) Manage enterprise information for the decision making process Sensitive information which should be protected
The Web and XML Technology Great amount of data available on the Web DWs are considering the Web as data source And XML to interchange data and metadata
3
1. Introduction • Model Driven Architecture (MDA) Is a model oriented approach for software development Is based on the separation between the specification of the system functionality and its implementation by using specific platforms
Defines: Models at different abstraction levels Transformations between models Business Level
Conceptual Level
Logical Level
PSM 1 CIM
Code
Code 1 Code n
PIM PSM n
Code 1 Code n 4
1. Introduction • Our proposal: • Development of Secure XML DWs by using • • •
A methodological approach based on MDA Confidentiality issues (related with read operations) A concrete technology based on the Web and XML Conceptual design • Implementation-independent MD model Mapping Logical design • Technology-dependent MD model (XML) Mapping Implementation 5
Contents
Contents
1. INTRODUCTION
2. MDD OF SECURE XML DWs
3. CASE STUDY
4. CONCLUSIONS
6
Secure Conceptual Metamodel (PIM) UML profile for DWs - Cubes - Dimensions - Bases - …
Access Control and Audit (ACA) model - Classification: Levels (SL) Roles (SR) Compartments (SC) - Security Rules: Information Security Authorization Auditing 7
Secure XML Logical Metamodel (PSM) • Secure XML Logical Metamodel (PSM) • XML Technology • Mappings from conceptual models (PIM) 1. Security Configuration • Security Levels, Roles and Compartments used in the model • Definition of a user profile 2. Star Package • Structural aspects • Fact, Dimensions, Bases,… • Security constraints • Security rules asociated with MD elements 8
Secure XML Logical Metamodel (PSM) • Secure XML Logical Metamodel (PSM) Security Configuration
9
Secure XML Logical Metamodel (PSM) • Secure XML Logical Metamodel (PSM)
Star Package - Structural aspects - Fact - Dimensions - Bases - Attributes …
10
Secure XML Logical Metamodel (PSM) • Secure XML Logical Metamodel (PSM)
Star Package - Security constraints - Security rules associated with MD elements (fact, dimensions,…)
11
Contents
Contents
1. INTRODUCTION
2. MDD OF SECURE XML DWs
3. CASE STUDY
4. CONCLUSIONS
12
3. Case Study • Case Study DW which manages airport’s information about trips involving passengers, baggage, flights, dates and places This example shows a partial view of this model A fact “Trip” A dimension “Place” related with a base “Airport” A dimension “Passenger” Security configuration used in this example Levels of security Hierarchy of security roles Top Secret (TS)
User
Secret (S) Confidential (C) Unclassified (U)
Airport Security
Administration
Passenger
13
3. Case Study • Conceptual Model (structural aspects)
14
3. Case Study • Conceptual Model (security constraints)
15
3. Case Study • Logical Model
> Trip
> Place
{SL=C}
+idTrip +price +purpose {SR=Airport Security} +seat +distance +flightTime +checkIn +boarding
{SL=C}
+deptPlace +arrvPlace
> SIAR_TripPurpose +ownedSCObjects = {Trip} +involvedClasses = {Passenger} +CABExp = "Trip.purpose=='military'" +CATHENSecInf = {SL=S; SR=Airport Security} +CAELSESecInf = {SL=C} AUR_Passenger
Schema - <xs:schema xmlns:xs="http://www.w3.org/2001/ XMLSchema" elementFormDefault="qualified"> <xs:element name="SecureMDXML" type="SecureMDXML_Type" /> + <xs:complexType name="SecureInformation_Type"> <xs:sequence /> … … …
> Airport
+ownedSCObjects = {Passenger} +ExceptSign = + +ExceptPrivilege = read +CABExp = "UserProfile.name == Passenger.name"
{SL=U}
+placeCode +gate +terminal
+airportCode
> Passenger {SL=S}
+passengerCode +name +address +fingerprint {SR=Airport Security} +passportPhoto {SR=Airport Security} +suspicious {SR=Airport Security}
> UserProfile +userCode +name +securityLevel +securityRoles
User Profile <xs:complexType name="UserProfile_Type"> - <xs:sequence> <xs:element name="userCode" type="xs:integer" /> <xs:element name="name" type="xs:string" /> <xs:element name="SecureInformation" type="SecureInformation_Type" />
16
3. Case Study • Logical Model
Fact
> Trip
> Place
{SL=C}
+idTrip +price +purpose {SR=Airport Security} +seat +distance +flightTime +checkIn +boarding
{SL=C}
+deptPlace +arrvPlace
> SIAR_TripPurpose
- <xs:complexType name="StarPackage_Type"> - <xs:sequence> - <xs:element name="SecureFactClasses"> - <xs:complexType>- <xs:sequence> - <xs:element name="Trip" maxOccurs="unbounded"> - <xs:complexType>- <xs:sequence> <xs:element name="SecurityLevel" fixed="C" /> <xs:element name="price" type="xs:integer" /> - <xs:element name="purpose"> - <xs:complexType>- <xs:sequence> <xs:element name="S_purpose" type="xs:string" /> <xs:element name="SecurityRole" type="xs:string" fixed="AirportSecurity" /> <xs:element name="seat" type="xs:string" /> <xs:element name="distance" type="xs:string" /> <xs:element name="flightTime" type="xs:string" /> <xs:element name="checkIn" type="xs:string" /> <xs:element name="boarding" type="xs:string" />
> Airport
+ownedSCObjects = {Trip} +involvedClasses = {Passenger} +CABExp = "Trip.purpose=='military'" +CATHENSecInf = {SL=S; SR=Airport Security} +CAELSESecInf = {SL=C} AUR_Passenger +ownedSCObjects = {Passenger} +ExceptSign = + +ExceptPrivilege = read +CABExp = "UserProfile.name == Passenger.name"
{SL=U}
+placeCode +gate +terminal
+airportCode
> Passenger {SL=S}
+passengerCode +name +address +fingerprint {SR=Airport Security} +passportPhoto {SR=Airport Security} +suspicious {SR=Airport Security}
> UserProfile +userCode +name +securityLevel +securityRoles
17
3. Case Study • Logical Model
> Trip
> Place
{SL=C}
+idTrip +price +purpose {SR=Airport Security} +seat +distance +flightTime +checkIn +boarding
{SL=C}
+deptPlace +arrvPlace
> SIAR_TripPurpose +ownedSCObjects = {Trip} +involvedClasses = {Passenger} +CABExp = "Trip.purpose=='military'" +CATHENSecInf = {SL=S; SR=Airport Security} +CAELSESecInf = {SL=C}
Security Rule Associated with the Fact “Trip”
> Airport {SL=U}
+placeCode +gate +terminal
+airportCode
> Passenger {SL=S}
+passengerCode +name +address +fingerprint {SR=Airport Security} +passportPhoto {SR=Airport Security} +suspicious {SR=Airport Security}
AUR_Passenger +ownedSCObjects = {Passenger} +ExceptSign = + +ExceptPrivilege = read +CABExp = "UserProfile.name == Passenger.name"
<xs:element name="SecurityRules“> <xs:complexType> <xs:sequence> <xs:element name="SIAR_TripPurpose“> <xs:complexType> <xs:sequence> <xs:element name="CABEXP" type="xs:string" fixed="Trip.purpose==military" /> <xs:element name="CABTHEN"> <xs:complexType> <xs:sequence> <xs:element name="SecurityLevel" type="xs:string" fixed="AirportSecurity" /> <xs:element name="SecurityRole" type="xs:string" fixed="S" /> <xs:element name="CABELSE" minOccurs="0“> <xs:complexType> <xs:sequence> <xs:element name="SecurityRole" type="xs:string" fixed="C”/> <xs:attribute name="ownedSCObjects" fixed="Trip" /> <xs:attribute name="involvedClasses" fixed="Passenger" /> <xs:attribute name="idTrip" type="xs:ID" />
> UserProfile +userCode +name +securityLevel +securityRoles
18
3. Case Study • Logical Model
Dimensions and Bases
> Trip
> Place
{SL=C}
+idTrip +price +purpose {SR=Airport Security} +seat +distance +flightTime +checkIn +boarding
{SL=C}
+deptPlace +arrvPlace
> SIAR_TripPurpose
- <xs:element name="SecureDimensionClasses"> - <xs:complexType>- <xs:sequence> - <xs:element name="Place" maxOccurs="unbounded"> - <xs:complexType>- <xs:sequence> <xs:element name="SecurityLevel" fixed="C" /> <xs:element name="gate" type="xs:string" /> <xs:element name="terminal" type="xs:string" /> <xs:attribute name="placeCode" type="xs:ID" / > <xs:attribute name="AirPort_Base_Ref" type="xs:IDREF" />
+ <xs:element name="SecureBaseClasses"> - <xs:complexType>- <xs:sequence> - <xs:element name="Airport" maxOccurs="unbounded"> - <xs:complexType>- <xs:sequence> <xs:element name="SecurityLevel" fixed="U" /> <xs:attribute name="airportCode" type="xs:ID" />
> Airport
+ownedSCObjects = {Trip} +involvedClasses = {Passenger} +CABExp = "Trip.purpose=='military'" +CATHENSecInf = {SL=S; SR=Airport Security} +CAELSESecInf = {SL=C} AUR_Passenger +ownedSCObjects = {Passenger} +ExceptSign = + +ExceptPrivilege = read +CABExp = "UserProfile.name == Passenger.name"
{SL=U}
+placeCode +gate +terminal
+airportCode
> Passenger {SL=S}
+passengerCode +name +address +fingerprint {SR=Airport Security} +passportPhoto {SR=Airport Security} +suspicious {SR=Airport Security}
> UserProfile +userCode +name +securityLevel +securityRoles
- <xs:element name="SecureDimensionClasses"> - <xs:complexType>- <xs:sequence> - <xs:element name=”Passenger" maxOccurs="unbounded"> … …
19
3. Case Study • Logical Model
> Trip
> Place
{SL=C}
+idTrip +price +purpose {SR=Airport Security} +seat +distance +flightTime +checkIn +boarding
{SL=C}
+deptPlace +arrvPlace
> SIAR_TripPurpose +ownedSCObjects = {Trip} +involvedClasses = {Passenger} +CABExp = "Trip.purpose=='military'" +CATHENSecInf = {SL=S; SR=Airport Security} +CAELSESecInf = {SL=C}
Security Rule Associated with the Dimension “Passenger”
> Airport
AUR_Passenger +ownedSCObjects = {Passenger} +ExceptSign = + +ExceptPrivilege = read +CABExp = "UserProfile.name == Passenger.name"
{SL=U}
+placeCode +gate +terminal
+airportCode
> Passenger {SL=S}
+passengerCode +name +address +fingerprint {SR=Airport Security} +passportPhoto {SR=Airport Security} +suspicious {SR=Airport Security}
> UserProfile +userCode +name +securityLevel +securityRoles
- <xs:element name="AutorizationRules"> - <xs:complexType>- <xs:sequence>- <xs:element name="AUR_Passenger"> - <xs:complexType>- <xs:sequence> <xs:element name="Sign" type="xs:string" fixed="+" /> <xs:element name="Privilege" type="xs:string" fixed="read" /> <xs:element name="CABEXP" type="xs:string" fixed="UserProfile.name ==Passenger.name" /> <xs:element name="SecInf" type="SecureInformation_Type" minOccurs="0" /> <xs:attribute name="ownedSCObjects" fixed="Passenger" />
20
Contents
Contents
1. INTRODUCTION
2. MDD OF SECURE XML DWs
3. CASE STUDY
4. CONCLUSIONS
21
4. Conclusions • Conclusions Development of Secure XML DWs Use of the Model Driven Approach (MDA) Secure Conceptual MD Model (PIM) Independent of the target logical MD model Secure Logical MD Model (PSM) Focused on the XML Technology Including structural and security issues Semi-automatic Mapping from conceptual models
22
4. Conclusions • Further work To define the mappings by using QVT transformations To transform security constraints defined with OCL into XPATH To apply the propossal to new case studies
• Discussion Since DWs mainly deals with read operations we focus our security work on confidentiality ¿Should other security issues be modeled for DWs? Integrity,… ¿Does cloud warehouses include new security aspects that should be modeled?
23
Model Driven Development of Secure XML Data Warehouses: A Case Study
Thanks for your attention
Belén Vela
Rey Juan Carlos University. Madrid. Spain
Carlos Blanco
[email protected] University of Cantabria. Santander. Spain
Eduardo Fernández-Medina
University of Castilla-La Mancha. Spain
Esperanza Marcos
Rey Juan Carlos University. Madrid. Spain