Score:0

การเข้าถึงข้อมูล BigQuery จากโครงการต่างๆ ในองค์กรเดียวกันด้วยบัญชีบริการ

ธง ng

ฉันมีปัญหาร้ายแรงในการรับไคลเอนต์ BigQuery อย่างเป็นทางการ (ใน Python 3) ไปยังโครงการอื่นในองค์กรเดียวกันที่ได้รับอนุญาตจากบริการ Cloud Run

บริการ Cloud Run อยู่ใน Project Main และฉันกำลังพยายามเข้าถึงตารางใน Project อื่นๆ ทั้งสองโปรเจ็กต์นี้อยู่ในองค์กรเดียวกัน

บัญชีบริการเป็นบัญชีบริการที่ผู้ใช้สร้างขึ้นซึ่งสร้างขึ้นใน Project Main (ไม่ใช่บัญชีเริ่มต้น) และมีสิทธิ์ที่จำเป็นทั้งหมดเพื่อเรียกใช้เป็นบัญชีบริการใน Project Main และอีเมลของบัญชีบริการได้รับเฉพาะบทบาท "ผู้ใช้ BigQuery" ในโครงการอื่นๆ

ใน Python ฉันมีตัวอย่างโค้ดดังนี้:

จาก google.cloud นำเข้า bigquery

query_str = "เลือก * จาก `project_other.prod.table`"

bqclient = bigquery.Client()
df = bqclient.query(query_str).result().to_dataframe()

ซึ่งทำงานภายในคอนเทนเนอร์ที่ปรับใช้กับ Cloud Run ในโครงการหลัก และการทำให้ใช้งานได้มีบัญชีบริการที่ถูกต้องแนบมาด้วย

เมื่อทริกเกอร์สคริปต์ ฉันพบข้อยกเว้นดังต่อไปนี้:

ยก self._exception google.api_core.exceptions.BadRequest: 400 การเข้าถึงถูกปฏิเสธ: ตาราง
project_other:prod.table: ผู้ใช้ไม่ได้รับอนุญาตให้ค้นหาตาราง project_other:prod.table ที่ [4:13]

จากที่ฉันเข้าใจ หากบัญชีบริการที่แนบกับการปรับใช้ Cloud Run มีสิทธิ์ที่จำเป็น คุณไม่จำเป็นต้องทำการรับรองความถูกต้องใดๆ ในคอนเทนเนอร์ เนื่องจากบริการที่มีการจัดการ "ดำเนินการให้คุณ" ทั้งหมด

มีคนช่วยฉันหาสาเหตุที่สิ่งนี้เกิดขึ้นได้ไหม บัญชีบริการมี iam.serviceAccounts.actAs ใน Project Main แต่ต้องการสิทธิ์เหล่านั้นใน Project Other ด้วยหรือบทบาทของผู้ใช้ BigQuery เพียงพอหรือไม่

John Hanley avatar
cn flag
หากต้องการค้นหาตาราง คุณต้องมีสิทธิ์ **bigquery.tables.getData** บทบาท **ผู้ใช้ BigQuery** มี **bigquery.tables.list** ลองเปลี่ยนบทบาทเป็น **BigQuery Data Viewer** (roles/bigquery.dataViewer) https://cloud.google.com/bigquery/docs/access-control#bigquery
bandwagoner avatar
ng flag
@JohnHanley สิ่งนี้ช่วยแก้ปัญหาได้ ขอบคุณมาก! เพียงเพื่อเพิ่มอีกจุดที่ไม่ได้อยู่ในคำถามเดิมของฉัน เพื่อที่จะเขียนไปยังตารางใดๆ ฉันต้องมอบบทบาท BigQuery Data Editor ให้กับบัญชีบริการด้วย หากคุณไม่รังเกียจที่จะเพิ่มความคิดเห็นของคุณเพื่อเป็นวิธีแก้ปัญหา เรายินดีที่จะยอมรับ
Score:0
ธง cn

หากต้องการค้นหาตาราง คุณต้องได้รับอนุญาต bigquery.tables.getData. บทบาทของผู้ใช้ BigQuery bigquery.tables.list. เปลี่ยนบทบาทเป็น โปรแกรมดูข้อมูล BigQuery (บทบาท/bigquery.dataViewer)

บทบาทและสิทธิ์ที่กำหนดไว้ล่วงหน้าของ BigQuery

หากต้องการแก้ไข/เขียนตาราง คุณต้องได้รับอนุญาต bigquery.tables.updateData. การอนุญาตนั้นอยู่ในบทบาท:

  • ผู้ดูแลระบบ BigQuery (บทบาท/bigquery.admin)
  • เจ้าของข้อมูล BigQuery (บทบาท/bigquery.dataOwner)
  • BigQuery Data Editor (roles/bigquery.dataEditor) <- บทบาทที่แนะนำ

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา