

サポート終了通知: 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 を示している必要があります。

「混乱した代理」問題から保護するための最も効果的な方法は、リソースの完全なAmazon リソースネーム (ARN)を指定しながら、グローバル条件コンテキストキー `aws:SourceArn` を使用することです。リソースの ARN 全体が不明または複数のリソースを指定する場合、ARN の未知部分にワイルドカード `*`が付いた `aws:SourceArn` グローバルコンテキスト条件キー を使用します。例えば、`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>

 AWS IoT Analytics データストアにカスタマーマネージド Amazon S3 ストレージを使用すると、データを保存する Amazon S3 バケットが混乱した代理問題にさらされる可能性があります。

たとえば、Nikki Wolf は {{DOC-EXAMPLE-BUCKET}} という顧客所有の Amazon S3 バケットを使用しています。このバケットには、{{us-east-1}} リージョンで作成された AWS IoT Analytics データストアの情報が保存されます。彼女は、 AWS IoT Analytics サービスプリンシパルが自分に代わって {{DOC-EXAMPLE-BUCKET}} をクエリできるようにするポリシーを指定します。Nikki の同僚である Li Juan は、自分のアカウントから {{DOC-EXAMPLE-BUCKET}} にクエリを実行し、その結果を含むデータセットを作成します。その結果、 AWS IoT Analytics サービスプリンシパルは、Li がアカウントからクエリを実行したにもかかわらず、Li に代わって Nikki の Amazon S3 バケットにクエリを実行しました。

これを防ぐため、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 アカウント ID `aws:SourceAccount`を持つ 
+ の`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 リファレンス」の「[`CustomerManagedChannelS3Storage`](https://docs.aws.amazon.com/iotanalytics/latest/APIReference/API_CustomerManagedChannelS3Storage.html)」と「[`CustomerManagedDatastoreS3Storage`](https://docs.aws.amazon.com/iotanalytics/latest/APIReference/API_CustomerManagedDatastoreS3Storage.html)」を参照してください。

### AWS IoT Analytics データセットコンテンツ配信ルールのサービス間の混乱した代理の防止
<a name="confused-deputy-prevention-for-dataset-content-delivery"></a>

Amazon S3 または にデータセットクエリ結果を配信するために が AWS IoT Analytics 引き受ける 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)」を参照してください。