设置存储桶复制的要求
存储桶复制使用规则将一个 MinIO 部署上的存储桶的内容同步到远程 MinIO 部署上的存储桶。
复制可以通过以下任何方式完成
主动-被动 合格对象从源存储桶复制到远程存储桶。远程存储桶上的任何更改都不会复制回来。
主动-主动 对任何存储桶的合格对象的更改都会以双向方式复制到另一个存储桶。
多站点主动-主动 对设置用于存储桶复制的任何存储桶的合格对象的更改都会复制到所有其他存储桶。
在设置任何这些复制配置之前,请确保您满足以下先决条件。
设置存储桶复制所需的权限
存储桶复制需要在源和目标部署上具有特定的权限,才能配置和启用复制规则。
以下策略提供了在部署上配置和启用复制的权限。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"admin:SetBucketTarget",
"admin:GetBucketTarget"
],
"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"
}
]
}
该
"EnableRemoteBucketConfiguration"
语句授予为支持复制创建远程目标的权限。该
"EnableReplicationRuleConfiguration"
语句授予在存储桶上创建复制规则的权限。该arn:aws:s3:::*
资源将复制权限应用于源部署上的任何存储桶。您可以根据需要将用户策略限制为特定存储桶。
以下代码创建了一个具有必要策略的MinIO 管理用户。将 TARGET
替换为您正在配置复制的 MinIO 部署的 别名
wget -O - http://min-io.cn/docs/minio/linux/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
为 活动目录/LDAP 或 OpenID Connect 用户管理配置的 MinIO 部署应改为为存储桶复制创建一个专用的 访问密钥。
以下策略提供了为启用复制数据的同步进入部署的权限。
{
"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"
}
]
}
该
"EnableReplicationOnBucket"
语句授予远程目标检索存储桶级配置以支持 MinIO 部署中所有存储桶上的复制操作的权限。要将策略限制为特定存储桶,请将这些存储桶指定为Resource
数组中的元素,类似于"arn:aws:s3:::bucketName"
。该
"EnableReplicatingDataIntoBucket"
语句授予远程目标将数据同步到 MinIO 部署中任何存储桶的权限。要将策略限制为特定存储桶,请将这些存储桶指定为Resource
数组中的元素,类似于"arn:aws:s3:::bucketName/*"
。
以下代码创建了一个具有必要策略的 MinIO 管理的用户。将 TARGET
替换为您正在配置复制的 MinIO 部署的 别名
wget -O - http://min-io.cn/docs/minio/linux/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
为 活动目录/LDAP 或 OpenID Connect 用户管理配置的 MinIO 部署应改为为存储桶复制创建一个专用的 访问密钥。
请参阅 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)。
桶复制需要 MinIO 部署
MinIO 服务器端复制仅在 MinIO 部署之间有效。源部署和目标部署 *必须* 运行具有匹配版本的 MinIO 服务器。
要配置任意 S3 兼容服务之间的复制,请使用 mc mirror
。
复制需要版本控制
MinIO 依赖于 版本控制 提供的不变性保护来支持复制和重新同步。
使用 mc version info
验证源桶和远程桶的版本控制状态。使用 mc version enable
命令根据需要启用版本控制。
如果您从源桶中的版本控制中排除前缀或文件夹,MinIO 无法复制该文件夹或前缀中的对象。
使用桶复制匹配对象锁定状态
MinIO 支持复制在 WORM 锁定 下持有的对象。为了使 MinIO 能够复制锁定对象,两个复制桶 *必须* 启用对象锁定。对于主动-主动配置,MinIO 建议在两个桶上使用 *相同* 的保留规则,以确保跨站点的行为一致。
您必须按照 S3 行为在创建桶时启用对象锁定。然后,您可以随时配置对象保留规则。在开始此过程之前,请在不正常的目标桶上配置必要的规则。