XACML
資工二甲 495511258 林梅婷 ie955125
資工二甲 495511399 張淳惠 kawa
資工二甲 495511430 陳芝媛 chloe727
資工二甲 495511492 黃宜軒 xo-ttl12
資工二甲 495511519 劉家玉 moyua
XACML
資料大多理解參考自下方相關連結內的網站內容。
1.What is XACML?
- eXtensible Access Control Markup Language(可擴展訪問控制標記語言)。
- 一種oasis標準用以描述授權政策和規範授權決策處理。
- 以XML為基底提供在網際網路上資訊存取呈現的控制策略。
- 定義了一種通用的用於保護資源的策略語言。
- 以Security Assertion Markup Language, SAML為基礎,所延伸發展而成的一種安全性存取權限控制語言。
2.Why use XACML?
- 支援分散式政策。
- 具備支援任何新要求的擴充性。
- 允許在政策中使用任意屬性如:以時間/日期為基礎的政策。
- 定義了一種通用的用於保護資源的策略語言。
- 提供跨廠商或產品平台的互換性。
3.主要實體:
- 策略管理點(Policy administration point, PAP)
- 策略執行點(Policy enforcement point, PEP)
- 策略決定點(Policy decision point, PDP)。
- 策略資訊點(Policy information point, PIP)
- 策略擷取點(Policy retrieval point, PRP)。
產生(存放)單一政策(policy)或政策集合(policy set)的系統實體。
依照既定的授權決策來執行存取控制的系統實體。 (接收對授權的請求。PEP向PDP發送XACML請求,然後根據PDP的決策行動)。
PDP使用從PAP獲得的策略以及從PIP獲得的附加信息來進行決策的系統實體。
PIP可提供被存取資源的屬性,以及試圖存取該資源的實體(身份證明)。
對於特定的請求(request),找出及取回適當策略的系統實體。
4.How Does XACML Work?
這裡是一個簡單的說明整個運作過程,較詳細的細節請見5。當客戶端向服務器提出資源請求時,可執行授權控制存取的實體叫做策略執行點(Policy Enforcement Point)。為了執行授權的策略,這個實體將規範化描述策略資訊點(Policy Information Point)的請求者的屬性,並向策略決定點(Policy Decision Point)委托授權決定。可用的策略位於策略儲存器中,並由策略決定點評估出來,然後返回授權決定。利用這條資訊,策略執行點可以向客戶端做出適當的反應。
5.XACML資料流模型
圖引用自:http://www.oasis-open.org/committees/xacml/repository/cs-xacml-specifica...
這是OASIS XACML Version1.1版本內的Data-flow Model(DFM),主要說明了一個存取請求從進入讓授權決策評估到是否被答應存取之間的流程,以下是針對每個步驟做簡單的描述。
1.PAP寫出授權決策(policies)讓PDP可以使用,這些授權決策代表了對特定目標(target)的管理方式的策略。
2.存取請求者(像是一個應用程式),送出存取請求到PEP。
3.PEP送出收到的存取請求到context handler,依原先請求格式送出,通常包含subjects、resource、action和environment的屬性值。
4.Context handler先將收到原先請求格式的請求轉換成XACML格式的請求,再送到PDP。
5.PDP收到XACML格式的請求後,依其所需從context handler請求額外的subjects、resource、action和environment的屬性值。
6.Context handler從PIP請求額外的subjects、resource、action和environment的屬性值。
7.PIP依Context handler的請求取得所請求的屬性值。
8.PIP將取得的屬性值回傳到context handler。
9.Context handler依授權決策決定是否取得資源(供PDP做授權評估用,見10)。
10.Context handler送出從PIP取得的額外屬性值和可能依授權決策決定取得的資源到PDP,PDP做授權評估。
11.PDP回傳授權評估結果到Context handler。
12.Context handler將收到的XACML格式的回應轉換成原先請求格式的回應再傳到PEP。
13.PEP依收到的訊息內容執行”義務(obligations)”,即云許請求者做資源存取。
14.(未出現在圖中)如果該訊息的授權評估結果為云許,則云許請求者做資源存取,否則中斷存取動作。
6.XACML請求及回應規格
XACML通訊協定制定了請求訊息和回應訊息的主要規格,簡單的說明如下。
XACML請求:需要下列資訊。
- Subject:請求授權認證的主體(個人或主機)。
- Resource:主體所要使用的資源。
- Action:主體對資源行使的動作。
XACML回應:回傳其中一種決定。
- Permit:云許存取請求。
- Permit with Obligations:云許存取請求,但需遵守或執行policy訂定的義務。
- Not Applicable:PDP中無任何授權策略適用於本次存取授權請求。
- Inderterminate:PDP無法評估存取授權請求,可能原因是無法由請求訊息中取得授權策略所要求的屬性,存在兩個相衝突的授權策略,或其他可能使評估無法完成的原因。
7.XACML策略語言模型
圖引用自:http://www.oasis-open.org/committees/xacml/repository/cs-xacml-specifica...
圖為權限策略或稱授權決策結構圖之XACML策略語言模型(Policy Language Model),也就是W3C目前所發表之XACML的Schema。
XACML結構包含下列幾個主要元素:
- Rule
- Policy Statement
- Policy set statement
1.Rule
是策略裡最重要的元素單位,一個策略可與多條規則相關聯。每個規則由條件、結果和目標組成。規則最終結果取決於條件的評估。如果條件返回 Indeterminate,則該規則返回 Indeterminate。如果條件返回False,則返回 NotApplicable。如果條件返回True,則返回Effect元素的值,可以是Permit或Deny。
- target(目標):包含resources、subjects及actions,這個部份的結果可提供PDP用來進行授權決策要求的評估。有助於確定規則是否與請求有關。
- condition(條件):為一布林運算式,attributes的predicates的運算結果,關於屬性的陳述,評估effect為True、False或Indeterminate。
- effect(結果):是符合規則的預期後果,值可以為 Permit或Deny。
2.Policy statement
PAP製作策略時將數個rule結合成一個policy,作為系統實體間傳遞的授權單位。包含一個target、一個規則組合演算法(rule-combining algorithm)、一個rules的集合及obligations(義務)。
- target:每個策略只有一個目標。該目標有助於確定策略是否與請求有關。可以由該policy的作者宣告,或是由該policy所屬的所有rules之targets計算而得。
- rule-combining algorithm:一個策略可以包含多條規則。不同的規則有可能得到衝突的結果。規則組合算法負責解決這種衝突,每一策略、每一請求都得到一個最終結果。每個策略只能使用一種規則組合算法。即評估該policy所屬的所有rules結合後的結果,當做是評估該policy的結果。
- obligations:在評估策略之後,特定的義務與授權決策一起發送給 PEP。除了強制實施授權決策外,PEP還負責執行義務所規定的操作。屬於policy必須執行的動作。
3.Policy set statement
Policy set將policy合併成一個策略單位。包含一個target、一個規則組合演算法(rule-combining algorithm)、一個rules的集合及obligations(義務),內容和policy statement相同則不再介紹。
8.XACML範例程式
<?xml version="1.0" encoding="UTF-8"?>
<rule ruleId="//medico.com/rules/rule2" effect="Permit"
xmlns="http://www.oasis-open.org/committees/xacml/docs
/draft-xacml-schema-policy-12.xsd"
xmlns:saml="http://www.oasis-open.org/committees/security
/docs/draft-sstc-schema-assertion-28.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.oasis-open.org/committees
/xacml/docs/draft-xacml-schema-policy-12.xsd
D:\MYDOCU~1\Standards\XACML\V12SCH~1\XACMLV~3.XSD"> <target>
<subjects>
<saml:Attribute AttributeName="RFC822Name"
AttributeNamespace="//medico.com">
<saml:AttributeValue>*</saml:AttributeValue>
</saml:Attribute>
<resources>
<saml:AttributeValue>//medico.com/record.*</saml:AttributeValue>
<saml:Attribute AttributeName="RFC822Name"
AttributeNamespace="//medico.com">
<saml:AttributeValue>*</saml:AttributeValue>
</saml:Attribute>
<resources>
<actions>
<saml:Action>read</saml:Action>
</actions>
</target> <condition>
<and>
<equal>
<saml:AttributeDesignator AttributeName="requestor"
AttributeNamespace="//oasis-open.org/committees/
xacml/docs/identifiers/"/>
<saml:AttributeDesignator
AttributeName="parentGuardianName"
AttributeNamespace="//medico.com/record/parentGuardian/"/>
</equal>
<not>
<greaterOrEqual>
<minus>
<saml:AttributeDesignator AttributeName="today'sDate"
AttributeNamespace="//medico.com/"/>
<saml:AttributeDesignator AttributeName="patientDoB"
AttributeNamespace="//medico.com/record/patient/"/>
</minus>
<saml:Attribute AttributeName="ageOfConsent"
AttributeNamespace="//medico.com">
<saml:AttributeValue>16-0-0</saml:AttributeValue>
</saml:Attribute>
</greaterOrEqual>
</not>
</and>
</condition> </rule>
圖為XACML之範例,其內容為:當病患的年齡未滿16歲之前,其所有病例可以被其父母親或監護人閱讀。
以下分為四個部份(第2~第5個區塊)說明其內容:
1.由於此範例只利用到"rule"element type,故給予一個"rule_id",本例為「ruleId=" //medico.com/rules/rule2"」。當授權要求符合條件時,則允許("Permit")執行該項要求的動作。
2.這個部份主要以XML名稱空間(namespace)的方式,指定所需相關綱要檔的參照路徑(Xpath):
- xmlns-XACML綱要檔的參照路徑
- xmlns:saml-SAML綱要檔的參照路徑
- xmlns:xsi-XACML範例之綱要檔的參照路徑
3.這個部份是針對"rule"的"target"部份:所有人("*")對於路徑"//medico/record"下的全部元素("//medico/record.*")都有讀取("read")的權力。
4.這個部份是針對"rule"的"condition"部份,成立的條件為:要求者的姓名要"等於"其父母親或監護人("parentGuardian")的姓名;並且病患的生日("patientDoB")與系統日期("today’sDate"),相減後要大於或等於16。
9.XACML的目標
XACML主要將解決以下問題:
- 創建一種可移植的、標準的方式來描述訪問控制實體及其屬性。
- 提供一種機制,以簡單地拒絕訪問或授權訪問更精細的控制訪問,也就是說在「允許」或「拒絕」之前或之後執行某些操作。
10.XACML和SAML:差別與類似之處
類似: XACML體系結構與SAML體系結構是緊密相關的。它們有很多相同的概念,要處理的問題域也在很大程度上重疊:驗證、授權和訪問控制。
差別: 在同一問題域中,要解決的是不同的問題。SAML要解決的是驗證,並提供一種機制,在協同實體間傳遞驗證和授權決策,而XACML則專注於傳遞這些授權決策的機制。SAML標準提供了允許第三方實體請求驗證和授權信息的接口。內部如何處理這些授權請求則由XACML標準解決。XACML不但處理授權請求,而且還定義了一種機制,來創建進行授權決策所需的規則、策略和策略集的完整基礎設施。
11.XACML應用
XACML可以應用在很多方面,做安全存取的管制,不輕易被竊取資源或資料,加強網絡服務之接達控制能力,例如應用於:
- 醫療系統安全。
- 工作流程管理。
- 家用網路安全。
- 電子商務。