设置桶复制的要求
桶复制使用规则将一个 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
配置为Active Directory/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"
语句授予远程目标检索桶级配置以支持所有桶中复制操作的权限。要将策略限制到特定桶,请将这些桶指定为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
配置为Active Directory/LDAP或OpenID Connect用户管理的 MinIO 部署应改为为桶复制创建专用的访问密钥。
有关在 MinIO 部署中添加用户、访问密钥和策略的更完整文档,请参阅mc admin user
、mc admin user svcacct
和mc admin policy
。
桶复制的匹配对象加密设置
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 的行为一致。然后,您可以随时配置对象保留规则。在开始此过程之前,请在不健康的目标桶上配置必要的规则。