文档

设置桶复制的要求

桶复制使用规则将一个 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/LDAPOpenID 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

配置为使用Active Directory/LDAPOpenID Connect用户管理的MinIO部署应为存储桶复制创建专用的访问密钥

有关在MinIO部署中添加用户、访问密钥和策略的更完整文档,请参阅mc admin usermc admin user svcacctmc admin policy

存储桶复制的匹配对象加密设置

MinIO支持复制使用SSE-KMSSSE-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的行为一致。然后,您可以随时配置对象保留规则。在开始此过程之前,请在不健康的目标存储桶上配置必要的规则。