当前位置: 首页 > news >正文

通过 Bytebase API 查看数据库审计日志

  • 原文地址
  • 代码库

Bytebase 是一款数据库 DevOps 和 CI/CD 工具,专为开发者、DBA 和平台工程团队设计。虽然它提供了直观的 GUI 来管理数据库 schema 变更和访问控制,但有些团队可能希望使用 Bytebase API 将 Bytebase 集成到现有的 DevOps 平台中。

在这里插入图片描述

在之前的教程中,我们演示了如何使用 Bytebase API:

  1. 创建 Schema 变更
  2. 检查用户和数据库权限

本教程将重点介绍如何在 Bytebase 中获取和过滤审计日志,如果你没有看过前面的教程也没关系。

(一)准备工作

  1. 安装好 Docker
  2. Node.js >= v18

(二)启动 Bytebase

确保 Docker 进程正在运行。通过以下命令启动 Bytebase:

(2.23.0 可替换成当前版本)

docker run --rm --init \--name bytebase \--publish 8080:8080 --pull always \--volume ~/.bytebase/data:/var/opt/bytebase \bytebase/bytebase:2.23.0

Bytebase 正通过 Docker 运行,可以在localhost:8080访问。注册第一个管理员账户,它将被授予工作空间管理员权限。

(三)创建服务账户

  1. 以管理员用户身份登录,进入安全与策略 > 用户与组。单击 + 添加用户,输入 api-example,选择本教程所需的 DBA 角色,然后单击确认

    在这里插入图片描述

  2. 找到新创建的服务账户,点击复制服务密钥。我们将使用此标记来验证 API 调用。

    在这里插入图片描述

(四)运行演示

  • 进入 Bytebase API Example repo 并克隆它。

  • env-template.local 复制到 .env.local。更新变量。

    • NEXT_PUBLIC_BB_URLhttp://localhost:8080
    • NEXT_PUBLIC_BB_SERVICE_ACCOUNTapi-example
    • NEXT_PUBLIC_BB_SERVICE_KEY:上一步复制的服务密钥
  • 进入子文件夹 audit-log,运行以下命令启动 demo 程序:

pnpm i && pnpm dev
  • 在浏览器中打开 demo 程序,你将看到以下页面:

    在这里插入图片描述

  • 为增强 demo 的真实性,访问 Bytebase:

    • 进入 SQL 编辑器查询数据库
    • 进入特定项目,对数据库进行一些更改,例如创建数据库、创建表格、添加一些数据。

(五)获取和过滤审计日志

让我们深入研究一下代码:

  • page.tsx 中,我们选择任何项目前,都通过调用 /v1/projects API 获取所有项目。
    Bytebase 有两级审计日志: 工作空间项目。用户第一次访问 demo 时,我们通过 /v1/auditLogs:search API 获取工作空间级审计日志。默认时间范围为 7 天前至今。你也可以通过过滤器在请求正文中传递 startTime 和 endTime 来调整时间范围。

    const filter = `create_time >= '${startDate}' && create_time <= '${endDate}'`;
    
  • 在 db-fetch-user-permission.tsx 中,如果用户选择了特定项目,我们将通过 /v1/projects/PROJECT_ID/auditLogs:search API 获取项目级审计日志。时间范围过滤器与工作空间级审计日志相同。

(六)总结

恭喜你使用 Bytebase API 成功创建了数据库审计查看器。同理,你也可以通过调用/v1/auditLogs:export API 导出日志。


💡 更多资讯,请关注 Bytebase 公号:Bytebase

相关文章:

通过 Bytebase API 查看数据库审计日志

原文地址代码库 Bytebase 是一款数据库 DevOps 和 CI/CD 工具&#xff0c;专为开发者、DBA 和平台工程团队设计。虽然它提供了直观的 GUI 来管理数据库 schema 变更和访问控制&#xff0c;但有些团队可能希望使用 Bytebase API 将 Bytebase 集成到现有的 DevOps 平台中。 在之…...

# 渗透测试# 1.安全见闻(6)通讯协议

安全见闻6 通讯协议 ##B站陇羽Sec## 潜在的安全问题所涉及的领域 无线电安全&#xff0c;协议分析&#xff0c;web渗透&#xff0c;逆向分析 通讯协议涉及的安全主要包括以下几个方面&#xff1a; 1.1 保密性问题 …...

[Gdiplus/Gdi]_[中级]_[实现多行文本的多种颜色绘制-富文本绘制]

场景 在开发WTL/WIN32界面程序时,有时候需要绘制多行的段落文本,但是文本里的数值需要设置红色以便能让人第一时间关注到它。这种文本可以称之为富文本。GDI的DrawText和GDIPlus的DrawString方法都只能连续绘制某个颜色的文本。怎么实现?说明 在《绘图实现单行文本的多种颜色…...

Ubuntu如何创建一个子用户并赋与管理员权限

在Ubuntu操作系统中,如何创建一个子用户并赋与管理员权限 一、创建用户 sudo useradd -m -s /bin/bash test详细解释: sudo:以超级用户(root)权限执行该命令。useradd 命令通常需要管理员权限,因此需要加上 sudo。 useradd:创建新用户的命令。 -m:指示系统为新用户创建…...

【Linux | IO多路复用】epoll的底层原理详解

epoll 是一种高效的 I/O 多路复用机制&#xff0c;广泛用于 Linux 系统中&#xff0c;用于处理大量并发的文件描述符。它比传统的 select 和 poll 方法具有更好的性能&#xff0c;特别是在处理大量并发连接时。 1.epoll的设计思路 epoll是在select 出现 N 多年后才被发明的&a…...

npm run serve 提示异常Cannot read property ‘upgrade‘ of undefined

npm run serve 提示Cannot read property ‘upgrade’ of undefined 一般是proxy的target代理域名问题导致的&#xff0c;如下&#xff1a; 解决方案&#xff1a; proxy: { “/remoteDealerReportApi”: { target: ‘http://demo-.com.cn’, //此域名有问题&#xff0c;会导致…...

Muggle OCR 是一个高效的本地OCR(光学字符识别)模块

Muggle OCR 是一个高效的本地OCR&#xff08;光学字符识别&#xff09;模块&#xff0c;专为“麻瓜”设计&#xff0c;用于简化文本识别的过程。这个模块特别适用于处理印刷文本和解析验证码1。 以下是一些关于 Muggle OCR 的主要特点和使用方法&#xff1a; 特点&#xff1a;…...

【SpringBoot】万字源码解析——启动流程

Spring Boot启动流程 Spring Boot 的入口类&#xff1a; SpringBootApplication public class IntelGradingApplication {public static void main(String[] args) {SpringApplication.run(IntelGradingApplication.class, args);} }Spring Boot 的启动过程可以分为两方面&am…...

Nginx 配置初步 下

Nginx 配置初步(下) 一行代表一个指令&#xff1b; 每个指令有其上下文环境&#xff0c;比如 listen 指令只能在 http 指令块中出现&#xff0c;不能单独出现。1. Http 服务配置初步 1.1 常用指令 Nginx 的所有模块&#xff0c;打开模块我们就能看到模块中支持的指令。最常用…...

可视化ETL平台-Kettle的安装及简单使用

本章知识简介 主线A: 自连接查询; 主线B: 安装JDK与Kettle; 主线C: 使用Kettle工具. 本章目标&#xff1a; 1: 知道使用一张表可以实现自连接查询; [了解]注意: 左表、右表都是同一张表 2: 了解Kettle环境的安装流程; [了解]a.安装JDKb.安装Kettle 3: 熟悉使用kettle将txt数…...

java8 动态加载jar包至系统的classpath

1. io.test包 创建MyMain.java类&#xff0c;创建addJarToClasspath方法将jar包动态加载进系统的classpath中 package io.test;import java.io.File; import java.net.URL; import java.net.URLClassLoader; import java.lang.reflect.Method;public class MyMain {public st…...

C++二级题 计算好数:1数大于0数(二进制的位运算)

1、题目 若将一个正整数化为二进制数&#xff0c;在此二进制数中&#xff0c;我们将数字1的个数多于数字0的个数的这类二进制数称为好数。 例如&#xff1a; (13)10 (1101)2&#xff0c;其中1的个数为3&#xff0c;0的个数为1&#xff0c;则此数是好数&#xff1b; (10)10 (1…...

数字孪生城市:智慧城市的未来蓝图

在当今数字化时代&#xff0c;智能技术的广泛应用正在改变人们的生活和工作方式。数字孪生城市作为未来新型智慧城市演进的重要方向&#xff0c;数字孪生城市是一种将城市物理世界的各个方面转化为数字形式的技术&#xff0c;通过网络空间与物理世界之间的实时数据交换和仿真分…...

Java篇图书管理系统

目录 前言 一. 图书管理系统的核心 二. 图书管理系统基本框架 2.1 book包 2.1.1 Book&#xff08;书籍类&#xff09; 2.1.2 Booklist (书架类&#xff09; 2.2 user包 2.2.1 User类 2.2.2 Administrator(管理员类) 2.2.3 Visitor&#xff08;用户类&#xff09; 2.…...

BUUCTF之web篇

第一题 [极客大挑战 2019]EasySQL 打开靶机后可以看到这是一个登陆的页面 我们可以尝试两种方式登录 弱口令爆破&#xff08;burpsuite&#xff09; 通过SQL注入里的万能密码来跳过账户和密码验证的过程 这里就需要万能密码aor true # 在这里单引号的作用是结束用户名或者密码…...

010——二叉树(2)线索化

引入&#xff1a; 问题1&#xff1a; n个节点的二叉树&#xff0c;用二叉链表存储&#xff0c;问在这个二叉链表中一共有 __个指针域? 其中&#xff0c;有 __个指针域不为NULL&#xff0c;__个指针域为NULL? 答&#xff1a;2n n-1 n1 在二叉链表中&#xf…...

鸿蒙拍照小助手02

项目文件目录 为了确保项目文件目录清晰,以下是完整的项目文件目录结构: code 拍照小助手/ │ ├── entry/ │ ├── src/ │ │ ├── main/ │ │ │ ├── js/ │ │ │ │ └── 默认/ │ │ │ │ ├── 页面/ │ │ │ │ │ ├── 主页/ │ │ │ │ │ │ ├…...

lua while循环

软考鸭微信小程序 过软考,来软考鸭! 提供软考免费软考讲解视频、题库、软考试题、软考模考、软考查分、软考咨询等服务 Lua作为一种小巧精致的语言&#xff0c;特别适用于嵌入其他程序提供脚本支持。在编程中&#xff0c;循环结构是不可或缺的一部分&#xff0c;而while循环则是…...

JAVA篇之类和对象

目录 一. 面向对象 1.1 面向对象和面向过程 二. 类的定义和使用 2.1 什么是类 2.2 类的定义格式 三. 类的实例化 四. this引用 4.1 this引用的作用 五. 构造方法 5.1 构造方法重载 5.2 通过this调用其他构造方法 5.3 默认初始化 结语 一. 面向对象 Java 是一门面向对…...

IO流详解_CoderLix

主要内容 File类IO流字节流字符流异常处理Properties缓冲流转换流序列化流打印流 File类 1.1 概述 java.io.File 类是文件和目录路径名的抽象表示&#xff0c;主要用于文件和目录的创建、查找和删除等操作。 1.2 构造方法 public File(String pathname) &#xff1a;通过…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...

【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制

使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下&#xff0c;限制某个 IP 的访问频率是非常重要的&#xff0c;可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案&#xff0c;使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...

Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换

目录 关键点 技术实现1 技术实现2 摘要&#xff1a; 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式&#xff08;自动驾驶、人工驾驶、远程驾驶、主动安全&#xff09;&#xff0c;并通过实时消息推送更新车…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...