mirror of https://github.com/jumpserver/jumpserver
perf: Gather account manager
parent
6036332743
commit
b41a25e8f8
|
@ -94,7 +94,7 @@ class AnalyseAccountRisk:
|
||||||
continue
|
continue
|
||||||
risks.append(
|
risks.append(
|
||||||
dict(
|
dict(
|
||||||
asset=ori_account.asset,
|
asset_id=str(ori_account.asset_id),
|
||||||
username=ori_account.username,
|
username=ori_account.username,
|
||||||
risk=k + "_changed",
|
risk=k + "_changed",
|
||||||
detail={"diff": v},
|
detail={"diff": v},
|
||||||
|
@ -103,7 +103,7 @@ class AnalyseAccountRisk:
|
||||||
self.save_or_update_risks(risks)
|
self.save_or_update_risks(risks)
|
||||||
|
|
||||||
def _analyse_datetime_changed(self, ori_account, d, asset, username):
|
def _analyse_datetime_changed(self, ori_account, d, asset, username):
|
||||||
basic = {"asset": asset, "username": username}
|
basic = {"asset_id": str(asset.id), "username": username}
|
||||||
|
|
||||||
risks = []
|
risks = []
|
||||||
for item in self.datetime_check_items:
|
for item in self.datetime_check_items:
|
||||||
|
@ -128,14 +128,14 @@ class AnalyseAccountRisk:
|
||||||
|
|
||||||
def save_or_update_risks(self, risks):
|
def save_or_update_risks(self, risks):
|
||||||
# 提前取出来,避免每次都查数据库
|
# 提前取出来,避免每次都查数据库
|
||||||
assets = {r["asset"] for r in risks}
|
asset_ids = {r["asset_id"] for r in risks}
|
||||||
assets_risks = AccountRisk.objects.filter(asset__in=assets)
|
assets_risks = AccountRisk.objects.filter(asset_id__in=asset_ids)
|
||||||
assets_risks = {f"{r.asset_id}_{r.username}_{r.risk}": r for r in assets_risks}
|
assets_risks = {f"{r.asset_id}_{r.username}_{r.risk}": r for r in assets_risks}
|
||||||
|
|
||||||
for d in risks:
|
for d in risks:
|
||||||
detail = d.pop("detail", {})
|
detail = d.pop("detail", {})
|
||||||
detail["datetime"] = self.now.isoformat()
|
detail["datetime"] = self.now.isoformat()
|
||||||
key = f"{d['asset'].id}_{d['username']}_{d['risk']}"
|
key = f"{d['asset_id']}_{d['username']}_{d['risk']}"
|
||||||
found = assets_risks.get(key)
|
found = assets_risks.get(key)
|
||||||
|
|
||||||
if not found:
|
if not found:
|
||||||
|
@ -237,9 +237,7 @@ class GatherAccountsManager(AccountBasePlaybookManager):
|
||||||
for asset_id, username in accounts:
|
for asset_id, username in accounts:
|
||||||
self.ori_asset_usernames[str(asset_id)].add(username)
|
self.ori_asset_usernames[str(asset_id)].add(username)
|
||||||
|
|
||||||
ga_accounts = GatheredAccount.objects.filter(asset__in=assets).prefetch_related(
|
ga_accounts = GatheredAccount.objects.filter(asset__in=assets)
|
||||||
"asset"
|
|
||||||
)
|
|
||||||
for account in ga_accounts:
|
for account in ga_accounts:
|
||||||
self.ori_gathered_usernames[str(account.asset_id)].add(account.username)
|
self.ori_gathered_usernames[str(account.asset_id)].add(account.username)
|
||||||
key = "{}_{}".format(account.asset_id, account.username)
|
key = "{}_{}".format(account.asset_id, account.username)
|
||||||
|
|
Loading…
Reference in New Issue