

# ML Detect 가이드
<a name="dd-detect-ml-getting-started"></a>

**참고**  
다음 리전에서는 ML Detect를 사용할 수 없습니다.  
아시아 태평양(말레이시아)

이 시작 안내서에서는 기계 학습(ML)을 사용하여 디바이스의 기록 지표 데이터를 기반으로 예상되는 동작의 모델을 만드는 ML Detect 보안 프로파일을 만듭니다. ML Detect가 ML 모델을 생성하는 동안 진행 상황을 모니터링할 수 있습니다. ML 모델을 빌드한 후 지속적으로 경보를 확인 및 조사하고 식별된 문제를 완화할 수 있습니다.

ML Detect 및 해당 API 및 CLI 명령에 대한 자세한 내용은 [ML Detect](dd-detect-ml.md) 단원을 참조하세요.

**Topics**
+ [

## 사전 조건
](#ml-detect-prereqs)
+ [

## 콘솔에서 ML Detect를 사용하는 방법
](#dd-detect-ml-console)
+ [

## CLI에서 ML 검색을 사용하는 방법
](#dd-detect-ml-cli)

## 사전 조건
<a name="ml-detect-prereqs"></a>
+ AWS 계정. 이것이 없는 경우 [설정](https://docs.aws.amazon.com/iot/latest/developerguide/dd-setting-up.html)을 참조하세요.

## 콘솔에서 ML Detect를 사용하는 방법
<a name="dd-detect-ml-console"></a>

**Topics**
+ [

### ML Detect 활성화
](#enable-ml-detect-console)
+ [

### ML 모델 상태 모니터링
](#monitor-ml-models-console)
+ [

### ML Detect 경보 검토
](#review-ml-alarms-console)
+ [

### ML 경보 미세 조정
](#fine-tune-ml-models-console)
+ [

### 경보의 확인 상태 표시
](#mark-your-alarms)
+ [

### 식별된 디바이스 문제 완화
](#mitigate-ml-issues-console)

### ML Detect 활성화
<a name="enable-ml-detect-console"></a>

다음 절차에서는 콘솔에서 ML Detect를 설정하는 방법에 대해 소개합니다.

1. 먼저, 모델의 지속적인 교육 및 새로 고침에 대해 [ML Detect 최소 요구 사항](dd-detect-ml.md#dd-detect-ml-requirements)에 정의된 대로 디바이스에서 필요한 최소 데이터 포인트를 생성하는지 확인합니다. 데이터 수집을 진행하려면 보안 프로파일이 대상(사물 또는 사물 그룹)에 연결되어 있어야 합니다.

1. [AWS IoT 콘솔](https://console.aws.amazon.com/iot)의 탐색 창에서 **방어**를 확장합니다. **감지**, **보안 프로파일**, **보안 프로파일 생성**, **ML 예외 항목 감지 프로파일 만들기**를 차례로 선택합니다.

1. **기본 구성 설정** 페이지에서 다음 중 하나를 수행합니다.
   + **대상** 아래에서 대상 디바이스 그룹을 선택합니다.
   + **보안 프로파일 이름** 아래에서 보안 프로파일의 이름을 입력합니다.
   + (선택 사항) **설명** 아래에서 ML 프로파일에 대한 간단한 설명을 작성할 수 있습니다.
   + **보안 프로파일에서 선택한 지표 동작** 아래에서 모니터링할 지표를 선택합니다.  
![\[등록된 모든 항목을 대상으로 선택하고, 권한 부여 실패 및 연결 시도와 같은 지표 동작을 나열하고, 클라우드 또는 디바이스 측 지표를 추가하는 옵션을 사용하여 ML 보안 프로필 구성 페이지를 생성합니다.\]](http://docs.aws.amazon.com/ko_kr/iot-device-defender/latest/devguide/images/dd-ml-set-basic.png)

   완료했으면 **다음**을 선택합니다.

1. **SNS 설정(선택 사항)** 페이지에서 디바이스가 프로파일의 동작을 위반할 때 경보 알림에 대한 SNS 주제를 지정합니다. 선택한 SNS 주제에 게시할 때 사용할 IAM 역할을 선택합니다.

   아직 SNS 역할이 없는 경우 다음 단계에 따라 적절한 권한 및 신뢰 관계가 필요한 역할을 만듭니다.
   + [IAM 콘솔](https://console.aws.amazon.com/iam/)로 이동합니다. 탐색 창에서 **역할**을 선택한 후 **역할 생성**을 선택합니다.
   + **신뢰할 수 있는 유형의 엔터티 선택**에서 **AWS 서비스**를 선택합니다. 그런 다음 **사용 사례 선택**에서 **IoT**를 선택하고 **사용 사례 선택**에서 **IoT - Device Defender 완화 작업**을 선택합니다. 완료했으면 **다음: 권한**을 선택합니다.
   + **연결된 권한 정책**에서 **AWSIoTDeviceDefenderPublishFindingsToSNSMitigationAction**을 선택한 후 **다음: 태그**를 선택해야 합니다.  
![\[정책 이름, 각 정책이 액세스 권한을 제공하는 대상에 대한 설명, 정책을 필터링하거나 검색하는 옵션이 포함된 AWS IoT Device Defender 역할에 대한 권한 정책 표입니다.\]](http://docs.aws.amazon.com/ko_kr/iot-device-defender/latest/devguide/images/dd-ml-sns-findings.png)
   + **태그 추가(선택 사항)**에서 역할과 연결하려는 태그를 추가할 수 있습니다. 완료했으면 **Next: Review(다음: 검토)**를 선택합니다.
   + **검토**에서 역할의 이름을 지정하고 **AWSIoTDeviceDefenderPublishFindingsToSNSMitigationAction**이 **권한** 아래에 나열되고 **AWS 서비스: iot.amazonaws.com**이 **신뢰 관계** 아래에 나열되어 있어야 합니다. 완료했으면 **역할 생성**을 선택하세요.  
![\[역할 ARN, 설명, 인스턴스 프로필 ARN, 경로, 생성 시간, 최대 세션 기간 및 SNS 완화 조치 정책에 적용된 AWS IoT Device Defender 게시 결과와 같은 샘플 SNS 역할 세부 정보를 보여주는 IAM 역할 요약 페이지입니다\]](http://docs.aws.amazon.com/ko_kr/iot-device-defender/latest/devguide/images/dd-ml-detect-permissions.png)  
![\[역할 ARN, SNS 알림을 게시할 수 있는 AWS IoT Device Defender 쓰기 권한을 제공하는 역할 설명, 경로, 생성 시간 및 신뢰할 수 있는 엔터티를 보여주는 IAM 샘플 SNS 역할 요약\]](http://docs.aws.amazon.com/ko_kr/iot-device-defender/latest/devguide/images/dd-ml-detect-trust-relationships.png)

1. **지표 편집 동작** 페이지에서 ML 동작 설정을 사용자 지정할 수 있습니다.  
![\[권한 부여 실패, 바이트 인 및 연결 시도 지표가 있는 지표 동작 편집 섹션에서 알람 트리거, 알림 및 ML 탐지 신뢰 수준에 대한 데이터 포인트를 구성할 수 있습니다.\]](http://docs.aws.amazon.com/ko_kr/iot-device-defender/latest/devguide/images/dd-ml-update-config.png)

1. 완료했으면 **다음**을 선택합니다.

1. **구성 검토** 페이지에서 기계 학습에서 모니터링할 동작을 확인하고 **다음**을 선택합니다.  
![\[권한 부여 실패, 바이트 아웃, 연결 시도 및 연결 끊김에 대한 지표 동작과 함께 등록된 모든 사물을 대상으로 하는 Smart_lights_ML_Detect_Security_Profile이 표시되어 있는 ML 보안 프로필 편집 페이지입니다.\]](http://docs.aws.amazon.com/ko_kr/iot-device-defender/latest/devguide/images/dd-ml-review-config.png)

   

1. 보안 프로파일을 생성한 후에는 **보안 프로파일** 페이지로 리디렉션되어 새로 만든 보안 프로파일이 나타납니다.
**참고**  
초기 ML 모델 훈련 및 제작을 완료하는 데 14일이 걸립니다. 디바이스에 비정상적인 활동이 있는 경우 완료된 후 경보가 표시될 것으로 예상할 수 있습니다.

### ML 모델 상태 모니터링
<a name="monitor-ml-models-console"></a>

ML 모델이 초기 교육 기간에 있는 동안 다음 단계를 수행하여 언제든지 진행 상황을 모니터링할 수 있습니다.

1. [AWS IoT 콘솔](https://console.aws.amazon.com/iot)의 탐색 창에서 **방어**를 확장한 다음 **감지**, **보안 프로파일**을 차례로 선택합니다.

1. **보안 프로파일** 페이지에서 검토하려는 보안 프로파일을 선택합니다. 그런 다음 **동작 및 ML 교육**을 선택합니다.

1. **동작 및 ML 교육** 페이지에서 ML 모델의 교육 진행 상황을 확인하세요.

   모델 상태가 **활성 상태**이면 사용량에 따라 감지 결정을 내리고 매일 프로파일을 업데이트합니다.  
![\[TCP/UDP 수신 포트 및 설정된 TCP 연결을 모니터링하기 위한 낮은 신뢰도 기계 학습 모델을 보여주는 대시보드입니다.\]](http://docs.aws.amazon.com/ko_kr/iot-device-defender/latest/devguide/images/dd-ml-active-state.png)

**참고**  
모델이 예상대로 진행되지 않는 경우 디바이스가 [최소 요구 사항](dd-detect-ml.md#dd-detect-ml-requirements)을 충족하는지 확인합니다.

### ML Detect 경보 검토
<a name="review-ml-alarms-console"></a>

ML 모델을 빌드하고 데이터 추론을 준비한 후에는 모델에서 식별되는 경보를 정기적으로 확인 및 조사할 수 있습니다.

1. [AWS IoT 콘솔](https://console.aws.amazon.com/iot)의 탐색 창에서 **방어**를 확장한 다음 **감지**, **경보**를 차례로 선택합니다.  
![\[사물 이름, 보안 프로필, 동작 유형, 동작 이름, 마지막으로 발생한 시간 및 확인 상태 열과 함께 5개의 활성 권한 부여 실패 경보가 표시되어 있는 AWS IoT Device Defender 알람 목록입니다.\]](http://docs.aws.amazon.com/ko_kr/iot-device-defender/latest/devguide/images/dd-ml-alarms.png)

1. **기록** 탭으로 이동하여 더 이상 경보에 표시되지 않는 디바이스에 대한 세부 정보를 볼 수도 있습니다.  
![\[Y축에는 경보 수가, X축에는 날짜가 표시된 2주 동안의 경보 발생, 해제, 무효화 현황이 표시되어 있는 선 그래프입니다.\]](http://docs.aws.amazon.com/ko_kr/iot-device-defender/latest/devguide/images/dd-ml-history-alarm.png)

   자세한 정보를 보려면 **관리** 아래 **사물**에서 자세한 내용을 보고 싶은 사물을 선택한 다음 **Defender 지표**로 이동합니다. **Defender 지표 그래프**에 액세스하고 **활성 상태** 탭에서 경보에 표시된 모든 것에 대한 조사를 수행할 수 있습니다. 이 경우 경보를 시작한 메시지 크기의 스파이크가 그래프에 표시됩니다. 이후에 경보가 지워지는 것을 볼 수 있습니다.  
![\[지정된 날짜 및 시간에 801바이트에서 피크가 발생한 메시지 크기 최대 지표 그래프가 표시된 IoT 사물 대시보드입니다.\]](http://docs.aws.amazon.com/ko_kr/iot-device-defender/latest/devguide/images/dd-ml-defender-metrics.png)

### ML 경보 미세 조정
<a name="fine-tune-ml-models-console"></a>

ML 모델을 빌드하고 데이터 평가를 위한 준비가 완료되면 보안 프로파일의 ML 동작 설정을 업데이트하여 구성을 변경할 수 있습니다. 다음 절차에서는 AWS CLI에서 보안 프로파일의 ML 동작 설정을 업데이트하는 방법을 보여 줍니다.

1. [AWS IoT 콘솔](https://console.aws.amazon.com/iot)의 탐색 창에서 **방어**를 확장한 다음 **감지**, **보안 프로파일**을 차례로 선택합니다.

1. **보안 프로파일** 페이지에서 검토하려는 보안 프로파일 옆에 있는 확인란을 선택합니다. **작업**, **편집**을 차례로 선택합니다.  
![\[프로필 이름, ML 임계값 유형, 유지되는 동작, 대상 사물, 생성 날짜, 알림 상태가 표시된 AWS IoT Device Defender 보안 프로필 목록\]](http://docs.aws.amazon.com/ko_kr/iot-device-defender/latest/devguide/images/dd-ml-fine-tune.png)

1. **기본 구성 설정**에서 보안 프로파일 대상 사물 그룹을 조정하거나 모니터링할 지표를 변경할 수 있습니다.  
![\[등록된 모든 항목을 대상으로 선택하고, 권한 부여 실패 및 연결 시도와 같은 지표 동작을 나열하고, 클라우드 또는 디바이스 측 지표를 추가하는 옵션을 사용하여 ML 보안 프로필 구성 페이지를 생성합니다.\]](http://docs.aws.amazon.com/ko_kr/iot-device-defender/latest/devguide/images/dd-ml-set-basic.png)

1. **지표 동작 편집**으로 이동하여 다음을 업데이트할 수 있습니다.
   + 경보를 시작하는 데 필요한 ML 모델 데이터 포인트
   + 경보를 지우는 데 필요한 ML 모델 데이터 포인트
   + ML Detect 신뢰 수준
   + ML Detect 알림(예: **금지되지 않음**, **금지됨**)  
![\[ML 보안 프로필에 대한 권한 부여 실패, 바이트 아웃 및 연결 시도 지표를 구성하는 옵션이 있는 지표 동작 편집 섹션입니다.\]](http://docs.aws.amazon.com/ko_kr/iot-device-defender/latest/devguide/images/dd-ml-update-config-2.png)

### 경보의 확인 상태 표시
<a name="mark-your-alarms"></a>

확인 상태를 설정하고 해당 확인 상태에 대한 설명을 제공하여 경보를 표시합니다. 이를 통해 사용자와 팀이 응답할 필요가 없는 경보를 식별할 수 있습니다.

1. [AWS IoT 콘솔](https://console.aws.amazon.com/iot/)의 탐색 창에서 **방어(Defend)**를 확장한 다음 **감지(Detect)**, **경보(Alarms)**를 차례로 선택합니다. 경보를 선택하여 확인 상태를 표시합니다.  
![\[fdsa 보안 프로필이 있는 iotconsole-6f8379bc-c245-4ffe-8ef7-b2b52e78975c와 같은 IoT 콘솔 사물에 대한 활성 권한 부여 실패 동작 이벤트를 보여주는 AWS IoT Device Defender 경보 보기입니다.\]](http://docs.aws.amazon.com/ko_kr/iot-device-defender/latest/devguide/images/dd-ml-alarm-select.png)

1. **확인 상태 표시(Mark verification state)**를 선택합니다. 확인 상태 모달이 열립니다.

1. 적절한 확인 상태를 선택하고 확인 설명(선택 사항)을 입력한 다음 **표시(Mark)**를 선택합니다. 이 작업은 선택한 경보에 확인 상태 및 설명을 할당합니다.  
![\[알 수 없음, 진양성, 오탐, 양성 옵션으로 경보 확인 상태가 표시된 대화 상자입니다\]](http://docs.aws.amazon.com/ko_kr/iot-device-defender/latest/devguide/images/dd-ml-alarm-state-window.png)

### 식별된 디바이스 문제 완화
<a name="mitigate-ml-issues-console"></a>

1. *(선택 사항)* 격리 완화 작업을 설정하기 전에 위반 중인 디바이스를 이동할 격리 그룹을 설정해 보겠습니다. 기존 그룹을 사용할 수 있습니다.

1. **관리**, **사물 그룹**, **사물 그룹 생성**으로 차례로 이동합니다. 사물 그룹의 이름을 지정합니다. 이 자습서에서는 사물 그룹의 이름을 `Quarantine_group`(으)로 지정합니다. **사물 그룹**, **보안**에서 사물 그룹에 다음 정책을 적용합니다.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Deny",
               "Action": "iot:*",
               "Resource": "*"
           }
       ]
   }
   ```

------  
![\[사물 그룹 생성 버튼이 있는 AWS IoT 콘솔 사물 그룹 생성 페이지입니다.\]](http://docs.aws.amazon.com/ko_kr/iot-device-defender/latest/devguide/images/dd-create-thing-group.png)

   완료했으면 **사물 그룹 만들기**를 선택합니다.

1. 이제 사물 그룹을 생성했으므로 경보가 발생하는 디바이스를 `Quarantine_group`으로 이동하는 완화 작업을 생성해 보겠습니다.

   **방어**, **완화 작업**에서 **생성**을 선택합니다.  
![\[작업 이름, 작업 유형, 권한, 작업 실행 역할 및 사물 그룹 필드가 표시되어 있는 AWS IoT Device Defender 완화 작업 구성 양식입니다.\]](http://docs.aws.amazon.com/ko_kr/iot-device-defender/latest/devguide/images/dd-miti-create.png)

1. **새 완화 작업 생성** 페이지에서 다음 정보를 입력합니다.
   + **작업 이름**: 완화 작업의 이름을 지정합니다(예:**Quarantine\$1action**).
   + **작업 유형**: 작업 유형을 선택합니다. 여기서는 **사물 그룹에 사물 추가(감사 또는 감지 완화)**를 선택할 것입니다.
   + **작업 실행 역할**: 역할을 생성하거나 이전에 생성한 기존 역할을 선택합니다.
   + **파라미터**: 사물 그룹을 선택합니다. 이전에 생성한 `Quarantine_group`을(를) 사용할 수 있습니다.  
![\[작업 이름, 작업 유형, 권한, 작업 실행 역할 및 사물 그룹 필드가 표시되어 있는 AWS IoT Device Defender 완화 작업 구성 양식입니다.\]](http://docs.aws.amazon.com/ko_kr/iot-device-defender/latest/devguide/images/dd-miti-create-form.png)

   완료되면 **저장**을 선택합니다. 이제 경보에 있는 디바이스를 격리 사물 그룹으로 이동하는 완화 작업과 조사하는 동안 디바이스를 격리하는 완화 작업이 있습니다.

1. **Defender**, **감지**, **경보**로 차례로 이동합니다. **활성 상태** 아래에서 어떤 디바이스가 경보 상태에 있는지 확인할 수 있습니다.  
![\[사물 이름, 보안 프로필, 동작 유형, 동작 이름, 마지막으로 발생한 시간 및 확인 상태 열과 함께 5개의 활성 권한 부여 실패 경보가 표시되어 있는 AWS IoT Device Defender 알람 목록입니다.\]](http://docs.aws.amazon.com/ko_kr/iot-device-defender/latest/devguide/images/dd-ml-alarms.png)

   격리 그룹으로 이동할 디바이스를 선택하고 **완화 작업 시작**을 선택합니다.

1. **완화 작업 시작**, **시작 작업**에서, 앞에서 생성한 완화 작업을 선택합니다. 예를 들어, **Quarantine\$1action**을 선택한 다음 **시작**을 선택합니다. 작업 태스크 페이지가 열립니다.  
![\[완화 조치 대화 상자에서 'udml7'이 영향을 받는 항목으로 나열되고, 되돌릴 수 없는 조치를 확인하는 확인란과 실행할 작업을 선택하는 드롭다운이 표시됩니다.\]](http://docs.aws.amazon.com/ko_kr/iot-device-defender/latest/devguide/images/dd-ml-start-action.png)

1. 이제 디바이스는 **Quarantine\$1group**에 격리되고 경보를 설정한 문제의 근본 원인을 조사할 수 있습니다. 조사를 완료한 후 디바이스를 사물 그룹 밖으로 이동하거나 추가 작업을 수행할 수 있습니다.  
![\[quarantine_group 사물 그룹에 사물을 추가할 하나의 검역 작업이 표시된 AWS IoT Device Defender 작업 감지 작업 표입니다.\]](http://docs.aws.amazon.com/ko_kr/iot-device-defender/latest/devguide/images/dd-ml-action-tasks.png)

   

## CLI에서 ML 검색을 사용하는 방법
<a name="dd-detect-ml-cli"></a>

다음은 CLI를 사용하여 ML 검색을 설정하는 방법을 보여줍니다.

**Topics**
+ [

### ML Detect 활성화
](#enable-ml-detect-cli)
+ [

### ML 모델 상태 모니터링
](#monitor-ml-models-cli)
+ [

### ML Detect 경보 검토
](#review-ml-alarms-cli)
+ [

### ML 경보 미세 조정
](#fine-tune-ml-models-cli)
+ [

### 경보의 확인 상태 표시
](#mark-verification-state-cli)
+ [

### 식별된 디바이스 문제 완화
](#mitigate-issues-cli)

### ML Detect 활성화
<a name="enable-ml-detect-cli"></a>

다음 절차에서는 AWS CLI에서 ML Detect를 활성화하는 방법을 보여 줍니다.

1. 디바이스가 모델의 지속적인 교육 및 새로 고침을 위한 [ML Detect 최소 요구 사항](dd-detect-ml.md#dd-detect-ml-requirements)에 정의된 대로 필요한 최소 데이터 포인트를 생성하는지 확인하세요. 데이터 수집을 진행하려면 해당 사물이 보안 프로파일에 연결된 사물 그룹에 있어야 합니다.

1. `[create-security-profile](https://docs.aws.amazon.com/cli/latest/reference/iot/create-security-profile.html)` 명령을 사용하여 ML Detect 보안 프로파일을 만듭니다. 다음 예제에서는 전송된 메시지 수, 권한 부여 실패 수, 연결 시도 횟수 및 연결 해제 수를 확인하는 *security-profile-for-smart-lights*라는 보안 프로파일을 생성합니다. 이 예에서는 `mlDetectionConfig`을(를) 사용하여 지표가 ML Detect 모델을 사용하도록 설정합니다.

   ```
   aws iot create-security-profile \
       --security-profile-name security-profile-for-smart-lights \
       --behaviors \
        '[{
       "name": "num-messages-sent-ml-behavior",
       "metric": "aws:num-messages-sent",
       "criteria": {
         "consecutiveDatapointsToAlarm": 1,
         "consecutiveDatapointsToClear": 1,
         "mlDetectionConfig": {
           "confidenceLevel": "HIGH"
         }
       },
       "suppressAlerts": true
     },
     {
       "name": "num-authorization-failures-ml-behavior",
       "metric": "aws:num-authorization-failures",
       "criteria": {
         "consecutiveDatapointsToAlarm": 1,
         "consecutiveDatapointsToClear": 1,
         "mlDetectionConfig": {
           "confidenceLevel": "HIGH"
         }
       },
       "suppressAlerts": true
     },
     {
       "name": "num-connection-attempts-ml-behavior",
       "metric": "aws:num-connection-attempts",
       "criteria": {
         "consecutiveDatapointsToAlarm": 1,
         "consecutiveDatapointsToClear": 1,
         "mlDetectionConfig": {
           "confidenceLevel": "HIGH"
         }
       },
       "suppressAlerts": true
     },
     {
       "name": "num-disconnects-ml-behavior",
       "metric": "aws:num-disconnects",
       "criteria": {
         "consecutiveDatapointsToAlarm": 1,
         "consecutiveDatapointsToClear": 1,
         "mlDetectionConfig": {
           "confidenceLevel": "HIGH"
         }
       },
       "suppressAlerts": true
     }]'
   ```

   출력:

   ```
   {
       "securityProfileName": "security-profile-for-smart-lights",
       "securityProfileArn": "arn:aws:iot:eu-west-1:123456789012:securityprofile/security-profile-for-smart-lights"
     }
   ```

1. 그런 다음 보안 프로파일을 하나 또는 여러 개의 사물 그룹과 연결합니다. `[attach-security-profile](https://docs.aws.amazon.com/cli/latest/reference/iot/attach-security-profile.html)` 명령을 사용하여 사물 그룹을 보안 프로파일에 연결합니다. 다음 예에서는 *ML\$1Detect\$1beta\$1static\$1group*이라는 사물 그룹을 *security-profile-for-smart-lights* 보안 프로파일과 연결합니다.

   ```
   aws iot attach-security-profile \
   --security-profile-name security-profile-for-smart-lights \
   --security-profile-target-arn arn:aws:iot:eu-west-1:123456789012:thinggroup/ML_Detect_beta_static_group
   ```

   출력:

   없음.

1. 전체 보안 프로파일을 만든 후 ML 모델이 교육을 시작합니다. 초기 ML 모델 훈련 및 구축을 완료하는 데 14일이 걸립니다. 14일 후 디바이스에 비정상적인 활동이 있는 경우 경보가 표시될 것으로 예상할 수 있습니다.

### ML 모델 상태 모니터링
<a name="monitor-ml-models-cli"></a>

다음 절차에서는 진행 중인 교육 중인 ML 모델을 모니터링하는 방법을 소개합니다.
+ `[get-behavior-model-training-summaries](https://docs.aws.amazon.com/cli/latest/reference/iot/get-behavior-model-training-summaries.html)` 명령을 사용하여 ML 모델의 진행 상황을 볼 수 있습니다. 다음 예는 *security-profile-for-smart-lights* 보안 프로파일에 대한 ML 모델 훈련 진행률 요약을 가져옵니다. `modelStatus`는 모델이 교육을 완료했거나 특정 동작에 대한 빌드를 보류 중인지 여부를 보여줍니다.

  ```
  aws iot get-behavior-model-training-summaries \
     --security-profile-name security-profile-for-smart-lights
  ```

  출력:

  ```
  {
      "summaries": [
          {
              "securityProfileName": "security-profile-for-smart-lights",
              "behaviorName": "Messages_sent_ML_behavior",
              "trainingDataCollectionStartDate": "2020-11-30T14:00:00-08:00",
              "modelStatus": "ACTIVE",
              "datapointsCollectionPercentage": 29.408,
              "lastModelRefreshDate": "2020-12-07T14:35:19.237000-08:00"
          },
          {
              "securityProfileName": "security-profile-for-smart-lights",
              "behaviorName": "Messages_received_ML_behavior",
              "modelStatus": "PENDING_BUILD",
              "datapointsCollectionPercentage": 0.0
          },
          {
              "securityProfileName": "security-profile-for-smart-lights",
              "behaviorName": "Authorization_failures_ML_behavior",
              "trainingDataCollectionStartDate": "2020-11-30T14:00:00-08:00",
              "modelStatus": "ACTIVE",
              "datapointsCollectionPercentage": 35.464,
              "lastModelRefreshDate": "2020-12-07T14:29:44.396000-08:00"
          },
          {
              "securityProfileName": "security-profile-for-smart-lights",
              "behaviorName": "Message_size_ML_behavior",
              "trainingDataCollectionStartDate": "2020-11-30T14:00:00-08:00",
              "modelStatus": "ACTIVE",
              "datapointsCollectionPercentage": 29.332,
              "lastModelRefreshDate": "2020-12-07T14:30:44.113000-08:00"
          },
          {
              "securityProfileName": "security-profile-for-smart-lights",
              "behaviorName": "Connection_attempts_ML_behavior",
              "trainingDataCollectionStartDate": "2020-11-30T14:00:00-08:00",
              "modelStatus": "ACTIVE",
              "datapointsCollectionPercentage": 32.891999999999996,
              "lastModelRefreshDate": "2020-12-07T14:29:43.121000-08:00"
          },
          {
              "securityProfileName": "security-profile-for-smart-lights",
              "behaviorName": "Disconnects_ML_behavior",
              "trainingDataCollectionStartDate": "2020-11-30T14:00:00-08:00",
              "modelStatus": "ACTIVE",
              "datapointsCollectionPercentage": 35.46,
              "lastModelRefreshDate": "2020-12-07T14:29:55.556000-08:00"
          }
      ]
  }
  ```

**참고**  
모델이 예상대로 진행되지 않는 경우 디바이스가 [최소 요구 사항](dd-detect-ml.md#dd-detect-ml-requirements)을 충족하는지 확인합니다.

### ML Detect 경보 검토
<a name="review-ml-alarms-cli"></a>

ML 모델을 빌드하고 데이터 평가를 위해 준비한 후에는 모델에서 추론하는 경보를 정기적으로 볼 수 있습니다. 다음 절차에서는 AWS CLI에서 경보를 보는 방법을 보여 줍니다.
+ 모든 활성 경보를 보려면 `[list-active-violations](https://docs.aws.amazon.com/cli/latest/reference/iot/list-active-violations.html)` 명령을 사용합니다.

  ```
  aws iot list-active-violations \
  --max-results 2
  ```

  출력:

  ```
  {
      "activeViolations": []
  }
  ```

  또는 `[list-violation-events](https://docs.aws.amazon.com/cli/latest/reference/iot/list-violation-events.html)` 명령을 사용하여 주어진 기간 동안 발견된 모든 위반을 볼 수 있습니다. 다음 예는 2020년 9월 22일 5:42:13 GMT부터 2020년 10월 26일 5:42:13 GMT까지의 위반 이벤트를 나열합니다.

  ```
  aws iot list-violation-events \
      --start-time 1599500533 \ 
      --end-time 1600796533 \
      --max-results 2
  ```

  출력:

  ```
  {
      "violationEvents": [
          {
              "violationId": "1448be98c09c3d4ab7cb9b6f3ece65d6",
              "thingName": "lightbulb-1",
              "securityProfileName": "security-profile-for-smart-lights",
              "behavior": {
                  "name": "LowConfidence_MladBehavior_MessagesSent",
                  "metric": "aws:num-messages-sent",
                  "criteria": {
                      "consecutiveDatapointsToAlarm": 1,
                      "consecutiveDatapointsToClear": 1,
                      "mlDetectionConfig": {
                          "confidenceLevel": "HIGH"
                      }
                  },
                  "suppressAlerts": true
              },
              "violationEventType": "alarm-invalidated",
              "violationEventTime": 1600780245.29
          },
          {
              "violationId": "df4537569ef23efb1c029a433ae84b52",
              "thingName": "lightbulb-2",
              "securityProfileName": "security-profile-for-smart-lights",
              "behavior": {
                  "name": "LowConfidence_MladBehavior_MessagesSent",
                  "metric": "aws:num-messages-sent",
                  "criteria": {
                      "consecutiveDatapointsToAlarm": 1,
                      "consecutiveDatapointsToClear": 1,
                      "mlDetectionConfig": {
                          "confidenceLevel": "HIGH"
                      }
                  },
                  "suppressAlerts": true
              },
              "violationEventType": "alarm-invalidated",
              "violationEventTime": 1600780245.281
          }
      ],
      "nextToken": "Amo6XIUrsOohsojuIG6TuwSR3X9iUvH2OCksBZg6bed2j21VSnD1uP1pflxKX1+a3cvBRSosIB0xFv40kM6RYBknZ/vxabMe/ZW31Ps/WiZHlr9Wg7R7eEGli59IJ/U0iBQ1McP/ht0E2XA2TTIvYeMmKQQPsRj/eoV9j7P/wveu7skNGepU/mvpV0O2Ap7hnV5U+Prx/9+iJA/341va+pQww7jpUeHmJN9Hw4MqW0ysw0Ry3w38hOQWEpz2xwFWAxAARxeIxCxt5c37RK/lRZBlhYqoB+w2PZ74730h8pICGY4gktJxkwHyyRabpSM/G/f5DFrD9O5v8idkTZzBxW2jrbzSUIdafPtsZHL/yAMKr3HAKtaABz2nTsOBNre7X2d/jIjjarhon0Dh9l+8I9Y5Ey+DIFBcqFTvhibKAafQt3gs6CUiqHdWiCenfJyb8whmDE2qxvdxGElGmRb+k6kuN5jrZxxw95gzfYDgRHv11iEn8h1qZLD0czkIFBpMppHj9cetHPvM+qffXGAzKi8tL6eQuCdMLXmVE3jbqcJcjk9ItnaYJi5zKDz9FVbrz9qZZPtZJFHp"
  }
  ```

### ML 경보 미세 조정
<a name="fine-tune-ml-models-cli"></a>

ML 모델을 빌드하고 데이터 평가를 위한 준비가 완료되면 보안 프로파일의 ML 동작 설정을 업데이트하여 구성을 변경할 수 있습니다. 다음 절차에서는 AWS CLI에서 보안 프로파일의 ML 동작 설정을 업데이트하는 방법을 보여 줍니다.
+ 보안 프로파일의 ML 동작 설정을 변경하려면 `[update-security-profile](https://docs.aws.amazon.com/cli/latest/reference/iot/update-security-profile.html)` 명령을 사용하세요. 다음 예에서는 몇 가지 동작의 `confidenceLevel`을(를) 변경하여 *security-profile-for-smart-lights* 보안 프로파일의 동작을 업데이트하고 모든 동작에 대한 알림을 금지하지 않습니다.

  ```
  aws iot update-security-profile \
      --security-profile-name security-profile-for-smart-lights \
      --behaviors \
       '[{
        "name": "num-messages-sent-ml-behavior",
        "metric": "aws:num-messages-sent",
        "criteria": {
            "mlDetectionConfig": {
                "confidenceLevel" : "HIGH"
            }
        },
        "suppressAlerts": false
    },
    {
        "name": "num-authorization-failures-ml-behavior",
        "metric": "aws:num-authorization-failures",
        "criteria": {
            "mlDetectionConfig": {
                "confidenceLevel" : "HIGH"
            }
        },
        "suppressAlerts": false
    },
    {
        "name": "num-connection-attempts-ml-behavior",
        "metric": "aws:num-connection-attempts",
        "criteria": {
            "mlDetectionConfig": {
                "confidenceLevel" : "HIGH"
            }
        },
        "suppressAlerts": false
    },
    {
        "name": "num-disconnects-ml-behavior",
        "metric": "aws:num-disconnects",
        "criteria": {
            "mlDetectionConfig": {
                "confidenceLevel" : "LOW"
            }
        },
        "suppressAlerts": false
  
    }]'
  ```

  출력:

  ```
   {
      "securityProfileName": "security-profile-for-smart-lights",
      "securityProfileArn": "arn:aws:iot:eu-west-1:123456789012:securityprofile/security-profile-for-smart-lights",
      "behaviors": [
          {
              "name": "num-messages-sent-ml-behavior",
              "metric": "aws:num-messages-sent",
              "criteria": {
                  "mlDetectionConfig": {
                      "confidenceLevel": "HIGH"
                  }
              }
          },
          {
              "name": "num-authorization-failures-ml-behavior",
              "metric": "aws:num-authorization-failures",
              "criteria": {
                  "mlDetectionConfig": {
                      "confidenceLevel": "HIGH"
                  }
              }
          },
          {
              "name": "num-connection-attempts-ml-behavior",
              "metric": "aws:num-connection-attempts",
              "criteria": {
                  "mlDetectionConfig": {
                      "confidenceLevel": "HIGH"
                  }
              },
              "suppressAlerts": false
          },
          {
              "name": "num-disconnects-ml-behavior",
              "metric": "aws:num-disconnects",
              "criteria": {
                  "mlDetectionConfig": {
                      "confidenceLevel": "LOW"
                  }
              },
              "suppressAlerts": true
          }
      ],
      "version": 2,
      "creationDate": 1600799559.249,
      "lastModifiedDate": 1600800516.856
  }
  ```

### 경보의 확인 상태 표시
<a name="mark-verification-state-cli"></a>

경보를 분류하고 이상을 조사하는 데 도움이 되도록 경보에 확인 상태를 표시할 수 있습니다.
+ 경보에 확인 상태와 해당 상태에 대한 설명을 표시합니다. 예를 들어 경보의 확인 상태를 거짓 긍정으로 설정하려면 다음 명령을 사용합니다.

  ```
  aws iot put-verification-state-on-violation --violation-id 12345  --verification-state FALSE_POSITIVE --verification-state-description "This is dummy description"  --endpoint https://us-east-1.iot.amazonaws.com --region us-east-1
  ```

  출력:

  없음.

### 식별된 디바이스 문제 완화
<a name="mitigate-issues-cli"></a>

1. `[create-thing-group](https://docs.aws.amazon.com/cli/latest/reference/iot/create-thing-group.html)` 명령을 사용하여 완화 작업을 위한 사물 그룹을 생성합니다. 다음 예에서는 **ThingGroupForDetectMitigationAction**이라는 사물 그룹을 생성합니다.

   ```
   aws iot create-thing-group —thing-group-name ThingGroupForDetectMitigationAction
   ```

   출력:

   ```
   {
    "thingGroupName": "ThingGroupForDetectMitigationAction",
    "thingGroupArn": "arn:aws:iot:us-east-1:123456789012:thinggroup/ThingGroupForDetectMitigationAction",
    "thingGroupId": "4139cd61-10fa-4c40-b867-0fc6209dca4d"
   }
   ```

1. 다음으로 `[create-mitigation-action](https://docs.aws.amazon.com/cli/latest/reference/iot/create-mitigation-action.html)` 명령을 사용하여 완화 작업을 생성합니다. 다음 예에서는 완화 작업을 적용하는 데 사용되는 IAM 역할의 ARN을 통해 **detect\$1mitigation\$1action**이라는 완화 작업을 생성합니다. 작업 유형과 해당 작업의 파라미터도 정의합니다. 이 경우, 완화 작업으로 인해 사물은 이전에 생성된 **ThingGroupForDetectMitigationAction**이라는 사물 그룹으로 이동됩니다.

   ```
   aws iot create-mitigation-action --action-name detect_mitigation_action \
   --role-arn arn:aws:iam::123456789012:role/MitigationActionValidRole \
   --action-params \  
   '{
        "addThingsToThingGroupParams": {
            "thingGroupNames": ["ThingGroupForDetectMitigationAction"],
            "overrideDynamicGroups": false
        }
    }'
   ```

   출력:

   ```
   {
    "actionArn": "arn:aws:iot:us-east-1:123456789012:mitigationaction/detect_mitigation_action",
    "actionId": "5939e3a0-bf4c-44bb-a547-1ab59ffe67c3"
   }
   ```

1. `[start-detect-mitigation-actions-task](https://docs.aws.amazon.com/cli/latest/reference/iot/start-detect-mitigation-actions-task.html)` 명령을 사용하여 완화 작업 태스크를 시작합니다. `task-id`,`target` 및 `actions`은(는) 필수 파라미터입니다.

   ```
   aws iot start-detect-mitigation-actions-task \
       --task-id taskIdForMitigationAction \
       --target '{ "violationIds" : [ "violationId-1", "violationId-2" ] }' \
       --actions "detect_mitigation_action" \
       --include-only-active-violations \
       --include-suppressed-alerts
   ```

   출력:

   ```
   {
       "taskId": "taskIdForMitigationAction"
   }
   ```

1. (선택 사항) 태스크에 포함된 완화 작업 실행을 보려면 `[list-detect-mitigation-actions-executions](https://docs.aws.amazon.com/cli/latest/reference/iot/list-detect-mitigation-actions-executions.html)` 명령을 사용합니다.

   ```
   aws iot list-detect-mitigation-actions-executions \
       --task-id taskIdForMitigationAction \
       --max-items 5 \
       --page-size 4
   ```

   출력:

   ```
   {
       "actionsExecutions": [
           {
               "taskId": "e56ee95e - f4e7 - 459 c - b60a - 2701784290 af",
               "violationId": "214_fe0d92d21ee8112a6cf1724049d80",
               "actionName": "underTest_MAThingGroup71232127",
               "thingName": "cancelDetectMitigationActionsTaskd143821b",
               "executionStartDate": "Thu Jan 07 18: 35: 21 UTC 2021",
               "executionEndDate": "Thu Jan 07 18: 35: 21 UTC 2021",
               "status": "SUCCESSFUL",
           }
       ]
   }
   ```

1. (선택 사항) `[describe-detect-mitigation-actions-task](https://docs.aws.amazon.com/cli/latest/reference/iot/describe-detect-mitigation-actions-task.html)` 명령을 사용하여 완화 작업 태스크에 대한 정보를 확인합니다.

   ```
   aws iot describe-detect-mitigation-actions-task \
       --task-id taskIdForMitigationAction
   ```

   출력:

   ```
   {
       "taskSummary": {
           "taskId": "taskIdForMitigationAction",
           "taskStatus": "SUCCESSFUL",
           "taskStartTime": 1609988361.224,
           "taskEndTime": 1609988362.281,
           "target": {
               "securityProfileName": "security-profile-for-smart-lights",
               "behaviorName": "num-messages-sent-ml-behavior"
           },
           "violationEventOccurrenceRange": {
               "startTime": 1609986633.0,
               "endTime": 1609987833.0
           },
           "onlyActiveViolationsIncluded": true,
           "suppressedAlertsIncluded": true,
           "actionsDefinition": [
               {
                   "name": "detect_mitigation_action",
                   "id": "5939e3a0-bf4c-44bb-a547-1ab59ffe67c3",
                   "roleArn": "arn:aws:iam::123456789012:role/MitigatioActionValidRole",
                   "actionParams": {
                       "addThingsToThingGroupParams": {
                           "thingGroupNames": [
                               "ThingGroupForDetectMitigationAction"
                           ],
                           "overrideDynamicGroups": false
                       }
                   }
               }
           ],
           "taskStatistics": {
               "actionsExecuted": 0,
               "actionsSkipped": 0,
               "actionsFailed": 0
           }
       }
   }
   ```

1. (선택 사항) 완화 작업 태스크 목록을 가져오려면 `[list-detect-mitigation-actions-tasks](https://docs.aws.amazon.com/cli/latest/reference/iot/list-detect-mitigation-actions-tasks.html)` 명령을 사용합니다.

   ```
   aws iot list-detect-mitigation-actions-tasks \
       --start-time 1609985315 \
       --end-time 1609988915 \
       --max-items 5 \
       --page-size 4
   ```

   출력:

   ```
   {
       "tasks": [
           {
               "taskId": "taskIdForMitigationAction",
               "taskStatus": "SUCCESSFUL",
               "taskStartTime": 1609988361.224,
               "taskEndTime": 1609988362.281,
               "target": {
                   "securityProfileName": "security-profile-for-smart-lights",
                   "behaviorName": "num-messages-sent-ml-behavior"
               },
               "violationEventOccurrenceRange": {
                   "startTime": 1609986633.0,
                   "endTime": 1609987833.0
               },
               "onlyActiveViolationsIncluded": true,
               "suppressedAlertsIncluded": true,
               "actionsDefinition": [
                   {
                       "name": "detect_mitigation_action",
                       "id": "5939e3a0-bf4c-44bb-a547-1ab59ffe67c3",
                       "roleArn": "arn:aws:iam::123456789012:role/MitigatioActionValidRole",
                       "actionParams": {
                           "addThingsToThingGroupParams": {
                               "thingGroupNames": [
                                   "ThingGroupForDetectMitigationAction"
                               ],
                               "overrideDynamicGroups": false
                           }
                       }
                   }
               ],
               "taskStatistics": {
                   "actionsExecuted": 0,
                   "actionsSkipped": 0,
                   "actionsFailed": 0
               }
           }
       ]
   }
   ```

1. (선택 사항) 완화 작업 태스크 목록을 취소하려면 `[cancel-detect-mitigation-actions-task](https://docs.aws.amazon.com/cli/latest/reference/iot/cancel-detect-mitigation-actions-task.html)` 명령을 사용합니다.

   ```
   aws iot cancel-detect-mitigation-actions-task \
       --task-id taskIdForMitigationAction
   ```

   출력:

   없음.