predefined_yaml.go 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294
  1. // Copyright 2019 Yunion
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. //
  7. // http://www.apache.org/licenses/LICENSE-2.0
  8. //
  9. // Unless required by applicable law or agreed to in writing, software
  10. // distributed under the License is distributed on an "AS IS" BASIS,
  11. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. package locale
  15. import (
  16. "yunion.io/x/jsonutils"
  17. "yunion.io/x/log"
  18. "yunion.io/x/pkg/util/rbacscope"
  19. )
  20. var opsAdminPolicy = `
  21. policy:
  22. '*':
  23. events:
  24. '*': deny
  25. list:
  26. '*': deny
  27. splitable: deny
  28. compute:
  29. '*':
  30. '*': allow
  31. events:
  32. '*': deny
  33. list:
  34. '*': deny
  35. splitable: deny
  36. dynamicschedtags:
  37. '*': deny
  38. recyclebins:
  39. '*': deny
  40. secgroups:
  41. '*': deny
  42. list: allow
  43. get: allow
  44. hosts:
  45. '*': allow
  46. perform:
  47. '*': allow
  48. login-info: deny
  49. servers:
  50. '*': allow
  51. perform:
  52. '*': allow
  53. start: deny
  54. stop: deny
  55. change-owner: deny
  56. add-secgroup: deny
  57. set-secgroup: deny
  58. revoke-secgroup: deny
  59. revoke-admin-secgroup: deny
  60. assign-secgroup: deny
  61. assign-admin-secgroup: deny
  62. image:
  63. '*':
  64. '*': allow
  65. events:
  66. '*': deny
  67. identity:
  68. '*':
  69. '*': deny
  70. list: allow
  71. get: allow
  72. users:
  73. '*': deny
  74. create: allow
  75. list: allow
  76. get: allow
  77. events:
  78. '*': deny
  79. monitor:
  80. events:
  81. '*': deny
  82. '*':
  83. '*': allow
  84. log:
  85. actions:
  86. list:
  87. list: allow
  88. get: allow
  89. '*': deny
  90. splitable: deny
  91. `
  92. var secAdminPolicy = `
  93. policy:
  94. '*':
  95. events:
  96. '*': deny
  97. compute:
  98. events:
  99. '*': deny
  100. '*':
  101. '*': deny
  102. get: allow
  103. list: allow
  104. disks:
  105. '*': deny
  106. delete: allow
  107. get: allow
  108. list: allow
  109. perform:
  110. '*': deny
  111. disable: allow
  112. change-owner: allow
  113. purge: allow
  114. dynamicschedtags:
  115. '*': allow
  116. recyclebins:
  117. '*': allow
  118. get: allow
  119. list: allow
  120. schedpolicies:
  121. '*': deny
  122. schedtags:
  123. '*': deny
  124. secgroups:
  125. '*': allow
  126. secgrouprules:
  127. '*': allow
  128. servers:
  129. '*': deny
  130. delete: allow
  131. get:
  132. '*': allow
  133. vnc: deny
  134. list: allow
  135. perform:
  136. '*': deny
  137. disable: allow
  138. change-owner: allow
  139. add-secgroup: allow
  140. set-secgroup: allow
  141. revoke-secgroup: allow
  142. revoke-admin-secgroup: allow
  143. assign-secgroup: allow
  144. assign-admin-secgroup: allow
  145. purge: allow
  146. notify:
  147. events:
  148. '*': deny
  149. '*':
  150. '*': allow
  151. identity:
  152. events:
  153. '*': deny
  154. users:
  155. create: deny
  156. '*': allow
  157. '*':
  158. '*': allow
  159. image:
  160. events:
  161. '*': deny
  162. '*':
  163. '*': deny
  164. delete: allow
  165. get: allow
  166. list: allow
  167. perform:
  168. '*': deny
  169. disable: allow
  170. change-owner: allow
  171. purge: allow
  172. log:
  173. '*':
  174. '*': deny
  175. get: allow
  176. list: allow
  177. perform:
  178. '*': deny
  179. purge-splitable: allow
  180. yunionconf:
  181. '*':
  182. '*': allow
  183. `
  184. var adtAdminPolicy = `
  185. policy:
  186. '*':
  187. '*':
  188. '*': deny
  189. events:
  190. '*': allow
  191. log:
  192. '*':
  193. '*': deny
  194. get: allow
  195. list: allow
  196. perform:
  197. '*': deny
  198. purge-splitable: allow
  199. identity:
  200. '*':
  201. '*': deny
  202. `
  203. var normalUserPolicy = `
  204. policy:
  205. compute:
  206. '*':
  207. '*': deny
  208. list: allow
  209. get: allow
  210. servers:
  211. '*': allow
  212. delete: deny
  213. perform:
  214. disable: deny
  215. clone: deny
  216. snapshot-and-clone: deny
  217. purge: deny
  218. change-ipaddr: deny
  219. change-bandwidth: deny
  220. change-config: deny
  221. change-owner: deny
  222. change-disk-storage: deny
  223. image:
  224. images:
  225. '*': deny
  226. list: allow
  227. get: allow
  228. `
  229. func toJson(yamlDef string) jsonutils.JSONObject {
  230. yaml, err := jsonutils.ParseYAML(yamlDef)
  231. if err != nil {
  232. log.Errorf("fail to parse %s: %s", yamlDef, err)
  233. }
  234. return yaml
  235. }
  236. var predefinedPolicyData = []SPolicyData{
  237. {
  238. Name: "sys-opsadmin",
  239. Scope: rbacscope.ScopeSystem,
  240. Policy: toJson(opsAdminPolicy),
  241. Description: "System-wide operation manager",
  242. DescriptionCN: "全局系统管理员权限",
  243. },
  244. {
  245. Name: "sys-secadmin",
  246. Scope: rbacscope.ScopeSystem,
  247. Policy: toJson(secAdminPolicy),
  248. Description: "System-wide security manager",
  249. DescriptionCN: "全局安全管理员权限",
  250. },
  251. {
  252. Name: "sys-adtadmin",
  253. Scope: rbacscope.ScopeSystem,
  254. Policy: toJson(adtAdminPolicy),
  255. Description: "System-wide audit manager",
  256. DescriptionCN: "全局审计管理员权限",
  257. },
  258. {
  259. Name: "domain-opsadmin",
  260. Scope: rbacscope.ScopeDomain,
  261. Policy: toJson(opsAdminPolicy),
  262. Description: "Domain-wide operation manager",
  263. DescriptionCN: "组织系统管理员权限",
  264. },
  265. {
  266. Name: "domain-secadmin",
  267. Scope: rbacscope.ScopeDomain,
  268. Policy: toJson(secAdminPolicy),
  269. Description: "Domain-wide security manager",
  270. DescriptionCN: "组织安全管理员权限",
  271. },
  272. {
  273. Name: "domain-adtadmin",
  274. Scope: rbacscope.ScopeDomain,
  275. Policy: toJson(adtAdminPolicy),
  276. Description: "Domain-wide audit manager",
  277. DescriptionCN: "组织审计管理员权限",
  278. },
  279. {
  280. Name: "normal-user",
  281. Scope: rbacscope.ScopeProject,
  282. Policy: toJson(normalUserPolicy),
  283. Description: "Default policy for normal user",
  284. DescriptionCN: "普通用户默认权限",
  285. },
  286. }