文件

設定儲存桶複寫的需求

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