私有空间 #
Private Spaces 概述 #
Heroku Private Spaces 提供网络隔离的运行环境,适合对安全性和合规性有严格要求的应用。
特点 #
| 特点 | 说明 |
|---|---|
| 网络隔离 | 应用运行在私有网络中 |
| 自定义 IP | 可以配置静态出站 IP |
| VPN 连接 | 支持 VPN 连接到企业网络 |
| 合规性 | 满足 HIPAA、PCI 等合规要求 |
| 区域选择 | 可选择特定 AWS 区域 |
Private Spaces 类型 #
| 类型 | 说明 | 适用场景 |
|---|---|---|
| Private Spaces | 基础私有空间 | 企业应用 |
| Shield Spaces | 增强安全 | 合规要求高的应用 |
创建私有空间 #
使用 CLI 创建 #
bash
# 创建私有空间
heroku spaces:create my-space --region virginia
# 创建 Shield 空间
heroku spaces:create my-shield-space --region virginia --shield
# 查看空间
heroku spaces
# 查看空间详情
heroku spaces:info my-space
在空间中创建应用 #
bash
# 在空间中创建应用
heroku create myapp --space my-space
# 将现有应用移动到空间
heroku apps:move --space my-space --app myapp
网络配置 #
出站 IP #
bash
# 查看空间的出站 IP
heroku spaces:outbound-ips my-space
# 输出示例
# === my-space Outbound IPs
# 52.0.0.1
# 52.0.0.2
# 52.0.0.3
# 52.0.0.4
配置静态 IP #
bash
# 创建 Private Link
heroku spaces:peering:create my-space --aws-account-id 123456789012
# 配置 VPN
heroku spaces:vpn:connect my-space --name office-vpn
VPN 配置 #
text
┌─────────────────────────────────────────────────────┐
│ VPN 连接架构 │
├─────────────────────────────────────────────────────┤
│ │
│ 企业网络 │
│ ┌─────────────────────────────────────────────┐ │
│ │ VPN Gateway │ │
│ │ ├── IP: 203.0.113.1 │ │
│ │ └── CIDR: 10.0.0.0/8 │ │
│ └─────────────────────────────────────────────┘ │
│ │ │
│ │ IPsec VPN Tunnel │
│ │ │
│ ▼ │
│ Heroku Private Space │
│ ┌─────────────────────────────────────────────┐ │
│ │ VPN Connection │ │
│ │ ├── IP: 52.0.0.1 │ │
│ │ └── CIDR: 10.10.0.0/16 │ │
│ │ │ │
│ │ ┌─────────┐ ┌─────────┐ │ │
│ │ │ App 1 │ │ App 2 │ │ │
│ │ └─────────┘ └─────────┘ │ │
│ └─────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────┘
bash
# 创建 VPN 连接
heroku spaces:vpn:connect my-space \
--name office-vpn \
--public-ip 203.0.113.1 \
--routers 10.0.0.1,10.0.0.2
# 查看 VPN 状态
heroku spaces:vpn:info my-space --name office-vpn
# 查看 VPN 配置信息
heroku spaces:vpn:config my-space --name office-vpn
内部路由 #
内部通信 #
bash
# 应用之间可以通过内部域名通信
# 格式: app-name.app-space-name.heroku.space
# 例如
curl http://api.my-app.heroku.space
配置内部路由 #
bash
# 启用内部路由
heroku spaces:internal-routing:enable my-space
# 查看内部路由状态
heroku spaces:info my-space
Shield Spaces #
Shield 特性 #
| 特性 | 说明 |
|---|---|
| 加密休息 | 数据静态加密 |
| 增强审计 | 详细审计日志 |
| 合规认证 | HIPAA、PCI、SOC |
| 严格访问 | 更严格的访问控制 |
创建 Shield 空间 #
bash
# 创建 Shield 空间
heroku spaces:create my-shield-space --region virginia --shield
# Shield 空间中的应用
heroku create myapp --space my-shield-space
Shield 合规要求 #
markdown
## Shield 合规检查清单
- [ ] 启用 MFA
- [ ] 配置审计日志
- [ ] 设置访问控制
- [ ] 加密敏感数据
- [ ] 定期安全审查
访问控制 #
配置 IP 白名单 #
bash
# 设置 IP 白名单
heroku spaces:access:add my-space --ip 203.0.113.0/24
# 查看访问控制
heroku spaces:access my-space
# 删除 IP 白名单
heroku spaces:access:remove my-space --ip 203.0.113.0/24
团队访问 #
bash
# 添加团队成员
heroku access:add user@example.com --app myapp --permissions deploy
# 查看团队成员
heroku access --app myapp
数据库配置 #
Private 数据库 #
bash
# 在私有空间中创建数据库
heroku addons:create heroku-postgresql:private-0 --app myapp
# 创建 Shield 数据库
heroku addons:create heroku-postgresql:shield-0 --app myapp
数据库连接 #
javascript
// 应用内部连接数据库
const { Pool } = require('pg');
const pool = new Pool({
connectionString: process.env.DATABASE_URL,
ssl: {
rejectUnauthorized: false
}
});
监控与日志 #
私有空间日志 #
bash
# 查看空间日志
heroku logs --tail --app myapp
# 配置日志转发
heroku drains:add syslog://logs.example.com:514 --app myapp
监控配置 #
bash
# 添加监控 Add-ons
heroku addons:create newrelic:wayne --app myapp
heroku addons:create papertrail:choklad --app myapp
最佳实践 #
1. 网络架构 #
text
┌─────────────────────────────────────────────────────┐
│ 私有空间网络架构 │
├─────────────────────────────────────────────────────┤
│ │
│ 公网 │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────┐ │
│ │ Heroku Router │ │
│ │ (HTTPS, WAF) │ │
│ └─────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────┐ │
│ │ Private Space │ │
│ │ │ │
│ │ ┌─────────┐ ┌─────────┐ │ │
│ │ │ Web App │ │ API App │ │ │
│ │ └────┬────┘ └────┬────┘ │ │
│ │ │ │ │ │
│ │ └──────┬───────┘ │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ ┌─────────────────────────────────────┐ │ │
│ │ │ Private PostgreSQL │ │ │
│ │ │ Private Redis │ │ │
│ │ └─────────────────────────────────────┘ │ │
│ │ │ │
│ │ │ │ │
│ │ │ VPN │ │
│ │ ▼ │ │
│ │ ┌─────────────────────────────────────┐ │ │
│ │ │ 企业网络 │ │ │
│ │ └─────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────┘
2. 安全配置 #
markdown
## 安全配置检查清单
- [ ] 启用 MFA
- [ ] 配置 IP 白名单
- [ ] 设置 VPN 连接
- [ ] 启用内部路由
- [ ] 配置审计日志
- [ ] 定期安全审查
3. 成本优化 #
markdown
## 成本优化建议
- 使用合适的 Dyno 大小
- 合理配置数据库计划
- 定期审查资源使用
- 使用自动扩展
故障排查 #
VPN 连接问题 #
bash
# 检查 VPN 状态
heroku spaces:vpn:info my-space --name office-vpn
# 查看 VPN 配置
heroku spaces:vpn:config my-space --name office-vpn
# 常见问题
# 1. IP 配置错误
# 2. 路由配置错误
# 3. 防火墙阻止
应用无法访问 #
bash
# 检查空间状态
heroku spaces:info my-space
# 检查应用状态
heroku ps --app myapp
# 检查访问控制
heroku spaces:access my-space
下一步 #
私有空间掌握后,接下来学习 API 与自动化 了解自动化管理!
最后更新:2026-03-28