Chính sách nhóm là một cơ chế để quản lý quyền và quyền truy cập vào Bộ lưu trữ đối tượng. Khi so sánh với ACL, chính sách nhóm chỉ có thể được áp dụng trên toàn bộ nhóm (không phải cho từng đối tượng), mặc dù chúng cung cấp khả năng kiểm soát tốt hơn đối với các loại quyền mà bạn có thể cấp cho người dùng.
Các thành phần của một chính sách
Chính sách nhóm được định dạng bằng JSON với cấu trúc sau:
bucket-policy.json
{
"Version": "2012-10-17",
"Statement": [{
"Effect": …,
"Principal": …,
"Action": …,
"Resource": …
}]
}
Tệp này bao gồm một chuỗi Phiên bản (được đặt thành 2012-10-17, là phiên bản hiện tại) và một hoặc nhiều mảng Tuyên bố, xác định các chính sách thực tế mà bạn muốn sử dụng. Trong mỗi mảng câu lệnh có các phần tử Hiệu ứng, Nguyên tắc, Hành động, Tài nguyên và Điều kiện tùy chọn. Mỗi trong số này sẽ được thảo luận dưới đây.
Tác dụng
Phần Hiệu ứng xác định xem quyền truy cập được cho phép (Cho phép) hay bị từ chối (Từ chối) đối với tài nguyên được chỉ định. Xem các thành phần chính sách IAM JSON: Effect.
"Effect":"Allow"
Hiệu trưởng
Phần Hiệu trưởng xác định người dùng hoặc thực thể được áp dụng chính sách. Xem nguyên tắc của Amazon S3.
Người dùng cụ thể: Chỉ định ID chuẩn của Bộ nhớ đối tượng để áp dụng chính sách cho người dùng đó. Để được trợ giúp tìm ID chuẩn, hãy xem Tìm ID người dùng chuẩn.
"Principal": {
"AWS": [
"arn:aws:iam:::user/a0000000-000a-0000-0000-00d0ff0f0000"
]
}
Quyền truy cập công khai/ẩn danh: Sử dụng ký tự đại diện để cấp quyền truy cập cho mọi người. Điều này thường được sử dụng để lưu trữ một trang web thông qua Object Storage.
"Principal":"*"
Hoạt động
Hành động là các quyền được chính sách cấp (hoặc loại bỏ). Những hành động này bao gồm khả năng liệt kê các nhóm, xem đối tượng, tải đối tượng lên và hơn thế nữa:
- s3:PutObject: Tải lên các đối tượng
- s3:GetObject: Truy xuất đối tượng
- s3:ListBucket: Liệt kê nội dung của một nhóm
Để biết danh sách đầy đủ các hành động, hãy xem Ceph > Chính sách nhóm. Bạn cũng có thể tham khảo hướng dẫn hành động của Amazon S3.
Tài nguyên
Một chính sách được áp dụng cho các tài nguyên Lưu trữ đối tượng, chẳng hạn như bộ chứa và đối tượng. Tài nguyên nhóm được định dạng là “arn:aws:s3:::[bucket]”. Để áp dụng chính sách cho một số hoặc tất cả đối tượng trong một nhóm, hãy sử dụng “arn:aws:s3:::[bucket]/[object]”. Trong cả hai trường hợp, hãy thay thế [nhóm] bằng nhãn cho nhóm và [đối tượng] bằng giá trị ký tự đại diện (*) chỉ định tất cả các đối tượng hoặc đường dẫn và tên của đối tượng. Xem tài nguyên Amazon S3.
"Resource": [
"arn:aws:s3:::example-bucket/*"
]
Tất cả các đối tượng trong thư mục cụ thể: Áp dụng chính sách cho tất cả các đối tượng trong thư mục nội dung trong nhóm có nhãn example-bucket.
"Resource": [
"arn:aws:s3:::example-bucket/folder/*"
]
Đối tượng cụ thể: Áp dụng chính sách cho đối tượng example-file.ext trong nhóm có nhãn example-bucket.
"Resource": [
"arn:aws:s3:::example-bucket/example-file.ext"
]
Mặc dù tài nguyên có thể nhắm mục tiêu chính nhóm đó (bằng cách xóa /* trong ví dụ đầu tiên), nhưng điều này có thể khiến nhóm không thể truy cập được vào Trình quản lý đám mây, API và CLI.
Ví dụ về chính sách nhóm
Cho phép truy cập đọc công khai
Nếu bạn muốn cho phép bất kỳ ai xem và tải xuống các đối tượng trong một nhóm, hãy sử dụng chính sách sau:
bucket_policy.json
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Principal": "", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::bucket-example/"
]
}]
}
Cấp cho tài khoản quyền truy cập hạn chế vào một thư mục
Tệp chính sách này cho phép người dùng liệt kê nhóm được gọi là example-bucket và các đối tượng xem/tải xuống trong thư mục kiểm tra. Họ không thể thực hiện bất kỳ hành động nào khác.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam:::user/a0000000-000a-0000-0000-00d0ff0f0000"
},
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::example-bucket"
]
},
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam:::user/a0000000-000a-0000-0000-00d0ff0f0000"
},
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::example-bucket/test/*"
]
}
]
}
Cho phép hoặc từ chối quyền truy cập từ một địa chỉ IP cụ thể
Bằng cách sử dụng phần Điều kiện và các điều kiện IpAddress và NotIpAddress, bạn có thể chọn cho phép hoặc từ chối lưu lượng truy cập từ dải hoặc địa chỉ IP được chỉ định.
Nếu Hiệu ứng được đặt thành Cho phép, hãy sử dụng điều kiện IpAddress để chỉ định rằng chỉ cho phép lưu lượng truy cập từ địa chỉ IP đó và sử dụng NotIpAddress để cho phép tất cả lưu lượng truy cập ngoại trừ từ IP đó.
Nếu Hiệu ứng được đặt thành Từ chối, hãy sử dụng điều kiện IpAddress để từ chối lưu lượng truy cập từ địa chỉ IP đó và sử dụng NotIpAddress để từ chối tất cả lưu lượng truy cập ngoại trừ IP đó.
Ví dụ bên dưới cho phép tất cả lưu lượng truy cập chỉ từ địa chỉ IP được chỉ định:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "", "Action": "s3:",
"Resource": "arn:aws:s3:::example-bucket/*",
"Condition": {
"IpAddress": {
"aws:SourceIp": "192.0.2.1/32"
}
}
}
]
}
Áp dụng chính sách nhóm
Sau khi tạo tệp chính sách vùng lưu trữ và xác định chính sách của mình, bạn cần sử dụng công cụ của bên thứ ba để áp dụng các chính sách đó cho vùng lưu trữ.
S3cmd
Lệnh: s3cmd setpolicy [policy-file] s3://[bucket-label], thay thế [bucket-label] bằng nhãn cho vùng lưu trữ của bạn và [policy-file] bằng tên tệp và đường dẫn của tệp chính sách vùng lưu trữ của bạn.
Ví dụ: Áp dụng các chính sách nhóm được xác định trong tệp “policy.json” cho nhóm có tên là “example-bucket”:
s3cmd setpolicy policy.json s3://example-bucket
Nguồn: https://techdocs.akamai.com/cloud-computing/docs/define-access-and-permissions-using-bucket-policies