今天要做的服務邊界, 目的是防止攻擊者取得機敏資料, 我們要做的就是對gcp的api除了檢查身份, 還檢查發起的位置, 如此就算攻擊者取得service account key, 因為不在邊界內發起, 所以也無法取得資料
┌──────────────────── Service Perimeter ─────────────────────┐
│ │
│ Cloud Storage Cloud SQL Vertex AI Secret Manager │
│ (GCS) (pgvector) (AI Agent) (credentials) │
│ │
│ ↑ 只允許邊界內部呼叫 ↑ │
└────────────────────────────────────────────────────────────┘
外部呼叫 → Access Level 判斷 → 允許/拒絕
實務上會定義三個東西,對應三個 Terraform 資源:
1. Access Policy(整個組織只需要一個)
# 組織層級的總管理政策,是後面兩個東西的「容器」 google_access_context_manager_access_policy
2. Access Level(從外面進來的通行證條件)
`# 定義:哪些 IP 或 SA 可以從邊界外存取
google_access_context_manager_access_level
條件例如:
3. Service Perimeter(邊界本體,最核心)
`google_access_context_manager_service_perimeter
裡面要指定三件事:
├── resources → 哪個 GCP Project 在邊界內
├── restricted_services → 哪些 API 被保護
│ storage.googleapis.com
│ aiplatform.googleapis.com
│ sqladmin.googleapis.com
│ secretmanager.googleapis.com
└── access_levels → 引用上面定義的通行證`
不過當前我只有project層級權限 所以是無法設定組織層級的policy的