双活MinIO集群配置双向同步添加IAM策略报错问题咨询
MinIO配置双向同步添加策略报错修复
问题现象
按官方双向桶复制指南配置双活MinIO集群双向同步时,执行mc admin policy add命令添加复制权限策略,返回如下错误:
mc: <ERROR> Unable to add new policy: conditions are not supported for action s3:GetBucketVersioning.
添加--debug参数重试后,服务端返回明确错误码XMinioMalformedIAMPolicy,错误信息一致:s3:GetBucketVersioning动作不支持配置条件规则。
当前环境信息:
- MinIO集群通过Helm Chart部署
- 服务端Docker镜像版本:
RELEASE.2021-02-14T04-01-33Z - 使用的mc客户端版本:
RELEASE.2022-07-06T14-54-36Z
问题原因
核心是版本不兼容:
2022版mc客户端内置/生成的复制权限策略,是适配高版本MinIO服务端的,策略中给s3:GetBucketVersioning动作配置了条件约束。但2021年2月的老版本MinIO服务端的IAM策略引擎,还不支持给这个动作加条件规则,会直接判定策略非法拒绝创建。
另外2021年2月版本的MinIO双向复制功能本身有大量未修复的bug,就算绕开策略添加的问题,后续也大概率出现同步中断、数据不一致的问题。
修复方法
按推荐优先级排序:
- 升级MinIO服务端(生产环境唯一推荐方案)
先对集群做全量数据备份,再通过Helm将MinIO服务端镜像升级到2022年及以后的稳定RELEASE版本,和当前使用的mc客户端大版本对齐。升级完成后直接按官方步骤配置即可,不需要修改策略内容,同时能规避老版本复制功能的已知缺陷。 - 临时兼容方案(仅测试环境用)
暂时无法升级服务端的话,做两个调整:- 将mc客户端降级到和服务端同代的
RELEASE.2021-02-xx正式版本 - 手动编辑要导入的复制策略JSON文件,把
s3:GetBucketVersioning动作关联的所有Condition配置块全部删除,直接给该动作开放对应资源权限,修改后重新执行策略添加命令即可。
- 将mc客户端降级到和服务端同代的
注意:临时方案仅能解决策略添加报错的问题,老版本双向复制的功能缺陷没有任何修复,生产环境严禁使用。
内容的提问来源于stack exchange,提问作者Lu Peng
相关产品推荐
相关产品推荐

