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

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

访问控制

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

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

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

注意

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

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

  • 中的用户和群组 AWS IAM Identity Center:

    创建权限集合。按照《AWS IAM Identity Center 用户指南》创建权限集的说明进行操作。

  • IAM通过身份提供商管理的用户:

    创建适用于身份联合验证的角色。按照《IAM用户指南》中为第三方身份提供商创建角色(联合)中的说明进行操作。

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

管理对 资源的访问

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

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

附加到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 使用IAMCalledVia条件发出的请求。这允许 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

基于资源的策略

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

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

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

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

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

  • 资源-在策略中,您可以使用 Amazon 资源名称 (ARN) 来标识该政策适用的资源。所有 AWS Data Exchange API操作都支持资源级别权限 (RLP),但 AWS Marketplace 操作不支持RLP。有关更多信息,请参阅 AWS Data Exchange 资源和运营

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

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

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

有关IAM策略语法和描述的更多信息,请参阅IAM用户指南中的AWSIAM策略参考

在策略中指定条件

授予权限时,您可以使用IAM策略语言来指定策略何时生效的条件。使用 AWS Data Exchange、CreateJobStartJobGetJob、和CancelJobAPI操作支持条件权限。您可以在 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用户指南》