文档

设置存储桶复制的要求

存储桶复制使用规则将一个 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" 语句授予为支持复制创建远程目标的权限。

  • The "EnableReplicationRuleConfiguration" 语句授予在存储桶上创建复制规则的权限。The 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"
        }
    ]
}
  • The "EnableReplicationOnBucket" 语句授予远程目标检索存储桶级配置以支持部署中所有存储桶上的复制操作的权限。要将策略限制为特定存储桶,请将这些存储桶指定为 Resource 数组中的元素,类似于 "arn:aws:s3:::bucketName"

  • The "EnableReplicatingDataIntoBucket" 语句授予远程目标将数据同步到部署中任何存储桶的权限。要将策略限制为特定存储桶,请将这些存储桶指定为 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 Server。

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

复制需要版本控制

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

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

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

匹配桶复制的对象锁定状态

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

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