AWS IoT ポリシーが誤って構成されている可能性がある
AWS IoT ポリシーが誤って構成されている可能性があることが確認されました。過度に寛容なポリシーなど、誤って構成されたポリシーは、意図しないリソースへのデバイスアクセスを許可するなどのセキュリティインシデントを引き起こす可能性があります。
AWS IoT ポリシーが誤って構成されている可能性があるチェックは、ポリシーを更新する前に、意図したアクションのみが許可されていることを確認するための警告です。
このチェックは、CLI および API で IOT_POLICY_POTENTIAL_MISCONFIGURATION_CHECK
として表示されます。
重大度: 中
詳細
このチェックで AWS IoT ポリシーが誤って設定されている可能性があることが検出されると、AWS IoT は次の理由コードを返します。
-
POLICY_CONTAINS_MQTT_WILDCARDS_IN_DENY_STATEMENT
-
TOPIC_FILTERS_INTENDED_TO_DENY_ALLOWED_USING_WILDCARDS
重要な理由
ポリシーの設定を誤ると、必要以上のアクセス許可がデバイスに与えられ、意図しない結果につながる可能性があります。リソースへのアクセスを制限し、セキュリティ上の脅威を防ぐために、ポリシーを慎重に検討することをお勧めします。
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
のフラグが付けられます。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:Subscribe", "Resource": "arn:aws:iot:
region
:account-id
:topicfilter/building/*" }, { "Effect": "Deny", "Action": "iot:Subscribe", "Resource": "arn:aws:iot:region
:account-id
:topicfilter/building/control_room/#" }, { "Effect": "Allow", "Action": "iot:Receive", "Resource": "arn:aws:iot:region
:account-id
:topic/building/*" } ] }
以下は、適切に構成されたポリシーの例です。デバイスには、building/control_room/
のサブトピックにサブスクライブするアクセス許可がなく、building/control_room/
のサブトピックからメッセージを受信するアクセス許可がありません。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:Subscribe", "Resource": "arn:aws:
region
:account-id
:topicfilter/building/*" }, { "Effect": "Deny", "Action": "iot:Subscribe", "Resource": "arn:aws:iot:region
:account-id
:topicfilter/building/control_room/*" }, { "Effect": "Allow", "Action": "iot:Receive", "Resource": "arn:aws:iot:region
:account-id
:topic/building/*" }, { "Effect": "Deny", "Action": "iot:Receive", "Resource": "arn:aws:iot:region
:account-id
:topic/building/control_room/*" } ] }
次のポリシー例は、リソース 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
でメッセージを受信するアクセス許可が含まれています。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:Subscribe", "Resource": "arn:aws:iot:
region
:account-id
:topicfilter/building/*" }, { "Effect": "Deny", "Action": "iot:Subscribe", "Resource": "arn:aws:iot:region
:account-id
:topicfilter/building/control_room/*" }, { "Effect": "Allow", "Action": "iot:Receive", "Resource": "arn:aws:iot:region
:account-id
:topic/building/*" } ] }
以下は、適切に構成されたポリシーの例です。デバイスには、building/control_room/
のサブトピックにサブスクライブするアクセス許可がなく、building/control_room/
のサブトピックからメッセージを受信するアクセス許可がありません。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:Subscribe", "Resource": "arn:aws:iot:
region
:account-id
:topicfilter/building/*" }, { "Effect": "Deny", "Action": "iot:Subscribe", "Resource": "arn:aws:iot:region
:account-id
:topicfilter/building/control_room/*" }, { "Effect": "Allow", "Action": "iot:Receive", "Resource": "arn:aws:iot:region
:account-id
:topic/building/*" }, { "Effect": "Deny", "Action": "iot:Receive", "Resource": "arn:aws:iot:region
:account-id
:topic/building/control_room/*" } ] }
注記
このチェックでは、誤検出が報告される場合があります。フラグが立てられたポリシーをすべて評価し、監査抑制を使用して誤検出のリソースにマークを付けることをお勧めします。
修正方法
このチェックにより、誤って構成されている可能性のあるポリシーにフラグが付けられるため、誤検出が発生する可能性があります。今後フラグが立てられないように、監査抑制を使用して誤検出をマークします。
以下のステップに従ってモノ、モノのグループ、その他のエンティティにアタッチされた不適合のポリシーを修正することもできます。
-
ポリシーの新しい準拠バージョンを作成するには、CreatePolicyVersion を使用します。
setAsDefault
フラグを true に設定します。(これにより、この新しいバージョンは、ポリシーを使用するすべてのエンティティで動作します。)一般的なユースケース向けの AWS IoT ポリシーの作成例については、AWS IoT Core 開発者ガイドの「パブリッシュ/サブスクライブポリシーの例」を参照してください。
-
関連付けられているすべてのデバイスが AWS IoT に接続できることを確認します。デバイスが接続できない場合は、SetPolicyVersion を使用してデフォルトのポリシーを以前のバージョンにロールバックして、もう一度試してください。
緩和アクションを使用して、以下を実行できます。
-
監査結果に
REPLACE_DEFAULT_POLICY_VERSION
緩和アクションを適用して、この変更を行います。 -
Amazon SNS メッセージに対する応答としてカスタムレスポンスを実装する場合は、
PUBLISH_FINDINGS_TO_SNS
緩和アクションを適用します。
詳細については、「緩和アクション」を参照してください。
「AWS IoT Core デベロッパーガイド」の IoT Core ポリシー変数を使用して、ポリシー内の AWS IoT リソースを動的に参照します。