Информационная безопасность прежде всего связана с безопасностью сервера базы данных и сервера приложений.
С помощью входящего в состав Oracle Fusion Middleware 11g пакета Oracle Identity Management создается единая, интегрированная платформа безопасности, позволяющая управлять учетными данными и правами пользователей, распределять ресурсы среди пользователей, обеспечивать безопасность доступа к корпоративным ресурсам, а также контролировать результаты аудита в масштабах корпоративных приложений.
Пакет Oracle Identity Management обеспечивает защиту крупных распределенных сетей приложений, позволяя достигать нового уровня безопасности для защиты ресурсов предприятия и управления связанными процессами обеспечения безопасности. Oracle IM обладает повышенным КПД благодаря высокому уровню интеграции, консолидации и автоматизации составляющих его компонентов. Кроме того, продукт удобен в управлении и обладает повышенной эффективностью в сферах безопасности приложений, управления рисками, а также интеграции с системами управления базами данных.
Компоненты Oracle Identity Management
В пакет Oracle Identity Management входят следующие продукты.
Oracle Identity Manager (OIM) – отвечает на вопрос: "Кто получил доступ к Чему, Когда, Как, и Почему?" OIM предназначается для администрирования прав доступа в отношении всех ресурсов компании со стороны пользователей как внутренней, так и внешней сети, начиная с изначального процесса их регистрации до завершающего шага блокирования учетной записи.
При использовании во внешней сети, отличная масштабируемость OIM позволяет предприятиям обеспечивать миллионам заказчиков доступ к ресурсам компании при помощи традиционных клиентов (например браузеров) или смартфонов.
Oracle Role Manager (ORM) – содержит полный набор функций для управления жизненным циклом бизнес-ролей в масштабах предприятия. ORM является доверенным источником корпоративных ролей в пакете продуктов Oracle IM. Oracle Identity Manager и ORM дополняют друг друга, обеспечивая ролевой доступ при управлении правами и полномочиями.
Oracle Access Manager (OAM) предоставляет централизованные, управляемые политиками службы аутентификации, функцию единого входа (SSO), а также механизм подтверждения аутентификации. OAM интегрируется с разнообразными механизмами аутентификации, веб-серверами и серверами приложений от сторонних разработчиков, а также основанными на стандартах переносимыми решениями единого входа для обеспечения максимальной гибкости и создания интегрированного, полного решения для контроля веб-доступа. OAM дополняет собственные функции авторизации и выявления атрибутов интеграцией с Oracle Entitlements Server, позволяющей выполнять детальную авторизацию в приложениях, базах данных и веб-службах.
Oracle Web Services Manager (OWSM) – для веб-служб является тем же, чем Oracle Access Manager является для веб-приложений. OWSM разработан для защиты доступа к многочисленным типам ресурсов, среди которых совместимые со стандартами веб-службы (Java EE, Microsoft.NET, PL/SQL, и т.д.); композитные приложения сервис-ориентированной архитектуры (SOA), включая процессы BPEL и процессы сервисной шины предприятия (ESB); а также удаленные портлеты Oracle WebCenter.
Oracle Identity Federation (OIF) - является автономным решением, позволяющим при помощи браузера выполнять кросс-доменный единый вход с использованием индустриальных стандартов (Security Assertion Markup Language - SAML, Liberty ID-FF, WS-Federation). В OIF 11 g R1 реализована поддержка протокола Microsoft Windows CardSpace (например, провайдер удостоверений OIF может предложить пользователю выполнить вход по протоколу CardSpace, после чего вернуть подтверждение SAML, созданное на основании аутентификации и атрибутов CardSpace).
Oracle Enterprise Single Sign-On (eSSO) – это пакет для рабочих станций Microsoft Windows. Его компоненты предоставляют функции объединенной аутентификации и единого входа для приложений "толстых" и "тонких" клиентов, не требуя модификации имеющихся приложений. Oracle eSSO позволяет корпоративным пользователям использовать единый вход для всех своих приложений, при этом пользователь может быть подключен к корпоративной сети, находиться вдали от офиса, перемещаться между компьютерами или работать на общем компьютере.
Oracle Entitlements Server (OES) – является подсистемой детальной авторизации, реализующей, объединяющей и упрощающей управление сложными политиками выделения прав. OES обеспечивает безопасность доступа к ресурсам приложений и программным компонентам (таким как URL-адреса, Enterprise JavaBeans и Java Server Pages), а также к произвольным бизнес-объектам (таким как учетные записи заказчиков или информация о пациентах в базе данных). OES предоставляет централизованный пункт администрирования комплексных политик выделения прав, который может применяться в широком спектре деловых и информационно-технологических систем.
Oracle Adaptive Access Manager (OAAM) – защищает ресурсы, в режиме реального времени предотвращая попытки мошенничества, выполняя аутентификацию с использованием нескольких факторов, а также используя уникальный механизм усиления аутентификации. OAAM состоит из двух основных компонентов, в совокупности являющихся одним из самых мощных и гибких средств для борьбы с мошенничеством. Компонент Adaptive Strong Authenticator обеспечивает многофакторную аутентификацию и предоставляет механизмы защиты конфиденциальной информации, такой как пароли, токены, номера счетов и другие важные данные. Компонент Adaptive Risk Manager предоставляет функции анализа рисков (работающие как в режиме реального времени, так и в автономном режиме), а также позволяет выполнять операции по предотвращению мошеннических действий в критические моменты входа в систему и осуществления транзакции. Oracle Directory Services Oracle Internet Directory (OID) предоставляет компонентам Oracle Fusion Middleware, приложениям Oracle Fusion и внутренним корпоративным приложениям стандартизованный механизм, использующий протокол LDAP для хранения учетных данных и доступа к ним. К таким данным относятся данные идентификации пользователя (использующиеся при аутентификации), привилегии доступа (для авторизации) и сведения профиля. Продукт Oracle Virtual Directory (OVD) разработан для осуществления агрегации и преобразования учетных данных в режиме реального времени, без копирования или синхронизации данных.
Oracle Platform Security Services
В лице продукта Oracle Platform Security Services (OPSS)корпоративные разработчики, системные интеграторы и независимые производители ПО получаютоснованный на стандартах, переносимый, интегрируемый каркас безопасности корпоративного уровня для приложений Java Platform, Standard Edition (Java SE) и Java Platform, Enterprise Edition (Java EE). OPSS избавляет разработчиков от задач, напрямую не связанных с разработкой приложений, предоставляя слой абстракции в виде стандартизованных API. OPSS является фундаментом безопасности для Oracle Fusion Middleware: все компоненты Oracle Fusion Middleware 11 g и приложения Oracle Fusion используют службы OPSS. Oracle Management Pack for Identity Management
Oracle Identity Management и Oracle Database Security
По сравнению с другими средствами управления учетными данными предложение Oracle характеризуется большей гибкостью и широтой выбора, предлагаемого заказчику. Это достигается благодаря интеграции компонента Oracle Virtual Directory (OVD) с функцией СУБД Oracle Enterprise User Security (EUS), позволяющей организациям выполнять центральное управление удостоверениями пользователей БД при помощи имеющихся корпоративных каталогов, таких как Oracle Internet Directory (OID), Microsoft Active Directory и Sun Java System Directory Server. Благодаря интеграции OVD и EUS организации могут использовать функцию виртуализации учетных данных для управления правами пользователей БД и их привилегированными ролями в рамках разнообразных хранилищ, без необходимости переноса или синхронизации данных. Кроме того, OID использует две уникальных функции безопасности баз данных: Oracle Database Vault (контролирующую разграничение обязанностей администраторов БД) и Oracle Transparent Encryption.
Oracle Database Vault защищает данные удостоверений от доступа или манипуляций со стороны лиц, не имеющих доступа к протоколу OID. Функция Transparent Data Encryption выполняет шифрование данных в БД. Таким образом, даже если несанкционированный пользователь получит доступ к базе данных, он не сможет прочитать данные. Функции Oracle Database Vault и Oracle Transparent Data Encryption позволяют Oracle предлагать единственные службы каталогов, обеспечивающие полную защиту от хранилища до клиента.
ЗАКЛЮЧЕНИЕ
В дипломном проекте была разработана информационная система отслеживания полетов воздушных судов. Был проведен анализ требований и предложено проектное решения. Было разработано веб-приложение, работающее с картой перелетов. Были рассмотрены и реализованы задачи, связанные с хранением и отображением пространственных данных. Была проведена работа по чтению и использованию xml файлов. Также были рассмотрены вопросы реализации архитектуры «тонкого клиента». Предположительный эффект от использования системы состоит в уменьшении времени поиска информации пользователем более чем в два раза, а, значит, уменьшении себестоимости перевозки грузов и увеличению прибыли авиакомпании.
Дальнейшее развитие проекта связано с усложнением системы запросов к карте, более детальному рассмотрению вопросов проецирования маршрутов на карте.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. Родионов, В. В. Р 60 Дипломное проектирование: учебно-методическое пособие для студентов специальности 23020165 «Информационные системы и технологии» / В. В. Родионов. – Ульяновск: УлГТУ, 2008. – 98 с.
2. Меняев М.Ф. Содержание организационно-экономической части дипломного проекта (для проектов, связанных с разработкой программного обеспечения):
Учебное пособие. ‑М.: Изд-во МГТУ им. Н.Э. Баумана, 2002.‑ 24 с.
3. Буч Г., Рамбо Д., Якобсон И. Язык UML. Руководство пользователя. 2-е изд.: Пер. с англ. Мухин Н. – М.: ДМК Пресс, 2006. – 496 с.: ил.
4. C. Murray Oracle Spatial User’s Guide and Reference / C. Murray. – Redwood City, 2006. – 594 pp.
5. C. Murray Oracle® Fusion MiddlewareUser's Guide for Oracle MapViewer / C. Murray. – Redwood City, 2009. – 360 pp.
6. Поиск геопространственных данных с применением MapViewer [Электронный ресурс]: В этой статье представлен MapViewer, компонент сервера приложений Oracle Application Server 10 g, и приложение-пример, включающее описание наборов данных, базы данных и установки Oracle Application Server Containers for J2EE (OC4J), которые используются компонентом MapViewer для показа актуальной информации, определяемой месторасположением. – Режим доступа: http://citforum.ru/database/oracle/tema_ora_map2/.–Загл. с экрана.
ПРИЛОЖЕНИЕ А
Исходные тексты программы
CityListener.java
package view;
import java.io.FileNotFoundException;
import java.io.IOException;
import javax.faces.context.FacesContext;
import javax.faces.event.ValueChangeEvent;
import model.ParseCitiesXML;
import oracle.adf.model.BindingContext;
import oracle.adf.model.OperationBinding;
import oracle.adf.model.binding.DCBindingContainer;
import oracle.adf.model.binding.DCIteratorBinding;
import oracle.adf.view.faces.bi.component.geoMap.MapInfoCallbackObject;
import oracle.adf.view.faces.bi.event.MapClickActionEvent;
import oracle.adf.view.faces.bi.event.MapSelectionEvent;
import oracle.adf.view.rich.context.AdfFacesContext;
import oracle.jbo.Row;
import oracle.jbo.ViewObject;
import org.xml.sax.SAXException;
public class CityListener {
public CityListener() { //Konstructor
super();
}
public void setPopUpString(String popUpString) {
this.popUpString = popUpString; }
public String getPopUpString() {
return popUpString; }
public void setDescrString(String descrString) {
this.descrString = descrString; }
public String getDescrString() {
return descrString; }
public void setSource(String newQuery) {
System.out.println("Set Source");
DCBindingContainer bc = (DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry();
OperationBinding oper = (OperationBinding)bc.getOperationBinding("changeCityDiscrQuery");
oper.getParamsMap().put("newQuery", newQuery);
oper.execute();
}
public String cityAction() {
System.out.println("City action run");
DCBindingContainer bindings = (DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry();
DCIteratorBinding dcItteratorBindings = bindings.findIteratorBinding("CitiesView1Iterator");
ViewObject voTableData = dcItteratorBindings.getViewObject();
Row rowSelected = voTableData.getCurrentRow();
String str = rowSelected.getAttribute("IdCity").toString();
System.out.println("Id city is " + str);
setSource(str); return null; }}
ParseXML.java
package model;
import com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl;
import com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl;
import java.io.FileNotFoundException;
import java.io.IOException;
import oracle.xml.jaxp.*;
import java.io.StringReader;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.xml.sax.helpers.DefaultHandler;
public class ParseXML extends DefaultHandler {
private String marker;
private String colorId;
private String colorRGB;
private Double size;
private String sql;
private int nom;
public ParseXML() {
super();
this.marker = null;
this.colorId = null;
this.colorRGB = null;
this.size = 0.0;
this.sql = null;
}
public void parseXMLDocument(String xmlString) throws FileNotFoundException,
SAXException, IOException
{
try {
SAXParserFactory obj = SAXParserFactory.newInstance();
SAXParserFactoryImpl factory = (SAXParserFactoryImpl)obj;
SAXParserImpl saxParser = (SAXParserImpl)factory.newSAXParser();
saxParser.parse(new InputSource(new StringReader(xmlString)), this);
} catch (ParserConfigurationException e) {
System.err.println(e.getMessage());
} catch (FileNotFoundException e) {
System.err.println(e.getMessage());
} catch (IOException e) {
System.err.println(e.getMessage());
} catch (SAXException e) {
System.err.println(e.getMessage());
}
}
public void startDocument() throws SAXException {
System.out.println("SAX Event: Start Document"); }
public void endDocument() throws SAXException {
System.out.println("SAX Event: End Document");
System.out.println("Marker is: "+ this.getMarker());
System.out.println("Color_id is: " + this.getColorId());
System.out.println("ColorRGB is: " + this.getColorRGB());
System.out.println("Size is: " + this.getSize());
System.out.println("SQL is: " + this.getSql());
}
public void setNom(String qName) {
if (qName.equals("marker"))
nom = 1;
else if (qName.equals("color_id"))
nom = 2;
else if (qName.equals("color_rgb"))
nom = 3;
else if (qName.equals("size"))
nom = 6;
else if (qName.equals("sql"))
nom = 7;
System.out.println("Nom: " + nom);
}
public void startElement(java.lang.String namespaceURI, java.lang.String localName, java.lang.String qName,
Attributes atts) throws SAXException {
System.out.println("SAX Event: Start Element" + qName);
setNom(qName);
}
public void endElement(java.lang.String namespaceURI, java.lang.String localName,
java.lang.String qName) throws SAXException {
System.out.println("SAX Event: End Element " + qName);
}
public void characters(char[] ch, int start, int length) throws SAXException {
//System.out.println("SAX Event: Text");
String text = new String(ch, start, length).trim();
if (text.length() > 0) {
System.out.println("Text:" + text);
switch (nom) {
case 1:
{ setMarker(text); break; }
case 2:
{ setColorId(text); break; }
case 3:
{ setColorRGB(text); break; }
case 6:
{ setSize(text); break; }
case 7:
{ setSql(text); break; } } }
}
public void error(SAXParseException e) throws SAXException {
System.err.println("Error:" + e.getMessage());
}
public void fatalError(SAXParseException e) throws SAXException {
System.err.println("Fatal Error:" + e.getMessage());
}
public void warning(SAXParseException e) throws SAXException {
System.out.println("Warning:" + e.getMessage());
}
public void setMarker(String marker) {
this.marker = marker; }
public String getMarker() { return marker; }
public void setSize(String str) {
try {
this.size = Double.parseDouble(str);
} catch (NumberFormatException e) {
System.out.println(e.getMessage());
}
}
public double getSize() {
return this.size;
}
public void setSql(String sql) {
this.sql = sql;
}
public String getSql() {
return sql;
}
public void setColorId(String colorId) {
this.colorId = colorId;
}
public String getColorId() {
return colorId;
}
public void setColorRGB(String colorRGB) {
this.colorRGB = colorRGB;
}
public String getColorRGB() {
return colorRGB;
}
}
faces-config.xml
<?xml version="1.0" encoding="windows-1251"?>
<faces-config version="2.0" xmlns="http://java.sun.com/xml/ns/javaee">
<application>
<default-render-kit-id>oracle.adf.rich</default-render-kit-id>
</application>
<managed-bean>
<managed-bean-name>parseXML</managed-bean-name>
<managed-bean-class>model.ParseXML</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>queryListener</managed-bean-name>
<managed-bean-class>view.QueryListener</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>cityListener</managed-bean-name>
<managed-bean-class>view.CityListener</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>parseCitiesXML</managed-bean-name>
<managed-bean-class>model.ParseCitiesXML</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>queryFlightsListener</managed-bean-name>
<managed-bean-class>view.QueryFlightsListener</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>flightListener</managed-bean-name>
<managed-bean-class>view.FlightListener</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
</faces-config>
page.jsf
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<f:view xmlns:f="http://java.sun.com/jsf/core" xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
xmlns:dvt="http://xmlns.oracle.com/dss/adf/faces">
<af:document title="Airports and flights" id="d1">
<af:messages id="m1"/>
<af:form id="f1">
<af:panelStretchLayout id="psl1">
<f:facet name="center">
<af:panelTabbed id="pt1">
<af:showDetailItem text="Airports" id="sdi2">
<af:panelSplitter id="ps2" orientation="vertical" splitterPosition="26"
inlineStyle="width:auto; height:500px;">
<f:facet name="first">
<af:selectOneChoice value="#{bindings.QueryView1.inputValue}"
label="Search airports:"
required="#{bindings.QueryView1.hints.mandatory}"
shortDesc="#{bindings.QueryView1.hints.tooltip}" id="soc2"
autoSubmit="true"
valueChangeListener="#{queryListener.switchQuery}">
<f:selectItems value="#{bindings.QueryView1.items}" id="si2"/>
</af:selectOneChoice>
</f:facet>
<f:facet name="second">
<af:panelGroupLayout layout="scroll" id="pgl4">
<af:panelSplitter id="ps3" orientation="horizontal"
inlineStyle="height:auto; width:auto;"
positionedFromEnd="true"
splitterPosition="137" dimensionsFrom="auto">
<f:facet name="first">
<dvt:thematicMap id="tm1" basemap="world" summary="Thematic map"
inlineStyle="height:500px; width:800px;">
<dvt:areaLayer layer="countries" id="al1"/>
<dvt:pointDataLayer id="dl1" selectionMode="single"
selectedRowKeys="#{bindings.CitiesView1.collectionModel.selectedRow}"
selectionListener="#{bindings.CitiesView1.collectionModel.makeCurrent}"
value="#{bindings.CitiesView1.collectionModel}"
var="row">
<dvt:pointLocation type="pointXY" pointX="#{row.Longitude}"
pointY="#{row.Latitude}" id="pl1">
<dvt:marker id="m2"
fillColor="#{queryListener.fillColorRGB}"
scaleX="#{queryListener.sizeIcon}"
scaleY="#{queryListener.sizeIcon}"
labelDisplay="on" value="#{row.Name}"
action="#{cityListener.cityAction}"
labelPosition="top"/>
</dvt:pointLocation>
</dvt:pointDataLayer>
</dvt:thematicMap>
</f:facet>
<f:facet name="second">
<af:panelFormLayout id="pfl1">
<af:panelLabelAndMessage label="Id city:" id="plam1">
<af:outputText value="#{bindings.IdCity.inputValue}" id="ot1">
<af:convertNumber groupingUsed="false"
pattern="#{bindings.IdCity.format}"/>
</af:outputText>
</af:panelLabelAndMessage>
<af:panelLabelAndMessage label="Name:" id="plam2">
<af:outputText value="#{bindings.Name.inputValue}" id="ot2"/>
</af:panelLabelAndMessage>
<af:panelLabelAndMessage label="Airport:" id="plam3">
<af:outputText value="#{bindings.Airport.inputValue}" id="ot3"/>
</af:panelLabelAndMessage>
<af:panelLabelAndMessage label="State:" id="plam4">
<af:outputText value="#{bindings.Status.inputValue}" id="ot4"/>
</af:panelLabelAndMessage>
<af:panelLabelAndMessage label="Dangeros:" id="plam5">
<af:outputText value="#{bindings.Dangeros.inputValue}"
id="ot5"/>
</af:panelLabelAndMessage>
</af:panelFormLayout>
</f:facet>
</af:panelSplitter>
</af:panelGroupLayout>
</f:facet>
</af:panelSplitter>
</af:showDetailItem>
<af:showDetailItem text="Flights" id="sdi1">
<af:panelSplitter id="ps1" splitterPosition="33"
orientation="vertical" inlineStyle="width:auto; height:500px;"
dimensionsFrom="auto">
<f:facet name="first">
<af:panelGroupLayout layout="scroll" id="pgl1">
<af:selectOneChoice value="#{bindings.QueryFlightView1.inputValue}"
label="Search flights:"
required="#{bindings.QueryFlightView1.hints.mandatory}"
shortDesc="#{bindings.QueryFlightView1.hints.tooltip}"
id="soc1" autoSubmit="true"
valueChangeListener="#{queryFlightsListener.switchQuery}">
<f:selectItems value="#{bindings.QueryFlightView1.items}" id="si1"/>
</af:selectOneChoice>
</af:panelGroupLayout>
</f:facet>
<f:facet name="second">
<af:panelGroupLayout layout="scroll" id="pgl3">
<dvt:mapToolbar mapId="map" id="mt2"/>
<dvt:map id="map" startingX="0.0" mapServerConfigId="mapConfig1"
baseMapName="AIRPORTS.WORLDTILELAYER2" mapZoom="2" startingY="0.0"
summary="Geography Map" styleClass="AFStretchWidth"
inlineStyle="width:950px; height:500px;">
<dvt:mapColorTheme id="mt1" themeName="LINESTHEME"
value="#{bindings.FlightView11.geoMapModel}"
bucketCount="1" minColor="#94b5ff" maxColor="#84adff"
locationColumn="ID_NAME"
clickListener="#{bindings.FlightView11.geoMapModel.processClickAction}"
selectionListener="#{bindings.FlightView11.geoMapModel.processSelection}"/>
<dvt:mapPointTheme id="mt3" value="#{bindings.FlightView12.geoMapModel}"
clickListener="#{bindings.FlightView12.geoMapModel.processClickAction}"
selectionListener="#{bindings.FlightView12.geoMapModel.processSelection}">
<dvt:mapPointStyleItem
isDefault="true"
imageURL="red.png"/>
</dvt:mapPointTheme>
</dvt:map>
</af:panelGroupLayout>
</f:facet>
</af:panelSplitter>
</af:showDetailItem>
</af:panelTabbed>
<!-- id="af_one_column_stretched" -->
</f:facet>
</af:panelStretchLayout>
</af:form>
</af:document>
</f:view>






