跳到主要内容

您将构建什么

一个安全审计工作流程,它使用 Continue CLI 和 Supabase MCP 来识别 RLS 漏洞,生成安全策略,修复权限问题,并确保您的数据库遵循安全最佳实践。

你将学到什么

本手册将教您如何
  • 使用 Supabase MCP 审计数据库安全性
  • 识别未启用行级安全性 (RLS) 的表
  • 查找并修复过于宽松或缺失的 RLS 策略
  • 生成遵循最佳实践的安全 RLS 迁移
  • 使用 GitHub Actions 自动化安全审计

先决条件

开始前,请确保您已具备
  • 拥有活跃项目的 Supabase 账户
  • 本地安装 Node.js 18+
  • 具有活跃积分Continue CLI(API 使用必需)
  • 对 SQL 和数据库概念有基本了解
1

安装 Continue CLI

curl -fsSL https://raw.githubusercontent.com/continuedev/continue/main/extensions/cli/scripts/install.sh | bash
2

设置 Continue CLI 账户和 API 密钥

  1. 访问 Continue 组织
  2. 注册或登录您的 Continue 账户
  3. 导航到您的组织设置
  4. 点击 “API 密钥”,然后点击 ”+ 新建 API 密钥”
  5. 立即复制 API 密钥(你不会再看到它了!)
  6. 登录 CLI:cn login
Continue CLI 可以分析您的数据库 schema 并生成复杂的 SQL 查询——您只需用简单的语言描述您想要的内容!

步骤 1:设置您的凭据

首先,您需要设置对 Supabase 项目的访问权限。
安全第一:使用 MCP 时请遵循 Supabase 的安全最佳实践
  • 切勿直接连接到生产数据库
  • 使用开发或 staging 环境
  • 尽可能启用只读模式
  • 将 MCP 访问范围限定到特定项目
Supabase MCP 支持 OAuth 身份验证以实现安全访问:OAuth 配置(推荐)Supabase MCP 在首次使用时会提示进行 OAuth 身份验证。只需按照授权流程操作即可。远程 MCP URL
https://mcp.supabase.com/mcp
MCP 服务器可以限定在特定项目范围内,以提高安全性。在设置期间进行配置。

Supabase 数据库工作流程选项

最快的成功路径

跳过手动设置,使用我们预构建的 Supabase Continuous AI 代理,它包含优化的提示、规则和 Supabase MCP,用于智能数据库管理。
Supabase MCP 的工作原理:
  • 通过 OAuth 连接到您的 Supabase 项目
  • 提供用于数据库查询、schema 检查和迁移的工具
  • 支持只读模式,实现更安全的操作
  • 可以限定在特定项目范围内以提高安全性
要使用预构建代理,您需要满足以下任一条件:
  • Continue CLI 专业版计划,附带模型插件,或
  • 您自己的 API 密钥已添加到 Continue Mission Control secrets
代理将自动检测并使用您的配置。对于 Supabase MCP
  • 拥有至少一个项目的 Supabase 账户
  • OAuth 身份验证(自动处理)
  • 开发或 staging 环境(非生产环境)

安全最佳实践:
  • 切勿将 MCP 用于生产数据库 - 始终使用开发或 staging 环境
  • 在分析数据时启用只读模式,以防止意外修改
  • 限定到特定项目以限制访问
  • 使用分支数据库进行 schema 更改测试

步骤 2:使用 AI 分析您的数据库

使用 Continue CLI 执行智能数据库分析。在 Continue CLI TUI 中输入这些提示
提示
Analyze my Supabase database schema and provide:
- Complete table structure with data types
- Relationships between tables
- Missing indexes that could improve performance
- Unused or redundant columns
- Suggestions for normalization improvements
可用的 Supabase MCP 功能:
  • 数据库查询:执行 SQL 查询并分析结果
  • Schema 检查:查看表结构、关系和约束
  • 性能分析:识别慢查询和优化机会
  • 安全审查:检查 RLS 策略和访问控制
  • 迁移生成:为 schema 更改创建 SQL 迁移

步骤 3:生成数据库迁移

根据 AI 建议创建和应用数据库迁移。在 Continue CLI TUI 中输入此提示: 示例:完整的 RLS 安全修复
I need to secure my Supabase database. Please:

1. First, audit all tables for RLS security issues
2. Generate a complete migration to fix all issues found
3. Create a security report I can share with my team

Here's what I need fixed:
- Enable RLS on all tables
- Create policies so users can only access their own data
- Ensure admins (role = 'admin') have full access
- Add policies for service accounts (role = 'service')
- Include audit logging for sensitive operations

For the users table specifically:
- Users can read their own profile
- Users can update their own profile (except role field)
- Only admins can view all users
- Only admins can delete users
- New users can insert their own record during signup

Generate the complete migration with:
- All SQL statements
- Clear policy names and comments
- Rollback statements
- A summary of what each policy does
预期输出: AI 将生成一个完整的 SQL 迁移文件,该文件
  • 在所有表上启用 RLS
  • 创建安全、有据可查的策略
  • 遵循 Supabase 安全最佳实践
  • 包括回滚功能
  • 为您的团队提供安全摘要
最佳实践:在应用 AI 生成的迁移之前务必进行审查。首先使用 Supabase 的分支功能在开发分支中进行测试。

步骤 4:设置自动化数据库监控

使用 Continue CLI 和 GitHub Actions 自动化数据库健康检查
name: Database Health Monitor

on:
  schedule:
    # Run daily at 2 AM UTC
    - cron: "0 2 * * *"
  workflow_dispatch: # Allow manual triggers

jobs:
  monitor-database:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - uses: actions/setup-node@v4
        with:
          node-version: "22"

      - name: Install Continue CLI
        run: |
          npm install -g @continuedev/cli
          echo "✅ Continue CLI installed"

      - name: Analyze Database Security
        env:
          CONTINUE_API_KEY: ${{ secrets.CONTINUE_API_KEY }}
        run: |
          echo "🔍 Performing security audit..."
          
          # Use Continue CLI to audit RLS and generate fixes
          cn -p "Using Supabase MCP, perform a comprehensive RLS security audit:
                 1. Check all tables for RLS enablement
                 2. Identify tables with missing or weak RLS policies
                 3. Find overly permissive policies (e.g., 'true' conditions)
                 4. Check for common security anti-patterns:
                    - Missing user_id checks
                    - No role-based access control
                    - Unrestricted DELETE operations
                    - Missing WITH CHECK clauses
                 5. Generate fixes for all security issues found
                 6. Create a security report with:
                    - Critical vulnerabilities (tables without RLS)
                    - High-risk policies that need immediate fixes
                    - SQL migrations to fix all issues
                    - Best practice recommendations
                    - Compliance checklist (GDPR, SOC2, etc.)
                 
                 If critical security issues are found:
                 - Generate the complete fix migration
                 - Create a GitHub issue with severity labels
                 - Tag security team members for review"

      - name: Save Health Report
        run: |
          echo "## 📊 Database Health Report" >> $GITHUB_STEP_SUMMARY
          echo "Generated at $(date)" >> $GITHUB_STEP_SUMMARY
          echo "" >> $GITHUB_STEP_SUMMARY
          echo "Check the 'Analyze Database Security' step for the full report" >> $GITHUB_STEP_SUMMARY

      - name: Upload Health Report
        uses: actions/upload-artifact@v4
        with:
          name: database-health-report
          path: |
            *.md
            *.sql
所需的 GitHub Secrets:添加至:Repository Settings → Secrets and variables → Actions

你已构建完成

完成本指南后,您将拥有一个完整的人工智能驱动的数据库管理系统,它
  • 分析 schema 设计 - 识别优化机会和最佳实践
  • 优化查询 - 建议索引和查询重写以提高性能
  • 生成迁移 - 为 schema 改进创建 SQL 代码
  • 监控健康状况 - 运行自动化检查以发现性能和安全问题
  • 提供洞察 - 根据数据模式提供可操作的建议

持续 AI 数据库管理

您的系统现在在 Level 2 Continuous AI 级别运行 - AI 处理例行数据库分析和优化,并由人工监督迁移审批。

高级数据库提示

使用这些高级 Continue CLI 提示增强您的工作流程

实时性能

实时监控查询性能,并对超出阈值的慢查询发出警报

数据质量检查

自动验证数据完整性,查找重复项,并确保相关表之间的一致性

访问模式分析

分析 API 日志以了解数据访问模式并相应地优化索引

成本优化

审查数据库使用情况并建议在保持性能的同时降低成本的方法

安全最佳实践

数据库安全指南:
  • 始终将 MCP 用于开发/staging 环境
  • 为分析任务启用只读模式
  • 切勿在代码中存储生产凭据
  • 在执行前审查所有 AI 生成的 SQL
  • 使用 RLS 策略强制实施访问控制
  • 定期审计数据库权限

故障排除

Supabase MCP 连接问题

如果遇到连接问题
  1. 验证 OAuth 身份验证是否完成
  2. 检查您的 Supabase 项目是否可访问
  3. 确保您没有连接到生产数据库
  4. 验证 MCP URL 是否正确:https://mcp.supabase.com/mcp

常见数据库分析问题

问题解决方案
未找到表验证您的数据库是否已创建表
权限被拒绝检查 OAuth 范围和项目权限
慢查询分析确保您的数据库已启用查询日志
迁移失败首先在分支数据库中测试迁移

后续步骤

资源