

# AWS IoT ポリシーが誤って構成されている可能性がある
<a name="audit-chk-iot-misconfigured-policies"></a>

AWS IoT ポリシーが誤って構成されている可能性があることが確認されました。過度に寛容なポリシーなど、誤って構成されたポリシーは、意図しないリソースへのデバイスアクセスを許可するなどのセキュリティインシデントを引き起こす可能性があります。

**AWS IoT ポリシーが誤って構成されている可能性がある**チェックは、ポリシーを更新する前に、意図したアクションのみが許可されていることを確認するための警告です。

このチェックは、CLI および API で `IOT_POLICY_POTENTIAL_MISCONFIGURATION_CHECK` として表示されます。

**重大度:** 中

## 詳細
<a name="audit-chk-iot-misconfigured-policies-details"></a>

このチェックで AWS IoT ポリシーが誤って設定されている可能性があることが検出されると、AWS IoT は次の理由コードを返します。
+ POLICY\_CONTAINS\_MQTT\_WILDCARDS\_IN\_DENY\_STATEMENT
+ TOPIC\_FILTERS\_INTENDED\_TO\_DENY\_ALLOWED\_USING\_WILDCARDS

## 重要な理由
<a name="audit-chk-iot-misconfigured-policies-why-it-matters"></a>

ポリシーの設定を誤ると、必要以上のアクセス許可がデバイスに与えられ、意図しない結果につながる可能性があります。リソースへのアクセスを制限し、セキュリティ上の脅威を防ぐために、ポリシーを慎重に検討することをお勧めします。

### ポリシーの拒否ステートメントの例に MQTT ワイルドカードが含まれています
<a name="example-section-id"></a>

**AWS IoT ポリシーが誤って構成されている可能性がある**チェックでは、拒否ステートメント内の MQTT ワイルドカード文字 (`+` または `#`) を検査します。ワイルドカードは AWS IoT ポリシーによってリテラル文字列として扱われるため、ポリシーが過度に制限される可能性があります。

次の例は、ポリシーで MQTT ワイルドカード `#` を使用して、`building/control_room` に関連するトピックへのサブスクライブを拒否することを目的としています。ただし、MQTT ワイルドカードは AWS IoT ポリシーではワイルドカードの意味を持たず、デバイスは `building/control_room/data1` にサブスクライブできます。

**AWS IoT ポリシーが誤って構成されている可能性がある**チェックでは、このポリシーに理由コード `POLICY_CONTAINS_MQTT_WILDCARDS_IN_DENY_STATEMENT` のフラグが付けられます。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iot:Subscribe",
            "Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/building/*"
        },
        {
            "Effect": "Deny",
            "Action": "iot:Subscribe",
            "Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/building/control_room/#"
        },
        {
            "Effect": "Allow",
            "Action": "iot:Receive",
            "Resource": "arn:aws:iot:us-east-1:123456789012:topic/building/*"
        }
    ]
}
```

------

以下は、適切に構成されたポリシーの例です。デバイスには、`building/control_room/` のサブトピックにサブスクライブするアクセス許可がなく、`building/control_room/` のサブトピックからメッセージを受信するアクセス許可がありません。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "iot:Subscribe",
      "Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/building/*"
    },
    {
      "Effect": "Deny",
      "Action": "iot:Subscribe",
      "Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/building/control_room/*"
    },
    {
      "Effect": "Allow",
      "Action": "iot:Receive",
      "Resource": "arn:aws:iot:us-east-1:123456789012:topic/building/*"
    },
    {
      "Effect": "Deny",
      "Action": "iot:Receive",
      "Resource": "arn:aws:iot:us-east-1:123456789012:topic/building/control_room/*"
    }
  ]
}
```

------

### ワイルドカードの使用を許可することを拒否することを目的したトピック フィルターの例
<a name="example-section-id2"></a>

次のポリシー例は、リソース `building/control_room/*` を拒否することにより、`building/control_room` に関連するトピックへのサブスクライブを拒否することを目的としています。ただし、デバイスは `building/#` にサブスクライブするリクエストを送信し、`building/control_room/data1` を含む `building` に関連するすべてのトピックからメッセージを受信できます。

**AWS IoT ポリシーが誤って構成されている可能性がある**チェックでは、このポリシーに理由コード `TOPIC_FILTERS_INTENDED_TO_DENY_ALLOWED_USING_WILDCARDS` のフラグが付けられます。

次のポリシーの例には、`building/control_room topics` でメッセージを受信するアクセス許可が含まれています。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iot:Subscribe",
            "Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/building/*"
        },
        {
            "Effect": "Deny",
            "Action": "iot:Subscribe",
            "Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/building/control_room/*"
        },
        {
            "Effect": "Allow",
            "Action": "iot:Receive",
            "Resource": "arn:aws:iot:us-east-1:123456789012:topic/building/*"
        }
    ]
}
```

------

以下は、適切に構成されたポリシーの例です。デバイスには、`building/control_room/` のサブトピックにサブスクライブするアクセス許可がなく、`building/control_room/` のサブトピックからメッセージを受信するアクセス許可がありません。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iot:Subscribe",
            "Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/building/*"
        },
        {
            "Effect": "Deny",
            "Action": "iot:Subscribe",
            "Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/building/control_room/*"
        },
        {
            "Effect": "Allow",
            "Action": "iot:Receive",
            "Resource": "arn:aws:iot:us-east-1:123456789012:topic/building/*"
        },
        {
            "Effect": "Deny",
            "Action": "iot:Receive",
            "Resource": "arn:aws:iot:us-east-1:123456789012:topic/building/control_room/*"
        }
    ]
}
```

------

**注記**  
このチェックでは、誤検出が報告される場合があります。フラグが立てられたポリシーをすべて評価し、監査抑制を使用して誤検出のリソースにマークを付けることをお勧めします。

## 修正方法
<a name="audit-chk-iot-misconfigured-policies-how-to-fix"></a>

このチェックにより、誤って構成されている可能性のあるポリシーにフラグが付けられるため、誤検出が発生する可能性があります。今後フラグが立てられないように、[監査抑制](audit-finding-suppressions.md)を使用して誤検出をマークします。

以下のステップに従ってモノ、モノのグループ、その他のエンティティにアタッチされた不適合のポリシーを修正することもできます。

1. ポリシーの新しい適合バージョンを作成するには、[CreatePolicyVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_CreatePolicyVersion.html) を使用します。`setAsDefault` フラグを true に設定します。(これにより、この新しいバージョンは、ポリシーを使用するすべてのエンティティで動作します。)

   一般的なユースケース向けの AWS IoT ポリシーの作成例については、*AWS IoT Core 開発者ガイド*の「[パブリッシュ/サブスクライブポリシーの例](https://docs.aws.amazon.com/iot/latest/developerguide/pub-sub-policy.html)」を参照してください。

1. 関連付けられているすべてのデバイスが AWS IoT に接続できることを確認します。デバイスが接続できない場合は、[SetPolicyVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_SetPolicyVersion.html) を使用してデフォルトのポリシーを以前のバージョンにロールバックして、もう一度試してください。

緩和アクションを使用して、以下を実行できます。
+ 監査結果に `REPLACE_DEFAULT_POLICY_VERSION` 緩和アクションを適用して、この変更を行います。
+ Amazon SNS メッセージに対する応答としてカスタムレスポンスを実装する場合は、`PUBLISH_FINDINGS_TO_SNS` 緩和アクションを適用します。

詳細については、「[緩和アクション](dd-mitigation-actions.md)」を参照してください。

「**AWS IoT Core デベロッパーガイド」の [IoT Core ポリシー変数](https://docs.aws.amazon.com/iot/latest/developerguide/iot-policy-variables.html)を使用して、ポリシー内の AWS IoT リソースを動的に参照します。