Liberty 設定檔批次架構可讓您配置角色型存取權,來存取所有批次管理作業以及檢視批次工作相關聯的 meta 資料和日誌。
開始之前
批次儲存器定義了三個批次角色。單一使用者可以具備多個批次角色。
- batchAdmin
- batchAdmin 對所有批次作業具備不受限的存取權。所包含的許可權包括:提交新工作、停止並重新啟動任何使用者的工作、檢視批次網域中任何使用者提交的任何 meta 資料和工作日誌,以及清除任何工作。batchAdmin 不一定需要是 WebSphere Application Server 管理者。
- batchSubmitter
- batchSubmitter 有權提交新工作,但只能對其自己的工作,執行停止、重新啟動或清除等之類的批次作業。batchSubmitter 無法檢視或修改其他使用者的工作。舉例來說,如果 user1 和 user2 都定義為 batchSubmitter,且 user1 提交工作,則 user2 無法檢視與 user1 工作相關聯的工作實例資料。
- batchMonitor
- batchMonitor 對所有工作具備唯讀權。這個角色的使用者可以檢視所有的工作實例和執行程序,並具備所有工作日誌的存取權。batchMonitor 無法提交自己的工作,或是停止、重新啟動或清除任何工作。
註: 一旦啟用批次安全,會根據授與現行使用者的批次角色,來過濾任何 JobOperator API 方法或 REST 作業所要傳回的清單。舉例來說,當只具備 batchSubmitter 許可權的使用者要求所有工作實例清單時,將只會傳回現行使用者所提交的工作實例。
程序
- 依預設,batch-1.0 特性不會啟用任何安全。對於所有使用者(不管是否經過鑑別),JobOperator 方法都維持開啟。這些方法維持開啟,只為了開發用途,並不需要任何的安全配置。 batchManagement-1.0 特性會啟用批次 REST API。REST API 一律需要鑑別使用者,即使未啟用 appSecurity-2.0 功能也是如此,但是所有使用者都被視為批次管理者,可以對任何工作實例執行所有批次作業。一旦啟用 appSecurity-2.0,將會執行批次角色型安全授權,且會限制使用者只能執行其給定批次角色所定義的批次作業。
- 透過 JobOperator API 來啟用批次角色型安全
<featureManager>
<feature>batch-1.0</feature>
<feature>appSecurity-2.0</feature>
</featureManager>
- 透過 REST API 來啟用批次角色型安全。
註: batchManagement-1.0 特性包含 batch-1.0 特性。
<featureManager>
<feature>batchManagement-1.0</feature>
<feature>appSecurity-2.0</feature>
</featureManager>
- 將 server.xml 檔配置成支援角色型安全。 下列範例說明用來定義使用者清單的基本使用者登錄。此登錄供批次角色型安全配置範例使用。
<basicRegistry id="basic" realm="ibm/api">
<user name="alice" password="alicepwd" />
<user name="bob" password="bobpwd" />
<user name="jane" password="janepwd" />
<user name="joe" password="joepwd" />
<user name="phyllis" password="phyllispwd" />
<user name="kai" password="kaipwd" />
</basicRegistry>
在本例中,一個使用者擔任多個角色。
<authorization-roles id="com.ibm.ws.batch">
<security-role name="batchAdmin" >
<user name="alice" />
</security-role>
<security-role name="batchSubmitter" >
<user name="jane" />
<user name="phyllis" />
<user name="bob" />
</security-role>
<security-role name="batchMonitor" >
<user name="joe" />
<user name="bob" />
</security-role>
</authorization-roles>
在本例中,一個使用者擔任多個角色。所有使用者都具備 batchSubmitter 角色。
<authorization-roles id="com.ibm.ws.batch">
<security-role name="batchAdmin" >
<user name="alice" />
</security-role>
<security-role name="batchSubmitter" >
<special-subject type="ALL_AUTHENTICATED_USERS"/>
</security-role>
<security-role name="batchMonitor" >
<user name="joe" />
<user name="bob" />
</security-role>
</authorization-roles>
在本例中,一個使用者擔任多個角色。容許所有使用者(包括那些未鑑別的使用者)都具備 batchMonitor 角色。<authorization-roles id="com.ibm.ws.batch">
<security-role name="batchAdmin" >
<user name="alice" />
</security-role>
<security-role name="batchSubmitter" >
<user name="joe" />
<user name="bob" />
</security-role>
<security-role name="batchMonitor" >
<special-subject type="EVERYONE"/>
</security-role>
</authorization-roles>