Jan 9, 2012

To Oracle XML DB repository (μέρος 2ο)

Ας ξεκινήσουμε από μια λειτουργική περιγραφή του XML DB, έχοντας ως σενάριο εργασίας δυο λογαριασμούς χρηστών (πχ xml1 και xml2) που πρόκειται να προσθέτουν αρχεία στο repository, μέσω γνώριμων και φιλικών διεπαφών, όπως το FTP ή το WebDAV (πχ από το Windows Explorer τους) σε ένα συγκεκριμένο κατάλογο. Τα αρχεία αυτά, με το που ανεβαίνουν στο repository, πρόκειται να υποστούν κάποια επεξεργασία (πχ. προώθηση στο κύκλωμα παραγγελιών, αποθήκευση ή και επεξεργασία ψηφιακού περιεχομένου κλπ) H διαχείριση και παραμετροποίηση του XML DB repository θα πραγματοποιείται από έναν ειδικό λογαριασμό χρήστη (πχ xmlrepos1) που θα ορίσουμε σε αρχικό στάδιο.

Ως system λοιπόν φτιάχνουμε τους χρήστες:

create user xmlrepos1 identified by ###;
grant connect, resource, xdbadmin to xmlrepos1;

create user xml1 identified by ###;
grant connect to xml1;

create user xml2 identified by ###;
grant connect to xml2;


Ως χρήστης xmlrepos1, μπορούμε να δημιουργήσουμε τώρα τον φάκελο των εισερχομένων εγγράφων, έστω /uploadFolder, ορίζοντας επί της ουσίας την δενδροειδή δομή που μας ενδιαφέρει:

declare
r BOOLEAN;
begin
r:=DBMS_XDB.createFolder('/uploadFolder');
commit;
end;

Έπειτα, ο xmlrepos1 θα αποδώσει τα κατάλληλα δικαιώματα διαχείρισης περιεχομένου στους δυο τελικούς μας χρήστες. Το XML DB κάνει χρήση ACLs (access control lists) που περιγράφονται σε μορφή XML για τη διαχείριση ασφάλειας. Ας φτιάξουμε λοιπόν ένα αρχείο περιγραφής της πολιτικής ασφάλειας. Το υπερ-δικαίωμα dav:all σηματοδοτεί την απόλυτη εξουσιοδότηση σε ένα πόρο (αρχείο ή φάκελο)

declare
b BOOLEAN;
begin
b := DBMS_XDB.createResource(
'/public/acls/acl_uploadFolder.xml',
'<acl description="myacl"
xmlns="http://xmlns.oracle.com/xdb/acl.xsd"
xmlns:dav="DAV:"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.oracle.com/xdb/acl.xsd
http://xmlns.oracle.com/xdb/acl.xsd">
<ace>
<grant>true</grant>
<principal>xml1</principal>
<privilege>
<dav:all/>
</privilege>
</ace>
<ace>
<grant>true</grant>
<principal>xml2</principal>
<privilege>
<dav:all/>
</privilege>
</ace>
</acl>',
'http://xmlns.oracle.com/xdb/acl.xsd',
'acl');
commit;
end;


Τέλος, ας αποδώσουμε τα ACLs που μόλις δημιουργήσαμε, στον φάκελό μας:

begin
dbms_xdb.setacl('/uploadFolder', '/public/acls/acl_uploadFolder.xml');
commit;
end;


Έχουμε τελειώσει με τον ορισμό της ασφάλειας! Αυτό που απομένει είναι να ενεργοποιήσουμε τα κανάλια πρόσβασης (FTP και WebDAV) στους τελικούς μας χρήστες και να ορίσουμε την πολιτική διαχείρισης του νέου περιεχομένου. Όλα αυτά στο επόμενο άρθρο. Όπως πάντα, περισσότερες πληροφορίες στο documentation της Oracle.

No comments: