ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

readthedocs.org 安全日志(Security Logs)完全指南:账号与组织的审计、事件记录与合规实践

readthedocs.org 安全日志(Security Logs)完全指南:账号与组织的审计、事件记录与合规实践 后端文档【免费下载链接】readthedocs.orgThe source code that powers readthedocs.org项目地址https://gitcode.com/gh_mirrors/re/readthedocs.org点击查看免费下载安全日志Security Logs是 readthedocs.org 为账号与组织提供的审计能力用于回顾最近发生在账户或组织内的敏感操作例如登录、登出、邀请发送与接受等是安全合规项目与日常账户自查的重要依据。本篇基于官方文档 docs/user/security-log.rst 展开并结合 readthedocs.org 仓库中的审计模块源码readthedocs/audit/深入讲解其底层数据模型、事件触发链路、过滤检索与日志保留策略帮助读者理解安全日志记什么、在哪看、如何查、保留多久同时掌握将该机制部署到自建实例时的关键配置项。安全日志是什么为账号与组织建立的审计记录安全日志允许你审计最近发生在个人组织或账号中的活动。这一功能对许多安全合规项目来说相当重要同时也能让你随时掌握自己账号上正在发生的事情——这正是知道账户在发生什么所带来的安心感。每条安全日志都会记录发起事件的 IP 地址与所使用的浏览器User-Agent因此你可以据此确认某次访问是否来自预期的人员与设备。在 readthedocs/audit/models.py 的模型文档注释中可以看到日志可以同时挂接到用户user、项目project与组织organization三层对象上即便用户、项目或组织后续被删除日志本身仍会被保留并且可以通过log_user_*、log_project_*、log_organization_*等快照字段继续追溯到被删除对象的信息见 readthedocs/audit/models.py。谁能查看安全日志安全日志仅对**组织所有者organization owners**可见。如果你希望其他团队成员也能查看可以通过邀请的方式将他们提升为组织所有者相关入口与权限模型可参考 readthedocs/organizations/views/private.py 中的 Owner 管理视图。在权限实现层面用户级与组织级的日志视图都继承自PrivateViewMixin见 readthedocs/profiles/views.py 与 readthedocs/organizations/views/private.py即只有登录用户才能访问而组织级视图通过OrganizationMixin与产品功能feature开关进一步约束可见性未启用对应功能时组织日志查询会直接返回空集AuditLog.objects.none()见 readthedocs/organizations/views/private.py。用户安全日志90 天内的个人活动回溯平台会为用户保存最近 90 天的安全日志。这一日志有助于验证近期是否发生过未经授权的事件。关于90 天这个数值可以在源码配置中找到依据RTD_AUDITLOGS_DEFAULT_RETENTION_DAYS 30 * 3即 90 天定义于 readthedocs/settings/base.py用户日志视图UserSecurityLogView直接使用该设置作为days_limit见 readthedocs/profiles/views.py页面模板也会显示 Showing logs from the last {{ days_limit }} days 的提示见 readthedocs/templates/profiles/private/security_log.html。此外视图在计算起始日期时会取当前时间减去 90 天与用户注册日期两者中较晚者即日志回溯范围不会早于用户注册时间见 readthedocs/profiles/views.py。用户安全日志记录以下事件在仪表盘dashboard上的身份认证在文档页面上的身份认证仅 Read the Docs Commercial 平台即托管商业版发送、接受、撤销或拒绝管理项目的邀请。其中认证失败与认证成功都会被记录。在界面中日志入口位于用户名下拉菜单 -- Settings设置 -- Security Log安全日志组织安全日志面向企业计划的组织级审计组织安全日志仅在Read the Docs Business计划中可用见 docs/user/shared/admonition-rtd-business.rst 的说明。日志的存储时长随你的订阅计划而变化具体请以官方定价页为准。组织安全日志是定期检查组织是否发生未授权访问的绝佳场所。组织日志记录以下事件来自你组织的文档页面身份认证用户访问来自你组织的文档页面仅Enterprise 企业版计划用户下载来自你组织的文档的可下载格式文件仅Enterprise 企业版计划发送、撤销或接受组织团队成员team的邀请。同样认证失败与认证成功都会被记录。在源码中组织日志的页面访问PAGEVIEW与下载DOWNLOAD两类动作被明确列入OrganizationSecurityLogFilter.allowed_actions而用户级过滤器则不包含它们见 readthedocs/audit/filters.py这与文档页面访问/下载仅出现在组织日志的描述完全一致。同时值得注意组织日志的过滤器中刻意排除了拒绝邀请INVITATION_DECLINED事件因为被拒绝邀请的用户尚未真正成为组织成员组织所有者不应看到这类信息代码注释见 readthedocs/audit/filters.py。在界面中组织日志入口位于用户名下拉菜单 -- Organizations组织 -- 组织名称 -- Settings设置 -- Security Log安全日志日志背后的数据模型AuditLog 记录了哪些字段要真正理解安全日志的能力边界有必要了解其底层存储模型。核心模型AuditLog定义在 readthedocs/audit/models.py除了时间戳外主要字段包括字段类型/说明含义userForeignKey → UserSET_NULL触发事件的用户匿名用户不记录projectForeignKey → ProjectSET_NULL关联的项目如页面访问、下载organizationForeignKey → OrganizationSET_NULL关联的组织log_user_id/log_user_usernameIntegerField / CharField用户被删除后仍可追溯的用户快照log_project_id/log_project_slugIntegerField / CharField项目被删除后仍可追溯的项目快照log_organization_id/log_organization_slugIntegerField / CharField组织被删除后仍可追溯的组织快照actionCharFieldchoices事件类型见下方动作清单auth_backendCharField认证后端标识如临时访问令牌等ipCharField事件来源 IP 地址browserCharField最长 250超长自动截断浏览器 User-Agent 字符串resourceCharField最长 5500资源路径如被访问/下载的文档路径dataJSONField额外事件数据结构随日志类型而异AuditLog.save()会在保存时自动填充log_*快照字段并自动将project所属的组织关联到该日志见 readthedocs/audit/models.pybrowser字段若超过 250 字符会被截断并追加- Truncated后缀见 readthedocs/audit/models.py。模型支持的动作类型CHOICES见 readthedocs/audit/models.py包括pageview页面访问download下载authentication认证成功authentication-failure认证失败log-out登出invitation-sent邀请已发送invitation-revoked邀请已撤销invitation-accepted邀请已接受invitation-declined邀请已拒绝日志如何自动采集 IP 与浏览器信息当事件携带request对象时AuditLogManager.new()会自动从请求中提取并填充ip通过get_client_ip(request)、browserrequest.headers.get(User-Agent)、resourcerequest.path_info以及auth_backend通过get_auth_backend(request)见 readthedocs/audit/models.py。对于在子域名如文档域名上产生的事件还会尝试从request.unresolved_domain推断并关联项目。事件触发链路登录、登出与邀请是如何被记录下来的登录/登出/认证失败Django 信号驱动认证类事件并非在各视图内手工编码而是通过 Django 的信号机制统一捕获user_logged_in→ 记录authentication成功登录见 readthedocs/audit/signals.pyuser_logged_out→ 记录log-out登出仅在存在用户时记录见 readthedocs/audit/signals.pyuser_login_failed→ 记录authentication-failure认证失败并尝试通过用户名/邮箱匹配对应用户见 readthedocs/audit/signals.py。值得注意的是匿名用户不会被写入日志user.is_anonymous时置为None见 readthedocs/audit/models.py而认证失败事件即使匹配不到具体用户也会以log_user_username记录尝试使用的用户名。邀请事件模型与视图协同写入邀请相关的四类事件发送/接受/撤销/拒绝由邀请模块生成邀请创建成功时记录invitation-sent见 readthedocs/invitations/models.py邀请接受时记录invitation-accepted见 readthedocs/invitations/models.py邀请撤销时记录invitation-revoked见 readthedocs/invitations/views.py邀请拒绝时记录invitation-declined见 readthedocs/invitations/views.py。对应行为在 readthedocs/invitations/tests/test_views.py 中有着大量测试用例覆盖例如断言发送、接受、拒绝等动作后AuditLog中相应 action 的记录数量。过滤与检索如何在海量日志中快速定位问题安全日志页面支持按多个维度过滤底层由django-filter的FilterSet实现。用户级过滤器UserSecurityLogFilterreadthedocs/audit/filters.py支持IP?ipaddress精确匹配项目?projectslug按项目 slug 精确匹配对应log_project_slug动作类型?actionaction可选值限定在用户日志允许的动作集合内非法值会被忽略日期范围?dateyyyy-mm-dd或?date_after...date_before...形式DateFromToRangeFilter。组织级过滤器OrganizationSecurityLogFilterreadthedocs/audit/filters.py在用户级基础上额外支持?userusername按log_user_username精确匹配并加入pageview与download两类动作。测试用例 readthedocs/rtd_tests/tests/test_profile_views.py 验证了这些过滤行为例如默认只显示当前用户的authentication/authentication-failure/log-out等事件按?project与?ip过滤可得到对应子集非法的 IP/项目值返回空结果非法的 action 值则被忽略。日志保留策略与自动清理个人用户的日志默认保留 90 天清理工作由一个 Celery 定时任务完成delete_old_personal_audit_logsreadthedocs/audit/tasks.py运行在web队列上删除所有满足以下条件的日志log_organization_id为空即与组织无关的个人日志created时间早于当前时间 - RTD_AUDITLOGS_DEFAULT_RETENTION_DAYS默认 90 天。从代码注释可以确认readthedocs/audit/tasks.py组织相关的日志删除由商业版.com按订阅计划另行处理因此组织日志的实际保留长度由你的订阅计划决定这与文档中的描述一致。导出与自助服务将安全日志下载为 CSV用户级与组织级的日志页面都提供 CSV 导出能力页面上的 Download 按钮以?downloadtrue触发视图的_get_csv_data()方法见 readthedocs/profiles/views.py 与 readthedocs/organizations/views/private.py。导出的 CSV 包含以下列组织日志额外多出Resource列Date (时区)、User、Project、Organization、Action、Resource仅组织、IP、Browser、Extra data文件名会按导出主体与时间范围自动生成例如readthedocs_user_security_logs_username_start_end.csv与readthedocs_organization_security_logs_organization_start_end.csv见 readthedocs/profiles/views.py 与 readthedocs/organizations/views/private.py。若当前筛选器指定了日期范围导出区间也会随之调整。这对于安全审计留档、合规取证非常实用。使用建议与延伸阅读综合官方文档与源码实现给出以下实践建议定期自查个人用户可每月进入Settings -- Security Log检查是否存在陌生 IP 或异常时段的登录记录组织所有者则应定期查看组织日志确认文档访问与邀请操作均来自预期人员。善用过滤与导出在调查具体事件时优先使用 IP、项目、用户与日期范围组合过滤需要归档时使用 CSV 导出注意导出文件遵循当前筛选的日期区间。留意计划差异个人用户日志固定 90 天组织日志保留时长取决于订阅计划页面访问与下载类事件仅出现在 Enterprise 企业版计划中。自建实例调整保留期部署 readthedocs.org 源码时可通过设置RTD_AUDITLOGS_DEFAULT_RETENTION_DAYS默认30 * 3见 readthedocs/settings/base.py调整个人日志的保留天数并由delete_old_personal_audit_logs定时任务执行清理。如果你有希望安全日志额外捕获的信息可以随时联系官方支持团队反馈docs/user/support.rst。延伸阅读平台安全策略Security policyRead the Docs 如何处理安全的总体信息安全说明Security平台自身安全信息、个人数据处理方式以及如何报告安全问题商业组织功能Commercial商业版组织的相关能力说明。赞分享后端文档【免费下载链接】readthedocs.orgThe source code that powers readthedocs.org项目地址https://gitcode.com/gh_mirrors/re/readthedocs.org点击查看免费下载相关推荐pingora审计日志安全事件记录与合规性要求pingora审计日志安全事件记录与合规性要求 引言为什么审计日志对现代网络服务至关重要 在当今数字化时代网络服务面临着日益复杂的安全威胁和严格的合规要求后端网络负载均衡API网关RDCMan专业级远程桌面连接管理器的深度技术解析RDCMan专业级远程桌面连接管理器的深度技术解析 RDCMan作为微软官方推出的远程桌面连接管理器为IT专业人员提供了集中管理多个RDP会话的高效解决方案后端认证鉴权终极Python舰船配装工具5分钟掌握Pyfa高效配装技巧终极Python舰船配装工具5分钟掌握Pyfa高效配装技巧 Pyfa是一款专为EVE Online玩家设计的开源Python舰船配装助手让您无需登录游戏即可桌面应用上一篇从入门到精通nvim-luapad命令与API完全手册下一篇KindleEar故障排除常见问题及解决方案大全创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表