本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
访问控制
要创建、更新、删除或列出 AWS Data Exchange 资源,您需要具有执行操作和访问相应资源的权限。要以编程方式执行该操作,您还需要有效的访问密钥。
管理 AWS Data Exchange 资源访问权限概述
每个 AWS 资源都归人所有 AWS 账户,创建或访问资源的权限受权限策略的约束。账户管理员可以向用户、组和角色附加权限策略。有些服务(例如 AWS Lambda)还支持向资源附加权限策略。
注意
账户管理员(或管理员)是具有管理员权限的用户。有关更多信息,请参阅IAM最佳实践。
要提供访问权限,请为您的用户、组或角色添加权限:
-
中的用户和群组 AWS IAM Identity Center:
创建权限集合。按照《AWS IAM Identity Center 用户指南》中创建权限集的说明进行操作。
-
IAM通过身份提供商管理的用户:
创建适用于身份联合验证的角色。按照《IAM用户指南》中为第三方身份提供商创建角色(联合)中的说明进行操作。
-
IAM用户:
-
创建您的用户可以担任的角色。按照用户指南中为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:subscribe
aws-marketplace:aws-marketplace:CreateAgreementRequest
,该IAM实体还需要使用aws-marketplace:AcceptAgreementRequest
IAM权限 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: PutObject 和 s3: 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
条件发出的请求。这允许 S3PutObject
权限只能在 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、CreateJob
、StartJob
GetJob
、和CancelJob
API操作支持条件权限。您可以在 JobType
级别提供权限。
条件键 | 描述 | 类型 |
---|---|---|
"dataexchange:JobType":"IMPORT_ASSETS_FROM_S3" |
将权限范围限定为从 Amazon S3 导入资产的作业。 | String |
|
将权限范围限定为从 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用户指南》。