{"id":2234,"date":"2011-05-10T14:06:17","date_gmt":"2011-05-10T19:06:17","guid":{"rendered":"http:\/\/jianmingli.com\/wp\/?p=2234"},"modified":"2011-05-10T14:06:17","modified_gmt":"2011-05-10T19:06:17","slug":"xacml-policies","status":"publish","type":"post","link":"https:\/\/jianmingli.com\/wp\/?p=2234","title":{"rendered":"XACML Policies"},"content":{"rendered":"<span id=\"Overview\"><h2>Overview<\/h2><\/span>\n<p>* XACML stands for eXtensible Access Control Markup Language<br \/>\n* It is an <a href=\"http:\/\/www.oasis-open.org\/committees\/tc_home.php?wg_abbrev=xacml\">OASIS Standard<\/a><br \/>\n&#8211; XACML 1.0 approved in 2003<br \/>\n&#8211; XACML 2.0 approved in 2005<br \/>\n&#8211; XACML 3.0 approved in 2010<\/p>\n<p>* Defines<br \/>\n&#8211; a standard set of XML elements for expressing access control policies<br \/>\n&#8211; a request and response protocol for issuing requests and responses<br \/>\n&#8211; a policy language model for processing policy requests<br \/>\n* <strong>Different <\/strong>from WS-Policy<br \/>\n&#8211; WS-Policy: applies to services<br \/>\n&#8211; XACML: applies to access control<br \/>\n* XACML 2.0 can work on SAML 2.0 subject attributes<\/p>\n<span id=\"Key_Benefits\"><h3>Key Benefits<\/h3><\/span>\n<p>* Standardized authorization<br \/>\n* Centralized authorization<br \/>\n* Open\/robust standards<\/p>\n<span id=\"Why_Use_XACML\"><h3>Why Use XACML<\/h3><\/span>\n<p>* Interoperability: it&#8217;s an OASIS standard<br \/>\n* Compatibility: it&#8217;s xml based so can be transformed to\/from other formats easily<br \/>\n* Extensibility<br \/>\n* Schema independence: it does not required fixed schema and support XPATH<br \/>\n* Multiple roles<br \/>\n* Grouping of attributes: XACML supports variables to group attributes<br \/>\n* Decentralized management: ARPs can be split into multiple distributed parts and managed separately<br \/>\n* Flexible conditions<br \/>\n* Supports obligations<br \/>\n* Optional use of PKI<br \/>\n* Existing implementation<\/p>\n<span id=\"XACML_vs_SAML\"><h3>XACML vs SAML<\/h3><\/span>\n<p>* They complement each other<br \/>\n&#8211; XACML policy can specify what to do with SAML assertion<br \/>\n&#8211; XACML based attributes can be expressed in SAML<br \/>\n* SAML for coarse grained authentication\/authorization<br \/>\n* XACML for fine grained authentication\/authorization<\/p>\n<span id=\"Structure\"><h3>Structure<\/h3><\/span>\n<p>* PolicySet<br \/>\n&#8211; contains a set of Policies<br \/>\n* Policy<br \/>\n&#8211; contains a set of Rules<br \/>\n&#8211; specifies procedure to combine results of rule evaluations<br \/>\n* Rule<br \/>\n&#8211; contains a Boolean expression<br \/>\n&#8211; evaluated in isolation<\/p>\n<span id=\"Combining_Algorithms\"><h3>Combining Algorithms<\/h3><\/span>\n<p>* Deny Overrides:<br \/>\n&#8211; return Deny if <em>any<\/em> evaluation returns Deny<br \/>\n* Permit Overrides: return<br \/>\n&#8211; Permit if <em>any<\/em> evaluation returns Permit<br \/>\n* First Applicable: return<br \/>\n&#8211; result from <em>first<\/em> applicable evaluation<br \/>\n&#8211; NotApplicable if none applies<br \/>\n* Only One Applicable: return<br \/>\n&#8211; result from evaluation if <em>only one<\/em> rule applies<br \/>\n&#8211; Inderterminate if multiple evaluations apply<\/p>\n<span id=\"Examples\"><h2>Examples<\/h2><\/span>\n<span id=\"Example_Scenario\"><h3>Example Scenario<\/h3><\/span>\n<p>* A subject requests to access a resource protected by Policy Enforcement Point (PEP).<br \/>\n* PEP creates and sends an XACML request to the Policy Decision Point (PDP).<br \/>\n* PDP checks the request against policies and determine whether access should be granted to the subject.<br \/>\n* PDP makes an authorization decision<br \/>\n* PDP sends one of the following responses to the PEP<br \/>\n&#8211; Permit,<br \/>\n&#8211; Deny,<br \/>\n&#8211; Indeterminate<br \/>\n&#8211; Not Applicable<br \/>\n* The PEP enforces the decision made by the PDP accordingly.<\/p>\n<span id=\"Example_XACML\"><h3>Example XACML<\/h3><\/span>\n<pre lang=\"xml\">\r\n<?xml version=\"1.0\" ?>\r\n<Policy xmlns=\"urn:oasis:names:tc:xacml:1.0:policy\"\r\n   PolicyId=\";A Simple Policy\"\r\n   RuleCombiningAlgId=\"urn:oasis:names:tc:xacml:1.0:rule-\r\n   combining-algorithm:permit-overrides\" >\r\n   <Description>\r\n     This is simple XACML policy to illustrate\r\n     some of the language constructs\r\n   <\/Description>\r\n   <Target>\r\n     <Subjects>\r\n         <AnySubject \/>\r\n     <\/Subjects>\r\n     <Resources>\r\n         <AnyResource \/>\r\n     <\/Resources>\r\n     <Actions>\r\n         <AnyAction \/>\r\n     <\/Actions>\r\n   <\/Target>\r\n   <Rule RuleId=\"Simple Rule\" Effect=\"Permit\">\r\n     <Target>\r\n       <Subjects>\r\n         <Subject>\r\n           <SubjectMatch MatchId=\"urn:oasis:names:tc:xacml:1.0:function:x500name-equal\">\r\n               <AttributeValue DataType=\"urn:oasis:names:tc:xacml:1.0:data-type:x500name\">\r\n                   CN=A User,OU=XYZ User,O=XYZ Corp, C=US\r\n               <\/AttributeValue>\r\n           <\/SubjectMatch>\r\n         <\/Subject>\r\n       <\/Subjects>\r\n     <\/Target>\r\n   <\/Rule> \r\n   <Rule RuleId=\"Deny Everything Else\" Effect=\"Deny\">\r\n     <Description>\r\n         Deny everything not permitted by Simple Rule\r\n     <\/Description>\r\n   <\/Rule>\r\n<\/Policy>\r\n<\/pre>\n<span id=\"Glossary\"><h2>Glossary<\/h2><\/span>\n<p>PAP: Policy administration Point<br \/>\nPEP: Policy enforcement point<br \/>\nPDP: Policy decision point<br \/>\nPIP: Policy information point<\/p>\n<span id=\"XACML_Vendors\"><h2>XACML Vendors<\/h2><\/span>\n<p>* Axiomatics<br \/>\n* BitKoo<\/p>\n<span id=\"References\"><h2>References<\/h2><\/span>\n<p>* <a href=\"http:\/\/www.oasis-open.org\/committees\/tc_home.php?wg_abbrev=xacml\">OASIS XACML<\/a><br \/>\n* <a href=\"http:\/\/www.xml.gov\/presentations\/sun\/xacml.pdf\">XACML PPT<\/a><br \/>\n* <a href=\"http:\/\/labs.oracle.com\/projects\/xacml\/WS-XACML-F2F0703.pdf\">Anne Anderson XACML PPT<\/a><br \/>\n* <a href=\"http:\/\/labs.oracle.com\/projects\/xacml\/\">Sun XACML Project<\/a><br \/>\n* Enterprise Web Services Security, By: Rickland Hollar; Richard Murphy<br \/>\n* <a href=\"http:\/\/www.google.com\/url?sa=t&#038;source=web&#038;cd=1&#038;ved=0CBYQFjAA&#038;url=http%3A%2F%2Fciteseerx.ist.psu.edu%2Fviewdoc%2Fdownload%3Fdoi%3D10.1.1.86.4366%26rep%3Drep1%26type%3Dpdf&#038;rct=j&#038;q=Using%20XACML%20for%20Privacy%20Control%20in%20SAML-Based%20Identity%20Federations&#038;ei=emTHTZm0KoHt0gGvjtn2Bw&#038;usg=AFQjCNHJ5OzEbZ2wTBUD4NL9nZqLFO4Alg&#038;sig2=gNgW5dx9tU8yqU89zO2uGw&#038;cad=rja\">Using XACML for Privacy Control in SAML-Based Identity Federations<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Overview * XACML stands for eXtensible Access Control Markup Language * It is an OASIS Standard &#8211; XACML 1.0 approved in 2003 &#8211; XACML 2.0 approved in 2005 &#8211; XACML 3.0 approved in 2010 * Defines &#8211; a standard set &hellip; <a href=\"https:\/\/jianmingli.com\/wp\/?p=2234\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[43],"tags":[],"class_list":["post-2234","post","type-post","status-publish","format-standard","hentry","category-ws-stds"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p8cRUO-A2","_links":{"self":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/2234","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2234"}],"version-history":[{"count":15,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/2234\/revisions"}],"predecessor-version":[{"id":2267,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/2234\/revisions\/2267"}],"wp:attachment":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2234"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2234"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2234"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}