Minio は、シンプルで高速な、AWS S3 互換のオブジェクト ストレージです。 Minio は、写真、ビデオ、ログ ファイル、バックアップなどの非構造化データをホストするように設計されています。 minio は分散モードもサポートしており、異なるマシン上にあるものも含め、複数のディスクを単一のオブジェクト ストレージ サーバーに接続できます。
この投稿の目的は、各ユーザーが自分のバケットのみで作業できるように 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-mcMINIO_ACCESS_KEY と MINIO_SECRET_KEY を生成し、/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=Minio の前に nginx を使用しない場合は、これを変更する必要があります。
--address 127.0.0.1:9000на
--address 0.0.0.0:9000Minioを起動します。
systemctl start miniomyminio という 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": ""
}
]
}パスワード test1 を持つユーザー user12345 を作成します。
minio-mc admin user add myminio user1 test12345パスワード test2 を持つユーザー user54321 を作成します。
minio-mc admin user add myminio user2 test54321user1-policy.json ファイルから、Minio で user1-policy というポリシーを作成します。
minio-mc admin policy add myminio user1-policy user1-policy.jsonuser2-policy.json ファイルから、Minio で user2-policy というポリシーを作成します。
minio-mc admin policy add myminio user2-policy user2-policy.jsonユーザー user1 に user1-policy ポリシーを適用します。
minio-mc admin policy set myminio user1-policy user=user1ユーザー user2 に user2-policy ポリシーを適用します。
minio-mc admin policy set myminio user2-policy user=user2ポリシーとユーザーの接続を確認する
minio-mc admin user list myminioポリシーとユーザーの接続を確認すると、次のようになります。
enabled user1 user1-policy
enabled user2 user2-policy明確にするために、ブラウザからアドレスにアクセスしてください
MINIO_ACCESS_KEY=user1 で Minio に接続していることがわかります。バケット user1bucket が利用可能です。

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

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

MINIO_ACCESS_KEY=user2 で Minio に接続してみましょう。利用可能な user2bucket バケットがあります。
また、user1bucket も user1bucket のファイルも表示されません。

Minio の Telegram チャットを作成しました
出所: habr.com
