使用 S3 on Outposts 设置 IAM - Amazon Simple Storage Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用 S3 on Outposts 设置 IAM

Amazon Identity and Access Management (IAM) 是一项 Amazon Web Service,可以帮助管理员安全地控制对 Amazon 资源的访问。IAM 管理员控制谁可以通过身份验证(登录)和获得授权(具有权限)来使用 Amazon S3 on Outposts 资源。IAM 是一项无需额外费用即可使用的 Amazon Web Service。默认情况下,用户对 S3 on Outposts 资源和操作没有权限。要授予对 S3 on Outposts 资源和 API 操作的访问权限,您可以使用 IAM 创建用户角色并附加权限。

要提供访问权限,请为您的用户、组或角色添加权限:

除基于 IAM 身份的策略外,S3 on Outposts 还同时支持桶和接入点策略。存储桶策略和访问点策略是附加到 S3 on Outposts 资源的基于资源的策略

  • 存储桶策略用于附加到存储桶,它根据策略中的元素允许或拒绝对存储桶和存储桶中对象的请求。

  • 而访问点策略用于附加到访问点,允许或拒绝对访问点的请求。

访问点策略可与附加到底层 S3 on Outposts 存储桶的存储桶策略结合使用。要使应用程序或用户能够通过某个 S3 on Outposts 访问点访问某个 S3 on Outposts 桶中的对象,访问点策略和桶策略都必须允许该请求。

您在接入点策略中包括的限制仅适用于通过该接入点发出的请求。例如,如果将某个访问点附加到某个桶,则无法使用访问点策略来允许或拒绝直接对该桶发出的请求。但是,应用到存储桶策略的限制可能会允许或拒绝直接对该存储桶或通过该访问点发出的请求。

在 IAM policy 或基于资源的策略中,您可以定义要允许或拒绝的 S3 on Outposts 操作。S3 on Outposts 操作对应于特定的 S3 on Outposts API 操作。S3 on Outposts 操作使用 s3-outposts: 命名空间前缀。对 Amazon Web Services 区域中的 Amazon S3 on Outposts 控制 API 发出的请求,以及对 Outpost 上的对象 API 端点发出的请求,都将使用 IAM 进行身份认证并根据 s3-outposts: 命名空间前缀进行授权。要使用 S3 on Outposts,请配置您的 IAM 用户并针对 s3-outposts: IAM 命名空间对其进行授权。

有关更多信息,请参阅《服务授权参考》中的 Amazon S3 on Outposts 的操作、资源和条件键

注意
  • S3 on Outposts 不支持访问控制列表 (ACL)。

  • S3 on Outposts 默认将存储桶拥有者视为对象所有者,以帮助确保存储桶的拥有者不会被阻止访问或删除对象。

  • S3 on Outposts 始终启用“S3 阻止公有访问”,以帮助确保对象从不会具有公有访问权限。

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

S3 on Outposts 策略的主体

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

  • 一个 Amazon Web Services 账户

  • IAM 用户

  • IAM 角色

  • 所有主体,通过在使用 Condition 元素将访问范围限定为特定 IP 范围的策略中指定通配符 (*) 来确定

重要

您无法为 S3 on Outposts 桶编写在 * 元素中使用通配符(Principal)的策略,除非该策略还包含一个将访问范围限制为特定 IP 地址范围的 Condition。此限制有助于确保您的 S3 on Outposts 桶不会被公开访问。有关示例,请参阅 S3 on Outposts 的示例策略

有关 Principal 元素的更多信息,请参阅《IAM 用户指南》中的 Amazon JSON 策略元素:Principal

S3 on Outposts 的资源 ARN

S3 on Outposts 的 Amazon 资源名称 (ARN) 除了包含 Outpost 归属的 Amazon Web Services 区域、Amazon Web Services 账户 ID 和资源名称外,还包含 Outpost ID。要访问 Outposts 存储桶和对象并对它们执行操作,您必须使用下表中显示的一种 ARN 格式。

ARN 中的 partition 值是指一组 Amazon Web Services 区域。每个 Amazon Web Services 账户 的作用域为一个分区。以下是支持的分区:

  • aws – Amazon Web Services 区域

  • aws-us-gov – Amazon GovCloud (US) 区域

S3 on Outposts ARN 格式
Amazon S3 on Outposts ARN ARN 格式 示例
存储桶 ARN arn:partition:s3-outposts:region:​account_id:​outpost/outpost_id/bucket/bucket_name arn:aws:s3-outposts:us-west-2:123456789012:​outpost/op-01ac5d28a6a232904/bucket/DOC-EXAMPLE-BUCKET1
访问点 ARN arn:partition:s3-outposts:region:​account_id:​outpost/outpost_id/accesspoint/accesspoint_name arn:aws:s3-outposts:us-west-2:123456789012:​outpost/op-01ac5d28a6a232904/accesspoint/access-point-name
对象 ARN arn:partition:s3-outposts:region:​account_id:​outpost/outpost_id/bucket/bucket_name/object/object_key arn:aws:s3-outposts:us-west-2:123456789012:​outpost/op-01ac5d28a6a232904/bucket/DOC-EXAMPLE-BUCKET1/object/myobject
S3 on Outposts 访问点对象 ARN(在策略中使用) arn:partition:s3-outposts:region:​account_id:​outpost/outpost_id/accesspoint/accesspoint_name/object/object_key arn:aws:s3-outposts:us-west-2:123456789012:​outpost/op-01ac5d28a6a232904/accesspoint/access-point-name/object/myobject
S3 on Outposts ARN arn:partition:s3-outposts:region:​account_id:​outpost/outpost_id arn:aws:s3-outposts:us-west-2:123456789012:​outpost/op-01ac5d28a6a232904

S3 on Outposts 的示例策略

例 :具有 Amazon Web Services 账户主体的 S3 on Outposts 桶策略

以下存储桶策略使用一个 Amazon Web Services 账户主体授予对某个 S3 on Outposts 存储桶的访问权限。要使用这一桶策略,请将 user input placeholders 替换为您自己的信息。

{ "Version":"2012-10-17", "Id":"ExampleBucketPolicy1", "Statement":[ { "Sid":"statement1", "Effect":"Allow", "Principal":{ "AWS":"123456789012" }, "Action":"s3-outposts:*", "Resource":"arn:aws:s3-outposts:region:123456789012:outpost/op-01ac5d28a6a232904/bucket/example-outposts-bucket" } ] }
例 :使用通配符主体 (*) 和条件键将访问范围限定为特定 IP 地址范围的 S3 on Outposts 桶策略

以下桶策略使用通配符主体 (*) 和 aws:SourceIp 条件将访问范围限定为特定的 IP 地址范围。要使用这一桶策略,请将 user input placeholders 替换为您自己的信息。

{ "Version": "2012-10-17", "Id": "ExampleBucketPolicy2", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Principal": { "AWS" : "*" }, "Action":"s3-outposts:*", "Resource":"arn:aws:s3-outposts:region:123456789012:outpost/op-01ac5d28a6a232904/bucket/example-outposts-bucket", "Condition" : { "IpAddress" : { "aws:SourceIp": "192.0.2.0/24" }, "NotIpAddress" : { "aws:SourceIp": "198.51.100.0/24" } } } ] }

S3 on Outposts 端点的权限

S3 on Outposts 需要 IAM 中它自己的权限,来管理 S3 on Outposts 端点操作。

注意
  • 对于使用客户拥有的 IP 地址池(CoIP 池)访问类型的端点,您还必须具有使用 CoIP 池中 IP 地址的权限,如下表所述。

  • 对于使用 Amazon Resource Access Manager 访问 S3 on Outposts 的共享账户,这些共享账户中的用户无法在共享子网上创建其自己的端点。如果共享账户中的用户想管理自己的端点,则共享账户必须在 Outpost 上创建自己的子网。有关更多信息,请参阅通过使用 Amazon RAM 共享 S3 on Outposts

S3 on Outposts 端点相关的 IAM 权限
操作 IAM 权限
CreateEndpoint

s3-outposts:CreateEndpoint

ec2:CreateNetworkInterface

ec2:DescribeNetworkInterfaces

ec2:DescribeVpcs

ec2:DescribeSecurityGroups

ec2:DescribeSubnets

ec2:CreateTags

iam:CreateServiceLinkedRole

对于使用本地客户拥有的 IP 地址池(CoIP 池)访问类型的端点,将需要以下额外权限:

s3-outposts:CreateEndpoint

ec2:DescribeCoipPools

ec2:GetCoipPoolUsage

ec2:AllocateAddress

ec2:AssociateAddress

ec2:DescribeAddresses

ec2:DescribeLocalGatewayRouteTableVpcAssociations

DeleteEndpoint

s3-outposts:DeleteEndpoint

ec2:DeleteNetworkInterface

ec2:DescribeNetworkInterfaces

对于使用本地客户拥有的 IP 地址池(CoIP 池)访问类型的端点,将需要以下额外权限:

s3-outposts:DeleteEndpoint

ec2:DisassociateAddress

ec2:DescribeAddresses

ec2:ReleaseAddress

ListEndpoints

s3-outposts:ListEndpoints

注意

您可以使用 IAM policy 中的资源标签来管理权限。

S3 on Outposts 的服务相关角色

S3 on Outposts 使用 IAM 服务相关角色代表您创建一些网络资源。有关更多信息,请参阅将服务相关角色用于 Amazon S3 on Outposts