forked from xiongjungit/SecurityManageFramwork-SeMF
-
Notifications
You must be signed in to change notification settings - Fork 0
/
initdata.py
285 lines (235 loc) · 14.1 KB
/
initdata.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
#! /usr/bin/python3
# -*- coding:UTF-8 -*-
import django,os
def initmenu():
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'SeMF.settings')
django.setup()
from RBAC import models
menu_list = [
{'title':'资产管理','icon':""},
{'title':'网络映射','icon':""},
{'title':'漏洞管理','icon':""},
{'title':'任务管理','icon':""},
{'title':'报表中心','icon':""},
{'title':'知识共享','icon':""},
{'title':'用户管理','icon':""},
]
for item in menu_list:
models.Menu.objects.get_or_create(
title = item['title'],
icon = item['icon']
)
submain_list = [
{'title':'资产列表','icon':"",'parent_title':'资产管理'},
{'title':'资产审批','icon':"",'parent_title':'资产管理'},
{'title':'映射列表','icon':"",'parent_title':'网络映射'},
{'title':'漏洞列表','icon':"",'parent_title':'漏洞管理'},
{'title':'漏洞库','icon':"",'parent_title':'漏洞管理'},
{'title':'任务列表','icon':"",'parent_title':'任务管理'},
{'title':'任务审批','icon':"",'parent_title':'任务管理'},
{'title':'基础报表','icon':"",'parent_title':'报表中心'},
{'title':'知识库','icon':"",'parent_title':'知识共享'},
{'title':'用户列表','icon':"",'parent_title':'用户管理'},
{'title':'用户审批','icon':"",'parent_title':'用户管理'},
]
for item in submain_list:
models.Menu.objects.get_or_create(
title = item['title'],
icon = item['icon'],
parent = models.Menu.objects.filter(title = item['parent_title']).first(),
)
permission_list = [
{'title':'资产列表','url':'/asset/user/','is_menu':True,'menu_title':'资产列表'},
{'title':'资产审批','url':'/asset/request/','is_menu':True,'menu_title':'资产审批'},
{'title':'资产指定','url':'/asset/manage/','is_menu':False},
{'title':'映射列表','url':'/mapped/','is_menu':True,'menu_title':'映射列表'},
{'title':'漏洞操作','url':'/vuln/manage/','is_menu':False},
{'title':'漏洞列表','url':'/vuln/user/','is_menu':True,'menu_title':'漏洞列表'},
{'title':'漏洞库','url':'/vuln/cnvd/','is_menu':True,'menu_title':'漏洞库'},
{'title':'任务列表','url':'/task/user/','is_menu':True,'menu_title':'任务列表'},
{'title':'任务审批','url':'/task/request/','is_menu':True,'menu_title':'任务审批'},
{'title':'扫描同步','url':'/task/manage/','is_menu':False},
{'title':'基础报表','url':'/chart/','is_menu':True,'menu_title':'基础报表'},
{'title':'知识库','url':'/article/user/','is_menu':True,'menu_title':'知识库'},
{'title':'知识库更新','url':'/article/manage/','is_menu':False},
{'title':'用户列表','url':'/manage/user/','is_menu':True,'menu_title':'用户列表'},
{'title':'用户审批','url':'/manage/userrequest/','is_menu':True,'menu_title':'用户审批'},
]
for item in permission_list:
permission_tup = models.Permission.objects.get_or_create(
title=item['title'],
url = item['url']
)
permission = permission_tup[0]
if item['is_menu']:
permission.menu = models.Menu.objects.filter(title = item['menu_title']).first()
permission.save()
def initassettype():
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'SeMF.settings')
django.setup()
from AssetManage.models import AssetType
assettype_list = [
{'name':'网络设备','description':'主要为网络设备,比如,服务器、防火墙、摄像头等','parent':''},
{'name':'应用资产','description':'主要为网站、应用系统等','parent':''},
{'name':'APP资产','description':'主要为网站、应用系统等','parent':''},
{'name':'特殊资产','description':'主要网段等','parent':''},
{'name':'服务器','description':'资产发现默认','parent':'网络设备'},
{'name':'实体机','description':'物理服务器','parent':'网络设备'},
{'name':'虚拟机','description':'VM虚拟机','parent':'网络设备'},
{'name':'路由器','description':'路由器设备','parent':'网络设备'},
{'name':'交换机','description':'交换机设备','parent':'网络设备'},
{'name':'安全设备','description':'安全设备','parent':'网络设备'},
{'name':'打印机','description':'打印机设备','parent':'网络设备'},
{'name':'摄像头','description':'摄像头设备','parent':'网络设备'},
{'name':'其他设备','description':'其他设备','parent':'网络设备'},
{'name':'WEB应用','description':'主要为web网站等','parent':'应用资产'},
{'name':'移动APP','description':'主要为apk、ipa、appx等','parent':'APP资产'},
{'name':'IP地址段','description':'主要网段等','parent':'特殊资产'},
{'name':'公网IP','description':'外网ip','parent':'特殊资产'},
]
for item in assettype_list:
if item['parent'] == '':
parent_assettype=''
else:
parent_assettype = AssetType.objects.filter(name=item['parent']).first()
if parent_assettype:
AssetType.objects.get_or_create(
name = item['name'],
description = item['description'],
parent = parent_assettype,
)
else:
AssetType.objects.get_or_create(
name = item['name'],
description = item['description'],
)
print('initassettype ok')
def initassettypeinfo():
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'SeMF.settings')
django.setup()
from AssetManage.models import AssetType,AssetTypeInfo
role_list =[
{'name':'设备信息','key':'os','type_connect':'网络设备'},
{'name':'端口信息','key':'port','type_connect':'网络设备'},
{'name':'端口信息','key':'port','type_connect':'公网IP'},
{'name':'安全隐患','key':'vuln','type_connect':'网络设备'},
{'name':'安全隐患','key':'vuln','type_connect':'应用资产'},
{'name':'安全隐患','key':'vuln','type_connect':'APP资产'},
{'name':'Web信息','key':'internet','type_connect':'应用资产'},
{'name':'Web信息','key':'internet','type_connect':'APP资产'},
{'name':'插件信息','key':'plugin','type_connect':'应用资产'},
{'name':'插件信息','key':'plugin','type_connect':'APP资产'},
{'name':'附加文件','key':'file','type_connect':'网络设备'},
{'name':'附加文件','key':'file','type_connect':'应用资产'},
{'name':'附加文件','key':'file','type_connect':'APP资产'},
]
for item in role_list:
asset_typeinfo = AssetTypeInfo.objects.get_or_create(
key = item['key'],
name = item['name']
)
asset_typeinfo = asset_typeinfo[0]
asset_typeinfo.type_connect.add(AssetType.objects.filter(name=item['type_connect']).first())
asset_typeinfo.save()
print('initassettypeinfo ok')
def initrole():
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'SeMF.settings')
django.setup()
from RBAC.models import Role,Permission
permissions_list=[
{'title':'安全管理员','permissions':'资产列表'},
{'title':'安全管理员','permissions':'资产审批'},
{'title':'安全管理员','permissions':'资产指定'},
{'title':'安全管理员','permissions':'映射列表'},
{'title':'安全管理员','permissions':'漏洞操作'},
{'title':'安全管理员','permissions':'漏洞列表'},
{'title':'安全管理员','permissions':'漏洞库'},
{'title':'安全管理员','permissions':'任务列表'},
{'title':'安全管理员','permissions':'任务审批'},
{'title':'安全管理员','permissions':'扫描同步'},
{'title':'安全管理员','permissions':'基础报表'},
{'title':'安全管理员','permissions':'知识库'},
{'title':'安全管理员','permissions':'知识库更新'},
{'title':'安全管理员','permissions':'用户列表'},
{'title':'安全管理员','permissions':'用户审批'},
{'title':'运维管理员','permissions':'资产列表'},
{'title':'运维管理员','permissions':'漏洞列表'},
{'title':'运维管理员','permissions':'漏洞库'},
{'title':'安全管理员','permissions':'任务列表'},
{'title':'运维管理员','permissions':'基础报表'},
{'title':'运维管理员','permissions':'知识库'},
{'title':'网络管理员','permissions':'资产列表'},
{'title':'网络管理员','permissions':'映射列表'},
{'title':'网络管理员','permissions':'漏洞列表'},
{'title':'网络管理员','permissions':'漏洞库'},
{'title':'安全管理员','permissions':'任务列表'},
{'title':'网络管理员','permissions':'基础报表'},
{'title':'网络管理员','permissions':'知识库'},
{'title':'业务负责人','permissions':'资产列表'},
{'title':'业务负责人','permissions':'漏洞列表'},
{'title':'业务负责人','permissions':'漏洞库'},
{'title':'安全管理员','permissions':'任务列表'},
{'title':'业务负责人','permissions':'基础报表'},
{'title':'业务负责人','permissions':'知识库'},
]
for item in permissions_list:
role_list = Role.objects.get_or_create(title=item['title'])
role_list[0].permissions.add(Permission.objects.filter(title = item['permissions']).first())
role_list[0].save()
print('initrole ok')
def initarea():
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'SeMF.settings')
django.setup()
from RBAC.models import Area
area_list =[
{'name':'华北'},
{'name':'华南'},
{'name':'华东'},
{'name':'华中'},
]
for item in area_list:
Area.objects.get_or_create(name=item['name'])
print('initrole ok')
def initsuperuser():
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'SeMF.settings')
django.setup()
from RBAC.models import Role
from django.contrib.auth.models import User
user_manage_list = User.objects.filter(is_superuser=True)
role = Role.objects.filter(title='安全管理员').first()
for user in user_manage_list:
user.profile.roles.add(role)
user.save()
print('initsuperuser ok')
def initarticle():
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'SeMF.settings')
django.setup()
from ArticleManage.models import ArticleType
articletype_list = [
{'article_type_name':'通告','article_type_body':'通告类型','parent':''},
{'article_type_name':'科普','article_type_body':'通告类型','parent':''},
{'article_type_name':'系统通告','article_type_body':'系统通告类','parent':'通告'},
{'article_type_name':'安全预警','article_type_body':'漏洞预警类','parent':'通告'},
{'article_type_name':'安全开发','article_type_body':'该类包含安全开发类知识','parent':'科普'},
{'article_type_name':'安全培训','article_type_body':'该类包含安全培训类知识','parent':'科普'},
{'article_type_name':'漏洞修复方案','article_type_body':'该类包含安全漏洞修复方案/修复指南','parent':'科普'},
]
for item in articletype_list:
articletype=ArticleType.objects.get_or_create(
article_type_name = item['article_type_name'],
article_type_body = item['article_type_body'],
)
if item['parent']:
parent = ArticleType.objects.filter(article_type_name=item['parent']).first()
if parent:
articletype[0].parent=parent
articletype[0].save()
print('initarticle ok')
if __name__ == "__main__":
initmenu()
initassettype()
initassettypeinfo()
initrole()
initarea()
initsuperuser()
initarticle()