ฉันมีสองถัง แต่ละถังมีเป้าหมายของตัวเอง จนถึงตอนนี้ฉันไม่เข้าใจการกำหนดค่าที่ซับซ้อนของการตั้งค่าบัคเก็ต ดูเหมือนว่ามีสามสิ่งที่ต้องกำหนดค่า
- ปิดกั้นการเข้าถึงสาธารณะ
- นโยบายฝากข้อมูล
- บช
ฉันรู้ว่าถ้าฉันปิด (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/*"
}
]
}
ทำไมลบได้แต่ใส่ไม่ได้?
นอกจากนี้ อเมซอนยังเป็น ยืนกราน เกี่ยวกับการปิดกั้นการเข้าถึงสาธารณะอยู่เสมอ แต่คุณไม่สามารถแก้ไขนโยบายถังได้หากเปิดใช้งาน! นี่มันบ้าชัดๆ!!!!!!!
นี่คือสิ่งที่ฉันค้นพบหลังจากการทดสอบ
บัญชีของฉันเป็นเช่นนั้น
- บัญชีรูท เจ้าของบัคเก็ต
- บัญชี IAM (Admin) พร้อมการดูแลระบบทุกอย่าง
- บัญชี 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 ในห้องใต้ดิน ณ จุดนี้