3.6 KiB
3.6 KiB
title, type, tags
| title | type | tags | |||||
|---|---|---|---|---|---|---|---|
| JDBCWrapper | concept |
|
Definition
JDBC Wrapper(JDBC 包装器)是一种通过包装 JDBC 连接,配合 AWS SDK 从 AWS Secrets Manager 动态获取数据库凭据的编程模式,使应用程序无需硬编码数据库密码即可连接数据库。
Problem Statement
传统数据库连接方式:
应用程序 → 配置文件/环境变量 → 数据库
↑
硬编码明文密码(安全风险)
问题:
- 密码在代码、配置文件或环境变量中明文存储
- 密码变更需要修改配置并重启应用
- 无法实现细粒度的访问控制
- 密码泄露风险高
Solution: JDBC Wrapper Pattern
使用 JDBC Wrapper 的连接方式:
应用程序 → JDBC Wrapper + AWS SDK → AWS Secrets Manager → 数据库
工作流程:
- 应用程序通过 JDBC Wrapper 建立连接
- JDBC Wrapper 调用 AWS SDK 向 Secrets Manager 请求凭据
- Secrets Manager 返回动态获取的数据库密码
- JDBC Wrapper 使用临时凭据建立数据库连接
- 连接完成后,凭据不在应用内存中长期保留
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
Related Concepts
- SecretsManagement:敏感信息管理的整体框架
- SecretRotation:密码轮换机制,与 JDBC Wrapper 配合实现无停机轮换
- AWS-SDK:AWS 服务调用开发工具包
- IAM-Roles:基于角色的访问控制机制
Sources
- CTP-Topic-62-AWS-Secrets-Manager — Victor 演示使用 JDBC Wrapper + AWS SDK 实现无密码 Oracle 数据库登录
Aliases
- Database Credential Provider
- Secrets Manager JDBC Driver
- Dynamic Database Credentials
- AWS SDK Database Wrapper