ШПАРГАЛКИ
CI/CD
KUBERNETES
  • DOCKERFILE
  • DOCKER-COMPOSE
  • JENKINSFILE
  • JENKINS-PIPELINE
  • GITLAB CI/CD
  • GROOVIE
  • INSTALL
  • PODS
  • INGRESS

Minio: пользователи и права доступа к бакетам и файлам

Небольшая памятка по установке и разграничению прав клиента в Minio S3

Установка клиента

# macOS
brew install minio/stable/mc

# Windows
Download https://dl.min.io/client/mc/release/windows-amd64/mc.exe

# Linux
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc

Авторизация клиента

ALIAS - имя подключения
S3-ENDPOINT - URL вашего minio сервера
ACCESS-KEY - ключ доступа
SECRET-KEY - пароль.

mc alias set <ALIAS> <S3-ENDPOINT> <ACCESS-KEY> <SECRET-KEY>

Создание пользователя

mc admin user add <ALIAS>

Создание бакета

mc mb <ALIAS>/<BUCKET_NAME>

Добавление пермишшенов

Права доступа добавляются через концепцию policy. Для примера добавим права администрирования объектов для определенного бакета, а после - выдадим эти права нашему пользователю.

Создаем локальный файл bucket-policy.json

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "s3:*"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::<BACKET_NAME>/*"
      ],
      "Sid": ""
    }
  ]
}

Или еще пример, который дает право на запись определенному пользователю только в его бакет. Но, при этом, он может видеть все остальное:

{
  "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": ""
    }
  ]
}

В данном файле мы описываем права доступа для бакета <BACKET_NAME>.

После этого нам потребуется выгрузить пермиссии на сервер и сохранить под именем <POLICY_NAME>:

mc admin policy add <ALIAS> <POLICY_NAME> ./bucket-policy.json

Далее нам нужно применить наш policy к ранее созданному пользователю:

mc admin policy set <ALIAS> <POLICY_NAME> user=<USER_NAME>

Оцените статью

Еще никто не оставил комментарий. Будьте первым!