适用于 S3 Express One Zone 的 AWS Identity and Access Management(IAM)
AWS Identity and Access Management(IAM)是一项 AWS 服务,有助于管理员安全地控制对 AWS 资源的访问。IAM 管理员可控制哪些用户能够通过身份验证(登录)和获得授权(拥有权限),使用 S3 Express One Zone 中的 Amazon S3 资源。使用 IAM 不会产生额外的费用。
默认情况下,用户没有目录存储桶和 S3 Express One Zone 操作的权限。要授予对目录存储桶的访问权限,您可以使用 IAM 创建用户、组或角色,然后将权限附加到这些身份。有关 IAM 的更多信息,请参阅《IAM 用户指南》中的安全最佳实践。
要提供访问权限,您可以通过以下方法为用户、组或角色添加权限:
-
AWS IAM Identity Center 中的用户和组 – 创建权限集。按照《AWS IAM Identity Center 用户指南》中创建权限集的说明进行操作。
-
通过身份提供商在 IAM 中管理的用户 – 创建身份联合验证角色。按照《IAM 用户指南》中为第三方身份提供商创建角色(联合身份验证)的说明进行操作。
-
IAM 角色和用户 – 创建您的用户可以代入的角色。请按照《IAM 用户指南》的创建向 IAM 用户委派权限的角色中的说明进行操作。
默认情况下,目录存储桶为私有,只有被明确授予访问权限的用户才可以访问。目录存储桶的访问控制边界仅在存储桶级设置。与之相对,通用存储桶的访问控制边界可以在存储桶、前缀或对象标签级设置。这种不同意味着,对于 S3 Express One Zone 访问权限,目录存储桶是唯一可以包括在存储桶策略或 IAM 身份策略中的资源。
使用 S3 Express One Zone 时,除 IAM 授权之外,您还可以通过由 CreateSession
API 操作处理的基于会话的新机制,对请求进行身份验证和授权。您可以使用 CreateSession
来请求临时凭证,以便提供对存储桶的低延迟访问。这些临时凭证的作用范围限制为特定的目录存储桶。
要使用 CreateSession
,我们建议使用最新版本的 AWS SDK 或者使用 AWS Command Line Interface(AWS CLI)。支持的 AWS SDK 以及 AWS CLI 代表您处理会话的建立、刷新和终止。
您可以使用会话令牌以及仅限可用区(对象级)的操作(CopyObject
和 HeadBucket
除外),在一个会话中的多个请求上分配与授权关联的延迟。对于区域端点 API 操作(存储桶级操作),您可以使用 IAM 授权,这不涉及对会话的管理。有关更多信息,请参阅适用于 S3 Express One Zone 的 AWS Identity and Access Management(IAM) 和CreateSession 授权。
有关为 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 操作的更多信息,请参阅 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:CreateSession |
CreateSession |
授予权限以创建会话令牌,该令牌用于授予对所有可用区(对象级)API 操作的访问权限,例如 |
写入 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
s3express:DeleteBucket |
DeleteBucket |
授予权限以删除在 URI 中指定的存储桶。 |
写入 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
s3express:DeleteBucketPolicy |
DeleteBucketPolicy |
授予权限以删除指定存储桶上的策略。 |
权限管理 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
s3express:GetBucketPolicy |
GetBucketPolicy |
授予权限以返回指定存储桶的策略。 |
读取 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
s3express:GetEncryptionConfiguration |
GetBucketEncryption |
授予权限以返回目录存储桶的默认加密配置。 |
读取 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
s3express:ListAllMyDirectoryBuckets |
ListDirectoryBuckets |
授予权限,以列出由已通过身份验证的请求发出方拥有的所有目录存储桶。 |
列出 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
s3express:PutBucketPolicy |
PutBucketPolicy |
授予权限以在存储桶上添加或替换存储桶策略。 |
权限管理 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
s3express:PutBucketPolicy |
PutBucketPolicy |
授予权限以在存储桶上添加或替换存储桶策略。 |
权限管理 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
s3express:PutEncryptionConfiguration |
PutBucketEncryption 或 DeleteBucketEncryption |
授予权限以设置目录存储桶的加密配置 |
写入 |
|
适用于 S3 Express One Zone 的条件键
S3 Express One Zone 定义了以下可以在 IAM 策略的 Condition
元素中使用的条件键。您可以使用这些键进一步细化应用策略语句的条件。
条件键 | 描述 | 类型 |
---|---|---|
s3express:authType |
按身份验证方法筛选访问。要限定传入的请求使用特定的身份认证方法,您可以使用此可选条件键。例如,您可以使用此条件键以仅允许在请求身份认证中使用 HTTP 有效值: |
String |
s3express:LocationName |
按特定的可用区 ID(AZ ID)筛选对 示例值: |
String |
s3express:ResourceAccount |
按资源拥有者的 AWS 账户 ID 筛选访问权限。 要限制用户、角色或应用程序对特定 AWS 账户 ID 所拥有的目录桶的访问权限,您可以使用 示例值: |
String |
s3express:SessionMode |
按照 有效值: |
String |
s3express:signatureAge |
按请求签名的生存期(以毫秒为单位)筛选访问。此条件仅适用于预签名 URL。 在 AWS 签名版本 4 中,签名密钥的有效期最长为 7 天。因此,签名的有效期最初也为 7 天。有关更多信息,请参阅《Amazon Simple Storage Service API 参考》中的 签名请求简介。您可以使用此条件进一步限制签名有效期。 示例值: |
数值 |
s3express:signatureversion |
标识您希望支持的 AWS 签名的版本,以将其用于经过身份验证的请求。对于经过身份验证的请求,S3 Express One Zone 支持签名版本 4。 有效值: |
String |
s3express:TlsVersion |
按客户端使用的 TLS 版本筛选访问权限。 您可以使用 示例值: |
数值 |
s3express:x-amz-content-sha256 |
按存储桶中未签名内容筛选访问权限。 您可以使用此条件键禁止存储桶中未签名的内容。 使用签名版本 4 时,对于使用 您可以在存储桶策略中使用此条件键来拒绝上传任何未签名的有效负载。例如:
有效值: |
String |
s3express:x-amz-server-side-encryption |
通过服务器端加密来筛选访问 有效值: |
String |
s3express:x-amz-server-side-encryption-aws-kms-key-id |
通过将 AWS KMS 客户自主管理型密钥用于服务器端加密来筛选访问 示例值: |
ARN |
如何对 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 |
否 |
PutBucketEncryption |
区域性 | s3express:PutEncryptionConfiguration |
否 |
GetBucketEncryption |
区域性 | s3express:GetEncryptionConfiguration |
否 |
DeleteBucketEncryption |
区域性 | s3express:PutEncryptionConfiguration |
否 |
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 |
是 |