設定儲存貯體複製的需求
儲存貯體複製使用規則將一個 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/LDAP或OpenID 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/LDAP或OpenID Connect使用者管理設定的 MinIO 部署,應改為建立專用的存取金鑰用於儲存貯體複製。
請參閱 mc admin user
、mc admin user svcacct
和 mc admin policy
,以獲取有關將使用者、存取金鑰和政策新增至 MinIO 部署的更完整文件。
儲存桶複寫的物件加密設定比對
MinIO 支援使用 SSE-KMS 和 SSE-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 行為,在建立儲存桶期間啟用物件鎖定。然後,您可以隨時設定物件保留規則。在此程序開始 *之前*,請在不健康的目標儲存桶上設定必要的規則。