Cấu hình Object Lock

Object Lock trong Bizfly S3 cho phép người dùng ngăn chặn xóa hoặc ghi đè dữ liệu cho một khoảng thời gian cố định hoặc vô thời hạn. Bài viết này sẽ hướng dẫn khách hàng sử dụng Object Lock với aws cli, một công cụ quản lý phổ biến dành cho S3.

Tính năng oject lock cho phép ngăn chặn file khỏi bị xóa hoặc ghi đè trong một khoảng thời gian (retention mode) hoặc vô hạn (legal hold)

Retention

GOVERNANCE Mode

  • Mức độ bảo vệ: ngăn người dùng không có quyền xóa hoặc ghi đè file trong khoảng thời gian lock.
  • Quyền quản trị: Người dùng có quyền đặc biệt (BypassGovernanceRetention) có thể xóa hoặc ghi đè đối tượng ngay cả khi đang có lock
  • Sử dụng: Chế độ này phù hợp nếu muốn bảo vệ dữ liệu khỏi việc xóa ngẫu nhiên hoặc vô tình bởi người dùng thông thường, nhưng vẫn muốn cho phép quản trị viên có quyền xóa hoặc thay đổi nếu cần thiết.

COMPLIANCE Mode

  • Mức độ bảo vệ: cung cấp mức độ bảo vệ cao nhất. Một khi file đã bị lock thì không ai có thể xóa hoặc ghi đè cho đến khi hết thời gian lock.
  • Quyền quản trị: Không có quyền quản trị nào có thể bỏ qua hoặc tắt chế độ giữ lại. Điều này đảm bảo rằng dữ liệu sẽ được giữ nguyên trong khoảng thời gian quy định, đáp ứng các yêu cầu tuân thủ nghiêm ngặt.
  • Sử dụng: Chế độ này phù hợp cho các tình huống yêu cầu bảo vệ dữ liệu nghiêm ngặt theo quy định của pháp luật hoặc chính sách công ty.

Cho phép người dùng khóa một file vô thời hạn. Legal Hold không có ngày hết hạn và chỉ có thể được loại bỏ thủ công.

Cấu hình và sử dụng Object lock

Để sử dụng tính năng Object lock người dùng cần phải tạo bucket với --object-lock-enabled-for-bucket, nếu bucket được tạo không có option này thì sẽ không thể thêm về sau.

aws s3api create-bucket \
  --bucket object-lock-bucket \
  --object-lock-enabled-for-bucket

Cấu hình object lock cho bucket và mặc định áp dụng cho tất cả các object mới được upload:

aws s3api put-object-lock-configuration \
    --bucket object-lock-bucket \
    --object-lock-configuration '{ "ObjectLockEnabled": "Enabled", "Rule": { "DefaultRetention": { "Mode": "GOVERNANCE", "Days": 60 }}}'

Kiểm tra cấu hình Object lock hiện tại của bucket:

aws s3api get-object-lock-configuration \
   --bucket object-lock-bucket

{
  "ObjectLockConfiguration": {
    "ObjectLockEnabled": "Enabled",
    "Rule": {
      "DefaultRetention": {
        "Mode": "GOVERNANCE",
        "Days": 60
      }
    }
  }
}

Cấu hình retention trên một object:

aws s3api put-object-retention \
       --bucket object-lock-bucket \
       --key test.txt \
       --retention '{ "Mode": "COMPLIANCE", "RetainUntilDate":
"2023-01-01T12:00:00.00Z" }'

Kiểm tra Retention của một object:

aws s3api get-object-retention \
   --bucket object-lock-bucket \
   --key test.txt

{
  "Retention": {
  "Mode": "COMPLIANCE",
  "RetainUntilDate": "2023-01-01T12:00:00Z"
  }
}

Như đã được giới thiệu, Governance mode có thể được bỏ qua khi người dùng có một quyền đặc biệt là s3:BypassGovernanceRetention

aws s3api delete-object \
  --bucket object-lock-bucket \
  --key test.txt \
  --bypass-governance-retention

Cấu hình Legal hold cho một object:

aws s3api put-object-legal-hold \
  --bucket object-lock-bucket \
  --key test.txt \
  --legal-hold Status=ON # OFF to disable

Kiểm tra cấu hình Legal hold của một object:

aws s3api get-object-legal-hold \
  --bucket object-lock-bucket \
  --key test.txt

{
  "LegalHold": {
    "Status": "ON"
  }
}