文档

设置存储桶复制的要求

存储桶复制使用规则将一个 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"
        }
    ]
}
  • The "EnableRemoteBucketConfiguration" statement grants permission for creating a remote target for supporting replication.

  • The "EnableReplicationRuleConfiguration" statement grants permission for creating replication rules on a bucket. The arn:aws:s3:::* resource applies the replication permissions to any bucket on the source deployment. You can restrict the user policy to specific buckets as-needed.

以下代码创建了一个 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"
        }
    ]
}
  • The "EnableReplicationOnBucket" statement grants permission for a remote target to retrieve bucket-level configuration for supporting replication operations on all buckets in the MinIO deployment. To restrict the policy to specific buckets, specify those buckets as an element in the Resource array similar to "arn:aws:s3:::bucketName".

  • The "EnableReplicatingDataIntoBucket" statement grants permission for a remote target to synchronize data into any bucket in the MinIO deployment. To restrict the policy to specific buckets, specify those buckets as an element in the Resource array similar to "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-KMS 加密。

  • 对于使用 SSE-S3 加密的 对象,MinIO 要求 目标桶也支持 SSE-S3 加密的对象,无论密钥名称如何。

作为复制过程的一部分,MinIO 解密 源桶上的 对象,并将未加密的对象通过网络传输。然后,目标 MinIO 部署使用来自目标的加密设置重新加密 对象。因此,MinIO 强烈建议 在源部署和目标部署上都 启用 TLS,以确保传输过程中 对象的安全性。

MinIO 不支持 复制客户端加密的对象 (SSE-C)。

桶复制需要 MinIO 部署

MinIO 服务器端复制仅在 MinIO 部署之间起作用。源部署和目标部署必须运行具有匹配版本的 MinIO Server。

若要配置任意 S3 兼容服务之间的复制,请使用 mc mirror

复制需要版本控制

MinIO 依靠 版本控制 提供的不可变性保护来支持复制和重新同步。

使用 mc version info 验证源桶和远程桶的版本控制状态。使用 mc version enable 命令根据需要启用版本控制。

如果您从源桶中的版本控制中排除前缀或文件夹,则 MinIO 无法复制该文件夹或前缀中的 对象。

将对象锁定状态与桶复制匹配

MinIO 支持复制在 WORM 锁定 下保存的对象。为了使 MinIO 复制锁定的 对象,两个复制桶必须都启用对象锁定。对于活动-活动配置,MinIO 建议在两个桶上使用相同的保留规则,以确保跨站点的一致行为。

您必须在创建桶时根据 S3 行为启用对象锁定。然后,您可以在任何时候配置对象保留规则。在开始此过程之前,在不健康的 目标桶上配置必要的规则。