Files
nexus/wiki/concepts/JDBCWrapper.md

3.6 KiB
Raw Blame History

title, type, tags
title type tags
JDBCWrapper concept
AWS
Java
Database
Security
SDK

Definition

JDBC WrapperJDBC 包装器)是一种通过包装 JDBC 连接,配合 AWS SDK 从 AWS Secrets Manager 动态获取数据库凭据的编程模式,使应用程序无需硬编码数据库密码即可连接数据库。

Problem Statement

传统数据库连接方式:

应用程序 → 配置文件/环境变量 → 数据库
                     ↑
            硬编码明文密码(安全风险)

问题

  • 密码在代码、配置文件或环境变量中明文存储
  • 密码变更需要修改配置并重启应用
  • 无法实现细粒度的访问控制
  • 密码泄露风险高

Solution: JDBC Wrapper Pattern

使用 JDBC Wrapper 的连接方式:

应用程序 → JDBC Wrapper + AWS SDK → AWS Secrets Manager → 数据库

工作流程

  1. 应用程序通过 JDBC Wrapper 建立连接
  2. JDBC Wrapper 调用 AWS SDK 向 Secrets Manager 请求凭据
  3. Secrets Manager 返回动态获取的数据库密码
  4. JDBC Wrapper 使用临时凭据建立数据库连接
  5. 连接完成后,凭据不在应用内存中长期保留

Key Benefits

优势 说明
无密码访问 用户无需知道数据库密码,通过 IAM 角色授权
动态轮换 数据库密码轮换时,应用无需重启
集中审计 所有数据库访问通过 Secrets Manager 记录
最小权限 基于 IAM 角色控制数据库访问权限
审计追溯 用户名由角色控制,可追溯数据库操作

Implementation Architecture

┌─────────────┐     ┌──────────────┐     ┌─────────────────┐     ┌──────────────┐
│ Application │────▶│ JDBC Wrapper │────▶│ AWS SDK         │────▶│ Secrets      │
│             │     │ (密码获取)    │     │ (调用API)        │     │ Manager      │
└─────────────┘     └──────────────┘     └─────────────────┘     └──────────────┘
                                                                          │
                                                                          ▼
                                                                  ┌──────────────┐
                                                                  │ Oracle/MySQL │
                                                                  │ Database     │
                                                                  └──────────────┘

Access Control Model

  • 用户名:由 IAM 角色控制,根据角色映射数据库用户
  • 密码:由 AWS Secrets Manager 动态提供,无需人工知晓
  • 访问权限:通过 IAM Policy 控制谁能访问哪些 Secrets

Sources

Aliases

  • Database Credential Provider
  • Secrets Manager JDBC Driver
  • Dynamic Database Credentials
  • AWS SDK Database Wrapper