首页 > 其他分享 >go minio 设置访问权限

go minio 设置访问权限

时间:2024-05-22 09:08:28浏览次数:16  
标签:userName errors minio err rs s3 nil go 权限

bucket 权限

桶默认可以有三种 Access Policy 策略:publiccustomprivate

  • public:不经过任何认证可以直接访问资源
  • custom:自定义策略 Access Rule
  • private:未经授权不能进行任何操作,所有Access Rules失效

策略为custom

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:ListAllMyBuckets",
                "s3:ListBucket",
                "s3:PutObject",
                "s3:DeleteObject",
                "s3:GetBucketLocation"
            ],
            "Resource": [
                "arn:aws:s3:::<bucket-name>/*"
            ]
        }
    ]
}

go设置桶权限

func (m *minio) SetUserBucketsAccess(ctx context.Context, userName string, buckets []string) error {
	rs := make([]string, 0)
	for _, b := range buckets {
		rs = append(rs, fmt.Sprintf(`"arn:aws:s3:::%s/*"`, b))
	}

	policy := fmt.Sprintf(`{"Version": "2012-10-17","Statement": [{"Action": ["s3:*"],"Effect": "Allow","Resource": [%s]}]}`, strings.Join(rs, ","))
	fmt.Println(policy)
	err := m.adminClient.AddCannedPolicy(ctx, userName, []byte(policy))
	if err != nil {
		return errors.Errorf(nil, errors.ErrorMinioOperationFailed)
	}

	err = m.adminClient.SetPolicy(ctx, userName, userName, false)
	if err != nil {
		return errors.Errorf(nil, errors.ErrorMinioOperationFailed)
	}

	return nil
}

标签:userName,errors,minio,err,rs,s3,nil,go,权限
From: https://www.cnblogs.com/niuben/p/18204329

相关文章

  • go多版本切换
    VSCode中如何快速切换golang版本而无影响?如何安装多版本参考链接:https://go.dev/doc/manage-install当已安装某个版本后,执行如下命令goinstallgolang.org/dl/[email protected]执行第一行命令后,会在GOPATH中新增go1.19.7。执行第二行命令后,会在sdk目......
  • golang 类型断言和 var _ T = expression 写法
     类型断言(TypeAssertion)在Go语言中用于检查一个接口值的具体类型,并从中获取该类型的值。它允许你声明并访问接口变量内部存储的非接口类型的值。有两种主要的类型断言形式:value,ok:=i.(T):这种形式会检查接口i是否持有类型T的值。如果成功,value将是T类型的值,ok......
  • golang select 和外层的 for 搭配
     select语句通常与for循环搭配使用,但并不是必须的。在某些情况下,select可能会直接放在一个独立的goroutine中,没有外层的for循环。这通常发生在你知道只会有一次或有限次操作的情况下。例如,你可能有一个简单的goroutine,它等待一个特定的channel信号,然后执行一次操作:package......
  • 【DRF_02】基于Django CBV实现
    路由系统fromdjango.urlsimportpathfromapp01.viewsimportcbv_demourlpatterns=[#path('admin/',admin.site.urls),path('cbv/demo/',cbv_demo.StudentsView.as_view()),]CBV视图fromdjango.viewsimportViewfromdjango.sh......
  • 本地部署MinIO实现文件下载
    前置要求续接上一篇随笔:https://www.cnblogs.com/liuhao-blog/p/18204853 1.实现代码1importio.minio.MinioClient;2importio.minio.GetObjectArgs;3importjava.io.InputStream;4importjava.nio.file.Files;5importjava.nio.file.Paths;67publiccla......
  • git:Unable to negotiate问题解决
    场景说明:安装了Gitblit(自架的代码仓库服务)发现部分电脑无法推代码,报错误如下:Unabletonegotiatewith****port22:nomatchinghostkeytypefound.Theiroffer:ssh-rsa并排队了账户权限问题。解决方案:1.打开问题电脑的系统盘的当前登陆用户文件夹('C:\Users\你当前的......
  • Google I/O 2024 All In One
    GoogleI/O2024AllInOnehttps://io.google/2024https://io.google/2024/intl/zh/demoshttps://io.google/2024/explore/intl/zh/?q=webcookieshttps://io.google/2024/explore/2f6e1e21-3e91-407e-93fc-364c4500cd23/intl/zh/(......
  • k8s安全权限配置
     https://blog.csdn.net/qq_51545656/article/details/136627284一、安全机制Kubernetes的安全机制非常关键,因为它确保了集群的稳定性和数据的安全。三个主要安全机制是Kubernetes安全架构的核心组成部分:认证(Authentication):这是安全机制的第一道防线。它负责确认请求者的......
  • 【go】【gorm】
    @目录写在前面题目解题难度参考资料基础/标准库/第三方库golang导航编程规范算法|面试项目写在前面相关博文个人博客首页免责声明:仅供学习交流使用!开源框架可能存在的风险和相关后果将完全由用户自行承担,本人不承担任何法律责任。题目解题难度更详细的GORM速查表......
  • django-vue-admin文件分析
    后端:backend\dvadmin\system\views├──api_white_list.py//接口写入集合管理├──area.py//地区管理:对省市县区域进行管理。├──clause.py//npm包配置文件,里面定义了项目的npm脚本,依赖包等信息......