设置存储桶复制的要求
存储桶复制使用规则将一个MinIO部署上的存储桶内容同步到远程MinIO部署上的存储桶。
复制可以通过以下任一方式完成:
主动-被动符合条件的对象会从源存储桶复制到远程存储桶。 远程存储桶上的任何更改都不会被复制回来。
Active-Active任一存储桶中符合条件的对象变更都会以双向方式复制到另一个存储桶。
多站点双活对任何设置了存储桶复制的存储桶中符合条件的对象所做的更改会复制到所有其他存储桶。
在设置任何复制配置之前,请确保满足以下先决条件。
设置存储桶复制所需的权限
存储桶复制需要在源部署和目标部署上具有特定权限,才能配置和启用复制规则。
以下策略提供了在部署上配置和启用复制的权限。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"admin:SetBucketTarget",
"admin:GetBucketTarget",
"admin:ListBatchJobs",
"admin:DescribeBatchJob",
"admin:StartBatchJob",
"admin:CancelBatchJob"
],
"Effect": "Allow",
"Sid": "EnableRemoteBucketConfiguration"
},
{
"Effect": "Allow",
"Action": [
"s3:GetReplicationConfiguration",
"s3:ListBucket",
"s3:ListBucketMultipartUploads",
"s3:GetBucketLocation",
"s3:GetBucketVersioning",
"s3:GetObjectRetention",
"s3:GetObjectLegalHold",
"s3:PutReplicationConfiguration"
],
"Resource": [
"arn:aws:s3:::*"
],
"Sid": "EnableReplicationRuleConfiguration"
}
]
}
The
"EnableRemoteBucketConfiguration"该语句授予创建远程目标的权限以支持复制。The
"EnableReplicationRuleConfiguration"statement grants permission for creating replication rules on a bucket. 该语句授予在存储桶上创建复制规则的权限。"arn:aws:s3:::*resource 应用复制权限到任何源部署上的存储桶。 您可以根据需要将用户策略限制为特定存储桶。
以下代码创建了一个MinIO 管理的用户使用必要的策略。替换TARGET随着别名您正在配置复制的 MinIO 部署:
wget -O - https://docs.min.io/community/minio-object-store/examples/ReplicationAdminPolicy.json | \
mc admin policy create TARGET ReplicationAdminPolicy /dev/stdin
mc admin user add TARGET ReplicationAdmin LongRandomSecretKey
mc admin policy attach TARGET ReplicationAdminPolicy --user=ReplicationAdmin
配置用于的MinIO部署Active Directory/LDAP or OpenID Connect用户管理应该创建一个专门的访问密钥用于存储桶复制。
以下策略提供了启用复制数据同步的权限进入部署。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetReplicationConfiguration",
"s3:ListBucket",
"s3:ListBucketMultipartUploads",
"s3:GetBucketLocation",
"s3:GetBucketVersioning",
"s3:GetBucketObjectLockConfiguration",
"s3:GetEncryptionConfiguration"
],
"Resource": [
"arn:aws:s3:::*"
],
"Sid": "EnableReplicationOnBucket"
},
{
"Effect": "Allow",
"Action": [
"s3:GetReplicationConfiguration",
"s3:ReplicateTags",
"s3:AbortMultipartUpload",
"s3:GetObject",
"s3:GetObjectVersion",
"s3:GetObjectVersionTagging",
"s3:PutObject",
"s3:PutObjectRetention",
"s3:PutBucketObjectLockConfiguration",
"s3:PutObjectLegalHold",
"s3:DeleteObject",
"s3:ReplicateObject",
"s3:ReplicateDelete"
],
"Resource": [
"arn:aws:s3:::*"
],
"Sid": "EnableReplicatingDataIntoBucket"
}
]
}
The
"EnableReplicationOnBucket"statement grants permission for a remote target to retrieve bucket-level configuration for supporting replication operations on全部MinIO 部署中的存储桶。 要将策略限制到特定存储桶,请将这些存储桶指定为Resource类似于数组"arn:aws:s3:::bucketName".The
"EnableReplicatingDataIntoBucket"statement grants permission for a remote target to synchronize data into任何MinIO 部署中的存储桶。 要将策略限制到特定存储桶,请将这些存储桶指定为Resource类似于数组"arn:aws:s3:::bucketName/*".
以下代码创建了一个MinIO 管理的用户使用必要的策略。
替换TARGET随着别名您正在配置复制的 MinIO 部署:
wget -O - https://docs.min.io/community/minio-object-store/examples/ReplicationRemoteUserPolicy.json | \
mc admin policy create TARGET ReplicationRemoteUserPolicy /dev/stdin
mc admin user add TARGET ReplicationRemoteUser LongRandomSecretKey
mc admin policy attach TARGET ReplicationRemoteUserPolicy --user=ReplicationRemoteUser
配置用于的MinIO部署Active Directory/LDAP or OpenID Connect用户管理应该创建一个专门的访问密钥用于存储桶复制。
看mc admin user, mc admin user svcacct和mc admin policy有关向 MinIO 部署添加用户、访问密钥和策略的更完整文档,请参阅
匹配存储桶复制的对象加密设置
MinIO 支持使用加密对象进行复制SSE-KMS和SSE-S3:
对于使用 SSE-KMS 加密的对象,MinIO需要目标存储桶支持使用SSE-KMS加密对象相同键名用于加密源存储桶中的对象。
对于使用加密的对象SSE-S3, MinIO需要目标存储桶也支持对象的 SSE-S3 加密,无论密钥名称如何。
作为复制过程的一部分,MinIO解密源存储桶上的对象,并在网络上传输未加密的对象。 目标 MinIO 部署随后使用目标的加密设置重新加密该对象。 因此,MinIO强烈建议 启用TLS在源部署和目标部署上,确保对象在传输过程中的安全性。
MinIO 确实不支持复制客户端加密对象(SSE-C)。
Bucket Replication Requires MinIO Deployments
MinIO 服务器端复制仅在 MinIO 部署之间有效。 源部署和目标部署都必须必须运行匹配版本的 MinIO Server。
要配置任意 S3 兼容服务之间的复制,请使用mc mirror.
复制需要版本控制
MinIO 依赖于由版本控制以支持复制和重新同步。
使用mc version info验证源存储桶和远程存储桶的版本控制状态。mc version enable根据需要启用版本控制的命令。
如果在源存储桶中排除某个前缀或文件夹的版本控制,MinIO 将无法复制该文件夹或前缀中的对象。
匹配对象锁定状态与存储桶复制
MinIO 支持复制存储在WORM 锁定两个复制存储桶必须已为 MinIO 启用对象锁定功能以复制被锁定的对象。 对于主动-主动配置,MinIO 建议使用相同在两个存储桶上设置保留规则,以确保跨站点行为一致。
根据 S3 的行为要求,您必须在存储桶创建期间启用对象锁定功能。 之后您可以随时配置对象保留规则。 请在不健康的目标存储桶上配置必要的规则之前开始此过程。