Sử dụng tính năng Bucket Policy

Tổng quan

Tính năng Bucket Policy trên vStorage là một công cụ mạnh mẽ giúp quản lý quyền truy cập vào bucket của bạn thông qua các quy tắc dạng JSON. Tính năng này cho phép bạn kiểm soát chi tiết các action mà IAM User (coming soon), tài khoản vStorage khác, hoặc các nguồn bên ngoài có thể thực hiện trên bucket và các object trong đó. Dưới đây là hướng dẫn cơ bản để cấu hình Bucket Policy:

  1. Chọn biểu tượng tại project chứa bucket bạn muốn phân quyền.

  2. Nếu bạn muốn phân quyền bucket cho một Root User Account hoặc IAM User Account hay Service Account khác, bạn cần biết thông tin vStorage User ID của người dùng mà bạn muốn phân quyền:

    1. Đối với Root User Account: bạn có thể lấy thông tin vStorage User ID ngay tại trang thông tin project theo hình dưới.

b. Đối với IAM User AccountService Account: bạn có thể lấy thông tin vStorage User ID tại mục Identity and Access Management

  1. Tiếp tục chọn Bucket bạn muốn thực hiện phân quyền.

  2. Chọn biểu tượng Action và chọn Configure policy.

  1. Tại đây, bạn có thể chọn cấu hình cho từng Statement ở bên trái hoặc trực tiếp chỉnh sửa file JSON ở cột bên phải. Cụ thể cấu trúc một Bucket Policy bao gồm:

  • Version: Xác định phiên bản của Bucket Policy (nên dùng "2012-10-17").

  • Statement: Mỗi chính sách sẽ có một hoặc nhiều Statement (mục đích cụ thể của policy).

    • Effect: Allow hoặc Deny quyền truy cập.

    • Principal: Đối tượng được cấp quyền truy cập (IAM User (coming soon), tài khoản vStorage cụ thể).

    • Action: Các hành động cho phép trên bucket, ví dụ: s3:GetObject (xem object), s3:PutObject (tải lên object), s3:DeleteObject (xóa object),…

    • Resource: Các bucket và object cụ thể bị ảnh hưởng bởi policy (dùng ARN để định danh tài nguyên).

    • Condition: (Tùy chọn) Điều kiện cụ thể giới hạn quyền truy cập.

  1. Chọn Save để lưu lại cấu hình Bucket Policy.


Ví dụ minh họa

Ví dụ 1: Cấp quyền public-read (chỉ đọc) cho toàn bộ bucket

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::your-bucket-name/*"
    }
  ]
}

Cấp quyền cho tất cả mọi người (*) quyền đọc (s3:GetObject) tất cả các object trong bucket.


Ví dụ 2: Chỉ cấp quyền cho một vStorage User cụ thể tải lên và xóa object

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": { "AWS": "arn:aws:iam:::user/vStorage user ID" },
      "Action": ["s3:PutObject", "s3:DeleteObject"],
      "Resource": "arn:aws:s3:::your-bucket-name/*"
    }
  ]
}

Chỉ cho phép người dùng có vStorage user ID trong file được quyền tải lên (s3:PutObject) và xóa (s3:DeleteObject) object.


Ví dụ 3: Chặn tất cả vStorage User (trừ Root User Account) action vào bucket và object

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": [
        "s3:*"
      ],
      "Resource": [
        "arn:aws:s3:::your-bucket-name",
        "arn:aws:s3:::your-bucket-name/*"
      ]
    }
  ]
}

Không cho phép ai kể cả Root User làm việc với bucket và object.

Ví dụ 4: Chỉ cấp quyền cho người dùng sử dụng địa chỉ IP 10.0.0.1 mới có thể action lấy thông tin object

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": [
        "s3:GetObject"
      ],
      "Resource": [
        "arn:aws:s3:::your-bucket-name",
        "arn:aws:s3:::your-bucket-name/*"
      ],
      "Condition": {
        "NotIpAddress": {
          "aws:SourceIp": "10.0.0.1"
        }
      }
    }
  ]
}

Chỉ cho phép người dùng có địa chỉ IP 10.0.0.1 mới có thể lấy thông tin object

Ví dụ 5: Thêm nhiều statement trong một file JSON

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": [
        "arn:aws:s3:::your-bucket-name",
        "arn:aws:s3:::your-bucket-name/*"
      ]
    },
    {
      "Effect": "Allow",
      "Principal": { "AWS": "arn:aws:iam:::user/vStorage user ID" },
      "Action": ["s3:PutObject", "s3:DeleteObject"],
      "Resource": [
        "arn:aws:s3:::your-bucket-name",
        "arn:aws:s3:::your-bucket-name/*"
      ]
    },
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:PutBucketEncryption",
      "Resource": [
        "arn:aws:s3:::your-bucket-name",
        "arn:aws:s3:::your-bucket-name/*"
      ]
    }
  ]
}

Cho phép tất cả người dùng GetObject + chỉ cho phép 1 vStorage user trong file được PutObject và DeleteObject + Không cho phép tất cả user thực hiện PutBucketEncryption

Chú ý:

  • Kiểm tra quyền public: Một số Bucket Policy có thể dẫn đến các quyền truy cập public. Bạn nên kiểm tra kỹ để đảm bảo bảo mật cho dữ liệu.

  • Bucket Policy và ACL: Đảm bảo rằng các quyền trong Bucket Policy không xung đột với Access Control List (ACL) của bucket hoặc object.

Last updated