

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

# 访问控制
<a name="access-control"></a>

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

## 管理 AWS Data Exchange 资源访问权限概述
<a name="access-control-overview"></a>

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

**注意**  
*账户管理员*（或管理员）是具有管理员权限的用户。有关更多信息，请参阅 [IAM 最佳实践](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)。

要提供访问权限，请为您的用户、组或角色添加权限：
+ 中的用户和群组 AWS IAM Identity Center：

  创建权限集合。按照《AWS IAM Identity Center 用户指南》**中[创建权限集](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html)的说明进行操作。
+ 通过身份提供者在 IAM 中托管的用户：

  创建适用于身份联合验证的角色。按照《IAM 用户指南》**中[针对第三方身份提供者创建角色（联合身份验证）](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html)的说明进行操作。
+ IAM 用户：
  + 创建您的用户可以担任的角色。按照《IAM 用户指南》**中[为 IAM 用户创建角色](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html)的说明进行操作。
  + （不推荐使用）将策略直接附加到用户或将用户添加到用户组。按照《IAM 用户指南》**中[向用户添加权限（控制台）](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console)中的说明进行操作。

**Topics**
+ [AWS Data Exchange 资源和运营](#access-control-resources)
+ [了解资源所有权](#access-control-owner)
+ [管理对 资源的访问](#access-control-manage-access-intro)
+ [指定策略元素：操作、效果和主体](#access-control-specify-control-tower-actions)
+ [在策略中指定条件](#specifying-conditions)

### AWS Data Exchange 资源和运营
<a name="access-control-resources"></a>

在中 AWS Data Exchange，有两种不同的主资源具有不同的控制平面：
+ 的主要资源 AWS Data Exchange 是*数据集*和*作业*。 AWS Data Exchange 还支持*修订版*和*资产*。
+ 为了促进提供商和订阅者之间的交易， AWS Data Exchange 还使用 AWS Marketplace 概念和资源，包括产品、优惠和订阅。您可以使用 AWS Marketplace 目录 API 或 AWS Data Exchange 控制台来管理您的产品、报价、订阅请求和订阅。

### 了解资源所有权
<a name="access-control-owner"></a>

 AWS 账户 拥有在账户中创建的资源，无论谁创建了这些资源。具体而言，资源所有者是 AWS 账户 对资源创建请求进行身份验证的[委托人实体](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html)（即 AWS 账户 根用户、用户或角色）。以下示例说明了它的工作原理。

#### 资源所有权
<a name="resource-ownership"></a>

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

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

### 管理对 资源的访问
<a name="access-control-manage-access-intro"></a>

本节讨论在的上下文中使用 IAM AWS Data Exchange。这里不提供有关 IAM 服务的详细信息。有关完整的 IAM 文档，请参阅《IAM 用户指南》中的[什么是 IAM？](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)。有关 IAM policy 略语法和说明的信息，请参阅 *IAM 用户指南*中的 [AWS Identity and Access Management 策略参考](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html)。

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

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

**Topics**
+ [基于身份的策略和权限](#access-control-manage-access-intro-iam-policies)
+ [基于资源的策略](#access-control-manage-access-intro-resource-policies)

#### 基于身份的策略和权限
<a name="access-control-manage-access-intro-iam-policies"></a>

AWS Data Exchange 提供了一组托管策略。有关他们及其权限的更多信息，请参阅[AWS 的托管策略 AWS Data Exchange](security-iam-awsmanpol.md)。

##### Amazon S3 权限
<a name="additional-s3-permissions"></a>

将资产从 Amazon S3 导入到时 AWS Data Exchange，您需要写入 AWS Data Exchange 服务 S3 存储桶的权限。同样，将资产从导出 AWS Data Exchange 到 Amazon S3 时，您需要具有读取 AWS Data Exchange 服务 S3 存储桶的权限。这些权限包含在前面提到的策略中，但您也可以自行创建策略，以允许您希望用户能够执行的操作。您可以将这些权限的范围限定为名称`aws-data-exchange`中包含的存储桶，并使用该[ CalledVia](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-calledvia)权限将权限的使用限制为 AWS Data Exchange 代表委托人提出的请求。

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

------
#### [ JSON ]

****  

```
{
    "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` 条件发出的请求。这允许 S3 `PutObject` 权限仅在 AWS Data Exchange 控制台或 API 的上下文中使用。
+ **AWS Lake Formation****an **AWS Resource Access Manager******d (AWS RAM)** **—** 要使用 AWS Lake Formation 数据集，您需要接受订阅的每个净新提供商的 AWS RAM 共享邀请。要接受 AWS RAM 共享邀请，您需要扮演一个有权接受 AWS RAM 共享邀请的角色。要详细了解如何使用 AWS 托管策略 AWS RAM，请参阅的[托管策略 AWS RAM。](https://docs.aws.amazon.com/ram/latest/userguide/security-iam-managed-policies.html)
+ 要创建 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html)中的*身份（用户、组和角色）*。

#### 基于资源的策略
<a name="access-control-manage-access-intro-resource-policies"></a>

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

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

### 指定策略元素：操作、效果和主体
<a name="access-control-specify-control-tower-actions"></a>

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

以下是最基本的策略元素：
+ **资源**：在策略中，您可以使用 Amazon Resource Name（ARN）标识策略应用到的资源。所有 AWS Data Exchange API 操作都支持资源级权限 (RLP)，但 AWS Marketplace 操作不支持 RLP。有关更多信息，请参阅 [AWS Data Exchange 资源和运营](#access-control-resources)。
+ **操作** – 您可以使用操作关键字标识要允许或拒绝的资源操作。
+ **效果** – 您可以指定用户请求特定操作时的效果（可以是允许或拒绝）。如果没有显式授予（允许）对资源的访问权限，则隐式拒绝访问。您也可显式拒绝对资源的访问，这样可确保用户无法访问该资源，即使有其他策略授予了访问权限的情况下也是如此。
+ **主体**：在基于身份的策略（IAM 策略）中，附加了策略的用户是隐式主体。对于基于资源的策略，您可以指定要获得权限的用户、账户、服务或其他实体（仅适用于基于资源的策略）。 AWS Data Exchange 不支持基于资源的策略。

有关 IAM 策略语法和描述的更多信息，请参阅 *IAM 用户指南*中的[AWS Identity and Access Management 策略参考](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html)。

### 在策略中指定条件
<a name="specifying-conditions"></a>

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


**AWS Data Exchange 条件键参考**  

| 条件键 | 说明 | Type | 
| --- | --- | --- | 
| "dataexchange:JobType":"IMPORT\$1ASSETS\$1FROM\$1S3" | 将权限范围限定为从 Amazon S3 导入资产的作业。 | 字符串 | 
| "dataexchange:JobType":IMPORT\$1ASSETS\$1FROM\$1LAKE\$1FORMATION\$1TAG\$1POLICY" (Preview) | 将权限范围限定为从 AWS Lake Formation （预览版）导入资产的作业。 | 字符串 | 
| "dataexchange:JobType":"IMPORT\$1ASSET\$1FROM\$1SIGNED\$1URL" | 将权限范围限定为从已签名 URL 导入资产的作业。 | 字符串 | 
| "dataexchange:JobType":"IMPORT\$1ASSET\$1FROM\$1REDSHIFT\$1DATA\$1SHARES" | 将权限范围限定为从 Amazon Redshift 导入资产的作业。 | 字符串 | 
| "dataexchange:JobType":"IMPORT\$1ASSET\$1FROM\$1API\$1GATEWAY\$1API" | 将权限范围限定为从 Amazon API Gateway 导入资产的作业。 | 字符串 | 
| "dataexchange:JobType":"EXPORT\$1ASSETS\$1TO\$1S3" | 将权限范围限定为将资产导出到 Amazon S3 的作业。 | 字符串 | 
| "dataexchange:JobType":"EXPORT\$1ASSETS\$1TO\$1SIGNED\$1URL" | 将权限范围限定为将资产导出到已签名 URL 的作业。 | 字符串 | 
| "dataexchange:JobType":EXPORT\$1REVISIONS\$1TO\$1S3" | 将权限范围限定为将修订导出到 Amazon S3 的作业。 | 字符串 | 

有关使用策略语言指定条件的更多信息，请参阅《IAM 用户指南》**中的[条件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Condition)。

要表达条件，您可以使用预定义的条件键。 AWS Data Exchange 具有 API 操作的`JobType`条件。但有 AWS 范围内的条件键，您可以根据需要使用。有关 AWS 范围内的键的完整列表，请参阅《[IAM 用户指南](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)》。**