| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294 |
- // Copyright 2019 Yunion
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
- package locale
- import (
- "yunion.io/x/jsonutils"
- "yunion.io/x/log"
- "yunion.io/x/pkg/util/rbacscope"
- )
- var opsAdminPolicy = `
- policy:
- '*':
- events:
- '*': deny
- list:
- '*': deny
- splitable: deny
- compute:
- '*':
- '*': allow
- events:
- '*': deny
- list:
- '*': deny
- splitable: deny
- dynamicschedtags:
- '*': deny
- recyclebins:
- '*': deny
- secgroups:
- '*': deny
- list: allow
- get: allow
- hosts:
- '*': allow
- perform:
- '*': allow
- login-info: deny
- servers:
- '*': allow
- perform:
- '*': allow
- start: deny
- stop: deny
- change-owner: deny
- add-secgroup: deny
- set-secgroup: deny
- revoke-secgroup: deny
- revoke-admin-secgroup: deny
- assign-secgroup: deny
- assign-admin-secgroup: deny
- image:
- '*':
- '*': allow
- events:
- '*': deny
- identity:
- '*':
- '*': deny
- list: allow
- get: allow
- users:
- '*': deny
- create: allow
- list: allow
- get: allow
- events:
- '*': deny
- monitor:
- events:
- '*': deny
- '*':
- '*': allow
- log:
- actions:
- list:
- list: allow
- get: allow
- '*': deny
- splitable: deny
- `
- var secAdminPolicy = `
- policy:
- '*':
- events:
- '*': deny
- compute:
- events:
- '*': deny
- '*':
- '*': deny
- get: allow
- list: allow
- disks:
- '*': deny
- delete: allow
- get: allow
- list: allow
- perform:
- '*': deny
- disable: allow
- change-owner: allow
- purge: allow
- dynamicschedtags:
- '*': allow
- recyclebins:
- '*': allow
- get: allow
- list: allow
- schedpolicies:
- '*': deny
- schedtags:
- '*': deny
- secgroups:
- '*': allow
- secgrouprules:
- '*': allow
- servers:
- '*': deny
- delete: allow
- get:
- '*': allow
- vnc: deny
- list: allow
- perform:
- '*': deny
- disable: allow
- change-owner: allow
- add-secgroup: allow
- set-secgroup: allow
- revoke-secgroup: allow
- revoke-admin-secgroup: allow
- assign-secgroup: allow
- assign-admin-secgroup: allow
- purge: allow
- notify:
- events:
- '*': deny
- '*':
- '*': allow
- identity:
- events:
- '*': deny
- users:
- create: deny
- '*': allow
- '*':
- '*': allow
- image:
- events:
- '*': deny
- '*':
- '*': deny
- delete: allow
- get: allow
- list: allow
- perform:
- '*': deny
- disable: allow
- change-owner: allow
- purge: allow
- log:
- '*':
- '*': deny
- get: allow
- list: allow
- perform:
- '*': deny
- purge-splitable: allow
- yunionconf:
- '*':
- '*': allow
- `
- var adtAdminPolicy = `
- policy:
- '*':
- '*':
- '*': deny
- events:
- '*': allow
- log:
- '*':
- '*': deny
- get: allow
- list: allow
- perform:
- '*': deny
- purge-splitable: allow
- identity:
- '*':
- '*': deny
- `
- var normalUserPolicy = `
- policy:
- compute:
- '*':
- '*': deny
- list: allow
- get: allow
- servers:
- '*': allow
- delete: deny
- perform:
- disable: deny
- clone: deny
- snapshot-and-clone: deny
- purge: deny
- change-ipaddr: deny
- change-bandwidth: deny
- change-config: deny
- change-owner: deny
- change-disk-storage: deny
- image:
- images:
- '*': deny
- list: allow
- get: allow
- `
- func toJson(yamlDef string) jsonutils.JSONObject {
- yaml, err := jsonutils.ParseYAML(yamlDef)
- if err != nil {
- log.Errorf("fail to parse %s: %s", yamlDef, err)
- }
- return yaml
- }
- var predefinedPolicyData = []SPolicyData{
- {
- Name: "sys-opsadmin",
- Scope: rbacscope.ScopeSystem,
- Policy: toJson(opsAdminPolicy),
- Description: "System-wide operation manager",
- DescriptionCN: "全局系统管理员权限",
- },
- {
- Name: "sys-secadmin",
- Scope: rbacscope.ScopeSystem,
- Policy: toJson(secAdminPolicy),
- Description: "System-wide security manager",
- DescriptionCN: "全局安全管理员权限",
- },
- {
- Name: "sys-adtadmin",
- Scope: rbacscope.ScopeSystem,
- Policy: toJson(adtAdminPolicy),
- Description: "System-wide audit manager",
- DescriptionCN: "全局审计管理员权限",
- },
- {
- Name: "domain-opsadmin",
- Scope: rbacscope.ScopeDomain,
- Policy: toJson(opsAdminPolicy),
- Description: "Domain-wide operation manager",
- DescriptionCN: "组织系统管理员权限",
- },
- {
- Name: "domain-secadmin",
- Scope: rbacscope.ScopeDomain,
- Policy: toJson(secAdminPolicy),
- Description: "Domain-wide security manager",
- DescriptionCN: "组织安全管理员权限",
- },
- {
- Name: "domain-adtadmin",
- Scope: rbacscope.ScopeDomain,
- Policy: toJson(adtAdminPolicy),
- Description: "Domain-wide audit manager",
- DescriptionCN: "组织审计管理员权限",
- },
- {
- Name: "normal-user",
- Scope: rbacscope.ScopeProject,
- Policy: toJson(normalUserPolicy),
- Description: "Default policy for normal user",
- DescriptionCN: "普通用户默认权限",
- },
- }
|