适用于 S3 Express One Zone 的 Amazon Identity and Access Management(IAM) - Amazon Simple Storage Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

适用于 S3 Express One Zone 的 Amazon Identity and Access Management(IAM)

Amazon Identity and Access Management(IAM)是一项 Amazon Web Service,有助于管理员安全地控制对 Amazon 资源的访问。IAM 管理员可控制哪些用户能够通过身份验证(登录)和获得授权(拥有权限),使用 S3 Express One Zone 中的 Amazon S3 资源。使用 IAM 不会产生额外的费用。

默认情况下,用户没有目录存储桶和 S3 Express One Zone 操作的权限。要授予对目录存储桶的访问权限,您可以使用 IAM 创建用户、组或角色,然后将权限附加到这些身份。有关 IAM 的更多信息,请参阅《IAM 用户指南》中的安全最佳实践

要提供访问权限,您可以通过以下方法为用户、组或角色添加权限:

默认情况下,目录存储桶为私有,只有被明确授予访问权限的用户才可以访问。目录存储桶的访问控制边界仅在存储桶级设置。与之相对,通用存储桶的访问控制边界可以在存储桶、前缀或对象标签级设置。这种不同意味着,对于 S3 Express One Zone 访问权限,目录存储桶是唯一可以包括在存储桶策略或 IAM 身份策略中的资源。

使用 S3 Express One Zone 时,除 IAM 授权之外,您还可以通过由 CreateSession API 操作处理的基于会话的新机制,对请求进行身份验证和授权。您可以使用 CreateSession 来请求临时凭证,以便提供对存储桶的低延迟访问。这些临时凭证的作用范围限制为特定的目录存储桶。

要使用 CreateSession,我们建议使用最新版本的 Amazon SDK 或者使用 Amazon Command Line Interface(Amazon CLI)。支持的 Amazon SDK 以及 Amazon CLI 代表您处理会话的建立、刷新和终止。

您可以使用会话令牌以及仅限可用区(对象级)的操作(CopyObjectHeadBucket 除外),在一个会话中的多个请求上分配与授权关联的延迟。对于区域端点 API 操作(存储桶级操作),您可以使用 IAM 授权,这不涉及对会话的管理。有关更多信息,请参阅 适用于 S3 Express One Zone 的 Amazon Identity and Access Management(IAM)和 CreateSession 授权

有关为 S3 Express One Zone 设置 IAM 的更多信息,请参阅以下主题。

主体

创建基于资源的策略以授予对存储桶的访问权限时,您必须使用 Principal 元素来指定可请求对该资源执行某个操作或运算的人员或应用程序。对于目录存储桶策略,您可以使用以下主体:

  • Amazon 账户

  • IAM 用户

  • IAM 角色

  • 联合用户

有关更多信息,请参阅 IAM 用户指南中的 Principal

资源

目录存储桶的 Amazon 资源名称(ARN)包含 s3express 命名空间、Amazon Web Services 区域、Amazon 账户 ID 和目录存储桶名称(包括可用区 ID)。要访问目录存储桶并对其执行操作,您必须使用以下 ARN 格式:

arn:aws:s3express:region:account-id:bucket/base-bucket-name--azid--x-s3

有关更多信息,请参阅《IAM 用户指南》中的 Amazon Resource Names (ARNs)。有关资源的更多信息,请参阅《IAM 用户指南》中的 IAM JSON 策略元素:Resource

适用于 S3 Express One Zone 的操作

在基于 IAM 身份的策略或基于资源的策略中,您可以定义要允许或拒绝的 S3 操作。S3 Express One Zone 操作对应于特定的 API 操作。S3 Express One Zone 具有唯一的 IAM 命名空间,这不同于 Amazon S3 的标准命名空间。此命名空间是 s3express

当您允许 s3express:CreateSession 权限时,这会让 CreateSession API 操作能够在访问可用区端点 API(或对象级)操作时检索会话令牌。这些会话令牌返回的凭证用于授予对其他所有可用区端点 API 操作的访问权限。因此,您不必使用 IAM 策略授予对可用区 API 操作的访问权限,而是通过会话令牌来允许访问。

有关可用区和区域端点 API 操作的更多信息,请参阅 S3 Express One Zone 联网。要了解有关 CreateSession API 操作的更多信息,请参阅《Amazon Simple Storage Service API 参考》中的 CreateSession

您可以在 IAM 策略语句的 Action 元素中指定以下操作。可以使用策略授予在 Amazon 中执行操作的权限。当您在策略中使用一项操作时,通常会允许或拒绝使用具有相同名称的 API 操作。但在某些情况下,单个操作可控制对多个 API 操作的访问。对存储桶级操作的访问权限,只能在基于 IAM 身份的策略(用户或角色)中授予,不能在存储桶策略中授予。

适用于 S3 Express One Zone 的操作和条件键
操作 API 描述 访问级别 条件键

s3express:CreateBucket

CreateBucket

授予权限以创建新的存储桶。

写入

s3express:authType

s3express:LocationName

s3express:ResourceAccount

s3express:signatureversion

s3express:TlsVersion

s3express:x-amz-content-sha256

s3express:CreateSession CreateSession

授予权限以创建会话令牌,该令牌用于授予对所有可用区(对象级)API 操作的访问权限,例如 PutObjectGetObject 等。

写入

s3express:authType

s3express:SessionMode

s3express:ResourceAccount

s3express:signatureversion

s3express:signatureAge

s3express:TlsVersion

s3express:x-amz-content-sha256

s3express:DeleteBucket DeleteBucket

授予权限以删除在 URI 中指定的存储桶。

写入

s3express:authType

s3express:ResourceAccount

s3express:signatureversion

s3express:TlsVersion

s3express:x-amz-content-sha256

s3express:DeleteBucketPolicy DeleteBucketPolicy

授予权限以删除指定存储桶上的策略。

权限管理

s3express:authType

s3express:ResourceAccount

s3express:signatureversion

s3express:TlsVersion

s3express:x-amz-content-sha256

s3express:GetBucketPolicy GetBucketPolicy

授予权限以返回指定存储桶的策略。

读取

s3express:authType

s3express:ResourceAccount

s3express:signatureversion

s3express:TlsVersion

s3express:x-amz-content-sha256

s3express:ListAllMyDirectoryBuckets ListDirectoryBuckets

授予权限,以列出由已通过身份验证的请求发出方拥有的所有目录存储桶。

列出

s3express:authType

s3express:ResourceAccount

s3express:signatureversion

s3express:TlsVersion

s3express:x-amz-content-sha256

s3express:PutBucketPolicy PutBucketPolicy

授予权限以在存储桶上添加或替换存储桶策略。

权限管理

s3express:authType

s3express:ResourceAccount

s3express:signatureversion

s3express:TlsVersion

s3express:x-amz-content-sha256

适用于 S3 Express One Zone 的条件键

S3 Express One Zone 定义了以下可以在 IAM 策略的 Condition 元素中使用的条件键。您可以使用这些键进一步细化应用策略语句的条件。

条件键 描述 类型
s3express:authType

按身份验证方法筛选访问。要限定传入的请求使用特定的身份认证方法,您可以使用此可选条件键。例如,您可以使用此条件键以仅允许在请求身份认证中使用 HTTP Authorization 标头。

有效值REST-HEADERREST-QUERY-STRING

字符串
s3express:LocationName

按特定的可用区 ID(AZ ID)筛选对 CreateBucket API 操作的访问权限,例如 usw2-az1

示例值:usw2-az1

字符串
s3express:ResourceAccount

按资源拥有者的 Amazon Web Services 账户 ID 筛选访问权限。

要限制用户、角色或应用程序对特定 Amazon Web Services 账户 ID 所拥有的目录桶的访问权限,您可以使用 aws:ResourceAccounts3express:ResourceAccount 条件键。您可以在 Amazon Identity and Access Management(IAM)身份策略或虚拟私有云(VPC)端点策略中使用此条件键。例如,您可以使用此条件键来限制 VPC 内的客户端访问非您拥有的桶。

示例值:111122223333

字符串
s3express:SessionMode

按照 CreateSession API 操作请求的权限来筛选访问权限。默认情况下,会话为 ReadWrite。您可以使用此条件键将访问权限限制为 ReadOnly,或者明确拒绝 ReadWrite 访问。有关更多信息,请参阅《Amazon Simple Storage Service API 参考》中的S3 Express One Zone 目录存储桶策略示例CreateSession

有效值ReadWriteReadOnly

字符串
s3express:signatureAge

按请求签名的生存期(以毫秒为单位)筛选访问。此条件仅适用于预签名 URL

在 Amazon 签名版本 4 中,签名密钥的有效期最长为 7 天。因此,签名的有效期最初也为 7 天。有关更多信息,请参阅《Amazon Simple Storage Service API 参考》中的 签名请求简介。您可以使用此条件进一步限制签名有效期。

示例值:600000

数值
s3express:signatureversion

标识您希望支持的 Amazon 签名的版本,以将其用于经过身份验证的请求。对于经过身份验证的请求,S3 Express One Zone 支持签名版本 4。

有效值:"AWS4-HMAC-SHA256"(标识签名版本 4)

字符串
s3express:TlsVersion

按客户端使用的 TLS 版本筛选访问权限。

您可以使用 s3:TlsVersion 条件键来编写 IAM、虚拟私有云端点(VPCE)或桶策略,以便根据客户端使用的 TLS 版本,限制用户或应用程序对目录桶的访问权限。您还可以使用此条件键来编写具有最低 TLS 版本要求的策略。

示例值:1.3

数值
s3express:x-amz-content-sha256

按存储桶中未签名内容筛选访问权限。

您可以使用此条件键禁止存储桶中未签名的内容。

使用签名版本 4 时,对于使用 Authorization 标头的请求,您需要在签名计算中添加 x-amz-content-sha256 标头,然后将其值设置为哈希负载。

您可以在存储桶策略中使用此条件键来拒绝上传任何未签名的有效负载。例如:

有效值:UNSIGNED-PAYLOAD

字符串

如何对 API 操作进行授权和身份验证

下表列出了 S3 Express One Zone API 操作的授权和身份验证信息。对于每个 API 操作,表中显示了 API 操作名称、IAM 操作、端点类型(区域或可用区)和授权机制(IAM 或基于会话)。此表还指出了哪些区域支持跨账户访问。对存储桶级操作的访问权限,只能在基于 IAM 身份的策略(用户或角色)中授予,不能在存储桶策略中授予。

API 端点类型 IAM 操作 跨账户存取
CreateBucket 区域性 s3express:CreateBucket 不支持
DeleteBucket 区域性 s3express:DeleteBucket 不支持
ListDirectoryBuckets 区域性 s3express:ListAllMyDirectoryBuckets 不支持
PutBucketPolicy 区域性 s3express:PutBucketPolicy 不支持
GetBucketPolicy 区域性 s3express:GetBucketPolicy 不支持
DeleteBucketPolicy 区域性 s3express:DeleteBucketPolicy 不支持
CreateSession 可用区 s3express:CreateSession 支持
CopyObject 可用区 s3express:CreateSession 支持
DeleteObject 可用区 s3express:CreateSession 支持
DeleteObjects 可用区 s3express:CreateSession 支持
HeadObject 可用区 s3express:CreateSession 支持
PutObject 可用区 s3express:CreateSession 支持
GetObjectAttributes 可用区 s3express:CreateSession 支持
ListObjectsV2 可用区 s3express:CreateSession 支持
HeadBucket 可用区 s3express:CreateSession 支持
CreateMultipartUpload 可用区 s3express:CreateSession 支持
UploadPart 可用区 s3express:CreateSession 支持
UploadPartCopy 可用区 s3express:CreateSession 支持
CompleteMultipartUpload 可用区 s3express:CreateSession 支持
AbortMultipartUpload 可用区 s3express:CreateSession 支持
ListParts 可用区 s3express:CreateSession 支持
ListMultipartUploads 可用区 s3express:CreateSession 支持