相当于 AWS s3 x-amz-acl header 在 Azure 和 Google 云中
Equivalent of AWS s3 x-amz-acl header in Azure and Google Cloud
在 AWS S3 中上传 object 时,您可以将“x-amz-acl=bucket-owner-full-control”添加到 url(作为查询参数)以使 object 属于桶而不是上传者。在使用 Cloud Storage 或 Azure Storage 时如何实现相同的目标?
How do you achieve the same when using Cloud Storage or Azure Storage?
在 Azure 存储中,您无需执行任何特殊操作。对象 (blob) 的所有权始终属于上传 blob 的存储帐户所有者。他们可以将管理 blob 的权限委托给其他一些用户,但所有权始终属于帐户所有者。
Firebase 存储更接近于 Dropbox 或 Google 驱动器,从技术上讲,所有者是存储桶,如果您想跟踪所有者是谁,您可以使用元数据
var newMetadata = {
customMetadata : {
'owner': auth().currentUser.uid
}
};
storageItemReference.updateMetadata(newMetadata)
.then((metadata) => {
// Updated metadata for your storage item is returned in the Promise
}).catch((error) => {
// Uh-oh, an error occurred!
});
如果您发现用户可以删除不应该删除的存储,您还可以通过安全规则控制此行为
service firebase.storage {
match /b/{bucket}/o {
// A read rule can be divided into read and list rules
match /images/{imageId} {
// Applies to single document read requests
allow get: if <condition>;
// Applies to list and listAll requests (Rules Version 2)
allow list: if <condition>;
// A write rule can be divided into create, update, and delete rules
match /images/{imageId} {
// Applies to writes to nonexistent files
allow create: if <condition>;
// Applies to updates to file metadata
allow update: if <condition>;
// Applies to delete operations
allow delete: if <condition>;
}
}
}
}
来源:https://firebase.google.com/docs/storage/security/core-syntax
对于 Google Cloud Storage,上传带有 x-amz-acl=bucket-owner-full-control
的 object 相当于上传带有 x-goog-acl=bucket-owner-full-control
[=25] 的 object =].将 amz
切换为 goog
适用于大多数 header。有一个 translation table 的 S3 到 GCS headers。
此外,如果您希望确保存储桶中的所有 object 只能由存储桶拥有者访问,您可能会发现使用 Uniform Bucket Level Access 更方便。启用后,存储桶中的个人 object 所有权将不再存在,并且您不再需要在每次上传时指定 header。
您可以从 UI、API 或通过此命令启用统一存储桶级别访问:gsutil uniformbucketlevelaccess set on gs://BUCKET_NAME
在 AWS S3 中上传 object 时,您可以将“x-amz-acl=bucket-owner-full-control”添加到 url(作为查询参数)以使 object 属于桶而不是上传者。在使用 Cloud Storage 或 Azure Storage 时如何实现相同的目标?
How do you achieve the same when using Cloud Storage or Azure Storage?
在 Azure 存储中,您无需执行任何特殊操作。对象 (blob) 的所有权始终属于上传 blob 的存储帐户所有者。他们可以将管理 blob 的权限委托给其他一些用户,但所有权始终属于帐户所有者。
Firebase 存储更接近于 Dropbox 或 Google 驱动器,从技术上讲,所有者是存储桶,如果您想跟踪所有者是谁,您可以使用元数据
var newMetadata = {
customMetadata : {
'owner': auth().currentUser.uid
}
};
storageItemReference.updateMetadata(newMetadata)
.then((metadata) => {
// Updated metadata for your storage item is returned in the Promise
}).catch((error) => {
// Uh-oh, an error occurred!
});
如果您发现用户可以删除不应该删除的存储,您还可以通过安全规则控制此行为
service firebase.storage {
match /b/{bucket}/o {
// A read rule can be divided into read and list rules
match /images/{imageId} {
// Applies to single document read requests
allow get: if <condition>;
// Applies to list and listAll requests (Rules Version 2)
allow list: if <condition>;
// A write rule can be divided into create, update, and delete rules
match /images/{imageId} {
// Applies to writes to nonexistent files
allow create: if <condition>;
// Applies to updates to file metadata
allow update: if <condition>;
// Applies to delete operations
allow delete: if <condition>;
}
}
}
}
来源:https://firebase.google.com/docs/storage/security/core-syntax
对于 Google Cloud Storage,上传带有 x-amz-acl=bucket-owner-full-control
的 object 相当于上传带有 x-goog-acl=bucket-owner-full-control
[=25] 的 object =].将 amz
切换为 goog
适用于大多数 header。有一个 translation table 的 S3 到 GCS headers。
此外,如果您希望确保存储桶中的所有 object 只能由存储桶拥有者访问,您可能会发现使用 Uniform Bucket Level Access 更方便。启用后,存储桶中的个人 object 所有权将不再存在,并且您不再需要在每次上传时指定 header。
您可以从 UI、API 或通过此命令启用统一存储桶级别访问:gsutil uniformbucketlevelaccess set on gs://BUCKET_NAME