ユーザーが自分のバケットのみで作業できるように Minio を設定する

Minio は、シンプルで高速な AWS S3 互換のオブジェクト ストアです。 Minio は、写真、ビデオ、ログ ファイル、バックアップなどの非構造化データをホストするように設計されています。 minio は分散モードもサポートしており、異なるマシン上にあるものも含め、複数のディスクを XNUMX つのオブジェクト ストレージ サーバーに接続する機能を提供します。

この投稿の目的は、各ユーザーが自分のバケットのみで作業できるように minio を構成することです。

一般に、Minio は次の場合に適しています。

  • S3 経由でアクセスできる信頼性の高いファイル システム上の非レプリケーション ストレージ (NAS および SAN でホストされる中小規模のストレージ)。
  • S3 アクセスを備えた信頼性の低いファイル システム上の非複製ストレージ (開発およびテスト用)。
  • S3 プロトコル経由でアクセスできる、XNUMX つのラック内の小規模なサーバー グループ上でレプリケーションを行うストレージ (ラックと同じ障害ドメインを持つフェイルオーバー ストレージ)。

RedHat システムでは、非公式 Minio リポジトリに接続します。

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

/etc/minio/minio.conf の MINIO_ACCESS_KEY および MINIO_SECRET_KEY を生成して追加します。

# 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=

Minio を使用する前に nginx を使用しない場合は、変更する必要があります。

--address 127.0.0.1:9000

на

--address 0.0.0.0:9000

ミニオを起動しましょう。

systemctl start minio

myminio という Minio への接続を作成します。

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

バケット user1bucket を作成します。

minio-mc mb myminio/user1bucket

バケット user2bucket を作成します。

minio-mc mb myminio/user2bucket

ポリシー ファイル 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": ""
    }
  ]
}

ポリシー ファイル 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": ""
    }
  ]
}

ユーザー user1 をパスワード test12345 で作成します。

minio-mc admin user add myminio user1 test12345

ユーザー user2 をパスワード test54321 で作成します。

minio-mc admin user add myminio user2 test54321

Minio で user1-policy.json ファイルから user1-policy というポリシーを作成します。

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

Minio で user2-policy.json ファイルから user2-policy というポリシーを作成します。

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

user1-policy ポリシーをユーザー user1 に適用します。

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

user2-policy ポリシーをユーザー user2 に適用します。

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

ポリシーとユーザーの接続を確認する

minio-mc admin user list myminio

ユーザーへのポリシーの接続を確認すると、次のようになります。

enabled    user1                 user1-policy
enabled    user2                 user2-policy

わかりやすくするために、ブラウザから次のアドレスにアクセスします。 http://ip-сервера-где-запущен-minio:9000/minio/

MINIO_ACCESS_KEY=user1 で Minio に接続したことがわかります。 user1bucket バケットを使用できます。

ユーザーが自分のバケットのみで作業できるように Minio を設定する

ポリシー内に対応するアクションがないため、バケットを作成することはできません。

ユーザーが自分のバケットのみで作業できるように Minio を設定する

バケット user1bucket にファイルを作成しましょう。

ユーザーが自分のバケットのみで作業できるように Minio を設定する

MINIO_ACCESS_KEY=user2 で Minio に接続してみましょう。 user2bucket バケットを使用できます。

そして、user1bucket も user1bucket からのファイルも表示されません。

ユーザーが自分のバケットのみで作業できるように Minio を設定する

Minio を使用して Telegram チャットを作成しました https://t.me/minio_s3_ru

出所: habr.com