Sun Java System Message Queue 3.7 UR1 管理指南

使用者授權:存取控制特性檔案

存取控制特性檔案 (ACL 檔案) 包含的規則,指定使用者和群組使用者可以執行的作業。您可以編輯 ACL 檔案,限制某些使用者和群組執行作業。您可以在每個代理程式實例使用不同的 ACL 檔案。

無論使用者資訊放在平面檔案使用者儲存庫中還是放在 LDAP 使用者儲存庫中,均可使用 ACL 檔案。當用戶端應用程式執行以下作業時,代理程式會檢查其 ACL 檔案:

代理程式會檢查 ACL 檔案,判斷提出請求的使用者或該使用者所屬的群組,是否已有執行此作業的授權。

如果您編輯 ACL 檔案,新的設定會在下次代理程式檢查檔案以驗證授權時生效。您編輯此檔案後,不需要重新啟動代理程式。

建立存取控制特性檔案

不同實例有不同的 ACL 檔案。每次啟動代理程式實例時,會在實例目錄中建立預設檔案 accesscontrol.properties。此檔案的路徑格式如下 (請參閱附錄 AMessage QueueTM 資料的特定平台位置):

…/instances/brokerInstanceName/etc/accesscontrol.properties

ACL 檔案的格式與 Java 特性檔案的格式類似。先定義檔案的版本,然後分三部分指定存取控制規則:

version 特性定義 ACL 特性檔案的版本;您不能變更此項目。

version=JMQFileAccessControlModel/100

以下說明存取規則的基本語法並介紹如何計算權限,之後描述可指定存取控制規則的 ACL 檔案三部分。

存取規則的語法

在 ACL 特性檔案中,存取控制會定義特定使用者或群組對受保護的資源 (如實體目標和連線服務) 擁有何種存取權。存取控制由一條或一組規則表示,每條規則皆以 Java 特性表示:

這些規則的基本語法如下:

resourceType.resourceVariant

.operation.access.
principalType=principals

表 7–3 描述了語法規則的元素。

表 7–3 存取規則的語法元素

元素 

說明 

resourceType

下列其中一項:connectionqueue topic

resourceVariant

resourceType 指定的類型實例。例如,myQueue。您可使用萬用字元符號 (*) 來表示所有連線服務類型或所有實體目標。

operation

值取決於要制定的存取規則種類。 

access

下列其中一項:allowdeny

principalType

下列其中一項:usergroup。如需更多資訊,請參閱群組

principals

可以擁有在規則左側所指定存取權的使用者。如果 principalTypeuser,則此項可以為個別使用者或使用者清單 (以逗號分隔);如果 principalTypegroup,則此項可以為單一群組或群組清單 (以逗號分隔的清單)。您可使用萬用字元符號 (*) 來表示所有使用者或所有群組。

以下為存取規則的一些範例:


備註 –

若要指定非 ASCII 的使用者、群組或目標名稱,請使用 Unicode 換碼 (\\uXXXX) 表示法。如果您已經編輯並儲存具有非 ASCII 編碼名稱的 ACL 檔案,則可以使用 Java native2ascii 工具將其轉換為 ASCII。如需更多詳細資訊,請至

http://java.sun.com/j2se/1.4/docs/guide/intl/faq.html

如何計算權限

檔案中有多個存取規則時,權限計算如下:

連線服務的存取控制

ACL 特性檔案中的連線存取控制區段,包含用於代理程式連線服務的存取控制規則。連線存取控制規則的語法如下:

connection.resourceVariant.
access.principalType=
principals

resourceVariant 定義有兩個值:NORMALADMIN。您只能授權存取這些連線服務類型的預定值。

預設 ACL 特性檔案授權所有使用者存取 NORMAL 連線服務,並授權 admin 群組中的使用者存取 ADMIN 連線服務:

connection.NORMAL.allow.user=*
connection.ADMIN.allow.group=admin

如果您使用檔案式的使用者儲存庫,使用者管理員公用程式會建立預設群組 admin。如果您使用 LDAP 使用者儲存庫,只要執行下列一項作業即可使用預設 ACL 特性檔案:

您可以限制連線存取權限。例如,以下規則拒絕 Bob 存取 NORMAL,但是允許其他所有使用者進行存取:

connection.NORMAL.deny.user=Bob
connection.NORMAL.allow.user=*

您可以使用星號 (*) 字元代表所有認證使用者或群組。

對於檔案式使用者儲存庫和 LDAP 使用者儲存庫,使用 ACL 特性檔案授權存取 ADMIN 連線的方式有下列不同:

實體目標的存取控制

存取控制特性檔案的目標存取控制區段,包含實體目標型的存取控制規則。這些規則決定何人 (使用者/群組) 可以在何處 (實體目標) 做什麼 (作業)。這些規則所規定的存取權類型包括:將訊息傳送至佇列、將訊息發佈至主題、接收來自佇列的訊息、訂閱主題以及瀏覽佇列中的訊息。

依預設,任何使用者或群組對任何實體目標都擁有所有類型的存取權。您可以新增更多特定的目標存取規則,或編輯預設規則。本節的其餘部分介紹實體目標存取規則的語法,您必須理解此語法以編寫自己的規則。

目標規則的語法如下:

resourceType.resourceVariant.operation.access.principalType=principals

表 7–4 中有這些元素的描述:

表 7–4 實體目標存取控制規則的元素

元件 

說明 

resourceType

可以是 queuetopic

resourceVariant

某一個實體目標名稱;或所有的實體目標 (*),表示所有佇列或所有主題。 

operation

可以是 produceconsumebrowse

access

可以是 allowdeny

principalType

可以是 usergroup

可以將存取權賦予一個或多個使用者和 (或) 一個或多個群組。

以下範例說明了不同種類的實體目標存取控制規則:

自動建立實體目標的存取控制

ACL 特性檔案最後部分的存取規則,可以指定代理程式將為哪些使用者和群組自動建立實體目標。

當使用者在並不存在的實體目標上建立產生器或用戶時,如果已啟用代理程式的自動建立特性,則代理程式將會建立此目標。

依預設,任何使用者或群組均有權讓代理程式自動建立實體目標。此權限由以下規則指定:

queue.create.allow.user=*
topic.create.allow.user=*

您可以編輯 ACL 檔案以限制此類型的存取權。

實體目標自動建立存取規則的一般語法如下:

resourceType.create.access.principalType=principals

其中 resourceTypequeuetopic

例如,以下規則可讓代理程式為所有使用者 (除 Snoopy 之外) 自動建立主題目標。

topic.create.allow.user=*
topic.create.deny.user=Snoopy

請注意,實體目標自動建立規則的效果必須與實體目標存取規則的效果一致。例如,如果您 1) 變更目標存取規則,以禁止任何使用者將訊息傳送至目標,但是 2) 啟用目標的自動建立功能,如果此目標不存在,則代理程式將會建立此實體目標,但不會將訊息傳送至此目標。