文件

設定儲存桶複寫的要求

儲存桶複寫使用規則將一個 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://minio.dev.org.tw/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://minio.dev.org.tw/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 部署應改為建立專用的 存取金鑰,用於儲存桶複寫。

請參閱 mc admin usermc admin user svcacctmc admin policy,以取得關於將使用者、存取金鑰和政策新增至 MinIO 部署的更完整文件。

儲存桶複寫的物件加密設定比對

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 行為在儲存桶建立期間啟用物件鎖定。然後,您可以隨時設定物件保留規則。在開始此程序*之前*,先在狀況不佳的目標儲存桶上設定必要的規則。