ฉันกำลังพยายามตั้งค่าบัญชีบริการจำนวนมากสำหรับหัวข้อและการสมัครรับข้อมูลอีกจำนวนมาก สิ่งที่ฉันพยายามทำให้สำเร็จคือบริการไมโครแต่ละรายการควรได้รับอนุญาตให้เขียนถึงหัวข้อเฉพาะ และ/หรือสมัครเป็นสมาชิกเฉพาะเท่านั้น
ขณะนี้ฉันมี:
ทรัพยากร "google_service_account" "my_sa" {
account_id = "บัญชีบริการของฉัน"
display_name = "บัญชีบริการสำหรับ ... "
}
ทรัพยากร "google_project_iam_member" "my_pubsub_iam" {
โครงการ = var.โครงการ
บทบาท = "บทบาท/pubsub.publisher"
สมาชิก = "serviceAccount:${google_service_account.my_sa.email}"
}
ซึ่งตั้งค่า my_sa เป็น pubsub.publisher และควรอนุญาตให้เผยแพร่ไปยังหัวข้อใดก็ได้
สำหรับสมาชิกฉันมี:
# บัญชีการตั้งค่าเหมือนด้านบน แต่เป็นสมาชิก
ทรัพยากร "google_pubsub_subscription" "crm_sub" {
ชื่อ = "การสมัครของฉัน"
หัวข้อ = var.topic
}
การตั้งค่าเช่นนี้จะทำให้แต่ละเซิร์ฟเวอร์สามารถสมัครสมาชิกทั้งหมดหากพวกเขาเป็นสมาชิกและเขียนถึงทุกหัวข้อหากพวกเขาเป็นผู้เผยแพร่ใช่ไหม
เคยเห็นตัวอย่างที่ https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/pubsub_topic_iam และพยายามทำความเข้าใจว่าและ https://registry.terraform.io/providers/hashicorp/google/latest/docs/data-sources/iam_policy แต่ฉันกำลังดิ้นรนเล็กน้อย
ฉันควรจะเพิ่ม
ข้อมูล "google_iam_policy" "ผู้ดูแลระบบ" {
ผูกพัน {
บทบาท = "บทบาท/บรรณาธิการ"
สมาชิก = [
"serviceAccount:${google_service_account.my_pubsub_iam.email}",
]
}
}
ทรัพยากร "google_pubsub_topic_iam_policy" "นโยบาย" {
โครงการ = google_pubsub_topic.example.project
หัวข้อ = google_pubsub_topic.example.name
policy_data = data.google_iam_policy.admin.policy_data
}
ในแต่ละบริการ?
ฉันได้แยกไว้และบางหัวข้อมีผู้เขียนหลายคน ดังนั้นหากวิธีข้างต้นคือวิธีแก้ปัญหา จะจัดการอย่างไร นโยบายตัวแก้ไขใหม่สำหรับแต่ละบริการ หรือจะเขียนทับนโยบายสำหรับหัวข้อนั้นๆ หรือไม่