Thiết lập Minio để người dùng chỉ có thể làm việc với nhóm của riêng mình

Minio là kho lưu trữ đối tượng tương thích AWS S3 đơn giản, nhanh chóng. Minio được thiết kế để lưu trữ dữ liệu phi cấu trúc như ảnh, video, tệp nhật ký, bản sao lưu. minio cũng hỗ trợ chế độ phân tán, cung cấp khả năng kết nối nhiều đĩa với một máy chủ lưu trữ đối tượng, bao gồm cả những đĩa nằm trên các máy khác nhau.

Mục đích của bài đăng này là định cấu hình minio để mỗi người dùng chỉ có thể làm việc với nhóm của riêng mình.

Nhìn chung Minio phù hợp với những trường hợp sau:

  • lưu trữ không sao chép trên hệ thống tệp đáng tin cậy có quyền truy cập qua S3 (bộ lưu trữ vừa và nhỏ được lưu trữ trên NAS và SAN);
  • bộ lưu trữ không được sao chép trên hệ thống tệp không đáng tin cậy có quyền truy cập S3 (để phát triển và thử nghiệm);
  • lưu trữ có bản sao trên một nhóm nhỏ máy chủ trong một giá có quyền truy cập thông qua giao thức S3 (bộ lưu trữ chuyển đổi dự phòng có miền bị lỗi bằng giá).

Trên hệ thống RedHat, chúng tôi kết nối kho lưu trữ Minio không chính thức.

yum -y install yum-plugin-copr
yum copr enable -y lkiesow/minio
yum install -y minio minio-mc

Tạo và thêm vào MINIO_ACCESS_KEY và MINIO_SECRET_KEY trong /etc/minio/minio.conf.

# Custom username or access key of minimum 3 characters in length.
MINIO_ACCESS_KEY=

# Custom password or secret key of minimum 8 characters in length.
MINIO_SECRET_KEY=

Nếu bạn không sử dụng nginx trước Minio thì bạn cần phải thay đổi.

--address 127.0.0.1:9000

trên

--address 0.0.0.0:9000

Hãy khởi động Minio.

systemctl start minio

Chúng ta tạo một kết nối tới Minio có tên myminio.

minio-mc config host add myminio http://localhost:9000 MINIO_ACCESS_KEY 
MINIO_SECRET_KEY

Tạo một nhóm user1bucket.

minio-mc mb myminio/user1bucket

Tạo một nhóm user2bucket.

minio-mc mb myminio/user2bucket

Tạo tệp chính sách user1-policy.json.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "s3:PutBucketPolicy",
        "s3:GetBucketPolicy",
        "s3:DeleteBucketPolicy",
        "s3:ListAllMyBuckets",
        "s3:ListBucket"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::user1bucket"
      ],
      "Sid": ""
    },
    {
      "Action": [
        "s3:AbortMultipartUpload",
        "s3:DeleteObject",
        "s3:GetObject",
        "s3:ListMultipartUploadParts",
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::user1bucket/*"
      ],
      "Sid": ""
    }
  ]
}

Tạo tệp chính sách user2-policy.json.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "s3:PutBucketPolicy",
        "s3:GetBucketPolicy",
        "s3:DeleteBucketPolicy",
        "s3:ListAllMyBuckets",
        "s3:ListBucket"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::user2bucket"
      ],
      "Sid": ""
    },
    {
      "Action": [
        "s3:AbortMultipartUpload",
        "s3:DeleteObject",
        "s3:GetObject",
        "s3:ListMultipartUploadParts",
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::user2bucket/*"
      ],
      "Sid": ""
    }
  ]
}

Tạo người dùng user1 bằng mật khẩu test12345.

minio-mc admin user add myminio user1 test12345

Tạo người dùng user2 bằng mật khẩu test54321.

minio-mc admin user add myminio user2 test54321

Chúng tôi tạo một chính sách trong Minio có tên user1-policy từ tệp user1-policy.json.

minio-mc admin policy add myminio user1-policy user1-policy.json

Chúng tôi tạo một chính sách trong Minio có tên user2-policy từ tệp user2-policy.json.

minio-mc admin policy add myminio user2-policy user2-policy.json

Áp dụng chính sách user1-policy cho người dùng user1.

minio-mc admin policy set myminio user1-policy user=user1

Áp dụng chính sách user2-policy cho người dùng user2.

minio-mc admin policy set myminio user2-policy user=user2

Kiểm tra kết nối của chính sách với người dùng

minio-mc admin user list myminio

Kiểm tra kết nối của chính sách tới người dùng sẽ trông như thế này

enabled    user1                 user1-policy
enabled    user2                 user2-policy

Để rõ ràng, hãy duyệt qua trình duyệt đến địa chỉ http://ip-сервера-где-запущен-minio:9000/minio/

Chúng tôi thấy rằng chúng tôi đã kết nối với Minio theo MINIO_ACCESS_KEY=user1. Nhóm user1bucket có sẵn cho chúng tôi.

Thiết lập Minio để người dùng chỉ có thể làm việc với nhóm của riêng mình

Sẽ không thể tạo nhóm vì không có Hành động tương ứng trong chính sách.

Thiết lập Minio để người dùng chỉ có thể làm việc với nhóm của riêng mình

Hãy tạo một tệp trong nhóm user1bucket.

Thiết lập Minio để người dùng chỉ có thể làm việc với nhóm của riêng mình

Hãy kết nối với Minio theo MINIO_ACCESS_KEY=user2. Nhóm user2bucket có sẵn cho chúng tôi.

Và chúng tôi không thấy user1bucket hoặc các tệp từ user1bucket.

Thiết lập Minio để người dùng chỉ có thể làm việc với nhóm của riêng mình

Tạo cuộc trò chuyện Telegram bằng Minio https://t.me/minio_s3_ru

Nguồn: www.habr.com