文档

设置存储桶复制的要求

存储桶复制使用规则将一个 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" 语句授予远程目标检索存储桶级配置以支持 MinIO 部署中所有存储桶上的复制操作的权限。要将策略限制为特定存储桶,请将这些存储桶指定为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 行为一致。然后,您可以随时配置对象保留规则。在开始此过程**之前**,请在不健康的 target 存储桶上配置必要的规则。