mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-06-27 07:17:10 +00:00
fix: 修改 job 审计日志
This commit is contained in:
parent
40b49e258e
commit
a79a766a6a
@ -11,15 +11,14 @@ from rest_framework.permissions import IsAuthenticated
|
|||||||
from common.api import JMSGenericViewSet
|
from common.api import JMSGenericViewSet
|
||||||
from common.drf.filters import DatetimeRangeFilter
|
from common.drf.filters import DatetimeRangeFilter
|
||||||
from common.plugins.es import QuerySet as ESQuerySet
|
from common.plugins.es import QuerySet as ESQuerySet
|
||||||
from ops.models.job import JobAuditLog
|
|
||||||
from orgs.mixins.api import OrgGenericViewSet, OrgBulkModelViewSet
|
from orgs.mixins.api import OrgGenericViewSet, OrgBulkModelViewSet
|
||||||
from orgs.utils import current_org, tmp_to_root_org
|
from orgs.utils import current_org, tmp_to_root_org
|
||||||
from orgs.models import Organization
|
from orgs.models import Organization
|
||||||
from users.models import User
|
from users.models import User
|
||||||
from .backends import TYPE_ENGINE_MAPPING
|
from .backends import TYPE_ENGINE_MAPPING
|
||||||
from .const import ActivityChoices
|
from .const import ActivityChoices
|
||||||
from .models import FTPLog, UserLoginLog, OperateLog, PasswordChangeLog, ActivityLog
|
from .models import FTPLog, UserLoginLog, OperateLog, PasswordChangeLog, ActivityLog, JobLog
|
||||||
from .serializers import FTPLogSerializer, UserLoginLogSerializer, JobAuditLogSerializer
|
from .serializers import FTPLogSerializer, UserLoginLogSerializer, JobLogSerializer
|
||||||
from .serializers import (
|
from .serializers import (
|
||||||
OperateLogSerializer, OperateLogActionDetailSerializer,
|
OperateLogSerializer, OperateLogActionDetailSerializer,
|
||||||
PasswordChangeLogSerializer, ActivityUnionLogSerializer,
|
PasswordChangeLogSerializer, ActivityUnionLogSerializer,
|
||||||
@ -27,13 +26,13 @@ from .serializers import (
|
|||||||
|
|
||||||
|
|
||||||
class JobAuditViewSet(OrgBulkModelViewSet):
|
class JobAuditViewSet(OrgBulkModelViewSet):
|
||||||
model = JobAuditLog
|
model = JobLog
|
||||||
extra_filter_backends = [DatetimeRangeFilter]
|
extra_filter_backends = [DatetimeRangeFilter]
|
||||||
date_range_filter_fields = [
|
date_range_filter_fields = [
|
||||||
('date_start', ('date_from', 'date_to'))
|
('date_start', ('date_from', 'date_to'))
|
||||||
]
|
]
|
||||||
search_fields = ['creator__name', 'material']
|
search_fields = ['creator__name', 'material']
|
||||||
serializer_class = JobAuditLogSerializer
|
serializer_class = JobLogSerializer
|
||||||
ordering = ['-date_start']
|
ordering = ['-date_start']
|
||||||
http_method_names = ('get', 'head', 'options')
|
http_method_names = ('get', 'head', 'options')
|
||||||
|
|
||||||
|
@ -27,4 +27,16 @@ class Migration(migrations.Migration):
|
|||||||
'ordering': ('-datetime',),
|
'ordering': ('-datetime',),
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='JobLog',
|
||||||
|
fields=[
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': 'Job audit log',
|
||||||
|
'proxy': True,
|
||||||
|
'indexes': [],
|
||||||
|
'constraints': [],
|
||||||
|
},
|
||||||
|
bases=('ops.jobexecution',),
|
||||||
|
),
|
||||||
]
|
]
|
||||||
|
@ -7,6 +7,7 @@ from django.utils.translation import gettext, ugettext_lazy as _
|
|||||||
|
|
||||||
from common.db.encoder import ModelJSONFieldEncoder
|
from common.db.encoder import ModelJSONFieldEncoder
|
||||||
from common.utils import lazyproperty
|
from common.utils import lazyproperty
|
||||||
|
from ops.models import JobExecution
|
||||||
from orgs.mixins.models import OrgModelMixin, Organization
|
from orgs.mixins.models import OrgModelMixin, Organization
|
||||||
from orgs.utils import current_org
|
from orgs.utils import current_org
|
||||||
from .const import (
|
from .const import (
|
||||||
@ -24,9 +25,20 @@ __all__ = [
|
|||||||
"ActivityLog",
|
"ActivityLog",
|
||||||
"PasswordChangeLog",
|
"PasswordChangeLog",
|
||||||
"UserLoginLog",
|
"UserLoginLog",
|
||||||
|
"JobLog"
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
class JobLog(JobExecution):
|
||||||
|
@property
|
||||||
|
def creator_name(self):
|
||||||
|
return self.creator.name
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
proxy = True
|
||||||
|
verbose_name = _("Job audit log")
|
||||||
|
|
||||||
|
|
||||||
class FTPLog(OrgModelMixin):
|
class FTPLog(OrgModelMixin):
|
||||||
id = models.UUIDField(default=uuid.uuid4, primary_key=True)
|
id = models.UUIDField(default=uuid.uuid4, primary_key=True)
|
||||||
user = models.CharField(max_length=128, verbose_name=_("User"))
|
user = models.CharField(max_length=128, verbose_name=_("User"))
|
||||||
|
@ -7,7 +7,6 @@ from audits.backends.db import OperateLogStore
|
|||||||
from common.serializers.fields import LabeledChoiceField
|
from common.serializers.fields import LabeledChoiceField
|
||||||
from common.utils import reverse, i18n_trans
|
from common.utils import reverse, i18n_trans
|
||||||
from common.utils.timezone import as_current_tz
|
from common.utils.timezone import as_current_tz
|
||||||
from ops.models.job import JobAuditLog
|
|
||||||
from ops.serializers.job import JobExecutionSerializer
|
from ops.serializers.job import JobExecutionSerializer
|
||||||
from terminal.models import Session
|
from terminal.models import Session
|
||||||
from . import models
|
from . import models
|
||||||
@ -18,9 +17,9 @@ from .const import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class JobAuditLogSerializer(JobExecutionSerializer):
|
class JobLogSerializer(JobExecutionSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = JobAuditLog
|
model = models.JobLog
|
||||||
read_only_fields = [
|
read_only_fields = [
|
||||||
"id", "material", "time_cost", 'date_start',
|
"id", "material", "time_cost", 'date_start',
|
||||||
'date_finished', 'date_created',
|
'date_finished', 'date_created',
|
||||||
|
@ -159,7 +159,7 @@ def on_django_start_set_operate_log_monitor_models(sender, **kwargs):
|
|||||||
'MessageContent', 'SiteMessage',
|
'MessageContent', 'SiteMessage',
|
||||||
'PlatformAutomation', 'PlatformProtocol', 'Protocol',
|
'PlatformAutomation', 'PlatformProtocol', 'Protocol',
|
||||||
'HistoricalAccount', 'GatheredUser', 'ApprovalRule',
|
'HistoricalAccount', 'GatheredUser', 'ApprovalRule',
|
||||||
'BaseAutomation', 'CeleryTask', 'Command', 'JobAuditLog',
|
'BaseAutomation', 'CeleryTask', 'Command', 'JobLog',
|
||||||
'ConnectionToken', 'SessionJoinRecord',
|
'ConnectionToken', 'SessionJoinRecord',
|
||||||
'HistoricalJob', 'Status', 'TicketStep', 'Ticket',
|
'HistoricalJob', 'Status', 'TicketStep', 'Ticket',
|
||||||
'UserAssetGrantedTreeNodeRelation', 'TicketAssignee',
|
'UserAssetGrantedTreeNodeRelation', 'TicketAssignee',
|
||||||
|
@ -13,11 +13,11 @@ from rest_framework.views import APIView
|
|||||||
from assets.const import AllTypes
|
from assets.const import AllTypes
|
||||||
from assets.models import Asset
|
from assets.models import Asset
|
||||||
from audits.const import LoginStatusChoices
|
from audits.const import LoginStatusChoices
|
||||||
from audits.models import UserLoginLog, PasswordChangeLog, OperateLog, FTPLog
|
from audits.models import UserLoginLog, PasswordChangeLog, OperateLog, FTPLog, JobLog
|
||||||
from common.utils import lazyproperty
|
from common.utils import lazyproperty
|
||||||
from common.utils.timezone import local_now, local_zero_hour
|
from common.utils.timezone import local_now, local_zero_hour
|
||||||
from ops.const import JobStatus
|
from ops.const import JobStatus
|
||||||
from ops.models import Job, JobExecution, JobAuditLog
|
from ops.models import Job, JobExecution
|
||||||
from orgs.caches import OrgResourceStatisticsCache
|
from orgs.caches import OrgResourceStatisticsCache
|
||||||
from orgs.utils import current_org
|
from orgs.utils import current_org
|
||||||
from terminal.models import Session, Command
|
from terminal.models import Session, Command
|
||||||
@ -123,7 +123,7 @@ class DateTimeMixin:
|
|||||||
@lazyproperty
|
@lazyproperty
|
||||||
def job_logs_queryset(self):
|
def job_logs_queryset(self):
|
||||||
t = self.days_to_datetime
|
t = self.days_to_datetime
|
||||||
queryset = JobAuditLog.objects.filter(date_created__gte=t)
|
queryset = JobLog.objects.filter(date_created__gte=t)
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
@lazyproperty
|
@lazyproperty
|
||||||
@ -138,7 +138,7 @@ class DatesLoginMetricMixin:
|
|||||||
command_queryset: Command.objects
|
command_queryset: Command.objects
|
||||||
sessions_queryset: Session.objects
|
sessions_queryset: Session.objects
|
||||||
ftp_logs_queryset: OperateLog.objects
|
ftp_logs_queryset: OperateLog.objects
|
||||||
job_logs_queryset: JobAuditLog.objects
|
job_logs_queryset: JobLog.objects
|
||||||
login_logs_queryset: UserLoginLog.objects
|
login_logs_queryset: UserLoginLog.objects
|
||||||
operate_logs_queryset: OperateLog.objects
|
operate_logs_queryset: OperateLog.objects
|
||||||
password_change_logs_queryset: PasswordChangeLog.objects
|
password_change_logs_queryset: PasswordChangeLog.objects
|
||||||
|
@ -64,5 +64,8 @@ class Migration(migrations.Migration):
|
|||||||
name='material',
|
name='material',
|
||||||
field=models.CharField(blank=True, default='', max_length=1024, null=True, verbose_name='Material'),
|
field=models.CharField(blank=True, default='', max_length=1024, null=True, verbose_name='Material'),
|
||||||
),
|
),
|
||||||
|
migrations.DeleteModel(
|
||||||
|
name='JobAuditLog',
|
||||||
|
),
|
||||||
migrations.RunPython(compatible),
|
migrations.RunPython(compatible),
|
||||||
]
|
]
|
||||||
|
@ -9,7 +9,7 @@ from django.db import models
|
|||||||
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 _
|
||||||
|
|
||||||
__all__ = ["Job", "JobExecution", "JobAuditLog"]
|
__all__ = ["Job", "JobExecution"]
|
||||||
|
|
||||||
from simple_history.models import HistoricalRecords
|
from simple_history.models import HistoricalRecords
|
||||||
|
|
||||||
@ -362,11 +362,3 @@ class JobExecution(JMSOrgBaseModel):
|
|||||||
ordering = ['-date_created']
|
ordering = ['-date_created']
|
||||||
|
|
||||||
|
|
||||||
class JobAuditLog(JobExecution):
|
|
||||||
@property
|
|
||||||
def creator_name(self):
|
|
||||||
return self.creator.name
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
proxy = True
|
|
||||||
verbose_name = _("Job audit log")
|
|
||||||
|
@ -30,7 +30,7 @@ system_user_perms = (
|
|||||||
_auditor_perms = (
|
_auditor_perms = (
|
||||||
('rbac', 'menupermission', 'view', 'audit'),
|
('rbac', 'menupermission', 'view', 'audit'),
|
||||||
('audits', '*', '*', '*'),
|
('audits', '*', '*', '*'),
|
||||||
('ops', 'jobauditlog', '*', '*'),
|
('audits', 'joblog', '*', '*'),
|
||||||
('terminal', 'commandstorage', 'view', 'commandstorage'),
|
('terminal', 'commandstorage', 'view', 'commandstorage'),
|
||||||
('terminal', 'sessionreplay', 'view,download', 'sessionreplay'),
|
('terminal', 'sessionreplay', 'view,download', 'sessionreplay'),
|
||||||
('terminal', 'session', '*', '*'),
|
('terminal', 'session', '*', '*'),
|
||||||
|
@ -79,6 +79,7 @@ exclude_permissions = (
|
|||||||
('ops', 'celerytaskexecution', 'add,change,delete', 'celerytaskexecution'),
|
('ops', 'celerytaskexecution', 'add,change,delete', 'celerytaskexecution'),
|
||||||
('orgs', 'organizationmember', '*', '*'),
|
('orgs', 'organizationmember', '*', '*'),
|
||||||
('settings', 'setting', 'add,change,delete', 'setting'),
|
('settings', 'setting', 'add,change,delete', 'setting'),
|
||||||
|
('audits', 'joblog', 'add,delete,change', '*'),
|
||||||
('audits', 'operatelog', 'add,delete,change', 'operatelog'),
|
('audits', 'operatelog', 'add,delete,change', 'operatelog'),
|
||||||
('audits', 'activitylog', 'add,delete,change', 'activitylog'),
|
('audits', 'activitylog', 'add,delete,change', 'activitylog'),
|
||||||
('audits', 'passwordchangelog', 'add,change,delete', 'passwordchangelog'),
|
('audits', 'passwordchangelog', 'add,change,delete', 'passwordchangelog'),
|
||||||
|
@ -95,7 +95,6 @@ special_pid_mapper = {
|
|||||||
'terminal.endpointrule': 'terminal_node',
|
'terminal.endpointrule': 'terminal_node',
|
||||||
'audits.ftplog': 'terminal',
|
'audits.ftplog': 'terminal',
|
||||||
'perms.view_myassets': 'my_assets',
|
'perms.view_myassets': 'my_assets',
|
||||||
'ops.jobauditlog': 'audits',
|
|
||||||
'ops.celerytask': 'task_center',
|
'ops.celerytask': 'task_center',
|
||||||
'ops.view_celerytaskexecution': 'task_center',
|
'ops.view_celerytaskexecution': 'task_center',
|
||||||
'ops.view_taskmonitor': 'task_center',
|
'ops.view_taskmonitor': 'task_center',
|
||||||
|
Loading…
Reference in New Issue
Block a user