잘못 구성되었을 가능성이 있는 AWS IoT 정책 - AWS IoT Device Defender

잘못 구성되었을 가능성이 있는 AWS IoT 정책

AWS IoT 정책이 잘못 구성되었을 가능성이 있는 것으로 확인되었습니다. 지나치게 허용적인 정책을 비롯하여 정책이 잘못 구성되면 의도하지 않은 리소스에 대한 디바이스 액세스를 허용하는 등의 보안 인시던트가 발생할 수 있습니다.

잘못 구성되었을 가능성이 있는 AWS IoT 정책 점검은 정책을 업데이트하기 전에 의도한 작업만 허용되는지 확인하라는 경고입니다.

이 점검은 CLI 및 API에서 IOT_POLICY_POTENTIAL_MISCONFIGURATION_CHECK와 같이 나타납니다.

심각도: 중간

Details

이 점검에서 잘못 구성되었을 가능성이 있는 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/*" } ] }
참고

이 점검에서는 오탐지(false positive)가 보고될 수 있습니다. 플래그가 지정된 정책을 평가하고 감사 억제를 사용하여 오탐지 리소스를 표시하는 것이 좋습니다.

수정 방법

이 점점은 잘못 구성되었을 가능성이 있는 정책에 플래그를 지정하므로 오탐지가 발생할 수 있습니다. 나중에 플래그가 지정되지 않도록 감사 억제를 사용하여 오탐지를 표시합니다.

또한 다음 단계에 따라 사물, 사물 그룹 또는 기타 개체에 연결된 규정 미준수 정책을 수정할 수 있습니다.

  1. CreatePolicyVersion을 사용하여 새 규정 준수 정책 버전을 생성합니다. setAsDefault 플래그를 true로 설정합니다. (이로 인해 정책을 사용하는 모든 개체에 이 새 버전이 적용됩니다.)

    일반적인 사용 사례에 대한 AWS IoT 정책 생성 예시는 AWS IoT Core 개발자 안내서게시 및 구독 정책 예제를 참조하세요.

  2. 연결된 모든 디바이스가 AWS IoT에 연결될 수 있는지 확인합니다. 디바이스를 연결할 수 없는 경우 SetPolicyVersion을 사용하여 기본 정책을 이전 버전으로 롤백하고 정책을 수정한 다음 다시 시도하세요.

완화 조치를 사용하면 다음을 수행할 수 있습니다.

  • 이 변경사항을 실행하려면 감사 결과에서 REPLACE_DEFAULT_POLICY_VERSION 완화 작업을 적용합니다.

  • Amazon SNS 메시지에 대해 사용자 지정 응답을 구현하려면 PUBLISH_FINDINGS_TO_SNS 완화 작업을 적용합니다.

자세한 내용은 완화 작업 단원을 참조하십시오.

AWS IoT Core 개발자 안내서의 IoT Core 정책 변수를 사용하여 정책에서 AWS IoT 리소스를 동적으로 참조합니다.