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
わかりやすくするために、ブラウザから次のアドレスにアクセスします。
MINIO_ACCESS_KEY=user1 で Minio に接続したことがわかります。 user1bucket バケットを使用できます。
ポリシー内に対応するアクションがないため、バケットを作成することはできません。
バケット user1bucket にファイルを作成しましょう。
MINIO_ACCESS_KEY=user2 で Minio に接続してみましょう。 user2bucket バケットを使用できます。
そして、user1bucket も user1bucket からのファイルも表示されません。
Minio を使用して Telegram チャットを作成しました
出所: habr.com