跳转到主要内容

为所有内容操作提供额外的条件和触发器

项目描述

简介

该包允许您审计对您的网站进行的操作。它通过使用可配置的内容规则来实现这一点。

默认情况下,在您激活此包后,它将创建所有可用于审计的内容规则,仅使用页面类型进行OOTB审计。如果您想审计更多类型的对象,您需要配置内容规则。

审计存储在关系数据库中。一旦安装并首次调用,如果不存在,它将创建一个名为“audit”的表,因此无需手动创建表。

审计日志尝试使用plone.app.async或collective.celery来执行存储操作,如果失败,它将直接完成任务。这样做的好处是允许单个“工作”客户端运行异步并处理所有这些请求。如果活动很多,它不会出现拥堵。异步将任务排队并在用户请求完成时处理它,避免在性能上的牺牲。如果您使用它,请参阅collective.async pypi页面以获取设置说明。Async不是AuditLog工作所必需的,但建议特别适用于高流量网站。

安装

从GitHub下载包并将其解压到您的src目录中。将“collective.auditlog”添加到buildout中的eggs和zcml slugs。在开发slugs中也包含位置(src/collective.auditlog)。运行buildout

在“站点设置”-》“插件”中激活审计日志。安装后,您将在“插件配置”下看到“AuditLog”。这是您可以配置关系数据库的地方。控制面板还允许您启用/禁用对工作副本上执行的操作的跟踪。配置字符串需要是一个有效的SQLAlchemy连接字符串。

剩下要做的就是配置新的内容规则来跟踪您想要的内容类型和操作。

升级

如果您是从旧版本升级,您需要从插件控制面板运行升级步骤。

用法

目前,collective.auditlog使用SQLAlchemy来存储数据。要使用PostgreSQL,需要在buildout中添加“psycopg2”egg。产品安装完成后,将正确的连接URL添加到产品设置中。示例

postgresql://enfold:enfold@localhost/auditlog

默认情况下,collective.auditlog使用内容规则来定义要捕获哪些事件。已添加一种额外的机制,允许站点自动记录collective.auditlog支持的各个事件。只需在配置中选择即可启用此功能。如果没有选择事件,则不会发生记录。

可以通过使用AuditableActionPerformedEvent从应用程序代码中记录自定义事件,如下所示

from zope event import notify
from collective.auditlog.interfaces import AuditableActionPerformedEvent
notify(AuditableActionPerformedEvent(obj, request, "action", "note"))

“obj”指的是受影响的内容对象;“request”是当前的zope请求,“action”和“note”分别对应于记录的操作及其描述。所有参数都是必需的,但除了obj之外的所有参数都可以设置为None,如果没有值可用。

除了控制面板配置之外,还可以使用buildout中的zope-conf-additional指令设置连接参数。请注意,这将优先于任何控制面板配置。示例

zope-conf-additional =
    <product-config collective.auditlog>
        audit-connection-string postgres://enfold:enfold@localhost/auditlog
        audit-connection-params {"pool_recycle": 3600, "echo": true}
    </product-config>

现在有一个用于审计日志条目的视图,位于@@auditlog-view。目前控制面板中没有链接到它。该视图使用无限滚动而不是分页来查看日志。

搜索审计日志

审计日志存储在SQL表中,因此您可以使用任何SQL数据库工具来分析审计日志。但是,有时您可能需要在生成日志的Plone对象的环境中查询日志,此时存储在SQL中的信息不足以完成此操作。为此,collective.auditlog提供了一种基于目录的机制,可以用于在日志记录时使用任何可用的Plone索引来查询日志。这可以用于开发一个显示最新已修改文档的组件。

要启用基于目录的记录,请在审计日志控制面板中选择sql+zodb存储。信息仍将存储在SQL数据库中,但将启用一个特殊目录来存储Plone索引信息。

启用此存储后,您可以使用类似目录的查询来搜索日志

from datetime import datetime
from collective.auditlog.catalog import searchAudited

from = datatime(2018,6,1)
to = datetime(2018,12,31)
query = {'portal_type': 'Document',
        'review_state': 'published'}
audited = searchAudited(from_date=from,
                        to_date=to,
                        actions=['added', 'modified'],
                        **query)

所有参数都是可选的,但空查询将返回所有索引对象,因此请谨慎使用。

请注意,查询将返回目录记录,并且任何在所选日期范围内执行了多个操作的文档,只会在列表中显示一次。还有已删除项的目录记录,因此即使它们已从Plone中删除,也可以进行查询。

Celery集成

collective.celery包需要在main buildout部分的eggs中添加celery和collective.celery eggs。示例

eggs =
    celery
    Plone
    collective.celery

我们仍然使用celery-broker部分,为了清晰。celery部分仍然是必需的,但更简单

[celery-broker]
host = 127.0.0.1
port = 6379

[celery]
recipe = zc.recipe.egg
environment-vars = ${buildout:environment-vars}
eggs =
    ${buildout:eggs}
    flower
scripts = pcelery flower

celery部分依赖于在main environment-vars部分添加一些变量

environment-vars =
    CELERY_BROKER_URL redis://${celery-broker:host}:${celery-broker:port}
    CELERY_RESULT_BACKEND redis://${celery-broker:host}:${celery-broker:port}
    CELERY_TASKS collective.es.index.tasks

额外的Zope配置

现在在collective.celery中有一个钩子,可以在运行任务之前执行额外的zope配置。如果任务模块包含一个‘extra_config’方法,它将在工作器初始化时传递zope启动对象。这是由collective.es.index用于运行Elasticsearch配置方法。

监控Celery任务

Celery需要作为一个独立进程启动。建议使用supervisord进行此操作。要从命令行尝试它,可以在buildout目录中运行“bin/pcelery worker”。请注意,脚本现在命名为‘pcelery’,并且需要一个指向Zope配置的路径。示例

$ bin/pcelery worker parts/client1/etc/zope.conf

Flower包含在此设置中。从buildout目录中运行“bin/flower”,并使用浏览器在http://localhost:5555上查看仪表板。请注意,现在代理是一个必需的参数

$ bin/flower --broker redis://127.0.0.1:6379

依赖项

安装collective.auditlog时,所有依赖项都会自动安装。这里只是列出那些供参考

  • setuptools

  • sqlalchemy

  • five.globalrequest

  • plone.app.async [可选]

  • collective.celery [可选]

作者

  • Joel Rainwater,初始作者

  • Nathan van Gheem,异步集成,错误修复,优化。

  • Alessandro Pisa,错误修复,测试

  • Enfold Systems,Celery集成和审计视图

变更日志

2.0.0 (2023-05-31)

  • 重新发布2.0.0a2为2.0.0。这将是对Python2.7支持的最后一个版本。[ale-rt]

2.0.0a2 (2020-03-19)

  • 修复实例脚本中请求没有环境属性的问题。[ale-rt]

2.0.0a1 (2020-03-11)

  • 删除不一致传递请求参数,并使用zope.globalrequest代替。[thet]

  • 删除弃用。action.canExecute重命名为can_execute,不带参数,是一个属性。[thet]

  • Python 3兼容性。[thet]

  • 删除对plone.app.async的支持。由于async是一个保留字,这不能与Python 3兼容。使用collective.celeries代替。[thet]

  • 删除对Archetypes的支持。[thet]

  • Plone 5.2兼容性。删除对Plone 5.0和4.3的支持(两者都缺少zope.interface.interfaces.IObjectEvent)。[thet]

  • 将Arhcetype作为软依赖项。[ale-rt]

  • 与Plone代码风格对齐:black,isort。[thet]

  • 修复对formlib的软依赖项。[ale-rt]

  • 加快规则检索速度。[ale-rt]

  • 向AuditActionExecutor类添加了一些memoized属性和方法,以方便自定义。[ale-rt]

  • collective.celery集成[enfold]

  • @@auditlog-view允许查看/排序/搜索审计日志条目[enfold]

  • 添加登录和注销审计[enfold]

  • 可以在配置文件中指定sqlalchemy DSN[enfold]

  • 在存储审计日志条目前通知一个事件。[enfold]

  • 使用自定义权限查看审计日志。[enfold]

  • 修复测试。[enfold]

  • 修复db连接泄露。[enfold]

  • 在info字段中使用有效的json。[enfold]

1.3.3 (2018-07-12)

  • 将getObjectInfo和addLogEntry分离出来。[reinhardt]

1.3.2 (2018-07-11)

  • 在完全禁用审计日志时跳过检索规则,提高了性能。[reinhardt]

1.3.1 (2017-04-13)

  • 修复升级步骤标题。[ale-rt]

1.3.0 (2017-04-13)

  • 可以通过注册记录指定引擎参数(如pool_recycle,echo等)[ale-rt]

1.2.2 (2016-06-06)

  • 在IActionSucceededEvent上使操作更健壮。[ale-rt]

1.2.1 (2016-05-10)

  • 修复 Unicode 问题

  • 测试恢复正常工作 [ale-rt]

1.2.0 (2016-05-03)

  • 第一个公开版本

项目详情


下载文件

下载适合您平台的文件。如果您不确定该选择哪个,请了解有关安装包的更多信息。

源分布

collective.auditlog-2.0.0.tar.gz (53.4 kB 查看哈希)

上传时间

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面