Cấu hình phân quyền cho bucket trong S3

Bucket Policy trong S3 là một công cụ mạnh mẽ cho phép người dùng kiểm soát chi tiết các quyền truy cập vào các bucket và file trong bucket đó. Các policy được viết dưới dạng tài liệu JSON và được cấu hình theo mỗi bucket. Người dùng có thể sử dụng Bucket Policy để quản lý quyền truy cập dành cho các subuser hoặc với các project IAM khác.

Bài viết này sẽ hướng dẫn người dùng cấu hình phân quyền truy cập cho các đối tượng người dùng, thông qua Bucket Policy. Có hai cách cấu hình đơn giản nhất sẽ được giới thiệu trong bài viết này là dùng dashboard của Bizfly Cloud S3 hoặc dùng dòng lệnh cli.

Cấu hình phân quyền người dùng trên dashboard Bizfly Cloud S3

Truy cập vào bucket cần phân quyền truy cập

Hiện tại Bizfly Cloud S3 hỗ trợ cấu hình bucket policy cho 3 loại đối tượng khác nhau:

  1. S3 Subuser
  2. Người dùng Bizfly Cloud (Email)
  3. IAM project (ID)

Đối với subuser, cần được tạo sẵn một subuser không có quyền gì và phân quyền vào bucket chỉ định

Đối với IAM project, người dùng thể tạo project từ dịch vụ IAM có sẵn của S3 tại đây. Và thực hiện phân quyền vào bucket theo ID của IAM project mới được tạo.

Sau khi chọn xong đối tượng cần cấu hình, cấu hình thêm các hành động mà đối tượng này có thể thao tác với bucket của bạn và cập nhật cấu hình

Cấu hình phân quyền người dùng bằng dòng lệnh

Thực hiện cài đặt `aws cli``:

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

Cấu hình cặp key mà Bizfly S3 đã cung cấp trên dashboard:

aws configure

Như vậy người dùng đã có thể sử dụng

Cấu hình bucket policy

Một use case thường thấy dành cho bucket policy là trường hợp người dùng muốn chia sẻ bucket với một người dùng khác nhưng chỉ với quyền read-only và không cho chỉnh sửa vào dữ liệu bucket.

Tạo một file policy ở định dạng json:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam:::user/project_id"
                ]
            },
            "Action": [
                "s3:ListBucket",
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::bucket_name",
                "arn:aws:s3:::bucket_name/*"
            ]
        }
    ]
}

Trong đó project_id là ID của project mà bạn muốn phân quyền read-only. Có thể lấy được tại đây.

Bucket_name là tên bucket bạn muốn phân quyền cho project vào đọc.

Sau khi đã có file policy, sử dụng aws cli để cấu hình bucket policy:

aws s3api put-bucket-policy --endpoint-url https://hn.ss.bfcplatform.vn --bucket bucket_name --policy file:///path/to/policy.json