Tác giả: Matheus Guimaraes
Ngày phát hành: 20 NOV 2025
Chuyên mục: Amazon Simple Storage Service (S3), Announcements, AWS Identity and Access Management (IAM), Launch, News, Security, Identity, & Compliance, Storage
Khi các tổ chức mở rộng quy mô, việc quản lý quyền truy cập cho các tài nguyên lưu trữ ngày càng trở nên phức tạp và tốn thời gian. Khi có thành viên mới gia nhập nhóm, nhân viên hiện tại thay đổi vai trò và các bucket S3 mới được tạo ra, các tổ chức phải liên tục cập nhật nhiều loại chính sách truy cập để quản lý quyền truy cập trên các bucket S3 của họ. Thách thức này đặc biệt rõ rệt trong các môi trường S3 đa người thuê (multi-tenant), nơi các quản trị viên phải thường xuyên cập nhật các chính sách này để kiểm soát quyền truy cập trên các bộ dữ liệu được chia sẻ và vô số người dùng.
Hôm nay, chúng tôi giới thiệu kiểm soát truy cập dựa trên thuộc tính (attribute-based access control – ABAC) cho các bucket đa dụng của Amazon Simple Storage Service (S3), một tính năng mới bạn có thể sử dụng để tự động quản lý quyền cho người dùng và vai trò bằng cách kiểm soát quyền truy cập dữ liệu thông qua các tag trên các bucket đa dụng S3. Thay vì quản lý quyền riêng lẻ, bạn có thể sử dụng các chính sách IAM hoặc chính sách bucket dựa trên tag để tự động cấp hoặc từ chối quyền truy cập dựa trên các tag giữa người dùng, vai trò và các bucket đa dụng S3. Việc cấp quyền dựa trên tag giúp dễ dàng cấp quyền truy cập S3 dựa trên dự án, nhóm, trung tâm chi phí, phân loại dữ liệu hoặc các thuộc tính bucket khác thay vì tên bucket, giúp đơn giản hóa đáng kể việc quản lý quyền cho các tổ chức lớn.
Cách ABAC hoạt động
Đây là một kịch bản phổ biến: với tư cách là quản trị viên, tôi muốn cấp cho các nhà phát triển quyền truy cập vào tất cả các bucket S3 được dùng trong môi trường phát triển.
Với ABAC, tôi có thể gắn tag cho các bucket S3 môi trường phát triển của mình bằng một cặp key-value như environment:development và sau đó đính kèm một chính sách ABAC vào một principal của AWS Identity and Access Management (IAM) để kiểm tra cùng một tag environment:development. Nếu tag của bucket khớp với điều kiện trong chính sách, principal sẽ được cấp quyền truy cập.
Hãy xem cách hoạt động của nó.
Bắt đầu
Đầu tiên, tôi cần kích hoạt ABAC một cách tường minh trên mỗi bucket đa dụng S3 nơi tôi muốn sử dụng việc cấp quyền dựa trên tag.
Tôi truy cập vào bảng điều khiển Amazon S3, chọn bucket đa dụng của mình, sau đó điều hướng đến Properties, nơi tôi có thể tìm thấy tùy chọn để kích hoạt ABAC cho bucket này.

Tôi cũng có thể sử dụng AWS Command Line Interface (AWS CLI) để kích hoạt nó theo chương trình bằng cách sử dụng API PutBucketAbac mới. Ở đây, tôi đang kích hoạt ABAC trên một bucket có tên là my-demo-development-bucket đặt tại AWS Region US East (Ohio) us-east-2.
aws s3api put-bucket-abac --bucket my-demo-development-bucket abac-status Status=Enabled --region us-east-2
Ngoài ra, nếu bạn sử dụng AWS CloudFormation, bạn có thể kích hoạt ABAC bằng cách đặt thuộc tính AbacStatus thành Enabled trong template của mình.
Tiếp theo, hãy gắn tag cho bucket đa dụng S3 của chúng ta. Tôi thêm một tag environment:development sẽ trở thành tiêu chí cho việc cấp quyền dựa trên tag của tôi.

Bây giờ bucket S3 của tôi đã được gắn tag, tôi sẽ tạo một chính sách ABAC để xác minh các tag environment:development khớp nhau và đính kèm nó vào một vai trò IAM có tên là dev-env-role. Bằng cách quản lý quyền truy cập của nhà phát triển vào vai trò này, tôi có thể kiểm soát quyền đối với tất cả các bucket môi trường phát triển tại một nơi duy nhất.
Tôi truy cập vào bảng điều khiển IAM, chọn Policies, và sau đó là Create policy. Trong Policy editor, tôi chuyển sang chế độ xem JSON và tạo một chính sách cho phép người dùng đọc, ghi và liệt kê các đối tượng S3, nhưng chỉ khi họ có một tag với key là “environment” được đính kèm và giá trị của nó khớp với giá trị được khai báo trên bucket S3. Tôi đặt tên cho chính sách này là s3-abac-policy và lưu nó lại.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:ListBucket"
],
"Resource": [
"*"
],
"Condition": {
"StringEquals": {
"aws:ResourceTag/environment": "development"
}
}
}
]
}
Sau đó, tôi đính kèm chính sách s3-abac-policy này vào vai trò dev-env-role.

Vậy là xong! Bây giờ một người dùng đảm nhận vai trò dev-role có thể truy cập bất kỳ bucket nào đã kích hoạt ABAC với tag environment:development, chẳng hạn như my-demo-development-bucket.
Sử dụng các tag hiện có của bạn
Hãy nhớ rằng mặc dù bạn có thể sử dụng các tag hiện có của mình cho ABAC, vì các tag này giờ đây sẽ được sử dụng để kiểm soát truy cập, chúng tôi khuyên bạn nên xem lại thiết lập tag hiện tại của mình trước khi kích hoạt tính năng này. Điều này bao gồm việc xem lại các tag bucket và các chính sách dựa trên tag hiện có để ngăn chặn truy cập ngoài ý muốn, và cập nhật quy trình gắn tag của bạn để sử dụng API TagResource tiêu chuẩn (vì việc kích hoạt ABAC trên các bucket của bạn sẽ chặn việc sử dụng API PutBucketTagging). Bạn có thể sử dụng AWS Config để kiểm tra bucket nào đã kích hoạt ABAC và xem lại việc sử dụng API PutBucketTagging trong ứng dụng của bạn bằng cách sử dụng các sự kiện quản lý của AWS CloudTrail.
Ngoài ra, các tag bạn sử dụng cho ABAC cũng có thể đóng vai trò là tag phân bổ chi phí cho các bucket S3 của bạn. Kích hoạt chúng làm tag phân bổ chi phí trong AWS Billing Console hoặc thông qua API, và AWS Cost Explorer và Cost and Usage Reports của bạn sẽ tự động tổ chức dữ liệu chi tiêu dựa trên các tag này.
Thực thi gắn tag khi tạo mới
Để giúp chuẩn hóa việc kiểm soát truy cập trong toàn tổ chức của bạn, giờ đây bạn có thể thực thi các yêu cầu gắn tag khi các bucket được tạo thông qua các chính sách kiểm soát dịch vụ (service control policies – SCPs) hoặc chính sách IAM bằng cách sử dụng các khóa điều kiện aws:TagKeys và aws:RequestTag. Sau đó, bạn có thể kích hoạt ABAC trên các bucket này để cung cấp các mẫu kiểm soát truy cập nhất quán trong toàn tổ chức của mình. Để gắn tag cho một bucket trong quá trình tạo, bạn có thể thêm các tag vào template CloudFormation của mình hoặc cung cấp chúng trong phần thân yêu cầu của lệnh gọi đến API S3 CreateBucket hiện có. Ví dụ, tôi có thể thực thi một chính sách cho các nhà phát triển của mình để tạo các bucket với tag environment=development để tất cả các bucket của tôi được gắn tag chính xác cho việc phân bổ chi phí. Nếu tôi muốn sử dụng cùng các tag này để kiểm soát truy cập, tôi có thể kích hoạt ABAC cho các bucket này.
Những điều cần biết
Với ABAC cho Amazon S3, giờ đây bạn có thể triển khai kiểm soát truy cập dựa trên tag có khả năng mở rộng trên các bucket S3 của mình. Tính năng này giúp việc viết các chính sách kiểm soát truy cập trở nên đơn giản hơn và giảm nhu cầu cập nhật chính sách khi các principal và tài nguyên đến và đi. Điều này giúp bạn giảm chi phí quản trị trong khi vẫn duy trì quản trị bảo mật mạnh mẽ khi bạn mở rộng quy mô.
Kiểm soát truy cập dựa trên thuộc tính cho các bucket đa dụng của Amazon S3 hiện đã có sẵn thông qua AWS Management Console, API, AWS SDKs, AWS CLI và AWS CloudFormation mà không mất thêm chi phí. Tỷ lệ yêu cầu API tiêu chuẩn được áp dụng theo giá của Amazon S3. Không có phí bổ sung cho việc lưu trữ tag trên các tài nguyên S3.
Bạn có thể sử dụng AWS CloudTrail để kiểm tra các yêu cầu truy cập và hiểu chính sách nào đã cấp hoặc từ chối quyền truy cập vào tài nguyên của bạn.
Bạn cũng có thể sử dụng ABAC với các tài nguyên S3 khác như bucket thư mục S3, điểm truy cập S3 và bucket và bảng S3. Để tìm hiểu thêm về ABAC trên các bucket S3, hãy xem Hướng dẫn sử dụng Amazon S3.
Bạn có thể sử dụng cùng các tag bạn dùng để kiểm soát truy cập cho việc phân bổ chi phí. Bạn có thể kích hoạt chúng làm tag phân bổ chi phí thông qua AWS Billing Console hoặc API. Hãy xem tài liệu để biết thêm chi tiết về cách sử dụng tag phân bổ chi phí.
Về tác giả

Matheus Guimaraes
Matheus Guimaraes (@codingmatheus) là một chuyên gia chuyển đổi số tập trung vào việc áp dụng AI và kiến trúc microservices. Là một diễn giả quốc tế với hơn 20 năm kinh nghiệm trong ngành công nghệ, anh đã đảm nhiệm nhiều vai trò: từ lập trình viên game cấp thấp đến CTO và đồng sáng lập công nghệ. Matheus đã giúp các công ty ở mọi quy mô hiện đại hóa và mở rộng hệ thống của họ, dẫn dắt các chương trình chuyển đổi và thiết kế các kiến trúc cloud-native, sẵn sàng cho AI. Ngày nay, anh chia sẻ chuyên môn của mình trên toàn cầu thông qua các buổi nói chuyện, blog và video, với niềm đam mê giúp đỡ người khác phát triển trong ngành. Ngoài cuộc sống chuyên nghiệp, anh là một game thủ, vận động viên bơi lội, nhạc sĩ và một người tin tưởng vững chắc vào sự giao thoa mạnh mẽ giữa sáng tạo và công nghệ.