审计Grafana实例
审计可以让你追踪重要的变化Grafana实例。默认情况下,审计日志记录到文件但审计功能还支持直接发送日志洛基。
只有API请求或UI动作触发一个API请求生成一个审计日志。
注意:可以在Grafana企业7.3及以后版本,和Grafana云先进。
审计日志
审计日志是JSON对象代表用户操作:
- 修改资源,如仪表板和数据源。
- 用户无法登录。
格式
审计日志包含以下字段。田野紧随其后*总是可用,其他依赖于类型的行动记录。
字段名 | 类型 | 描述 |
---|---|---|
时间戳 * |
字符串 | 请求的日期和时间,在协调世界时(UTC)使用RFC3339格式。 |
用户 * |
对象 | 发出请求的用户信息。任何一个的用户标识 orgydF4y2BaApiKeyID 如果字段将包含内容isAnonymous = false 。 |
user.userId |
数量 | 的ID Grafana发出请求的用户。 |
user.orgId * |
数量 | 当前组织用户的请求。 |
user.orgRole |
字符串 | 当前角色的用户的请求。 |
user.name |
字符串 | Grafana用户的请求的名称。 |
user.tokenId |
数量 | ID的用户身份验证令牌。 |
user.apiKeyId |
数量 | ID Grafana API键用来制造请求。 |
user.isAnonymous * |
布尔 | 如果一个匿名用户的请求,真正的 。否则,假 。 |
行动 * |
字符串 | 请求行动。例如,创建 ,更新 ,或管理权限 。 |
请求 * |
对象 | 有关HTTP请求的信息。 |
request.params |
对象 | 请求的路径参数。 |
request.query |
对象 | 请求的查询参数。 |
request.body |
字符串 | 请求的身体。 |
结果 * |
对象 | 有关HTTP响应的信息。 |
result.statusType |
字符串 | 如果请求行动是成功的,成功 。否则,失败 。 |
result.statusCode |
数量 | HTTP请求的状态。 |
result.failureMessage |
字符串 | HTTP错误消息。 |
result.body |
字符串 | 身体的反应。 |
资源 |
数组 | 信息资源请求动作的影响。这个字段可以为空等非资源的行为登录 orgydF4y2Ba注销 。 |
[x] .id资源 * |
数量 | 资源的ID。 |
[x] .type资源 * |
字符串 | 记录资源的类型:警报 ,警报通知 ,注释 ,api密匙 ,鉴定标识 ,指示板 ,数据源 ,文件夹 ,org ,面板 ,播放列表 ,报告 ,团队 ,用户 ,或版本 。 |
requestUri * |
字符串 | 请求URI。 |
ipAddress * |
字符串 | 是由IP地址的请求。 |
userAgent * |
字符串 | 代理的请求。 |
grafanaVersion * |
字符串 | 当前版本的Grafana当创建此日志。 |
additionalData |
对象 | 可以提供额外的信息关于请求。 |
的additionalData
字段可以包含以下信息:
字段名 | 行动 | 描述 |
---|---|---|
loginUsername |
登录 |
Grafana中使用的登录身份验证形式。 |
extUserInfo |
登录 |
外部系统提供的用户信息,用于登录。 |
authTokenCount |
登录 |
活跃用户登录身份验证令牌。 |
terminationReason |
注销 |
用户注销的原因,如手动注销或令牌到期。 |
billing_role |
的付款信息 |
与计费相关的计费角色信息被发送。 |
记录操作
审计日志记录包括以下类别的行动。每一个行动是杰出的行动
和参考资料[…].type
JSON记录中的域。
例如,创建一个API密匙产生审计日志是这样的:
{“行动”:“创造”,“资源”:[{" id ": 1、“类型”:“api密匙”}],“时间戳”:“2021 - 11 - 12 t22:12:36.144795692z”,“用户”:{“标识”:1、“orgId”: 1、“orgRole”:“管理”、“用户名”:“Admin”、“isAnonymous”:假的,“authTokenId”: 1},“请求”:{“身体”:“{\“\”:\“\”,\“\”,\“观众\”,\“secondsToLive \”:零}”},“结果”:{“statusType”:“成功”,“statusCode”: 200年,“responseBody”:“{\ \“id”: 1, \“\”, \“\”}”},“资源”:[{" id ": 1、“类型”:“api密匙”}],“requestUri”:“/ api /认证/键”,“ipAddress”:“127.0.0.1:54652”、“userAgent”:“Mozilla / 5.0 (X11;Linux x86_64;房车:Firefox 94.0)壁虎/ 20100101 / 94.0”,“grafanaVersion ": " 8.3.0-pre "}
一些操作只能是杰出的requestUri
字段。对于这些行为,相关的模式requestUri
字段。
注意,几乎所有这些记录操作行为对应于API请求或UI动作触发一个API请求。因此,行动{“行动”:“电子邮件”、“资源”:[{“类型”:“报告”}]}
对应于操作,当用户请求一个通过电子邮件发送报告的预览,而不是预定的。
会话
行动 | 识别领域 |
---|---|
登录 | {“行动”:“login-AUTH-MODULE”} * |
退出* * | {“行动”:“注销”} |
力注销用户 | {“行动”:“logout-user”} |
删除用户身份验证令牌 | {“行动”:“revoke-auth-token”、“资源”:[{“类型”:“鉴定标识”},{“类型”:“用户”}]} |
创建API密钥 | {“行动”:“创造”,“资源”:[{“类型”:“api密匙”}]} |
删除API密匙 | {“行动”:“删除”、“资源”:[{“类型”:“api密匙”}]} |
*在哪里AUTH-MODULE
身份验证模块的名称:grafana
,saml
,ldap
等。
* *包括手动注销,令牌过期/撤销,SAML单注销。
服务帐户
行动 | 识别领域 |
---|---|
创建服务帐户 | {“行动”:“创造”,“资源”:[{“类型”:“服务帐户”}]} |
更新服务帐户 | {“行动”:“更新”、“资源”:[{“类型”:“服务帐户”}]} |
删除服务帐户 | {“行动”:“删除”、“资源”:[{“类型”:“服务帐户”}]} |
创建服务帐户牌 | {“行动”:“创造”,“资源”:[{“类型”:“服务帐户”},{“类型”:“service-account-token”}]} |
删除服务帐户令牌 | {“行动”:“删除”、“资源”:[{“类型”:“服务帐户”},{“类型”:“service-account-token”}]} |
隐藏的API密钥 | {“行动”:“hide-api-keys”} |
迁移的API密钥 | {“行动”:“migrate-api-keys”} |
迁移API密匙 | {“行动”:“migrate-api-keys”},“资源”:[{“类型”:“api密匙”}]} |
访问控制
行动 | 识别领域 |
---|---|
创建角色 | {“行动”:“创造”,“资源”:[{“类型”:“角色”}]} |
更新的作用 | {“行动”:“更新”、“资源”:[{“类型”:“角色”}]} |
删除角色 | {“行动”:“删除”、“资源”:[{“类型”:“角色”}]} |
内置的角色分配 | {“行动”:“assign-builtin-role”、“资源”:[{“类型”:“角色”},{“类型”:“builtin-role”}]} |
删除内置角色 | {“行动”:“remove-builtin-role”、“资源”:[{“类型”:“角色”},{“类型”:“builtin-role”}]} |
格兰特团队角色 | {“行动”:“grant-team-role”、“资源”:[{“类型”:“团队”}]} |
设置团队角色 | {“行动”:“set-team-roles”、“资源”:[{“类型”:“团队”}]} |
撤销团队角色 | {“行动”:“revoke-team-role”、“资源”:[{“类型”:“角色”},{“类型”:“团队”}]} |
授予用户角色 | {“行动”:“grant-user-role”、“资源”:[{“类型”:“角色”},{“类型”:“用户”}]} |
设置用户角色 | {“行动”:“set-user-roles”、“资源”:[{“类型”:“用户”}]} |
撤销用户角色 | {“行动”:“revoke-user-role”、“资源”:[{“类型”:“角色”},{“类型”:“用户”}]} |
设置用户权限的文件夹 | {“行动”:“set-user-permissions-on-folder”、“资源”:[{“类型”:“文件夹”},{“类型”:“用户”}]} |
团队文件夹权限设置 | {“行动”:“set-team-permissions-on-folder”、“资源”:[{“类型”:“文件夹”},{“类型”:“团队”}]} |
文件夹权限设置基本的角色 | {“行动”:“set-basic-role-permissions-on-folder”、“资源”:[{“类型”:“文件夹”},{“类型”:“builtin-role”}]} |
在仪表板设置用户权限 | {“行动”:“set-user-permissions-on-dashboards”、“资源”:[{“类型”:“仪表盘”},{“类型”:“用户”}]} |
在仪表板设置组权限 | {“行动”:“set-team-permissions-on-dashboards”、“资源”:[{“类型”:“仪表盘”},{“类型”:“团队”}]} |
在仪表板设置基本的角色权限 | {“行动”:“set-basic-role-permissions-on-dashboards”、“资源”:[{“类型”:“仪表盘”},{“类型”:“builtin-role”}]} |
设置用户权限的团队 | {“行动”:“set-user-permissions-on-teams”、“资源”:[{“类型”:“团队”},{“类型”:“用户”}]} |
设置用户权限服务帐户 | {“行动”:“set-user-permissions-on-service-accounts”、“资源”:[{“类型”:“服务帐户”},{“类型”:“用户”}]} |
设置用户权限的数据源 | {“行动”:“set-user-permissions-on-data-sources”、“资源”:[{“类型”:“数据源”},{“类型”:“用户”}]} |
在数据源设置组权限 | {“行动”:“set-team-permissions-on-data-sources”、“资源”:[{“类型”:“数据源”},{“类型”:“团队”}]} |
设置数据源的基本角色权限 | {“行动”:“set-basic-role-permissions-on-data-sources”、“资源”:[{“类型”:“数据源”},{“类型”:“builtin-role”}]} |
用户管理
行动 | 识别领域 |
---|---|
创建用户 | {“行动”:“创造”,“资源”:[{“类型”:“用户”}]} |
更新用户 | {“行动”:“更新”、“资源”:[{“类型”:“用户”}]} |
删除用户 | {“行动”:“删除”、“资源”:[{“类型”:“用户”}]} |
禁用用户 | {“行动”:“禁用”,“资源”:[{“类型”:“用户”}]} |
启用用户 | {“行动”:“启用”、“资源”:[{“类型”:“用户”}]} |
更新密码 | {“行动”:“update-password”、“资源”:[{“类型”:“用户”}]} |
发送密码重置邮件 | {“行动”:“send-reset-email”} |
重置密码 | {“行动”:“reset-password”} |
更新权限 | {“行动”:“update-permissions”、“资源”:[{“类型”:“用户”}]} |
发送注册电子邮件 | {“行动”:“signup-email”} |
点击注册链接 | {“行动”:“注册”} |
重载LDAP配置 | {“行动”:“ldap-reload”} |
在LDAP用户 | {“行动”:“ldap搜索”} |
同步与LDAP用户 | {“行动”:“ldap-sync”、“资源”:[{“类型”:“用户”}] |
团队和组织管理
行动 | 识别领域 |
---|---|
加入团队 | {“行动”:“创造”,“requestUri”:“/ api /小组”} |
更新团队 | {“行动”:“更新”、“requestUri”:“/ api /团队/ TEAM-ID”} * |
删除团队 | {“行动”:“删除”,“requestUri”:“/ api /团队/ TEAM-ID”} * |
添加外部组团队 | {“行动”:“创造”,“requestUri”:“/ api /团队/ TEAM-ID /团体”} * |
删除外部组团队 | {“行动”:“删除”,“requestUri”:“/ api /团队/ TEAM-ID /组织/组id "} * |
将用户添加到团队 | {“行动”:“创造”,“资源”:[{“类型”:“用户”},{“类型”:“团队”}]} |
更新团队成员权限 | {“行动”:“更新”、“资源”:[{“类型”:“用户”},{“类型”:“团队”}]} |
删除用户组 | {“行动”:“删除”、“资源”:[{“类型”:“用户”},{“类型”:“团队”}]} |
创建组织 | {“行动”:“创造”,“资源”:[{“类型”:“org”}]} |
更新组织 | {“行动”:“更新”、“资源”:[{“类型”:“org”}]} |
删除组织 | {“行动”:“删除”、“资源”:[{“类型”:“org”}]} |
添加用户组织 | {“行动”:“创造”,“资源”:[{“类型”:“org”},{“类型”:“用户”}]} |
更改用户在组织中的作用 | {“行动”:“更新”、“资源”:[{“类型”:“用户”},{“类型”:“org”}]} |
删除用户组织 | {“行动”:“删除”、“资源”:[{“类型”:“用户”},{“类型”:“org”}]} |
邀请外部用户的组织 | {“行动”:“org-invite”、“资源”:[{“类型”:“org”},{“类型”:“用户”}]} |
取消邀请 | {“行动”:“revoke-org-invite”、“资源”:[{“类型”:“org”}]} |
*在哪里TEAM-ID
影响团队的ID,组id
(如果存在)是外部组的ID。
文件夹和仪表板管理
行动 | 识别领域 |
---|---|
创建文件夹 | {“行动”:“创造”,“资源”:[{“类型”:“文件夹”}]} |
更新文件夹 | {“行动”:“更新”、“资源”:[{“类型”:“文件夹”}]} |
更新文件夹权限 | {“行动”:“管理权限”、“资源”:[{“类型”:“文件夹”}]} |
删除文件夹 | {“行动”:“删除”、“资源”:[{“类型”:“文件夹”}]} |
创建/更新仪表板 | {“行动”:“create-update”、“资源”:[{“类型”:“仪表盘”}]} |
进口仪表板 | {“行动”:“创造”,“资源”:[{“类型”:“仪表盘”}]} |
更新仪表板权限 | {“行动”:“管理权限”、“资源”:[{“类型”:“仪表盘”}]} |
仪表盘恢复旧版本 | {“行动”:“恢复”、“资源”:[{“类型”:“仪表盘”}]} |
删除仪表板 | {“行动”:“删除”、“资源”:[{“类型”:“仪表盘”}]} |
图书馆管理元素
行动 | 识别领域 |
---|---|
创建库元素 | {“行动”:“创造”,“资源”:[{“类型”:“library-element”}]} |
更新库元素 | {“行动”:“更新”、“资源”:[{“类型”:“library-element”}]} |
删除库元素 | {“行动”:“删除”、“资源”:[{“类型”:“library-element”}]} |
数据源管理
行动 | 识别领域 |
---|---|
创建数据源 | {“行动”:“创造”,“资源”:[{“类型”:“数据源”}]} |
更新数据源 | {“行动”:“更新”、“资源”:[{“类型”:“数据源”}]} |
删除数据源 | {“行动”:“删除”、“资源”:[{“类型”:“数据源”}]} |
为数据源启用权限 | {“行动”:“权限”、“资源”:[{“类型”:“数据源”}]} |
禁用权限数据源 | {“行动”:“disable-permissions”、“资源”:[{“类型”:“数据源”}]} |
格兰特数据源允许角色,团队,或用户 | {“行动”:“创造”,“资源”:[{“类型”:“数据源”},{“类型”:“dspermission”}]} * |
删除数据源的许可 | {“行动”:“删除”、“资源”:[{“类型”:“数据源”},{“类型”:“dspermission”}]} |
对数据源启用高速缓存 | {“行动”:“enable-cache”、“资源”:[{“类型”:“数据源”}]} |
禁用缓存为数据源 | {“行动”:“disable-cache”、“资源”:[{“类型”:“数据源”}]} |
更新数据源缓存配置 | {“行动”:“更新”、“资源”:[{“类型”:“数据源”}]} |
*资源
也可能包含一个第三项呢“类型”:
设置为“用户”
orgydF4y2Ba“团队”
。
警报和通知渠道管理
行动 | 识别领域 |
---|---|
保存报警管理程序配置 | {“行动”:“更新”、“requestUri”:“/ api / alertmanager /收件人/ config / api / v1 /警报”} |
重置警报管理器配置 | {“行动”:“删除”,“requestUri”:“/ api / alertmanager /收件人/ config / api / v1 /警报”} |
创建的沉默 | {“行动”:“创造”,“requestUri”:“/ api / alertmanager /收件人/ api / v2 /沉默”} |
删除沉默 | {“行动”:“删除”,“requestUri”:“/ api / alertmanager /收件人/ api / v2 /沉默/ SILENCE-ID”} |
创建警报 | {“行动”:“创造”,“requestUri”:“/ api /统治者/收件人/ api / v2 /警报”} |
创建或更新规则组 | {“行动”:“create-update”、“requestUri”:“/ api /统治者/收件人/ api / v1 /规定/命名空间”} |
删除规则组 | {“行动”:“删除”,“requestUri”:“/ api /统治者/收件人/ api / v1 /规定/命名空间/组名称”} |
删除名称空间 | {“行动”:“删除”,“requestUri”:“/ api /统治者/收件人/ api / v1 /规定/命名空间”} |
测试Grafana管理接收器 | {“行动”:“测试”、“requestUri”:“/ api / alertmanager /收件人/ config / api / v1 /接收器/测试”} |
创建或更新NGalert配置用户的组织 | {“行动”:“create-update”、“requestUri”:“/ api / v1 / ngalert / admin_config”} |
删除NGalert配置用户的组织 | {“行动”:“删除”,“requestUri”:“/ api / v1 / ngalert / admin_config”} |
以下的地方:
收件人
是grafana
请求由Grafana或数据源UID请求转发到一个数据源。名称空间
是规则的字符串标识符名称空间。组名称
字符串标识符的规则组。SILENCE-ID
是影响沉默的ID。
以下遗留报警行动仍然支持:
行动 | 识别领域 |
---|---|
测试警报的规则 | {“行动”:“测试”、“资源”:[{“类型”:“面板”}]} |
暂停警报 | {“行动”:“暂停”、“资源”:[{“类型”:“警报”}]} |
暂停所有警报 | {“行动”:“pause-all”} |
测试警报通知渠道 | {“行动”:“测试”、“资源”:[{“类型”:“告警”}]} |
创建警报通知渠道 | {“行动”:“创造”,“资源”:[{“类型”:“告警”}]} |
更新警报通知渠道 | {“行动”:“更新”、“资源”:[{“类型”:“告警”}]} |
删除警报通知渠道 | {“行动”:“删除”、“资源”:[{“类型”:“告警”}]} |
报告
行动 | 识别领域 |
---|---|
创建报告 | {“行动”:“创造”,“资源”:[{“类型”:“报告”},{“类型”:“仪表盘”}]} |
更新报告 | {“行动”:“更新”、“资源”:[{“类型”:“报告”},{“类型”:“仪表盘”}]} |
删除报告 | {“行动”:“删除”、“资源”:[{“类型”:“报告”}]} |
通过电子邮件发送报告 | {“行动”:“电子邮件”、“资源”:[{“类型”:“报告”}]} |
更新报告设置 | {“行动”:“更改设置”} |
注释,播放列表和快照管理
行动 | 识别领域 |
---|---|
创建注释 | {“行动”:“创造”,“资源”:[{“类型”:“注释”}]} |
创建石墨注释 | {“行动”:“create-graphite”、“资源”:[{“类型”:“注释”}]} |
更新注释 | {“行动”:“更新”、“资源”:[{“类型”:“注释”}]} |
块注释 | {“行动”:“补丁”,“资源”:[{“类型”:“注释”}]} |
删除注释 | {“行动”:“删除”、“资源”:[{“类型”:“注释”}]} |
删除所有注释从面板 | {“行动”:“删除”,“资源”:[{“类型”:“仪表盘”},{“类型”:“面板”}]} |
创建播放列表 | {“行动”:“创造”,“资源”:[{“类型”:“播放列表”}]} |
更新播放列表 | {“行动”:“更新”、“资源”:[{“类型”:“播放列表”}]} |
删除播放列表 | {“行动”:“删除”、“资源”:[{“类型”:“播放列表”}]} |
创建一个快照 | {“行动”:“创造”,“资源”:[{“类型”:“仪表盘”},{“类型”:“快照”}]} |
删除快照 | {“行动”:“删除”、“资源”:[{“类型”:“快照”}]} |
通过删除键删除快照 | {“行动”:“删除”、“资源”:[{“类型”:“快照”}]} |
供应
行动 | 识别领域 |
---|---|
重新加载配置指示板 | {“行动”:“provisioning-dashboards”} |
重新加载配置数据源 | {“行动”:“provisioning-datasources”} |
重新加载配置插件 | {“行动”:“provisioning-plugins”} |
重新加载配置通知 | {“行动”:“provisioning-notifications”} |
重新加载配置警报 | {“行动”:“provisioning-alerts”} |
重新加载配置访问控制 | {“行动”:“provisioning-accesscontrol”} |
插件管理
行动 | 识别领域 |
---|---|
安装插件 | {“行动”:“安装”} |
卸载插件 | {“行动”:“卸载”} |
杂项
行动 | 识别领域 |
---|---|
设置许可令牌 | {“行动”:“创造”,“requestUri”:“/ api /授权/令牌”} |
保存的付款信息 | {“行动”:“账单信息”} |
通用的行为
除了上面列出的行动,任何HTTP请求(帖子
,补丁
,把
,删除
)对API记录下列通用的行为之一。
此外,您还可以记录得到
请求。见下文如何配置它。
行动 | 识别领域 |
---|---|
POST请求 | {“行动”:“行动”} |
补丁的请求 | {“行动”:“局部迭代”} |
PUT请求 | {“行动”:“更新”} |
删除请求 | {“行动”:“delete”} |
GET请求 | {“行动”:“检索”} |
配置
注意:审计功能默认是禁用的。
审计日志可以保存到文件,发送到洛基实例或发送到Grafana默认日志记录器。默认情况下,只有文件启用出口国。你可以选择使用哪一个出口国配置文件。
选项是文件
,洛基
,日志记录器
。使用空格分隔多个模式,如文件洛基
。
默认情况下,当一个用户创建或更新仪表板,它的内容不会出现在日志可以显著增加你的日志的大小。如果这对你来说是重要的信息,你可以处理生成的数据量,然后你可以配置中启用该选项。
(审计)#启用审计特性使= false #列表启用伐木工伐木工=文件#仪表盘保持内容的日志(请求或响应领域);这可以大大增加你的日志的大小。log_dashboard_content = false #保持请求和响应的身体;这可以大大增加你的日志的大小。verbose = false #写审计日志为每个状态码。#默认情况下它只记录以下的:2 xx, xx, 401年、403年和500年。log_all_status_codes = false #最大响应身体(字节)审计;默认500简约。#可能有助于降低审计造成的内存占用。max_response_size_bytes = 512000
每个出口都有自己的配置字段。
文件出口国
审计日志保存到文件中。您可以配置用于保存这些文件的文件夹。日志是旋转时文件大小超过在新的一天的开始。
[auditing.logs。文件] # Path to logs folder path = data/log # Maximum log files to keep max_files = 5 # Max size in megabytes per log file max_file_size_mb = 256
洛基出口国
被送到一个审计日志洛基服务,通过HTTP或gRPC。
注意:洛基出口国的HTTP选项只有在Grafana企业7.4和更高版本。
[auditing.logs。洛基] # Set the communication protocol to use with Loki (can be grpc or http) type = grpc # Set the address for writing logs to Loki (format must be host:port) url = localhost:9095 # Defaults to true. If true, it establishes a secure connection to Loki tls = true
如果你有多个Grafana实例将日志发送到相同的洛基服务或为非审计日志,如果您使用的是洛基审计日志有额外的标签来帮助识别:
- 主机——操作系统的主机名Grafana实例正在运行。
- grafana_instance——应用程序的URL。
- 类- - - - - -
审计
控制台出口国
审计日志发送到Grafana默认日志记录器。审计日志使用auditing.console
记录器,登录调试
层次,学习如何启用调试日志记录日志配置部分的文档。以这种方式访问审计日志不建议生产使用。