文档

设置桶复制的要求

桶复制使用规则将一个 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 - https://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" 语句授予远程目标检索桶级配置以支持部署中所有桶上的复制操作的权限。要将策略限制为特定桶,请将这些桶指定为Resource数组中的一个元素,类似于"arn:aws:s3:::bucketName"

  • "EnableReplicatingDataIntoBucket" 语句授予远程目标将数据同步到 MinIO 部署中的任何存储桶的权限。要将策略限制到特定的存储桶,请将这些存储桶指定为 Resource 数组中的一个元素,类似于 "arn:aws:s3:::bucketName/*"

以下代码创建了一个具有必要策略的MinIO 托管用户。将 TARGET 替换为您正在配置复制的 MinIO 部署的别名

wget -O - https://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-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 的行为相同。然后,您可以随时配置对象保留规则。在开始此过程之前,请在不健康的目标存储桶上配置必要的规则。