ECS:非所有者对象用户的只读存储区 ACL 无法下载已上传的对象

摘要: 此知识库从 S3 浏览器中的只读角度解释了非所有者对象用户的存储区访问控制列表 (ACL) 的概念。

本文章適用於 本文章不適用於 本文無關於任何特定產品。 本文未識別所有產品版本。

症狀

非所有者对象用户已使用存储区 ACL 以只读方式添加到存储区。

在创建存储区 ACL 之前 ,非存储区所有者、对象用户 无法下载 由对象存储区所有者用户上传的对象。

问题流程如下:

  1. 存储区是在分配对象所有者用户的情况下创建的。
  2. 一些文件由对象所有者用户上传到存储区。
  3. 非所有者对象用户已使用存储区 ACL 以只读方式添加到存储区。
  4. 尝试访问存储区时,非所有者对象用户可以列出和下载新上传的对象,但不能下载在只读存储区 ACL 之前上传的对象。我们可以看到,对象的用户权限不是根据 ECS UI 中的配置通过 S3 浏览器设置的。

非所有者对象用户使用 S3 浏览器单击对象时的错误如下所示:(AccessDenied:拒绝访问):
非所有者对象用户通过 S3 浏览器单击对象时的错误如下所示:(AccessDenied:访问被拒绝)

以下是对象所有者用户 (a_s3user) 和非所有者对象用户 (a_s3test) 的存储区 ACL 设置:
以下是对象所有者用户 (a_s3user) 和非所有者对象用户 (a_s3test) 的存储区 ACL 设置

原因

可以在存储区或对象级别设置 S3 权限。ECS 遵循与 AWS S3 相同的原则,具体取决于应用的策略类型。它确定在存储区级别或对象级别允许的作类型。

  1. 在 ECS 存储区级别授予 READ 和 READ ACL 时,非存储区所有者只能列出存储区中的对象,非存储区所有者无法从存储区下载数据
  2. 将对象写入存储区时,只有写入对象的用户具有读取权限。为了让其他用户能够读取对象,所有者必须显式地向用户授予权限。
  3. 要向非存储区所有者授予权限,我们必须使用 S3 存储区策略 

下表提供了可以分配的 ACL 权限。适用的权限取决于存储区的类型。

表 1.存储区 ACL
前交叉韧带 权限
读取 允许用户列出存储区中的对象
读取 ACL 允许用户读取存储区 ACL
写入 允许用户创建或更新存储区中的任何对象
写入 ACL。 允许用户写入存储区的 ACL
执行 在作为文件系统访问时设置执行权限 — 当使用 ECS 对象协议访问对象时,此权限无效。
完全控制 允许用户读取、写入、读取 ACL 和写入 ACL。
:  如果已授予权限,非所有者可以读取、写入、读取 ACL 和写入 ACL,否则只能列出对象。
特权写入 允许用户在用户没有正常写入权限时对存储区或对象执行写入 — CAS 存储区必需
删除 允许用户删除存储区和对象 — CAS 存储区必需
用户对存储桶没有权限。

AWS 支持 多种策略类型。  

AWS 存储桶 ACL 参考

下表列出了 Amazon S3 在 ACL 中支持的权限集。对象 ACL 和存储区 ACL 的 ACL 权限集是相同的。但是,根据上下文(存储区 ACL 或对象 ACL),这些 ACL 权限授予特定存储区或对象作的权限。该表列出了权限,并描述了它们在对象和存储区上下文中的含义。

权限 在存储区上授予时 在对象上授予时
READ 允许被授予者列出存储区中的对象 允许被授予者读取对象数据及其元数据
WRITE 允许被授予者创建、覆盖和删除存储区中的任何对象 不适用
READ_ACP 允许被授予者读取存储区 ACL 允许被授予者读取对象 ACL
WRITE_ACP 允许被授予者写入适用存储区的 ACL 允许被授予者写入适用对象的 ACL
FULL_CONTROL 允许被授予者对存储区具有 READ、WRITE、READ_ACP 和 WRITE_ACP 权限 允许被授予者对对象具有 READ、READ_ACP 和 WRITE_ACP 权限


Amazon S3 文档

下表显示了每个 ACL 权限如何映射到相应的访问策略权限。如您所见,访问策略允许的权限比 ACL 多。ACL 主要用于授予基本读/写权限,类似于文件系统权限。有关何时使用 ACL 的更多信息,请参阅使用可用访问策略选项的准则

ACL 权限 在存储区上授予 ACL 权限时的相应访问策略权限 在对象上授予 ACL 权限时的相应访问策略权限
READ s3:ListBucket开始, s3:ListBucketVersions以及 s3:ListBucketMultipartUploads s3:GetObject开始, s3:GetObjectVersion以及 s3:GetObjectTorrent
WRITE

s3:PutObject 和 s3:DeleteObject

此外,当被授权者是存储区所有者时,授予 WRITE 存储区 ACL 中的权限允许 s3:DeleteObjectVersion 要对该存储区中的任何版本执行的作。

不适用
READ_ACP s3:GetBucketAcl s3:GetObjectAcl 和 s3:GetObjectVersionAcl
WRITE_ACP s3:PutBucketAcl s3:PutObjectAcl 和 s3:PutObjectVersionAcl
FULL_CONTROL 等同于授予 READ开始, WRITE开始, READ_ACP以及 WRITE_ACP ACL 权限 — 因此,此 ACL 权限映射到相应访问策略权限的组合。 等同于授予 READ开始, READ_ACP以及 WRITE_ACP ACL 权限。因此,此 ACL 权限映射到相应访问策略权限的组合。

解析度

选项 1:
请参阅 ECS 数据访问指南如何使用存储区策略。与允许所有作或不允许任何作的 ACL 不同,访问策略为特定用户或所有用户提供特定作的条件性和精细权限。策略条件可用于为与条件匹配的一系列对象分配权限。这可用于自动将权限分配给新上载的对象。

参考 AWS S3:

https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectAcl.html
https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html

https://docs.aws.amazon.com/AmazonS3/latest/API/API_Operations.html从 UI —> Manage-Bucket> —> Edit bucket 策略中,在策略编辑器中放置类似于以下内容的内容: 

{
  "Version": "2012-10-17",
  "Id": "Policy1593674317613",
  "Statement": [
    {
      "Action": [
        "s3:GetObject"
      ],
      "Resource": "bucket_name/*",
      "Effect": "Allow",
      "Principal": "read-only_user",
      "Sid": "Stmt1593673962638"
    }
  ]
}
Where :“S3:GetObject”是允许下载对象的作。
其中 效果:Allow
where resource“:“bucket_name/*”是存储区名称。
Where Principal“:“read-only_user”是非存储区所有者用户。 

选项 2:
将 S3 浏览器与对象所有者结合使用,对于在只读存储区 ACL 之前上传的对象,更改经过身份验证的用户权限,以确保非所有者对象用户可以下载对象:
将 S3 浏览器与对象所有者结合使用,对于已上传预只读存储区 ACL 的对象,更改经过身份验证的用户的权限,以确保非所有者对象用户可以下载对象:

其他資訊

如果您在通过对象所有者上传对象时遇到问题,并且权限未应用于具有写入访问权限的经过身份验证的用户,请查看知识库文章520711 
 

受影響的產品

ECS Appliance

產品

ECS Appliance, ECS Appliance Hardware Gen1 U-Series, ECS Appliance Software with Encryption, ECS Appliance Software without Encryption
文章屬性
文章編號: 000070218
文章類型: Solution
上次修改時間: 10 9月 2025
版本:  5
向其他 Dell 使用者尋求您問題的答案
支援服務
檢查您的裝置是否在支援服務的涵蓋範圍內。