Menu

Tuesday, July 7, 2020

[AWS - S3] การกำหนดนโยบาย เพื่ออนุญาตให้เข้าถึงไฟล์ใน S3 bucket ด้วย HTTP Referrer ที่กำหนด
[AWS - S3] S3 Bucket Policy: Allowing Access to a Specific HTTP Referrer

โดยปกติแล้ว เราจะไม่อนุญาตให้เรียกข้อมูลใน S3 แบบ public ซึ่งใครจะเรียกก็ได้!!! เพื่อป้องกันการรั่วไหลของข้อมูล

อย่างไรก็ตาม การใช้งานบางอย่างจำเป็นต้องเรียกใช้ข้อมูลใน S3 แบบ public เนื่องจากไม่สามารถสร้าง Presigned URL ได้

วิธีเพิ่มความปลอดภัยของข้อมูลสำหรับกรณีนี้ คือ เพิ่มการตรวจสอบค่า HTTP Referrer ที่เรียกมายัง S3 เพื่อกำหนดสิทธิ์การเข้าถึงไฟล์ใน bucket

หมายเหตุ HTTP Referrer เป็นค่าอ้างอิงของ domain ที่ส่งคำร้องมายัง server

การอนุญาตให้เข้าถึงข้อมูลแบบ public สำหรับ Referrer ที่ระบุ เราสามารถกำหนด bucket policy ของ S3 ดังนี้
{
    "Version":"2012-10-17",
    "Id":"http referer policy example",
    "Statement":[
        {
            "Sid":"Allow get requests originating from www.example.com and example.com.",
            "Effect":"Allow",
            "Principal":"*",
            "Action":"s3:GetObject",
            "Resource":"arn:aws:s3:::examplebucket/*",
            "Condition":{
                "StringLike":{
                    "aws:Referer":[
                        "http://www.example.com/*",
                        "http://example.com/*"
                    ]
                }
            }
        }
    ]
}
หลังจากที่กำหนด bucket policy ข้างบนแล้ว เราจำเป็นต้องอนุญาตให้เข้าถึงแบบ public ได้ โดยการอนุญาตจาก policies ด้วย ซึ่งเราสามารถตั้งค่าได้ตามภาพข้างล่างนี้

No comments:

Post a Comment