iT邦幫忙

2026 iThome 鐵人賽

DAY 14
0
自我挑戰組

和AI學習gcp - 建立對話代理系列 第 17

Day17 理解Secret manager

  • 分享至 

  • xImage
  •  

Secret manager, 用來存取機密的資訊

像是api key, db password,..

以專案來說 我們會把這些內容設定在環境變數(env), 並且在.gitignore排除這些env檔

而上雲後需要用到secrect value的服務則指向secret manager的key, 通常也有version綁定latest

而這邊就會出現一個狀況
既然機密資料不會進git, 那在gcp那端的secrect value是怎麼給予的

這邊先給一個設定secrect 的tf範例

# 1. 建立 Secret 外殼
resource "google_secret_manager_secret" "db_password" {
  secret_id = "bank-ai-db-password"
  replication {
    auto {}
  }
}

# 2. 授權給 Cloud Run 的 Service Account 讓他有權限「讀取」
resource "google_secret_manager_secret_iam_member" "run_accessor" {
  secret_id = google_secret_manager_secret.db_password.id
  role      = "roles/secretmanager.secretAccessor"
  member    = "serviceAccount:${google_service_account.bff_sa.email}"
}

如此設定SA有讀取secret的權限, 接著就來到怎麼給予secret value

A. 透過gcp console介面
當terraform apply後 就會在secret manager出現一個密鑰的容器

就可以手動對這個key 新增版本給予值

https://ithelp.ithome.com.tw/upload/images/20260817/20154359qggTG6iazv.png

B 透過CLI 來操作

echo -n "你的超祕密Token" | gcloud secrets versions add bank-ai-db-password --data-file=-

或是綁定在CICD中 把secret值存取到像是repo的vault, 然後在CICD的步驟中 使用上面的gcloud指令賦予值

另外secret manager也是會有微小的費用 可參照doc

原本我們會用db存取向量化後的資料, 然後讀取db時就需要用到db_password,
不過使用cx studio agent後我們不走自建RAG的搜索知識庫, 也就沒有存取的需求

今天也就沒有要實作的內容, 反而是把之前部分在RAG的規劃comment起來 減少資源


上一篇
Day 16 BFF整合agent API, 實現多輪對話
下一篇
Day 18 Agent Instruction 優化
系列文
和AI學習gcp - 建立對話代理18
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言