Score:1

สิทธิ์ของบัญชีบริการ GCP

ธง br

มือใหม่ GCP ที่นี่ หวังว่าจะมีคำตอบด่วนที่ฉันขาดหายไป

ฉันมีโครงการที่มี GCE VM ทำงานอยู่ ฉันต้องการสำรองชุดข้อมูลเป็นครั้งคราวไปยังที่จัดเก็บวัตถุของ GCP แผนของฉันคือเรียกใช้ 'gsutil rsync ...' จากงาน cron

ฉันสร้างบัคเก็ตสำหรับงานที่จะใช้ ฉันไม่ได้แก้ไขสิทธิ์ บทบาท หรือสิ่งใดๆ ในบัคเก็ต

ฉันเรียกใช้ "sudo su -" เพื่อให้ฉันทำงานในฐานะ root เนื่องจากฉันคาดว่างาน cron จะทำ จากนั้นจึงพิมพ์

gsutil rsync -r -d <dir เพื่อสำรองข้อมูล> gs://<bucket>/

และฉันได้รับ

AccessDeniedException: 403 สิทธิ์ไม่เพียงพอ

ขณะอยู่ในสถานะนี้ ฉันพิมพ์ 'gcloud config list' และได้รับ

บัญชี = <xyz>[email protected]

enable_usage_reporting = จริง

โครงการ = <รหัสโครงการ>

การกำหนดค่าที่ใช้งานของคุณคือ: [ค่าเริ่มต้น]

นี่คือบัญชีบริการเริ่มต้นที่สร้างขึ้นเมื่อฉันสร้าง VM ฉันไม่ได้ทำการแก้ไขใดๆ

ในคอนโซล ฉันไปที่ IAM->บัญชีบริการ คลิกที่บัญชีบริการนี้ คลิกที่แท็บสิทธิ์ และฉันเห็นว่าบัญชีบริการนี้เป็นตัวแก้ไขใน <project id>

ในคอนโซล ฉันไปที่ Cloud Storage เรียกดู คลิกที่บัคเก็ตของฉัน ไปที่แท็บสิทธิ์ และฉันเห็นว่าบทบาทของ Editor มีบทบาท 'Storage Legacy Bucket Owner' และ 'Storage Legacy Object Owner' กำลังดูบทบาทเหล่านั้น ฉันได้รับแจ้งอย่างแรกคือการเข้าถึงแบบอ่าน/เขียนไปยังบัคเก็ตที่มีอยู่โดยมีสิทธิ์สร้าง/แสดงรายการ/ลบบนวัตถุ อย่างที่สองทำให้ฉันมีสิทธิ์อ่าน/เขียนวัตถุที่มีอยู่

ฉันได้ตรวจสอบแล้วว่าขณะนี้ถังว่างเปล่า

ฉันต้องทำอย่างไรเพื่อให้คำสั่ง gsutil ทำงานโดยมีสิทธิ์เพียงพอ

Score:1
ธง cn

เป็นไปได้มากว่าปัญหาของคุณคือขอบเขตการเข้าถึง Cloud API ของอินสแตนซ์ Compute Engine VM ไม่เพียงพอ

เดอะ gsutil rsync คำสั่งต้องการการอนุญาตดังต่อไปนี้:

  • storage.objects.create
  • storage.objects.delete
  • storage.objects.list
  • storage.objects.get # จำเป็นสำหรับถังเพื่อคัดลอกถัง

บทบาท บทบาท/บรรณาธิการ ไม่มีสิทธิ์เหล่านั้น

อินสแตนซ์ VM ของ Google Cloud Compute Engine ใช้สองวิธีในการอนุญาต:

  • บัญชีบริการเริ่มต้น
  • ขอบเขตการเข้าถึง Cloud API

บัญชีบริการต้องมีบทบาทที่ให้สิทธิ์ตามรายการด้านบน หรือข้อมูลประจำตัวของบัญชีบริการต้องได้รับสิทธิ์เข้าถึงที่ฝากข้อมูลและเนื้อหา Google Cloud Storage รองรับวิธีการอนุญาตที่แตกต่างกันสองวิธี เพื่อความง่าย เราขอแนะนำให้คุณเพิ่มบทบาทที่จำเป็นในบัญชีบริการ สำหรับกรณีการใช้งานของคุณ gsutil rsyncฉันขอแนะนำให้เพิ่มบทบาท บทบาท/storage.legacyBucketOwner.

อย่างไรก็ตาม แม้ว่าบัญชีบริการจะมีสิทธิ์ที่จำเป็นผ่านบทบาท แต่ขอบเขตการเข้าถึง Compute Engine Cloud API ก็สามารถนำสิทธิ์เหล่านั้นออกไปได้ ไปที่ Google Cloud Console เลือกอินสแตนซ์ VM ของคุณ ตรวจสอบขอบเขตที่เปิดใช้งาน คุณควรเปิดใช้งาน "Storage: Full" หรือ "Allow access to all Cloud APIs" มิฉะนั้น บัญชีบริการจะถูกจำกัดในสิทธิ์ที่ได้รับสำหรับโทเค็นการเข้าถึง OAuth ที่ gsutil ต้องการสำหรับการให้สิทธิ์

ขอบเขตการเข้าถึงอินสแตนซ์ Compute Engine VM Cloud API

Stephen Daniel avatar
br flag
ใช้งานได้แล้ว! บทบาทผู้แก้ไขมีสิทธิ์ที่จำเป็นทั้งหมด แต่ API ไม่ได้เปิดใช้งานใน VM ฉันหยุด VM แก้ไขเพื่ออนุญาต API ทั้งหมด รีสตาร์ท และทุกอย่างทำงาน

โพสต์คำตอบ

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