E' da un pò di tempo che volevo postare, le slide per una presentazione di uno studio che ho fatto sul linguaggio XACML, un linguaggio per gestire gli accessi a risorse condivise e per creare policy che regolino tali accessi.
L'idea è molto interessante, ma prevede un framework che implementi le regole descritte. E' uno standard OASIS e ha gia implentazioni in .NET e Java.
In poche parole, permette di definire delle regole per controllare l'accesso a delle risorse in ambienti distribuiti e descrive gli algoritmi con cui queste regole devono essere applicate; tutto ciò scrivendo semplicemente dei file in formato XML.
Questo un esempio di Policy, che permette qualsiasi tipo di azione per soggetti appartenenti al dominio peppedontet.it:

<?xml version="1.0" encoding="UTF-8"?>

<Policy xmlns="urn:oasis:names:tc:xacml:2.0:policy:schema:os"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:oasis:names:tc:xacml:2.0:policy:schema:os http://docs.oasis-
open.org/xacml/access_control-xacml-2.0-policy-schema-os.xsd"

PolicyId="urn:oasis:names:tc:example:SimplePolicy1"
RuleCombiningAlgId="identifier:rule-combining-algorithm:deny-overrides"
>
<Description>
PeppeDotNet access control policy
</Description>
<Target/>
<Rule RuleId= "urn:oasis:names:tc:xacml:2.0:example:SimpleRule1" Effect="Permit">
<Description>
Ogni soggetto con un'e-mail del dominio peppedotnet.it
puo' effettuare ogni tipo di azioni su qualsiasi risorsa.
</Description>
<Target>
<Subjects>
<Subject>
<SubjectMatch MatchId="urn:oasis:names:tc:xacml:1.0:function:rfc822Name-match">
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">
peppedotnet.it
</AttributeValue>
<SubjectAttributeDesignator
AttributeId="urn:oasis:names:tc:xacml:1.0:subject:subject-id"
DataType="urn:oasis:names:tc:xacml:1.0:data-type:rfc822Name"
/>
</SubjectMatch>
</Subject>
</Subjects>
</Target>
</Rule>
</Policy>

Come potete vedere, risulta facile sia leggere che scrivere regole di questo tipo. La cosa fantastica, come tutte le tecnologie figlie dell'XML, è che il linguaggio di policy è estensibile !
Vi lascio quindiper vostro uso e consumo ;)