定义显式 MBean 安全策略
可对特定 MBean 显式定义 MBean 安全策略。使用此示例来定义 MBean 安全策略。
开始之前
关于此任务
执行下列任务以定义显式安全策略。
过程
- 假定您已经具有由 MBean sample.xml 描述符文件定义的 MBean。
- 对 sampleSecurity.xml 文件中的 MBean 指定显式安全策略。 命名约定就是您必须将“Security”追加至 MBean 描述符文件名结尾,以作为 MBean 安全性描述符文件的名称。
- 将安全策略描述符文件放置在 MBean 安全性描述符所在的目录中,以便 MBean 装入器可找到它。 此目录是安全策略描述符文件的典型位置。如果 MBean 安全性描述符文件不存在,那么使用缺省 MBean 安全策略。
- 在 sampleSecurity.xml 文件的资源元素资源名字段中指定 MBean 名称 sample,以便 MBean 策略装入器可将 MBean 安全策略与 MBean 相关联。 MBean 安全性描述符定义与 Java 2 Platform, Enterprise Edition (J2EE) 部署描述符所定义的安全策略非常类似。
结果
示例
以下示例描述 sampleSecurity.xml 文件的 MBean 安全性描述符文件格式。
第 2 行指定 MBean 安全性描述符模式由 RolePermissionDescriptor.dtd 文件定义,该模式是 WebSphere® Application Server 中的文档类型定义 (DTD)。
如第 3 行中所示,每个 MBean 描述符文件包含单个角色许可权元素。管理安全角色层次结构是在第 9 行和第 37 行之间的安全角色元素中定义的。管理安全角色具有继承关系。
如第 14 行到第 21 行中定义的那样,操作员安全角色隐含监视员安全角色,这意味着具有操作员角色的用户具有监视员角色的所有许可权。如第 30 行到第 38 行中定义的那样,管理员安全角色同时隐含配置员和操作者安全角色。每个 MBean 安全性描述符文件通常具有相同的关系定义,以便您可将此部分剪切并粘贴至 MBean 安全性描述符文件。
可在安全角色元素后定义一个或多个方法许可权元素。每个方法许可权元素定义一个或多个方法所需的角色。指定方法参数以避免多个方法具有相同名称时发生方法名称冲突。
1. <?xml version="1.0" encoding="UTF-8"?>
2. <!DOCTYPE role-permission SYSTEM "RolePermissionDescriptor.dtd" >
3. <role-permission>
4. <resource>
5. <resource-name>sample</resource-name>
6. <class-name>com.ibm.ws.security.descriptor.sample</class-name>
7. <description>This is a sample for testing role permission descriptor.</description>
8. </resource>
9. <security-role>
10. <role>
11. <role-name>monitor</role-name>
12. </role>
13. </security-role>
14. <security-role>
15. <role>
16. <role-name>operator</role-name>
17. <imply>
18. <role-name>monitor</role-name>
19. </imply>
20. </role>
21. </security-role>
22. <security-role>
23. <role>
24. <role-name>configurator</role-name>
25. <imply>
26. <role-name>monitor</role-name>
27. </imply>
28. /role>
29. </security-role>
30. <security-role>
31. <role>
32. <role-name>administrator</role-name>
33. <imply>
34. <role-name>operator</role-name>
35. <role-name>configurator</role-name>
36. </imply>
37. </role>
38. </security-role>
39. <method-permission>
40. <description>Sample method permission table</description>
41. <role-name>operator</role-name>
42. <method>
43. <description>Sample operation</description>
44. <resource-name>sample</resource-name>
45. <method-name>stop</method-name>
46. </method>
47. </method-permission>
48. <method-permission>
49. <description>Sample method permission table</description>
50. <role-name>operator</role-name>
51. <method>
52. <description>Sample operation</description>
53. <resource-name>sample</resource-name>
54. <method-name>start</method-name>
55. <method-params>
56. <method-param>java.lang.String</method-param>
57. <method-param>java.lang.String</method-param>
58. </method-params>
59. </method>
60. </method-permission>
61. <method-permission>
62. <description>Sample method permission table</description>
63. <role-name>operator</role-name>
64. <method>
65. <description>Sample operation</description>
66. <resource-name>sample</resource-name>
67. <method-name>monitor</method-name>
68. <method-params>
69. </method-params>
70. </method>
71. </method-permission>
72. <method-permission>
73. <description>Sample method permission table</description>
74. <role-name>configurator</role-name>
75. <method>
76. <description>Sample operation</description>
77. <resource-name>sample</resource-name>
78. <method-name>setValue</method-name>
79. <method-params>
80. <method-param>java.lang.Boolean</method-param>
81. </method-params>
82. </method>
83. </method-permission>
84. <method-permission>
85. <description>Sample method permission table</description>
86. <role-name>monitor</role-name>
87. <method>
88. <description>Sample operation</description>
89. <resource-name>sample</resource-name>
90. <method-name>getValue</method-name>
91. </method>
92. </method-permission>
93. </role-permission>