93 lines
3.6 KiB
Markdown
93 lines
3.6 KiB
Markdown
---
|
||
title: "JDBCWrapper"
|
||
type: concept
|
||
tags:
|
||
- AWS
|
||
- Java
|
||
- Database
|
||
- Security
|
||
- SDK
|
||
---
|
||
|
||
## 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 → 数据库
|
||
```
|
||
|
||
**工作流程**:
|
||
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
|
||
|
||
## 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
|