Score:0

นโยบายบัคเก็ต AWS S3 สำหรับการรับและอัปโหลด

ธง si

ฉันมีสองถัง แต่ละถังมีเป้าหมายของตัวเอง จนถึงตอนนี้ฉันไม่เข้าใจการกำหนดค่าที่ซับซ้อนของการตั้งค่าบัคเก็ต ดูเหมือนว่ามีสามสิ่งที่ต้องกำหนดค่า

  1. ปิดกั้นการเข้าถึงสาธารณะ
  2. นโยบายฝากข้อมูล
  3. บช

ฉันรู้ว่าถ้าฉันปิด (1) ทุกอย่างที่ฉันต้องการจะทำให้สำเร็จก็จะได้ผล แม้ว่านี่จะเป็นการตั้งค่าสี่อย่างที่ไร้ความหมายที่สุดเท่าที่ฉันเคยเห็นมา (ทำไมฉันถึงสนใจที่จะจำกัดการเข้าถึงที่ฝากข้อมูลตามเวลาที่มีการแก้ไขนโยบาย???)

ดูเหมือนว่าสิ่งที่ฉันเพิ่มใน (2) ไม่สำคัญจริงๆ ตัวอย่างเช่น ฉันมีนโยบายเดียวที่อนุญาตเฉพาะ GetObject แต่ฉันสามารถ DeleteObject และ PutObject จาก SDK ฉันมีนโยบายอื่นที่อนุญาตให้ DeleteObject, GetObject และ PutObject แต่ลบเฉพาะงานและวางการเข้าถึงที่ถูกปฏิเสธ (จากบัญชี IAM ที่มีสิทธิ์การเข้าถึงระดับผู้ดูแลระบบไปยังทุกสิ่งภายใต้ดวงอาทิตย์)

ฉันไม่รู้ด้วยซ้ำว่าจุดของ (3) ทำไมฉันถึงต้องการอนุญาตให้ ใดๆ ผู้ใช้ AWS? อย่างไรก็ตาม..

ฉันมีถังสองถังกับสองเป้าหมาย และฉันไม่สามารถหาสิ่งที่ต้องทำร่วมกันได้

ตอบ: ที่เก็บข้อมูลสาธารณะสำหรับเว็บไซต์แบบคงที่

สำหรับสิ่งนี้ ฉันมีสิทธิ์เข้าถึง Bock แบบสาธารณะเพื่อปิด และนโยบายเช่นนั้น (ซึ่งฉันคิดว่าไม่ได้ทำอะไรเลย) ทุกคนสามารถดูเนื้อหาฝากข้อมูลได้ (ดี!) แต่นโยบายนี้ไม่ควรอนุญาต PutObject แต่อย่างใด

{
    "เวอร์ชัน": "2012-10-17",
    "รหัส": "Policy1632669906301",
    "คำแถลง": [
        {
            "ซิด": "Stmt1632669869776",
            "เอฟเฟกต์": "อนุญาต",
            "อาจารย์ใหญ่": "*",
            "การกระทำ": "s3:GetObject",
            "ทรัพยากร": "arn:aws:s3:::publicwebsite/*"
        }
    ]
}

เหตุใดฉันจึงสามารถอัปโหลดและลบได้ เมื่อกำหนดเฉพาะ GetObject เท่านั้น

B: ที่เก็บข้อมูลที่ปลอดภัยสำหรับการสำรองข้อมูล

ที่เก็บข้อมูลนี้มีไว้สำหรับแอปของฉันเพื่อส่งการสำรองข้อมูล ดังนั้นสิ่งเดียวที่ควรอ่าน/เขียนได้คือแอปพลิเคชันของฉัน แต่ถ้าฉันเปิดบล็อกการเข้าถึงแบบสาธารณะ ฉันจะอัปโหลดไม่ได้ แต่ฉันก็สามารถลบได้ อีกครั้งมันไม่สมเหตุสมผลเลย ถ้าฉันปิดบล็อกการเข้าถึงสาธารณะ ฉันจะทำทุกอย่างได้ นี่คือนโยบาย

{
    "เวอร์ชัน": "2012-10-17",
    "รหัส": "Policy1635858319261",
    "คำแถลง": [
        {
            "ซิด": "Stmt1635858317672",
            "เอฟเฟกต์": "อนุญาต",
            "อาจารย์ใหญ่": {
                "AWS": "arn:aws:iam::XXXXXXXXX:ผู้ใช้/ผู้ใช้สำรองข้อมูล"
            },
            "หนังบู๊": [
                "s3:DeleteObject",
                "s3:GetObject",
                "s3:PutObject"
            ]
            "ทรัพยากร": "arn:aws:s3:::backups/*"
        }
    ]
}

ทำไมลบได้แต่ใส่ไม่ได้?


นอกจากนี้ อเมซอนยังเป็น ยืนกราน เกี่ยวกับการปิดกั้นการเข้าถึงสาธารณะอยู่เสมอ แต่คุณไม่สามารถแก้ไขนโยบายถังได้หากเปิดใช้งาน! นี่มันบ้าชัดๆ!!!!!!!


นี่คือสิ่งที่ฉันค้นพบหลังจากการทดสอบ

บัญชีของฉันเป็นเช่นนั้น

  1. บัญชีรูท เจ้าของบัคเก็ต
  2. บัญชี IAM (Admin) พร้อมการดูแลระบบทุกอย่าง
  3. บัญชี IAM (ผู้ใช้) ที่ไม่มีอำนาจในการดำเนินการใดๆ ทั้งสิ้น

สำหรับนโยบายบัคเก็ต โปรดดูนโยบายที่สองที่โพสต์ด้านบน

ฉันกำลังสำรวจว่าการรวมกันของนโยบายและการตั้งค่าบล็อกการเข้าถึงสาธารณะเป็นอย่างไร พวกเขายังคงสมเหตุสมผล 0 อะไรก็ตาม

กรณีที่ 1

  • ปิดกั้นการเข้าถึงสาธารณะทั้งหมด: ปิด
  • นโยบายฝากข้อมูล: ว่าง
  • ACL: เจ้าของที่เก็บข้อมูล (รายการ เขียน | อ่าน เขียน)

ผลลัพธ์: ผู้ดูแลระบบสามารถอัปโหลดและลบ ผู้ใช้ไม่สามารถทำอะไรได้

กรณีที่ 2

  • บล็อกการเข้าถึงสาธารณะทั้งหมด:
    • [x] รายการควบคุมการเข้าถึงใหม่
  • นโยบายฝากข้อมูล: ว่าง
  • ACL: เจ้าของที่เก็บข้อมูล (รายการ เขียน | อ่าน เขียน)

ผลลัพธ์: Admin ลบได้ แต่อัพโหลดไม่ได้ User ทำอะไรไม่ได้

กรณีที่ 3

  • บล็อกการเข้าถึงสาธารณะทั้งหมด:
    • [x] รายการควบคุมการเข้าถึงใหม่
    • [x] รายการควบคุมการเข้าถึงใดๆ
  • นโยบายฝากข้อมูล: ว่าง
  • ACL: เจ้าของที่เก็บข้อมูล (รายการ เขียน | อ่าน เขียน)

ผลลัพธ์: Admin ลบได้ แต่อัพโหลดไม่ได้ User ทำอะไรไม่ได้

กรณีที่ 4

  • บล็อกการเข้าถึงสาธารณะทั้งหมด:
    • [x] รายการควบคุมการเข้าถึงใหม่
    • [x] รายการควบคุมการเข้าถึงใดๆ
    • [x] นโยบายจุดเชื่อมต่อใหม่
  • นโยบายฝากข้อมูล: ว่าง
  • ACL: เจ้าของที่เก็บข้อมูล (รายการ เขียน | อ่าน เขียน)

ผลลัพธ์: Admin ลบได้ แต่อัพโหลดไม่ได้ User ทำอะไรไม่ได้

กรณีที่ 5

  • ปิดกั้นการเข้าถึงสาธารณะทั้งหมด: เปิด
  • นโยบายฝากข้อมูล: ว่าง
  • ACL: เจ้าของที่เก็บข้อมูล (รายการ เขียน | อ่าน เขียน)

ผลลัพธ์: Admin ลบได้ แต่อัพโหลดไม่ได้ User ทำอะไรไม่ได้

บทสรุป: บล็อกการเข้าถึงสาธารณะเมื่อตั้งค่าเป็นเปิดจะอนุญาตทุกอย่าง การกำหนดค่าอื่น ๆ อนุญาตให้ลบ (และอาจมากกว่านั้น เช่น รับ) แต่ไม่ใส่


กรณีที่ 6

  • ปิดกั้นการเข้าถึงสาธารณะทั้งหมด: ปิด
  • นโยบายฝากข้อมูล: ผู้ดูแลระบบ (รับ/วาง/ลบวัตถุ) ผู้ใช้ (ไม่มีอะไร)
  • ACL: เจ้าของที่เก็บข้อมูล (รายการ เขียน | อ่าน เขียน)

ผลลัพธ์: ผู้ดูแลระบบสามารถอัปโหลดและลบ ผู้ใช้ไม่สามารถทำอะไรได้

กรณีที่ 7

  • บล็อกการเข้าถึงสาธารณะทั้งหมด:
    • [x] รายการควบคุมการเข้าถึงใหม่
  • นโยบายฝากข้อมูล: ผู้ดูแลระบบ (รับ/วาง/ลบวัตถุ) ผู้ใช้ (ไม่มีอะไร)
  • ACL: เจ้าของที่เก็บข้อมูล (รายการ เขียน | อ่าน เขียน)

ผลลัพธ์: ผู้ดูแลระบบสามารถลบได้ ผู้ใช้ไม่สามารถทำอะไรได้

กรณีที่ 8

  • บล็อกการเข้าถึงสาธารณะทั้งหมด:
    • [x] รายการควบคุมการเข้าถึงใหม่
    • [x] รายการควบคุมการเข้าถึงใดๆ
  • นโยบายฝากข้อมูล: ผู้ดูแลระบบ (รับ/วาง/ลบวัตถุ) ผู้ใช้ (ไม่มีอะไร)
  • ACL: เจ้าของที่เก็บข้อมูล (รายการ เขียน | อ่าน เขียน)

ผลลัพธ์: ผู้ดูแลระบบสามารถลบได้ ผู้ใช้ไม่สามารถทำอะไรได้

กรณีที่ 9

  • บล็อกการเข้าถึงสาธารณะทั้งหมด:
    • [x] รายการควบคุมการเข้าถึงใหม่
    • [x] รายการควบคุมการเข้าถึงใดๆ
    • [x] นโยบายจุดเชื่อมต่อใหม่
  • นโยบายฝากข้อมูล: ผู้ดูแลระบบ (รับ/วาง/ลบวัตถุ) ผู้ใช้ (ไม่มีอะไร)
  • ACL: เจ้าของที่เก็บข้อมูล (รายการ เขียน | อ่าน เขียน)

ผลลัพธ์: ผู้ดูแลระบบสามารถลบได้ ผู้ใช้ไม่สามารถทำอะไรได้

กรณีที่ 10

  • ปิดกั้นการเข้าถึงสาธารณะทั้งหมด: เปิด
  • นโยบายฝากข้อมูล: ผู้ดูแลระบบ (รับ/วาง/ลบวัตถุ) ผู้ใช้ (ไม่มีอะไร)
  • ACL: เจ้าของที่เก็บข้อมูล (รายการ เขียน | อ่าน เขียน)

ผลลัพธ์: ผู้ดูแลระบบสามารถลบได้ ผู้ใช้ไม่สามารถทำอะไรได้

บทสรุป: นโยบายฝากข้อมูลไม่มีผลกับสิ่งใดเลย


TLDR: ดูเหมือนว่านโยบาย Bucket จะไม่ทำอะไรเลยบล็อกการเข้าถึงสาธารณะเท่านั้นที่มีเอฟเฟกต์ที่วัดได้ โดยตัวเลือกเดียวที่ใช้งานได้คือการปิด ฉันได้ลบนโยบายบัคเก็ตของฉันออกจากบัคเก็ตสาธารณะแล้วและไม่ได้เปลี่ยนแปลงอะไรเลย

ข้อสรุปของฉันคือนโยบาย Bucket เสียหาย เอกสารประกอบไม่เพียงพอ หรือการตั้งค่านั้นขัดกับสัญชาตญาณและไม่ได้ทำตามที่พวกเขาพูดจริงๆ หรือสิ่งใดสิ่งหนึ่งรวมกัน

ฉันต้องการโฮสต์เนื้อหาของฉันบนเซิร์ฟเวอร์ FTP ในห้องใต้ดิน ณ จุดนี้

vn flag
ใช้ใส่วัตถุอะไรครับ? ฉันเคยเห็นห้องสมุดที่ไม่ต้องการเพียงแค่ PutObject แต่รวมถึง PutObjectAcl เป็นต้น
pbuzz007 avatar
si flag
Node.js SDK
vn flag
คุณสามารถแสดงการโทรเฉพาะที่กำลังใช้งานและข้อความแสดงข้อผิดพลาดที่ได้รับได้หรือไม่
pbuzz007 avatar
si flag
ไม่มีอะไรจริงๆ ฉันเรียกฟังก์ชัน `s3.upload' ที่ AWS SDK ให้มา และฉันได้รับข้อผิดพลาด 'Access Denied' แต่ฉันสามารถลบได้ดี
Tim avatar
gp flag
Tim
ขออภัย เรามีข้อมูลไม่เพียงพอที่จะช่วยเหลือที่นี่ หากต้องการตรวจสอบเรื่องนี้อย่างเต็มที่ ฉันต้องการดูสิทธิ์ IAM, นโยบายบัคเก็ต, ACL ของบัคเก็ตสำหรับแต่ละบัคเก็ต, บล็อกการตั้งค่าการเข้าถึงแบบสาธารณะ จากนั้นรันคำสั่ง CLI และผลลัพธ์ คงจะเป็นงานมากการดำเนินการนี้อาจซับซ้อน แต่ฉันรับรองกับคุณได้ว่ามันทำงานตามเอกสาร คุณเคยฝึกอบรม AWS มาก่อนหรือไม่ เฉพาะสำหรับการรักษาความปลอดภัย S3 หรือผู้ร่วมงานสถาปนิก AWS ที่ดีกว่า / การฝึกอบรมด้านความปลอดภัย AWS AWS เป็นแพลตฟอร์มระดับองค์กรที่ซับซ้อนมาก ผู้คนใช้เวลาหลายปีในการเรียนรู้
pbuzz007 avatar
si flag
ฉันแสดงรายการการตั้งค่าสิทธิ์ที่ฝากข้อมูลหลักสามรายการรวมกัน ถ้าต้องใช้เวลาหลายปีกว่าจะเข้าใจเรื่องนั้น มันเป็นเรื่องตลก ฉันแค่ต้องการที่เก็บข้อมูลส่วนตัวที่มี CRUD สำหรับผู้ใช้ IAM หนึ่งคนและไม่ต้องการใครอีก และที่เก็บข้อมูลหนึ่งที่มี GET สำหรับทุกคนและ CRUD สำหรับผู้ใช้ IAM หนึ่งคนและไม่ต้องการใครอีก ฉันลองใช้ทุกชุดค่าผสมเท่าที่จะเป็นไปได้ และผลลัพธ์ที่ได้ก็ไร้สาระ บล็อกการเข้าถึงสาธารณะเป็นหนึ่งในการตั้งค่าที่กำหนดและคำพูดที่เลวร้ายที่สุดที่ฉันสามารถจินตนาการได้
pbuzz007 avatar
si flag
ฉันยังแสดงรายการแต่ละสิ่งที่คุณขอ รวมถึงการตั้งค่า IAM (ผู้ดูแลระบบ = ทุกอย่าง ผู้ใช้ = ไม่มีอะไร) คำสั่งเรียกใช้จาก Node JS SDK และผลลัพธ์เป็นเพียง "Access Denied" หรือสำเร็จ หยุดทั้งหมด ไม่มีอะไรมากไปกว่านี้ มันใช้งานไม่ได้ตามที่อธิบายไว้ นโยบายทำงานไม่ถูกต้อง

โพสต์คำตอบ

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