文件

設定儲存桶複寫的需求

儲存桶複寫使用規則將一個 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 行為,在建立儲存桶期間啟用物件鎖定。然後,您可以隨時設定物件保留規則。在此程序開始之前,請在不健全的目標儲存桶上設定必要的規則。