red*_*888 7 amazon-s3 amazon-web-services amazon-iam
我一直在存储桶策略示例中看到这一点,但我不知道它是什么
"Condition": {
"StringEquals": {
"s3:x-amz-acl": "bucket-owner-full-control"
}
Run Code Online (Sandbox Code Playgroud)
这是否意味着用户必须添加具有值“bucket-owner-full-control”的标题“s3:x-amz-acl”?这是强制执行实际的 acl 还是任意的?它可以是任何标头和字符串,还是对 s3:x-amz-acl 和 bucket-owner-full-control 有重要意义?
此策略片段要求请求包含固定 ACL 的规范,使用标头x-amz-acl
(不区分大小写),值为bucket-owner-full-control
。
对此条件的约束通常用于确保对象的所有者(始终是上传用户,不一定是存储桶的所有者)无法创建存储桶所有者无法读取的对象(“完全控制" 是一个不幸的用词不当,因为存储桶所有者已经可以删除外部对象,尽管如此不能进一步委派对该对象的权限)。
但这不是随意的。
具体来说:s3:x-amz-acl
是特定于S3 的 IAM 策略条件键,其名称恰好与其匹配的标头完全相同。
它不是任意的标头匹配,即使这样的功能有时可能很方便。大多数其他 HTTP 标头不受策略条件的约束,并且您不能使用,例如s3:x-random-http-header
条件。
有像 这样的全局条件键aws:SecureTransport
可用于拒绝不使用 HTTPS 的请求,并aws:UserAgent
根据 HTTPUser-Agent
标头进行评估,但请注意记录在案的警告,“不应使用此键来防止未经授权的各方直接发出 AWS 请求"因为它很容易被用户代理伪造。否则,允许/拒绝与标头相关的请求的选项并不多。
与条件键不同,值字符串bucket-owner-full-control
实际上并未在策略中进行验证,因为它只是一个字符串,但如果您不指定有效值,它将永远不会匹配。
归档时间: |
|
查看次数: |
5123 次 |
最近记录: |