ノートに戻る

公開 2025-06-06

MinIOでファイル一覧を非表示にしつつ、誰でもダウンロードできるようにするには?

l-you avatarまさにあなた

このガイドは、公開時点で利用可能な最新のバージョンタグである MinIO リリース RELEASE.2025-05-24T17-08-30Z 向けに作成されています。

Step 1: バケットエイリアスを作成する

bash

mc alias set myminio https://minio.example.com YOUR_ACCESS_KEY YOUR_SECRET_KEY
mc mb myminio/public

Step 2: バケットポリシーを公開読み取り専用アクセスに設定する

bash

mc anonymous set download myminio/public

これにより次のことが可能になります: - バケット内のファイルの一覧表示を許可します。 - 任意のファイルのダウンロードを許可します。

Step 3: バケットポリシー JSON を編集する

まず、前のステップで作成された現在の JSON ポリシーを取得するために、次のコマンドを実行します。

bash

mc anonymous get-json myminio/public

出力は次のようになります: “これは ‘download’ プリセットで定義されたポリシーです。

json

{
 "Statement": [
  {
   "Action": [
    "s3:GetBucketLocation",
    "s3:ListBucket"
   ],
   "Effect": "Allow",
   "Principal": {
    "AWS": [
     "*"
    ]
   },
   "Resource": [
    "arn:aws:s3::: public"
   ]
  },
  {
   "Action": [
    "s3:GetObject"
   ],
   "Effect": "Allow",
   "Principal": {
    "AWS": [
     "*"
    ]
   },
   "Resource": [
    "arn:aws:s3::: public/*"
   ]
  }
 ],
 "Version": "2012-10-17"
}

バケット内で利用可能なファイルを誰でも一覧表示できるようにしている行は、’Action’ プロパティ内の s3:ListBucket です。これを削除し、次のコマンドでポリシーを再アップロードします。

bash

mc anonymous set-json /path-to-your-edited-json-policy.json myminio/public

ここで、ファイル /path-to-your-edited-json-policy.json には編集済みのポリシーが含まれています。

json

{
 "Statement": [
  {
   "Action": [
    "s3:GetBucketLocation"
   ],
   "Effect": "Allow",
   "Principal": {
    "AWS": [
     "*"
    ]
   },
   "Resource": [
    "arn:aws:s3::: public"
   ]
  },
  {
   "Action": [
    "s3:GetObject"
   ],
   "Effect": "Allow",
   "Principal": {
    "AWS": [
     "*"
    ]
   },
   "Resource": [
    "arn:aws:s3:::public/*"
   ]
  }
 ],
 "Version": "2012-10-17"
}

Step 4: 一覧が非表示になっていることを確認する

MinIO の S3 エンドポイントのルートを開きます。例: ‘youbucket.s3.yourdomain.com’。‘Access Denied’ と表示される XML 形式のエラーが返ってくれば、想定どおりに動作しています!