访问控制 - AWS Data Exchange 用户指南

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

访问控制

要创建、更新、删除或列出 AWS Data Exchange 资源,您需要具有执行操作和访问相应资源的权限。要以编程方式执行该操作,您还需要有效的访问密钥。

管理 AWS Data Exchange 资源访问权限概述

每个 AWS 资源都归人所有 AWS 账户,创建或访问资源的权限受权限策略的约束。账户管理员可以向用户、组和角色附加权限策略。有些服务(例如 AWS Lambda)还支持向资源附加权限策略。

注意

账户管理员(或管理员)是具有管理员权限的用户。有关更多信息,请参阅 IAM 最佳实践

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

AWS Data Exchange 资源和运营

在中 AWS Data Exchange,有两种不同的主资源具有不同的控制平面:

  • 的主要资源 AWS Data Exchange 是数据集作业。 AWS Data Exchange 还支持修订版资产

  • 为了促进提供商和订阅者之间的交易, AWS Data Exchange 还使用 AWS Marketplace 概念和资源,包括产品、优惠和订阅。您可以使用 AWS Marketplace 目录 API 或 AWS Data Exchange 控制台来管理您的产品、报价、订阅请求和订阅。

了解资源所有权

AWS 账户 拥有在账户中创建的资源,无论谁创建了这些资源。具体而言,资源所有者是 AWS 账户 对资源创建请求进行身份验证的委托人实体(即 AWS 账户 根用户、用户或角色)。以下示例说明了它的工作原理。

资源所有权

中 AWS 账户 具有正确权限的任何 IAM 实体都可以创建 AWS Data Exchange 数据集。当 IAM 实体创建数据集时,该数据集归他们的 AWS 账户 所有。已发布的数据产品可以包含只有创建它们的人才拥有的数据集。 AWS 账户

要订阅 AWS Data Exchange 产品,除了、和 IAM 权限外 AWS Data Exchange,aws-marketplace:AcceptAgreementRequestIAM 实体还需要使用权限 AWS Marketplace (假设它们通过了任何相关的订阅验证)。aws-marketplace:subscribe aws-marketplace:aws-marketplace:CreateAgreementRequest作为订阅者,您的账户拥有对授权数据集的读取权限;但是,授权数据集不归您的账户所有。任何导出到 Amazon S3 的授权数据集均归订阅者的 AWS 账户所有。

管理对资源的访问

本节讨论在的上下文中使用 IAM AWS Data Exchange。这里不提供有关 IAM 服务的详细信息。有关完整的 IAM 文档,请参阅《IAM 用户指南》中的什么是 IAM?。有关 IAM 策略语法和说明的信息,请参阅《IAM 用户指南》中的 AWS IAM 策略参考

权限策略规定谁可以访问哪些内容。下一节介绍权限策略创建选项。

附加到 IAM 身份的策略称为基于身份的策略(IAM 策略)。附加到资源的策略称为基于资源的策略。 AWS Data Exchange 仅支持基于身份的策略(IAM 策略)。

基于身份的策略和权限

AWS Data Exchange 提供了四个托管策略:

  • AWSDataExchangeFullAccess

  • AWSDataExchangeSubscriberFullAccess

  • AWSDataExchangeProviderFullAccess

  • AWSDataExchangeReadOnly

有关这些策略及其权限的更多信息,请参阅AWS 的托管策略 AWS Data Exchange

Amazon S3 权限

将资产从 Amazon S3 导入到时 AWS Data Exchange,您需要写入 AWS Data Exchange 服务 S3 存储桶的权限。同样,将资产从导出 AWS Data Exchange 到 Amazon S3 时,您需要具有读取 AWS Data Exchange 服务 S3 存储桶的权限。这些权限包含在前面提到的策略中,但您也可以自行创建策略,以允许您希望用户能够执行的操作。您可以将这些权限的范围限定为名称aws-data-exchange中包含的存储桶,并使用该 CalledVia权限将权限的使用限制 AWS Data Exchange 在代表委托人提出的请求上。

例如,您可以创建一个允许导入和导出到 AWS Data Exchange 包含这些权限的策略。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::*aws-data-exchange*", "Condition": { "ForAnyValue:StringEquals": { "aws:CalledVia":[ "dataexchange.amazonaws.com" ] } } }, { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::*aws-data-exchange*", "Condition": { "ForAnyValue:StringEquals": { "aws:CalledVia":[ "dataexchange.amazonaws.com" ] } } }, ] }

这些权限允许提供商使用进行导入和导出 AWS Data Exchange。此策略包含以下权限和限制:

  • s3: PutObjects3: PutObjectAcl — 这些权限仅限于名称aws-data-exchange中包含的 S3 存储桶。这些权限允许提供商在从 Amazon S3 导入时写入 AWS Data Exchange 服务存储桶。

  • s3: GetObject — 此权限仅限于名称aws-data-exchange中包含的 S3 存储桶。此权限允许客户在从 AWS Data Exchange 服务存储桶导出到 Amazon S3 时读取数据。 AWS Data Exchange

  • 这些权限仅限于通过 AWS Data Exchange 且使用 IAM CalledVia 条件发出的请求。这允许 S3 PutObject 权限仅在 AWS Data Exchange 控制台或 API 的上下文中使用。

  • AWS Lake Formationan AWS Resource Access Managerd (AWS RAM) 要使用 AWS Lake Formation 数据集,您需要接受订阅的每个净新提供商的 AWS RAM 共享邀请。要接受 AWS RAM 共享邀请,您需要扮演一个有权接受 AWS RAM 共享邀请的角色。要详细了解如何使用 AWS 托管策略 AWS RAM,请参阅的托管策略 AWS RAM。

  • 要创建 AWS Lake Formation 数据集,您需要使用代入角色创建数据集,该角色允许 IAM 将角色传递给 AWS Data Exchange。这将允许您代表您授 AWS Data Exchange 予和撤销对 Lake Formation 资源的权限。请参阅以下策略示例。

    { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": "dataexchange.amazonaws.com" } } }
注意

您的用户可能还需要额外权限,才能读取或写入您自己的 S3 存储桶和对象。本示例中未提及这些权限。

有关用户、组、角色和权限的更多信息,请参阅《IAM 用户指南》https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html中的身份(用户、组和角色)

基于资源的策略

AWS Data Exchange 不支持基于资源的策略。

其他服务(如 Amazon S3)支持基于资源的权限策略。例如,您可以将策略附加到 S3 存储桶以管理对该存储桶的访问权限。

指定策略元素:操作、效果和主体

要使用 AWS Data Exchange,必须在 IAM 策略中定义您的用户权限。

以下是最基本的策略元素:

  • 资源:在策略中,您可以使用 Amazon Resource Name(ARN)标识策略应用到的资源。所有 AWS Data Exchange API 操作都支持资源级权限 (RLP),但 AWS Marketplace 操作不支持 RLP。有关更多信息,请参阅 AWS Data Exchange 资源和运营

  • 操作 – 您可以使用操作关键字标识要允许或拒绝的资源操作。

  • 效果 – 您可以指定用户请求特定操作时的效果(可以是允许或拒绝)。如果没有显式授予(允许)对资源的访问权限,则隐式拒绝访问。您也可显式拒绝对资源的访问,这样可确保用户无法访问该资源,即使有其他策略授予了访问权限的情况下也是如此。

  • 主体 – 在基于身份的策略(IAM 策略)中,附加了策略的用户是隐式主体。对于基于资源的策略,您可以指定要获得权限的用户、账户、服务或其他实体(仅适用于基于资源的策略)。 AWS Data Exchange 不支持基于资源的策略。

有关 IAM 策略语法和说明的更多信息,请参阅《IAM 用户指南》中的 AWS IAM 策略参考

在策略中指定条件

当您授予权限时,可使用 IAM 策略语言来指定规定策略何时生效的条件。使用 AWS Data Exchange、CreateJobStartJobGetJob、和 CancelJob API 操作支持条件权限。您可以在 JobType 级别提供权限。

AWS Data Exchange 条件键参考
条件键 描述 类型
"dataexchange:JobType":"IMPORT_ASSETS_FROM_S3" 将权限范围限定为从 Amazon S3 导入资产的作业。 String
"dataexchange:JobType":IMPORT_ASSETS_FROM_LAKE_FORMATION_TAG_POLICY" (Preview) 将权限范围限定为从 AWS Lake Formation (预览版)导入资产的作业。 String
"dataexchange:JobType":"IMPORT_ASSET_FROM_SIGNED_URL" 将权限范围限定为从已签名 URL 导入资产的作业。 String
"dataexchange:JobType":"IMPORT_ASSET_FROM_REDSHIFT_DATA_SHARES" 将权限范围限定为从 Amazon Redshift 导入资产的作业。 String
"dataexchange:JobType":"IMPORT_ASSET_FROM_API_GATEWAY_API" 将权限范围限定为从 Amazon API Gateway 导入资产的作业。 String
"dataexchange:JobType":"EXPORT_ASSETS_TO_S3" 将权限范围限定为将资产导出到 Amazon S3 的作业。 String
"dataexchange:JobType":"EXPORT_ASSETS_TO_SIGNED_URL" 将权限范围限定为将资产导出到已签名 URL 的作业。 String
"dataexchange:JobType":EXPORT_REVISIONS_TO_S3" 将权限范围限定为将修订导出到 Amazon S3 的作业。 String

有关使用策略语言指定条件的更多信息,请参阅《IAM 用户指南》中的条件

要表达条件,您可以使用预定义的条件键。 AWS Data Exchange 具有 API 操作的JobType条件。但有 AWS 范围内的条件键,您可以根据需要使用。有关 AWS 范围内的键的完整列表,请参阅《IAM 用户指南》。