mirror of https://github.com/jumpserver/jumpserver
perf: Remove account_deleted, password_error, no_admin_account others risk
parent
6e83420e67
commit
153be1508f
|
@ -43,25 +43,22 @@ class PamDashboardApi(APIView):
|
||||||
'total_sudo_changed_accounts': ('sudo_changed_count', Q(risk='sudo_changed')),
|
'total_sudo_changed_accounts': ('sudo_changed_count', Q(risk='sudo_changed')),
|
||||||
'total_authorized_keys_changed_accounts': (
|
'total_authorized_keys_changed_accounts': (
|
||||||
'authorized_keys_changed_count', Q(risk='authorized_keys_changed')),
|
'authorized_keys_changed_count', Q(risk='authorized_keys_changed')),
|
||||||
'total_account_deleted_accounts': ('account_deleted_count', Q(risk='account_deleted')),
|
|
||||||
'total_password_expired_accounts': ('password_expired_count', Q(risk='password_expired')),
|
'total_password_expired_accounts': ('password_expired_count', Q(risk='password_expired')),
|
||||||
'total_long_time_password_accounts': ('long_time_password_count', Q(risk='long_time_password')),
|
'total_long_time_password_accounts': ('long_time_password_count', Q(risk='long_time_password')),
|
||||||
'total_weak_password_accounts': ('weak_password_count', Q(risk='weak_password')),
|
'total_weak_password_accounts': ('weak_password_count', Q(risk='weak_password')),
|
||||||
'total_leaked_password_accounts': ('leaked_password_count', Q(risk='leaked_password')),
|
'total_leaked_password_accounts': ('leaked_password_count', Q(risk='leaked_password')),
|
||||||
'total_repeated_password_accounts': ('repeated_password_count', Q(risk='repeated_password')),
|
'total_repeated_password_accounts': ('repeated_password_count', Q(risk='repeated_password')),
|
||||||
'total_password_error_accounts': ('password_error_count', Q(risk='password_error')),
|
|
||||||
'total_no_admin_account_accounts': ('no_admin_account_count', Q(risk='no_admin_account')),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
aggregations = {
|
aggregations = {
|
||||||
agg_key: Count('account_id', distinct=True, filter=agg_filter)
|
agg_key: Count('id', distinct=True, filter=agg_filter)
|
||||||
for param_key, (agg_key, agg_filter) in agg_map.items()
|
for param_key, (agg_key, agg_filter) in agg_map.items()
|
||||||
if _all or query_params.get(param_key)
|
if _all or query_params.get(param_key)
|
||||||
}
|
}
|
||||||
|
|
||||||
data = {}
|
data = {}
|
||||||
if aggregations:
|
if aggregations:
|
||||||
account_stats = AccountRisk.objects.filter(account__isnull=False).aggregate(**aggregations)
|
account_stats = AccountRisk.objects.aggregate(**aggregations)
|
||||||
data = {param_key: account_stats.get(agg_key) for param_key, (agg_key, _) in agg_map.items() if
|
data = {param_key: account_stats.get(agg_key) for param_key, (agg_key, _) in agg_map.items() if
|
||||||
agg_key in account_stats}
|
agg_key in account_stats}
|
||||||
|
|
||||||
|
|
|
@ -142,15 +142,11 @@ class Migration(migrations.Migration):
|
||||||
("groups_changed", "Groups change"),
|
("groups_changed", "Groups change"),
|
||||||
("sudoers_changed", "Sudo changed"),
|
("sudoers_changed", "Sudo changed"),
|
||||||
("authorized_keys_changed", "Authorized keys changed"),
|
("authorized_keys_changed", "Authorized keys changed"),
|
||||||
("account_deleted", "Account delete"),
|
|
||||||
("password_expired", "Password expired"),
|
("password_expired", "Password expired"),
|
||||||
("long_time_password", "Long time no change"),
|
("long_time_password", "Long time no change"),
|
||||||
("weak_password", "Weak password"),
|
("weak_password", "Weak password"),
|
||||||
("leaked_password", "Leaked password"),
|
("leaked_password", "Leaked password"),
|
||||||
("repeated_password", "Repeated password"),
|
("repeated_password", "Repeated password"),
|
||||||
("password_error", "Password error"),
|
|
||||||
("no_admin_account", "No admin account"),
|
|
||||||
("others", "Others"),
|
|
||||||
],
|
],
|
||||||
max_length=128,
|
max_length=128,
|
||||||
verbose_name="Risk",
|
verbose_name="Risk",
|
||||||
|
|
|
@ -1,9 +1,8 @@
|
||||||
from itertools import islice
|
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.db.models import TextChoices
|
from django.db.models import TextChoices
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
from itertools import islice
|
||||||
|
|
||||||
from common.const import ConfirmOrIgnore
|
from common.const import ConfirmOrIgnore
|
||||||
from common.db.models import JMSBaseModel
|
from common.db.models import JMSBaseModel
|
||||||
|
@ -45,16 +44,12 @@ class RiskChoice(TextChoices):
|
||||||
group_changed = 'groups_changed', _('Groups change') # 组变更, 确认
|
group_changed = 'groups_changed', _('Groups change') # 组变更, 确认
|
||||||
sudo_changed = 'sudoers_changed', _('Sudo changed') # sudo 变更, 确认
|
sudo_changed = 'sudoers_changed', _('Sudo changed') # sudo 变更, 确认
|
||||||
authorized_keys_changed = 'authorized_keys_changed', _('Authorized keys changed') # authorized_keys 变更, 确认
|
authorized_keys_changed = 'authorized_keys_changed', _('Authorized keys changed') # authorized_keys 变更, 确认
|
||||||
account_deleted = 'account_deleted', _('Account delete') # 账号被删除, 确认
|
|
||||||
password_expired = 'password_expired', _('Password expired') # 密码过期, 修改密码
|
password_expired = 'password_expired', _('Password expired') # 密码过期, 修改密码
|
||||||
long_time_password = 'long_time_password', _('Long time no change') # 好久没改密码的账号, 改密码
|
long_time_password = 'long_time_password', _('Long time no change') # 好久没改密码的账号, 改密码
|
||||||
|
|
||||||
weak_password = 'weak_password', _('Weak password') # 弱密码, 改密
|
weak_password = 'weak_password', _('Weak password') # 弱密码, 改密
|
||||||
leaked_password = 'leaked_password', _('Leaked password') # 可能泄露的密码, 改密
|
leaked_password = 'leaked_password', _('Leaked password') # 可能泄露的密码, 改密
|
||||||
repeated_password = 'repeated_password', _('Repeated password') # 重复度高的密码, 改密
|
repeated_password = 'repeated_password', _('Repeated password') # 重复度高的密码, 改密
|
||||||
password_error = 'password_error', _('Password error') # 密码错误, 修改账号
|
|
||||||
no_admin_account = 'no_admin_account', _('No admin account') # 无管理员账号, 设置账号
|
|
||||||
others = 'others', _('Others') # 其他风险, 确认
|
|
||||||
|
|
||||||
|
|
||||||
class AccountRisk(JMSOrgBaseModel):
|
class AccountRisk(JMSOrgBaseModel):
|
||||||
|
|
Loading…
Reference in New Issue