Menu

Showing posts with label s3. Show all posts
Showing posts with label s3. Show all posts

Tuesday, July 7, 2020

[AWS - S3] การกำหนดนโยบาย เพื่อบล็อกการเข้าถึง S3 bucket ที่ไม่ได้มาจาก HTTP Referer ที่กำหนด
[AWS - S3] S3 Bucket Policy: Restricting Access to a Specific HTTP Referer

ในมุมกลับกันจากบทความเรื่อง [AWS - S3] การกำหนดนโยบาย เพื่ออนุญาตให้เข้าถึงไฟล์ใน S3 bucket ด้วย HTTP Referrer ที่กำหนด เราสามารถใช้ HTTP Referrer นี้ในบล็อกการเข้าถึงข้อมูลใน S3 ได้เช่นกัน

การบล็อกไม่ให้เข้าถึงข้อมูล หากไม่ได้เรียกมาจาก Referrer ที่ระบุ เราสามารถกำหนด bucket policy ของ S3 ดังนี้
{
    "Version": "2012-10-17",
    "Id": "http referer policy example",
    "Statement": [
        {
            "Sid": "Block get requests originating from other than www.example.com and example.com.",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::examplebucket/*",
            "Condition": {
                "StringNotLike": {
                    "aws:Referer": [                        
                         "http://www.example.com/*",
                         "http://example.com/*"

                    ]
                }
            }
        }
    ]
}
หมายเหตุ เราสามารถกำหนด policy ข้างต้น ร่วมกับการใช้ Presigned URL เพื่อเพิ่มความปลอดภัยของข้อมูลใน S3 ได้

[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

Saturday, May 23, 2020

[AWS - IAM] การกำหนดสิทธิ์การเข้าใช้งาน โดยใช้ AWS IAM Policy เพื่อให้ใช้งาน S3 ได้เพียง bucket เดียว
[AWS - IAM] How To Grant Access To Only One S3 Bucket Using AWS IAM Policy

สมมติว่า เรามี IAM user ชื่อ my-user และ S3 bucket ชื่อ my-bucket

หากเราต้องการสร้าง policy ชื่อ My-S3-Policy เพื่อใช้กำหนดสิทธิ์ให้ my-user สามารถเข้าใช้ my-bucket ได้เพียงอันเดียว เรามีวิธีการดังนี้
  1. เข้าไปที่หน้า Policy ของ Identity and Access Management (IAM) ตามลิ้งค์นี้
    https://console.aws.amazon.com/iam/home?region=ap-southeast-1#/policies
  2. กดปุ่ม Create policy
  3. สร้าง Policy โดยมีรายละเอียดดังนี้
    • กรณีที่สร้าง Policy ในแท็บ Visual editor
      1. Service เลือกเป็น S3
      2. Action เลือกเป็น All S3 actions (s3:*)
      3. Resources ให้กำหนดค่าดังนี้
        • bucket 
          1. กดปุ่ม Add ARN
          2. กรอกข้อมูลช่อง Bucket name เป็น my-bucket
          3. กดปุ่ม Add
        • object
          1. กดปุ่ม Add ARN
          2. Bucket name กรอกข้อมูลเป็น my-bucket
          3. Object  name เลือกเป็น Any
          4. กดปุ่ม Add

Friday, May 17, 2019

[Laravel - AWS] วิธีการตั้งค่า timeout สำหรับ InstanceProfileProvider ของ AWS PHP SDK
[Laravel - AWS] How to Set Timeout for InstanceProfileProvider of AWS PHP SDK

InstanceProfileProvider เป็น credential provider ที่ใช้ credentials จาก EC2 metadata server

สำหรับข้อมูลของ EC2 metadata server อ่านได้ที่ https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html

ใน InstanceProfileProvider class ของ aws-php-sdk library เราจะพบ constructor ตามภาพด้านล่าง


เราจะพบตัวแปร $config['timeout'] แต่เราจะตั้งค่ามันยังไง!!!