

终止支持通知： Amazon 将于 2025 年 12 月 15 日终止对的支持 Amazon IoT Analytics。2025 年 12 月 15 日之后，您将无法再访问 Amazon IoT Analytics 控制台或 Amazon IoT Analytics 资源。有关更多信息，请参阅[Amazon IoT Analytics 终止支持](https://docs.amazonaws.cn/iotanalytics/latest/userguide/iotanalytics-end-of-support.html)。

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

# 防止跨服务混淆座席
<a name="cross-service-confused-deputy-prevention"></a>

混淆代理问题是一个安全性问题，即不具有操作执行权限的实体可能会迫使具有更高权限的实体执行该操作。在中 Amazon，跨服务模仿可能会导致混乱的副手问题。一个服务（*呼叫服务*) 调用另一项服务（*所谓的服务*)时，可能会发生跨服务模拟。可以操纵调用服务以使用其权限对另一个客户的资源进行操作，否则该服务不应有访问权限。为了防止这种情况， Amazon 提供可帮助您保护所有服务的服务委托人数据的工具，这些服务委托人有权限访问账户中的资源。

我们建议在资源策略中使用 [https://docs.amazonaws.cn/ IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.amazonaws.cn/ IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) 和 [https://docs.amazonaws.cn/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.amazonaws.cn/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) 全局条件上下文密钥。这限制了向资源 Amazon IoT Analytics 提供其他服务的权限。如果使用两个全局条件上下文键，在同一策略语句中使用时，`aws:SourceAccount` 值和 `aws:SourceArn` 值中的账户必须使用相同的账户 ID。

防止混淆代理问题最有效的方法是使用具有资源完整 Amazon Resource Name (ARN) 的 `aws:SourceArn` 全局条件上下文键。如果您不知道资源的完整 ARN，或正在指定多个资源，请针对 ARN 未知部分使用带有通配符 (`*`) 的 `aws:SourceArn` 全局上下文条件键。例如 `arn:aws:iotanalytics::123456789012:*`。

**Topics**
+ [Amazon S3 存储桶的防护](#confused-deputy-prevention-with-S3)
+ [使用 Amazon CloudWatch 日志进行预防](#confused-deputy-prevention-with-cloudwatch-logs)
+ [对客户管理的 Amazon IoT Analytics 资源进行混乱的副手预防](#confused-deputy-prevention-for-resources-with-customer-managed-storage)

## Amazon S3 存储桶的防护
<a name="confused-deputy-prevention-with-S3"></a>

如果您将客户托管的 Amazon S3 存储用于 Amazon IoT Analytics 数据存储，则存储您的数据的 Amazon S3 存储桶可能会遇到混乱的副手问题。

例如，Nikki Wolf 使用客户拥有的名为 *DOC-EXAMPLE-BUCKET* Amazon S3 存储桶。存储桶存储在该地区创建 Amazon IoT Analytics 的数据存储的信息*us-east-1*。她指定了一项允许 Amazon IoT Analytics 服务委托人代表她*DOC-EXAMPLE-BUCKET*进行查询的策略。Nikki的同事李娟用自己的账户进行查询*DOC-EXAMPLE-BUCKET*，并用结果创建了一个数据集。结果，尽管Li从她的账户中进行了查询，但 Amazon IoT Analytics 服务负责人还是代表Li查询了Nikki的Amazon S3存储桶。

为了防止这种情况，Nikki 可以在政策中为*DOC-EXAMPLE-BUCKET*其指定`aws:SourceAccount``aws:SourceArn`条件或条件。

**指定`aws:SourceAccount`条件** ——以下存储桶策略示例指定只有来自 Nikki 账户 (*123456789012*) 的 Amazon IoT Analytics 资源才能访问*DOC-EXAMPLE-BUCKET*。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "MyPolicyID",
    "Statement": [
        {
            "Sid": "ConfusedDeputyPreventionExamplePolicy",
            "Effect": "Allow",
            "Principal": {
                "Service": "iotanalytics.amazonaws.com"
            },
            "Action": [
                "s3:GetBucketLocation",
                "s3:GetObject",
                "s3:ListBucket",
                "s3:ListBucketMultipartUploads",
                "s3:ListMultipartUploadParts",
                "s3:AbortMultipartUpload",
                "s3:PutObject",
                "s3:DeleteObject"
            ],
            "Resource": [
                "arn:aws:s3:*:*:amzn-s3-demo-bucket",
                "arn:aws:s3:*:*:amzn-s3-demo-bucket/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                }
            }
        }
    ]
}
```

------

**指定 `aws:SourceArn` 条件** ‐ 或者，Nikki 也可使用 `aws:SourceArn` 条件。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "MyPolicyID",
    "Statement": [
        {
            "Sid": "ConfusedDeputyPreventionExamplePolicy",
            "Effect": "Allow",
            "Principal": {
                "Service": "iotanalytics.amazonaws.com"
            },
            "Action": [
                "s3:GetBucketLocation",
                "s3:GetObject",
                "s3:ListBucket",
                "s3:ListBucketMultipartUploads",
                "s3:ListMultipartUploadParts",
                "s3:AbortMultipartUpload",
                "s3:PutObject",
                "s3:DeleteObject"
            ],
            "Resource": [
                "arn:aws:s3:*:*:amzn-s3-demo-bucket",
                "arn:aws:s3:*:*:amzn-s3-demo-bucket/*"
            ],
            "Condition": {
                "ArnLike": {
                    "aws:SourceArn": [
                        "arn:aws:iotanalytics:us-east-1:123456789012:dataset/your-dataset",
                        "arn:aws:iotanalytics:us-east-1:123456789012:datastore/your-datastore"
                    ]
                }
            }
        }
    ]
}
```

------

## 使用 Amazon CloudWatch 日志进行预防
<a name="confused-deputy-prevention-with-cloudwatch-logs"></a>

在使用 Amazon Lo CloudWatch gs 进行监控时，您可以防止出现混乱的副手问题。以下资源策略显示了如何防止混淆代理问题：
+ 全局条件上下文密钥，`aws:SourceArn`
+ `aws:SourceAccount`使用您的 Amazon 账户 ID
+ 与中的`sts:AssumeRole`请求关联的客户资源 Amazon IoT Analytics

在以下示例中，*123456789012*替换为您的 Amazon 账户 ID 和*us-east-1*您 Amazon IoT Analytics 账户所在的地区。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "iotanalytics.amazonaws.com"
            },
            "Action": "logs:PutLogEvents",
            "Resource": "*",
            "Condition": {
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:iotanalytics:us-east-1:123456789012:*/*"
                },
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                }
            }
        }
    ]
}
```

------

有关启用和配置 Amazon CloudWatch 日志的更多信息，请参阅[登录和监控 Amazon IoT Analytics](monitoring.md)。

## 对客户管理的 Amazon IoT Analytics 资源进行混乱的副手预防
<a name="confused-deputy-prevention-for-resources-with-customer-managed-storage"></a>

如果您授予对 Amazon IoT Analytics 资源执行操作的 Amazon IoT Analytics 权限，则这些资源可能会面临混乱的代理问题。为了防止出现混乱的代理问题，您可以使用以下示例资源策略 Amazon IoT Analytics 来限制授予的权限。

**Topics**
+ [防范 Amazon IoT Analytics 渠道和数据存储](#confused-deputy-prevention-for-channels-and-datastores)
+ [跨服务混淆了 Amazon IoT Analytics 数据集内容交付规则的副手预防](#confused-deputy-prevention-for-dataset-content-delivery)

### 防范 Amazon IoT Analytics 渠道和数据存储
<a name="confused-deputy-prevention-for-channels-and-datastores"></a>

您可以使用 IAM 角色来控制 Amazon IoT Analytics 可以代表您访问的 Amazon 资源。为了防止你的角色面临混乱的代理问题，你可以在`aws:SourceAccount`元素中指定 Amazon 账户，在附加到角色 Amazon IoT Analytics 的信任策略元素中`aws:SourceArn`指定资源的 ARN。

在以下示例中，*123456789012*替换为您的 Amazon 账户 ID 以及*arn:aws:iotanalytics:*aws-region*:123456789012:channel/DOC-EXAMPLE-CHANNEL* Amazon IoT Analytics 频道或数据存储的 ARN。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ConfusedDeputyPreventionExamplePolicy",
            "Effect": "Allow",
            "Principal": {
                "Service": "iotanalytics.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                },
                "ArnLike": {
                "aws:SourceArn": "arn:aws:iotanalytics:us-east-1:123456789012:channel/your-channel"
                }
            }
        }
    ]
}
```

------

要了解有关通道和数据存储的客户托管 S3 存储选项的更多信息，请参阅《Amazon IoT Analytics API 参考》**中的 [https://docs.amazonaws.cn/iotanalytics/latest/APIReference/API_CustomerManagedChannelS3Storage.html](https://docs.amazonaws.cn/iotanalytics/latest/APIReference/API_CustomerManagedChannelS3Storage.html) 和 [https://docs.amazonaws.cn/iotanalytics/latest/APIReference/API_CustomerManagedDatastoreS3Storage.html](https://docs.amazonaws.cn/iotanalytics/latest/APIReference/API_CustomerManagedDatastoreS3Storage.html)。

### 跨服务混淆了 Amazon IoT Analytics 数据集内容交付规则的副手预防
<a name="confused-deputy-prevention-for-dataset-content-delivery"></a>

 Amazon IoT Analytics 假设向 Amazon S3 或向其传送数据集查询结果的 IAM 角色 Amazon IoT Events 可能会遇到混乱的副手问题。为防止出现混淆副手问题，请在`aws:SourceAccount`元素中指定 Amazon 帐户，并在您附加到角色的信任策略`aws:SourceArn`元素中指定 Amazon IoT Analytics 资源的 ARN。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ConfusedDeputyPreventionExampleTrustPolicyDocument",
            "Effect": "Allow",
            "Principal": {
                "Service": "iotanalytics.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:iotanalytics:us-east-1:123456789012:dataset/your-dataset"
                }
            }
        }
    ]
}
```

------

有关配置数据集内容传送规则的更多详细信息，请参阅《Amazon IoT Analytics API 参考》**中的 [https://docs.amazonaws.cn/iotanalytics/latest/APIReference/API_CreateDataset.html#iotanalytics-CreateDataset-request-contentDeliveryRules](https://docs.amazonaws.cn/iotanalytics/latest/APIReference/API_CreateDataset.html#iotanalytics-CreateDataset-request-contentDeliveryRules)。