使用 IAM 对区域端点 API 进行授权 - Amazon Simple Storage Service

使用 IAM 对区域端点 API 进行授权

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

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

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

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

主体

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

  • AWS 账户

  • IAM 用户

  • IAM 角色

  • 联合用户

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

资源

目录存储桶的 Amazon 资源名称(ARN)包含 s3express 命名空间、AWS 区域、AWS 账户 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 操作和权限的列表,请参阅对请求进行身份验证和授权

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

您可以在 IAM 策略语句的 Action 元素中指定以下操作。可以使用策略授予在 AWS 中执行操作的权限。当您在策略中使用一项操作时,通常会允许或拒绝使用具有相同名称的 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:x-amz-server-side-encryption

s3express:x-amz-server-side-encryption-aws-kms-key-id

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:GetEncryptionConfiguration GetBucketEncryption

授予权限以返回目录存储桶的默认加密配置。

读取

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

s3express:PutBucketPolicy PutBucketPolicy

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

权限管理

s3express:authType

s3express:ResourceAccount

s3express:signatureversion

s3express:TlsVersion

s3express:x-amz-content-sha256

s3express:PutEncryptionConfiguration PutBucketEncryptionDeleteBucketEncryption

授予权限以设置目录存储桶的加密配置

写入

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

String
s3express:LocationName

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

示例值:usw2-az1

String
s3express:ResourceAccount

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

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

示例值:111122223333

String
s3express:SessionMode

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

有效值ReadWriteReadOnly

String
s3express:signatureAge

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

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

示例值:600000

数值
s3express:signatureversion

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

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

String
s3express:TlsVersion

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

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

示例值:1.3

数值
s3express:x-amz-content-sha256

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

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

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

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

有效值:UNSIGNED-PAYLOAD

String
s3express:x-amz-server-side-encryption

通过服务器端加密来筛选访问

有效值"AWS256"aws:kms

String
s3express:x-amz-server-side-encryption-aws-kms-key-id

通过将 AWS KMS 客户自主管理型密钥用于服务器端加密来筛选访问

示例值:"arn:aws:kms:region:acct-id:key/key-id"

ARN