当前位置: 首页 > news >正文

linux 通过命令将 MinIO 桶的权限设置为 Custom(自定义策略)

在 Ubuntu 下,如果要通过命令将 MinIO 桶的权限设置为 Custom(自定义策略),可以使用 mc(MinIO Client)、AWS CLI 或直接调用 MinIO API(如 curl)。以下是几种方法:


方法 1:使用 mc 设置自定义策略

mc 是 MinIO 官方命令行工具,支持直接设置自定义策略(JSON 格式)。

1. 安装 mc(如果未安装)

执行完wget,会告知mc的下载地址在哪,如无特殊限制,一般在root下,执行执行下方命令就行,如果不是,赋权限时记得修改路径,例如:sudo chmod +x /home/soft/mc

wget https://dl.min.io/client/mc/release/linux-amd64/mc -O ~/mc
chmod +x ~/mc
sudo mv ~/mc /usr/local/bin/

2. 配置 MinIO 服务器别名

mc alias set ALIAS SERVER_URL ACCESS_KEY SECRET_KEY
  • ALIAS:自定义别名(如 myminio
  • SERVER_URL:MinIO 服务器地址(如 http://localhost:9000

3. 创建自定义策略 JSON 文件

新建一个 JSON 文件(如 custom-policy.json),定义自定义权限:

{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Principal": "*","Action": ["s3:GetObject"],"Resource": ["arn:aws:s3:::BUCKET_NAME/*"],"Condition": {"IpAddress": {"aws:SourceIp": ["192.168.1.0/24"]}}}]
}
  • 此示例允许 192.168.1.0/24 网段的用户下载文件,其他 IP 拒绝访问。

4. 应用自定义策略

mc policy set-json custom-policy.json ALIAS/BUCKET_NAME
  • ALIAS:MinIO 别名(如 myminio
  • BUCKET_NAME:桶名称(如 mybucket
# 示例
mc policy set-json /home/soft/minio/policy.json minio/test_bucket

5. 验证策略

mc policy get ALIAS/BUCKET_NAME

方法 2:使用 AWS CLI(兼容 MinIO)

如果已安装 AWS CLI,可以直接修改桶策略。

1. 安装 AWS CLI

sudo apt update
sudo apt install awscli

2. 配置 AWS CLI 连接 MinIO

aws configure set aws_access_key_id YOUR_ACCESS_KEY
aws configure set aws_secret_access_key YOUR_SECRET_KEY
aws configure set default.region us-east-1
aws configure set default.s3.endpoint_url http://localhost:9000

3. 设置自定义策略

BUCKET_NAME="your-bucket"
POLICY_JSON='{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Principal": {"AWS": ["arn:aws:iam::123456789012:user/user1"]},"Action": ["s3:GetObject"],"Resource": ["arn:aws:s3:::'"$BUCKET_NAME"'/*"]}]
}'aws s3api put-bucket-policy --bucket "$BUCKET_NAME" --policy "$POLICY_JSON"
  • 此示例仅允许特定 IAM 用户访问。

4. 验证策略

aws s3api get-bucket-policy --bucket "$BUCKET_NAME"

方法 3:使用 curl 调用 MinIO API

直接通过 HTTP API 设置自定义策略。

1. 生成签名请求

BUCKET_NAME="your-bucket"
MINIO_SERVER="http://localhost:9000"
ACCESS_KEY="your-access-key"
SECRET_KEY="your-secret-key"
DATE_ISO=$(date -u +"%Y%m%dT%H%M%SZ")
DATE_SHORT=$(date -u +"%Y%m%d")# 自定义策略 JSON
POLICY_JSON='{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Principal": "*","Action": ["s3:GetObject"],"Resource": ["arn:aws:s3:::'"$BUCKET_NAME"'/*"],"Condition": {"IpAddress": {"aws:SourceIp": ["192.168.1.100/32"]}}}]
}'# 计算签名(简化版,实际需完整 AWS Signature v4)
curl -X PUT "$MINIO_SERVER/$BUCKET_NAME/?policy" \-H "Host: $(echo $MINIO_SERVER | sed 's|^http[s]://||')" \-H "x-amz-date: $DATE_ISO" \-H "Authorization: AWS4-HMAC-SHA256 Credential=$ACCESS_KEY/$DATE_SHORT/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-date, Signature=$(echo -n "AWS4-HMAC-SHA256\n$DATE_ISO\n$DATE_SHORT/us-east-1/s3/aws4_request\n$(echo -en "PUT\n/$BUCKET_NAME/\npolicy=\nhost:$(echo $MINIO_SERVER | sed 's|^http[s]://||')\nx-amz-date:$DATE_ISO\n\nhost;x-amz-date\n$(echo -n "$POLICY_JSON" | sha256sum | cut -d' ' -f1)" | sha256sum | cut -d' ' -f1)" | openssl dgst -sha256 -mac HMAC -macopt "hexkey:$(echo -n "AWS4$SECRET_KEY" | od -A n -t x1 | tr -d ' \n')" | cut -d' ' -f2)" \-d "$POLICY_JSON"

方法 4:使用 Python (boto3)

如果已安装 Python,可以用 boto3 设置自定义策略。

1. 安装 boto3

pip install boto3

2. Python 脚本

import boto3
import json
from botocore.client import ConfigENDPOINT = "http://localhost:9000"
ACCESS_KEY = "your-access-key"
SECRET_KEY = "your-secret-key"
BUCKET_NAME = "your-bucket"s3 = boto3.client("s3",endpoint_url=ENDPOINT,aws_access_key_id=ACCESS_KEY,aws_secret_access_key=SECRET_KEY,config=Config(signature_version="s3v4"),
)policy = {"Version": "2012-10-17","Statement": [{"Effect": "Allow","Principal": {"AWS": ["arn:aws:iam::123456789012:user/user1"]},"Action": ["s3:GetObject"],"Resource": [f"arn:aws:s3:::{BUCKET_NAME}/*"]}]
}s3.put_bucket_policy(Bucket=BUCKET_NAME, Policy=json.dumps(policy))
print("Custom policy applied!")

运行:

python3 set_custom_policy.py

注意事项
版本兼容性:MinIO 新版本(≥ RELEASE.2023-01-25T16-20-52Z)推荐使用 mc anonymous,旧版本可能仍支持 mc policy。

总结

方法适用场景推荐指数
mc policy set-json最简单,官方推荐⭐⭐⭐⭐⭐
AWS CLI兼容 AWS S3⭐⭐⭐⭐
curl + MinIO API无需额外工具⭐⭐
Python (boto3)编程方式⭐⭐⭐

推荐

  • 优先使用 mc policy set-json(最简单可靠)。
  • 如果已熟悉 AWS CLI,可以用 aws s3api put-bucket-policy
  • 需要编程控制时,选择 Python + boto3

希望这些方法能满足你的需求! 🚀

相关文章:

  • STM32F407VET6学习笔记5:STM32CubeMX配置串口工程_HAL库
  • Android系统 TinyAlsa命令
  • 三防平板科普:有什么特殊功能?应用在什么场景?
  • 什么是大端序,什么是小端序,如何记忆它们!!!
  • 深度学习常见实验问题与实验技巧
  • C++ 初始化大全
  • 阿里云云网络论文:Nezha,计算网络解耦下的vSwitch池化架构
  • 三品PLM产品全生命周期管理功能清单 三品PLM系统赋能企业产品全生命周期管理
  • 开疆智能Profinet转Profibus网关连接施耐德ATV610变频器案例
  • Web3怎么本地测试连接以太坊?
  • 车载网关策略 --- 车载网关通信故障处理机制深度解析
  • 26考研 | 王道 | 第五章 传输层
  • Linux 下 C 语言实现工厂模式
  • K8S Pod调度方法实例
  • go build -gcflags 参数学习
  • Oracle 12c新增的数字转换验证VALIDATE_CONVERSION函数
  • 多模态大语言模型arxiv论文略读(九十四)
  • 【linux篇】动静态库和自动化构建的“神之一手”:make、Makefile
  • 【C++】小知识点
  • 《计算机组成原理》第 9 章 - 控制单元的功能
  • 网站建设初衷/各地疫情最新消息
  • 北京网站建设有限公司/学生个人网页制作html
  • 威海市环翠区建设局网站/郑州seo技术博客
  • 画中画有哪些网站可以做/中国十大流量网站
  • 做技术一般逛那些网站/免费发广告的平台
  • 免费网站奖励自己的软件/seo手机关键词排行推广