

終止支援通知：在 2025 年 12 月 15 日， AWS 將終止對 的支援 AWS IoT Analytics。2025 年 12 月 15 日之後，您將無法再存取 AWS IoT Analytics 主控台或 AWS IoT Analytics 資源。如需詳細資訊，請參閱[AWS IoT Analytics 終止支援](https://docs.aws.amazon.com/iotanalytics/latest/userguide/iotanalytics-end-of-support.html)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 預防跨服務混淆代理人
<a name="cross-service-confused-deputy-prevention"></a>

混淆代理人問題屬於安全性問題，其中沒有執行動作許可的實體可以強制具有更多許可的實體執行該動作。在 中 AWS，跨服務模擬可能會導致混淆代理人問題。在某個服務 (*呼叫服務*) 呼叫另一個服務 (*被呼叫服務*) 時，可能會發生跨服務模擬。可以操縱呼叫服務來使用其許可，以其不應有存取許可的方式對其他客戶的資源採取動作。為了防止這種情況， AWS 提供工具，協助您保護所有 服務的資料，讓 服務主體能夠存取您帳戶中的資源。

我們建議在資源政策中使用 [`aws:SourceArn`](https://docs.aws.amazon.com/ IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn)和 [`aws:SourceAccount`](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount)全域條件內容索引鍵。這會限制將另一個服務 AWS IoT Analytics 提供給資源的許可。如果同時使用全域條件內容索引鍵，則在相同政策陳述式中使用`aws:SourceAccount` 值和 `aws:SourceArn` 值中的帳戶時，必須使用相同的帳戶 ID。

防範混淆代理人問題的最有效方法是使用 `aws:SourceArn` 全域條件內容索引鍵，其中包含資源的完整 Amazon Resource Name (ARN)。如果不知道資源的完整 ARN，或者如果您指定了多個資源，請使用 `aws:SourceArn` 全域條件內容索引鍵，同時使用萬用字元 (`*`) 表示 ARN 的未知部分。例如 `arn:aws:{{iotanalytics}}::{{123456789012}}:*`。

**Topics**
+ [Amazon S3 儲存貯體的預防](#confused-deputy-prevention-with-S3)
+ [使用 Amazon CloudWatch Logs 進行預防](#confused-deputy-prevention-with-cloudwatch-logs)
+ [客戶受管 AWS IoT Analytics 資源的混淆代理人預防](#confused-deputy-prevention-for-resources-with-customer-managed-storage)

## Amazon S3 儲存貯體的預防
<a name="confused-deputy-prevention-with-S3"></a>

如果您將客戶受管的 Amazon S3 儲存用於 AWS IoT Analytics 資料存放區，則存放資料的 Amazon S3 儲存貯體可能會面臨混淆代理人問題。

例如，Nikki Wolf 使用客戶擁有的 Amazon S3 儲存貯體，稱為 {{DOC-EXAMPLE-BUCKET}}。儲存貯體會存放在 {{us-east-1}} 區域中建立之 AWS IoT Analytics 資料存放區的資訊。她指定一個政策，讓 AWS IoT Analytics 服務主體能夠代表她查詢 {{DOC-EXAMPLE-BUCKET}}。Nikki 的同事 Li Juan 從自己的帳戶查詢 {{DOC-EXAMPLE-BUCKET}}，並使用結果建立資料集。因此， AWS IoT Analytics 服務主體代表 Li 查詢 Nikki 的 Amazon S3 儲存貯體，即使 Li 從她的帳戶執行查詢。

為了避免這種情況，Nikki 可以在 {{DOC-EXAMPLE-BUCKET}} 的政策中指定 `aws:SourceAccount` 條件或 `aws:SourceArn`條件。

**指定`aws:SourceAccount`條件** - 下列儲存貯體政策範例指定只有來自 Nikki 帳戶 ({{123456789012}}) AWS 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 Logs 進行預防
<a name="confused-deputy-prevention-with-cloudwatch-logs"></a>

使用 Amazon CloudWatch Logs 監控時，您可以避免混淆代理人問題。下列資源政策顯示如何預防與 的混淆代理人問題：
+ 全域條件內容索引鍵、 `aws:SourceArn`
+ `aws:SourceAccount` 具有您 AWS 帳戶 ID 的
+ 中與`sts:AssumeRole`請求相關聯的客戶資源 AWS IoT Analytics

將 {{123456789012}} 取代為 AWS 您的帳戶 ID，並將 {{us-east-1}} 取代為您 AWS 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 Logs 的詳細資訊，請參閱 [在 中記錄和監控 AWS IoT Analytics](monitoring.md)。

## 客戶受管 AWS IoT Analytics 資源的混淆代理人預防
<a name="confused-deputy-prevention-for-resources-with-customer-managed-storage"></a>

如果您授予對 AWS IoT Analytics 資源執行動作的 AWS IoT Analytics 許可，資源可能會面臨混淆代理人問題。若要避免混淆代理人問題，您可以使用下列範例資源政策來限制授予 AWS IoT Analytics 的許可。

**Topics**
+ [防止 AWS IoT Analytics 頻道和資料存放區](#confused-deputy-prevention-for-channels-and-datastores)
+ [AWS IoT Analytics 資料集內容交付規則的跨服務混淆代理人預防](#confused-deputy-prevention-for-dataset-content-delivery)

### 防止 AWS IoT Analytics 頻道和資料存放區
<a name="confused-deputy-prevention-for-channels-and-datastores"></a>

您可以使用 IAM 角色來控制 AWS IoT Analytics 可代表您存取 AWS 的資源。為了避免將您的角色暴露在混淆代理人問題中，您可以在 `aws:SourceAccount`元素中指定 AWS 帳戶，並在您連接到角色的信任政策的 `aws:SourceArn`元素中指定 AWS IoT Analytics 資源的 ARN。

在下列範例中，將 {{123456789012}} 取代為 AWS 您的帳戶 ID，並將 {{arn：aws：iotanalytics：{{aws-region}}：123456789012：channel/DOC-EXAMPLE-CHANNEL}} 取代為 AWS 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 儲存選項，請參閱 *AWS IoT Analytics API 參考*[`CustomerManagedDatastoreS3Storage`](https://docs.aws.amazon.com/iotanalytics/latest/APIReference/API_CustomerManagedDatastoreS3Storage.html)中的 [`CustomerManagedChannelS3Storage`](https://docs.aws.amazon.com/iotanalytics/latest/APIReference/API_CustomerManagedChannelS3Storage.html)和 。

### AWS IoT Analytics 資料集內容交付規則的跨服務混淆代理人預防
<a name="confused-deputy-prevention-for-dataset-content-delivery"></a>

 AWS IoT Analytics 擔任將資料集查詢結果交付至 Amazon S3 或 的 IAM 角色 AWS IoT Events 可能會面臨混淆代理人問題。為避免混淆代理人問題，請在 `aws:SourceAccount`元素中指定 AWS 帳戶，並在您連接至角色的信任政策的 `aws:SourceArn`元素中指定 AWS 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}}"
                }
            }
        }
    ]
}
```

------

如需設定資料集內容交付規則的詳細資訊，請參閱《 *AWS IoT Analytics API 參考*[`contentDeliveryRules`](https://docs.aws.amazon.com/iotanalytics/latest/APIReference/API_CreateDataset.html#iotanalytics-CreateDataset-request-contentDeliveryRules)》中的 。