

# 감사
<a name="device-defender-audit"></a>

AWS IoT Device Defender 감사에서는 계정 및 디바이스와 관련된 설정 및 정책에서 보안 조치가 구현되어 있는지 확인합니다. 감사는 보안 모범 사례 또는 액세스 정책(예: 동일한 자격 증명을 사용하는 복수의 디바이스 또는 한 디바이스가 다수의 다른 디바이스에서 데이터를 읽고 업데이트하도록 허용하는 과도하게 허용적인 정책)에서 벗어나는 사항을 감지하도록 도울 수 있습니다. 감사를 필요에 따라 실행(*온디맨드 감사*)하거나 정기적으로 실행되도록 예약(*예정된 감사*)할 수 있습니다.

AWS IoT Device Defender 감사에서는 일반적인 IoT 보안 모범 사례 및 디바이스 취약성에 대해 일련의 사전 정의된 점검을 실행합니다. 사전 정의된 점검의 예로는 복수의 디바이스에서 데이터를 읽고 업데이트할 권한을 부여하는 정책, 자격 증명(X.509 인증서)을 공유하는 디바이스 또는 만료되었거나 취소되었지만 여전히 활성 상태인 인증서가 포함됩니다.

## 문제 심각도
<a name="device-defender-audit-severity"></a>

문제 심각도는 식별된 각 규정 미준수 인스턴스와 관련된 문제 수준 및 권장 해결 시간을 나타냅니다.

**심각**  
이 심각도의 규정 미준수 감사 검사는 긴급한 주의가 필요한 문제를 식별합니다. 심각한 문제가 발생하면 특별한 자격 증명이 없는 악의적 행위자가 내부자도 모르는 사이 허술하게 자산에 접근하거나 제어하는 것이 쉬워질 수 있습니다.

**높음**  
이 심각도의 규정 미준수 감사 검사는 심각한 문제가 해결된 후 긴급한 조사 및 수정 계획이 필요합니다. 심각한 문제와 마찬가지로 높은 심각도 문제로 인해 악의적 행위자가 자산에 접근하거나 제어할 수 있는 경우가 종종 있습니다. 하지만 높은 심각도 문제는 도용하기가 더 어렵습니다. 이러한 경우는 특별한 도구, 내부자 지식 또는 특정 설정을 필요로 할 수도 있습니다.

**중간**  
이 심각도의 규정 미준수 감사 검사는 지속적인 보안 상태 유지 관리에서 주의를 기울여야 하는 문제를 나타냅니다. 중간 심각도 문제의 경우 보안 제어 오작동으로 인한 예기치 않은 중단과 같은 부정적인 작동 영향을 줄 수 있습니다. 이러한 문제의 경우에도 나쁜 의도의 행위자에게 자산에 대한 제한된 액세스 또는 제어를 제공하거나 이러한 행위자의 악의적인 작업 일부를 촉진할 수도 있습니다.

**낮음**  
이 심각도의 규정 미준수 감사 검사는 종종 보안 모범 사례가 간과되거나 무시되었음을 나타냅니다. 이러한 경우 자체적으로 보안에 즉각적인 영향을 주지는 않을 수도 있지만 악의적 행위자가 이러한 상태를 도용할 수 있습니다. 중간 심각도 문제와 마찬가지로 낮은 심각도 문제의 경우 지속적인 보안 상태 유지 관리에서 주의를 기울여야 합니다.

## 다음 단계
<a name="device-defender-audit-severity-next-steps"></a>

수행할 수 있는 감사 검사 유형을 이해하려면 [감사 검사](device-defender-audit-checks.md) 단원을 참조하세요. 감사에 적용되는 서비스 할당량에 대한 자세한 내용은 [서비스 할당량](https://docs.aws.amazon.com/general/latest/gr/iot-core.html#limits_iot) 섹션을 참조하세요.

# 감사 검사
<a name="device-defender-audit-checks"></a>

**참고**  
검사를 활성화하면 데이터 수집이 즉시 시작됩니다. 계정에서 수집할 데이터의 양이 많은 경우 검사를 활성화한 후 얼마 동안 검사 결과를 사용할 수 없을 수 있습니다.

지원되는 감사 검사는 다음과 같습니다.
+ [활성 디바이스 인증서에 대해 취소된 중간 CA 점검](audit-chk-active-intermediary-device-revoked-CA.md)
+ [취소된 CA 인증서가 계속 활성 상태](audit-chk-revoked-ca-cert.md)
+ [공유된 디바이스 인증서](audit-chk-device-cert-shared.md)
+ [디바이스 인증서 키 품질](audit-chk-device-cert-key-quality.md)
+ [CA 인증서 키 품질](audit-chk-ca-cert-key-quality.md)
+ [인증되지 않은 Cognito 역할이 지나치게 허용됨](audit-chk-unauth-cognito-role-permissive.md)
+ [인증된 Cognito 역할이 지나치게 허용됨](audit-chk-auth-cognito-role-permissive.md)
+ [AWS IoT지나치게 허용적인 정책](audit-chk-iot-policy-permissive.md)
+ [잘못 구성되었을 가능성이 있는 AWS IoT 정책](audit-chk-iot-misconfigured-policies.md)
+ [역할 별칭이 지나치게 허용됨](audit-chk-iot-role-alias-permissive.md)
+ [역할 별칭으로 사용되지 않는 서비스에 대한 액세스 허용](audit-chk-role-alias-unused-svcs.md)
+ [CA 인증서 만료](audit-chk-ca-cert-approaching-expiration.md)
+ [충돌하는 MQTT 클라이언트](audit-chk-conflicting-client-ids.md)
+ [디바이스 인증서 만료](audit-chk-device-cert-approaching-expiration.md)
+ [디바이스 인증서 수명 확인](device-certificate-age-check.md)
+ [취소된 디바이스 인증서가 계속 활성 상태](audit-chk-revoked-device-cert.md)
+ [로깅 비활성화](audit-chk-logging-disabled.md)

# 활성 디바이스 인증서에 대해 취소된 중간 CA 점검
<a name="audit-chk-active-intermediary-device-revoked-CA"></a>

중간 CA를 취소했음에도 불구하고 여전히 활성 상태인 모든 관련 디바이스 인증서를 식별하기 위해 이 점검을 사용합니다.

이 점검은 CLI 및 API에서 `INTERMEDIATE_CA_REVOKED_FOR_ACTIVE_DEVICE_CERTIFICATES_CHECK`와(과) 같이 나타납니다.

**심각도:** 심각

## 세부 사항
<a name="audit-chk-active-device-intermediary-revoked-CA-details"></a>

이 점검에서 규정 미준수가 발견된 경우 다음 사유 코드가 반환됩니다.
+ INTERMEDIATE\$1CA\$1REVOKED\$1BY\$1ISSUER

## 이것이 중요한 이유
<a name="audit-chk-active-device-intermediary-revoked-CA-why-it-matters"></a>

활성 디바이스 인증서에 대해 취소된 중간 CA 점검은 CA 체인에서 중간 발급 CA가 취소된 활성 디바이스 인증서가 AWS IoT Core에 있는지 확인하여 디바이스 아이덴티티 및 신뢰도를 평가합니다.

취소된 중간 CA는 더 이상 CA 체인의 다른 CA 또는 디바이스 인증서에 서명하는 데 사용되어서는 안 됩니다. 중간 CA가 취소된 후 이 CA 인증서를 사용하여 서명된 인증서가 새로 추가된 디바이스에 있는 경우에는 보안 위협이 됩니다.

## 수정 방법
<a name="audit-chk-active-device-intermediary-revoked-CA-how-to-fix"></a>

CA 인증서가 취소된 후 디바이스 인증서 등록 활동을 검토합니다. 그리고 보안 모범 사례를 따라 상황을 완화시킵니다. 수행 가능한 작업은 다음과 같습니다.

1. 영향을 받는 디바이스에 다른 CA에서 서명한 새 인증서를 제공합니다.

1. 새 인증서가 유효하고 디바이스가 해당 인증서를 사용하여 연결할 수 있는지 확인합니다.

1. [UpdateCertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateCertificate.html)을 사용하여 이전 인증서를 AWS IoT에서 취소됨(REVOKED)으로 표시합니다. 완화 작업을 사용하면 다음을 수행할 수 있습니다.
   + 이 변경사항을 실행하려면 감사 결과에서 `UPDATE_DEVICE_CERTIFICATE` 완화 작업을 적용합니다.
   + 조치를 취할 수 있는 그룹에 디바이스를 추가하려면 `ADD_THINGS_TO_THING_GROUP` 완화 조치를 적용합니다.
   + Amazon SNS 메시지에 대해 사용자 지정 응답을 구현하려면 `PUBLISH_FINDINGS_TO_SNS` 완화 작업을 적용합니다.
   + 중간 CA 인증서가 취소된 후 일정 기간에 대해 디바이스 인증서 등록 활동을 검토하여 해당 기간 동안 이 인증서를 사용하여 발급되었을 수 있는 디바이스 인증서를 취소할 것을 고려합니다. [ListRelatedResourcesForAuditFinding](https://docs.aws.amazon.com/iot/latest/apireference/API_ListRelatedResourcesForAuditFinding.html)을 사용하여 CA 인증서로 서명된 디바이스 인증서를 나열하고 [UpdateCertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateCertificate.html)를 사용하여 디바이스 인증서를 취소합니다.
   + 기존 인증서를 디바이스에서 분리합니다. ([DetachThingPrincipal](https://docs.aws.amazon.com/iot/latest/apireference/API_DetachThingPrincipal.html) 참조)

   자세한 내용은 [완화 작업](dd-mitigation-actions.md) 섹션을 참조하세요.

# 취소된 CA 인증서가 계속 활성 상태
<a name="audit-chk-revoked-ca-cert"></a>

CA 인증서가 취소되었지만 AWS IoT에서 계속 활성 상태입니다.

이 점검은 CLI 및 API에서 `REVOKED_CA_CERTIFICATE_STILL_ACTIVE_CHECK`와(과) 같이 나타납니다.

**심각도:** 심각

## 세부 사항
<a name="audit-chk-revoked-ca-cert-details"></a>

CA 인증서가 발급 기관이 관리하는 인증서 취소 목록에 취소됨으로 표시되지만 AWS IoT에는 여전히 ACTIVE 또는 PENDING\$1TRANSFER로 표시됩니다.

이 점검에서 규정 미준수 CA 인증서가 발견된 경우 다음 사유 코드가 반환됩니다.
+ CERTIFICATE\$1REVOKED\$1BY\$1ISSUER

## 이것이 중요한 이유
<a name="audit-chk-revoked-ca-cert-why-it-matters"></a>

취소된 CA 인증서는 더 이상 디바이스 인증서에 서명하는 데 사용해서는 안 됩니다. 손상되었기 때문에 해당 인증서가 취소되었을 수 있습니다. 새로 추가된 디바이스에 이 CA 인증서를 사용하여 서명된 인증서가 있는 경우에는 보안 위협이 발생할 수 있습니다.

## 수정 방법
<a name="audit-chk-revoked-ca-cert-how-to-fix"></a>

1. [UpdateCACertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateCACertificate.html)를 사용하여 AWS IoT에서 CA 인증서를 비활성(INACTIVE) 상태로 표시합니다. 완화 작업을 사용하면 다음을 수행할 수 있습니다.
   + 이 변경사항을 실행하려면 감사 결과에서 `UPDATE_CA_CERTIFICATE` 완화 작업을 적용합니다.
   + Amazon SNS 메시지에 대해 사용자 지정 응답을 구현하려면 `PUBLISH_FINDINGS_TO_SNS` 완화 작업을 적용합니다.

   자세한 내용은 [완화 작업](dd-mitigation-actions.md) 단원을 참조하세요.

1. CA 인증서가 취소된 후 일정 기간에 대해 디바이스 인증서 등록 활동을 검토하여 해당 기간 동안 이 인증서를 사용하여 발급되었을 수 있는 디바이스 인증서를 취소할 것을 고려합니다. [ListCertificatesByCA](https://docs.aws.amazon.com/iot/latest/apireference/API_ListCertificatesByCA.html)를 사용하여 CA 인증서로 서명된 디바이스 인증서를 나열하고 [UpdateCertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateCertificate.html)를 사용하여 디바이스 인증서를 취소합니다.

# 공유된 디바이스 인증서
<a name="audit-chk-device-cert-shared"></a>

다중 동시 연결은 동일한 X.509 인증서를 사용하여 AWS IoT에서 인증됩니다.

이 점검은 CLI 및 API에서 `DEVICE_CERTIFICATE_SHARED_CHECK`와(과) 같이 나타납니다.

**심각도:** 심각

## 세부 사항
<a name="audit-chk-device-cert-shared-details"></a>

온디맨드 감사의 일부로 이 점검을 수행하면 해당 점검에서는 점검이 실행되기 최대 2시간 전까지 감사 시작 전 31일 동안 디바이스에서 연결하기 위해 사용한 인증서 및 클라이언트 ID를 확인합니다. 예정된 감사의 경우 이 검사는 감사의 마지막 실행 2시간 전부터 감사의 이 인스턴스 시작 2시간 전까지의 데이터를 확인합니다. 점검된 시간 동안 이 상태를 완화하는 단계를 수행한 경우 문제가 지속되는지 여부를 확인하기 위해 동시 연결이 발생한 시기를 기록해 둡니다.

이 점검에서 규정 미준수 인증서가 발견된 경우 다음 사유 코드가 반환됩니다.
+ CERTIFICATE\$1SHARED\$1BY\$1MULTIPLE\$1DEVICES

또한, 이 점검에서 반환되는 결과에는 공유 인증서의 ID, 인증서를 사용하여 연결한 클라이언트의 ID 및 연결/연결 해제 횟수가 포함됩니다. 가장 최근 결과가 먼저 나열됩니다.

## 이것이 중요한 이유
<a name="audit-chk-device-cert-shared-why-it-matters"></a>

각 디바이스에는 AWS IoT 인증을 위한 고유한 인증서가 있어야 합니다. 여러 디바이스에서 동일한 인증서가 사용되는 경우 이는 디바이스 하나가 손상되었음을 나타내는 것일 수 있습니다. 해당 자격 증명이 복제되어 향후 시스템을 손상시킬 수 있습니다.

## 수정 방법
<a name="audit-chk-device-cert-shared-how-to-fix"></a>

디바이스 인증서가 손상되지 않았는지 확인합니다. 손상되었다면 보안 모범 사례를 따라 상황을 완화시킵니다.

여러 디바이스에 동일한 인증서를 사용하는 경우 다음을 수행할 수 있습니다.

1. 고유한 새 인증서를 프로비저닝하고 각 디바이스에 연결합니다.

1. 새 인증서가 유효하고 디바이스가 해당 인증서를 사용하여 연결할 수 있는지 확인합니다.

1. [UpdateCertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateCertificate.html)을 사용하여 이전 인증서를 AWS IoT에서 취소됨(REVOKED)으로 표시합니다. 완화 작업을 사용하여 다음을 수행할 수도 있습니다.
   + 이 변경사항을 실행하려면 감사 결과에서 `UPDATE_DEVICE_CERTIFICATE` 완화 작업을 적용합니다.
   + 조치를 취할 수 있는 그룹에 디바이스를 추가하려면 `ADD_THINGS_TO_THING_GROUP` 완화 조치를 적용합니다.
   + Amazon SNS 메시지에 대해 사용자 지정 응답을 구현하려면 `PUBLISH_FINDINGS_TO_SNS` 완화 작업을 적용합니다.

   자세한 내용은 [완화 작업](dd-mitigation-actions.md) 단원을 참조하세요.

1. 각 디바이스에서 이전 인증서를 분리합니다.

# 디바이스 인증서 키 품질
<a name="audit-chk-device-cert-key-quality"></a>

AWS IoT 고객은 종종 AWS IoT 메시지 브로커를 인증하기 위해 X.509 인증서를 사용하는 TLS 상호 인증에 의존합니다. 이러한 인증서 및 해당 인증 기관 인증서를 사용하려면 먼저 해당 AWS IoT 계정에 등록해야 합니다. AWS IoT는 등록 시 이러한 인증서에 대해 기본 안전성 점검을 수행합니다. 이러한 점검에는 다음을 확인합니다.
+ 인증서가 유효한 형식이어야 합니다.
+ 인증서가 등록된 인증 기관에 의해 서명되어야 합니다.
+ 인증서 유효 기간이 남아 있어야 합니다. 즉, 만료되지 않은 상태여야 합니다.
+ 인증서의 암호화 키 크기가 최소 필수 크기를 충족해야 합니다. RSA 키의 경우 2048비트 이상이어야 합니다.

이 감사 검사에서는 암호화 키의 품질을 다음과 같이 추가로 테스트해야 합니다.
+ CVE-2008-0166 – Debian 기반 운영 체제에서 0.9.8g-9 이전 버전까지의 OpenSSL 0.9.8c-1을 사용하여 키가 생성되었는지 확인합니다. 이러한 OpenSSL 버전은 예측 가능한 숫자를 생성하는 난수 생성기를 사용하므로 원격 공격자가 암호화 키에 대한 무차별 대입 공격을 더 쉽게 수행할 수 있습니다.
+ CVE-2017-15361 – TPM(Infineon Trusted Platform Module) 펌웨어(예: 0000000000000422 - 4.34 이전 버전, 000000000000062b - 6.43 이전 버전 및 0000000000008521 - 133.33 이전 버전)에서 Infineon RSA 라이브러리 1.02.013에 의해 키가 생성되었는지 확인합니다. 이 라이브러리는 RSA 키 생성을 잘못 처리하기 때문에 공격자가 표적 공격을 통해 일부 암호화 보호 메커니즘을 더 쉽게 파괴할 수 있습니다. 영향을 받는 기술의 예로는 TPM 1.2의 BitLocker, YubiKey 4(4.3.5 이전) PGP 키 생성 및 Chrome OS의 캐시된 사용자 데이터 암호화 기능이 있습니다.

AWS IoT Device Defender는 이러한 테스트에 실패한 인증서를 규정 미준수 인증서로 보고합니다.

이 점검은 CLI 및 API에서 `DEVICE_CERTIFICATE_KEY_QUALITY_CHECK`와(과) 같이 나타납니다.

**심각도:** 심각

## 세부 사항
<a name="audit-chk-device-cert-key-quality-details"></a>

이 점검은 ACTIVE 또는 PENDING\$1TRANSFER 상태인 디바이스 인증서에 적용됩니다.

이 점검에서 규정 미준수 인증서가 발견된 경우 다음 사유 코드가 반환됩니다.
+ CERTIFICATE\$1KEY\$1VULNERABILITY\$1CVE-2017-15361
+ CERTIFICATE\$1KEY\$1VULNERABILITY\$1CVE-2008-0166

## 이것이 중요한 이유
<a name="audit-chk-device-cert-key-quality-why-it-matters"></a>

디바이스에서 취약한 인증서를 사용하는 경우 공격자가 해당 디바이스를 더 쉽게 손상시킬 수 있습니다.

## 수정 방법
<a name="audit-chk-device-cert-key-quality-how-to-fix"></a>

디바이스 인증서를 업데이트하여 이러한 취약성을 알려진 취약성으로 바꿉니다.

여러 디바이스에 동일한 인증서를 사용하는 경우 다음과 같이 하는 것이 좋습니다.

1. 고유한 새 인증서를 프로비저닝하고 각 디바이스에 연결합니다.

1. 새 인증서가 유효하고 디바이스가 해당 인증서를 사용하여 연결할 수 있는지 확인합니다.

1. [UpdateCertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateCertificate.html)을 사용하여 이전 인증서를 AWS IoT에서 취소됨(REVOKED)으로 표시합니다. 완화 작업을 사용하면 다음을 수행할 수 있습니다.
   + 이 변경사항을 실행하려면 감사 결과에서 `UPDATE_DEVICE_CERTIFICATE` 완화 작업을 적용합니다.
   + 조치를 취할 수 있는 그룹에 디바이스를 추가하려면 `ADD_THINGS_TO_THING_GROUP` 완화 조치를 적용합니다.
   + Amazon SNS 메시지에 대해 사용자 지정 응답을 구현하려면 `PUBLISH_FINDINGS_TO_SNS` 완화 작업을 적용합니다.

   자세한 내용은 [완화 작업](dd-mitigation-actions.md) 단원을 참조하세요.

1. 각 디바이스에서 이전 인증서를 분리합니다.

# CA 인증서 키 품질
<a name="audit-chk-ca-cert-key-quality"></a>

AWS IoT 고객은 종종 AWS IoT 메시지 브로커를 인증하기 위해 X.509 인증서를 사용하는 TLS 상호 인증에 의존합니다. 이러한 인증서 및 해당 인증 기관 인증서를 사용하려면 먼저 해당 AWS IoT 계정에 등록해야 합니다. AWS IoT는 등록 시 이러한 인증서에 대해 다음과 같은 기본 안전성 점검을 수행합니다.
+ 인증서가 유효한 형식입니다.
+ 인증서 유효 기간이 남아 있습니다. 즉, 만료되지 않은 상태입니다.
+ 인증서의 암호화 키 크기가 최소 필수 크기를 충족합니다. RSA 키의 경우 2048비트 이상이어야 합니다.

이 감사 검사에서는 암호화 키의 품질을 다음과 같이 추가로 테스트해야 합니다.
+ CVE-2008-0166 – Debian 기반 운영 체제에서 0.9.8g-9 이전 버전까지의 OpenSSL 0.9.8c-1을 사용하여 키가 생성되었는지 확인합니다. 이러한 OpenSSL 버전은 예측 가능한 숫자를 생성하는 난수 생성기를 사용하므로 원격 공격자가 암호화 키에 대한 무차별 대입 공격을 더 쉽게 수행할 수 있습니다.
+ CVE-2017-15361 – TPM(Infineon Trusted Platform Module) 펌웨어(예: 0000000000000422 - 4.34 이전 버전, 000000000000062b - 6.43 이전 버전 및 0000000000008521 - 133.33 이전 버전)에서 Infineon RSA 라이브러리 1.02.013에 의해 키가 생성되었는지 확인합니다. 이 라이브러리는 RSA 키 생성을 잘못 처리하기 때문에 공격자가 표적 공격을 통해 일부 암호화 보호 메커니즘을 더 쉽게 파괴할 수 있습니다. 영향을 받는 기술의 예로는 TPM 1.2의 BitLocker, YubiKey 4(4.3.5 이전) PGP 키 생성 및 Chrome OS의 캐시된 사용자 데이터 암호화 기능이 있습니다.

AWS IoT Device Defender는 이러한 테스트에 실패한 인증서를 규정 미준수 인증서로 보고합니다.

이 점검은 CLI 및 API에서 `CA_CERTIFICATE_KEY_QUALITY_CHECK`와(과) 같이 나타납니다.

**심각도:** 심각

## 세부 사항
<a name="audit-chk-ca-cert-key-quality-details"></a>

이 점검은 ACTIVE 또는 PENDING\$1TRANSFER 상태인 CA 인증서에 적용됩니다.

이 점검에서 규정 미준수 인증서가 발견된 경우 다음 사유 코드가 반환됩니다.
+ CERTIFICATE\$1KEY\$1VULNERABILITY\$1CVE-2017-15361
+ CERTIFICATE\$1KEY\$1VULNERABILITY\$1CVE-2008-0166

## 이것이 중요한 이유
<a name="audit-chk-ca-cert-key-quality-why-it-matters"></a>

이 CA 인증서를 사용하여 서명된 디바이스가 새로 추가된 경우 보안 위협이 발생할 수 있습니다.

## 수정 방법
<a name="audit-chk-ca-cert-key-quality-how-to-fix"></a>

1. [UpdateCACertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateCACertificate.html)를 사용하여 AWS IoT에서 CA 인증서를 비활성(INACTIVE) 상태로 표시합니다. 완화 작업을 사용하면 다음을 수행할 수 있습니다.
   + 이 변경사항을 실행하려면 감사 결과에서 `UPDATE_CA_CERTIFICATE` 완화 작업을 적용합니다.
   + Amazon SNS 메시지에 대해 사용자 지정 응답을 구현하려면 `PUBLISH_FINDINGS_TO_SNS` 완화 작업을 적용합니다.

   자세한 내용은 [완화 작업](dd-mitigation-actions.md) 단원을 참조하세요.

1. CA 인증서가 취소된 후 일정 기간에 대해 디바이스 인증서 등록 활동을 검토하여 해당 기간 동안 이 인증서를 사용하여 발급되었을 수 있는 디바이스 인증서를 취소할 것을 고려합니다. ([ListCertificatesByCA](https://docs.aws.amazon.com/iot/latest/apireference/API_ListCertificatesByCA.html)를 사용하여 CA 인증서로 서명된 디바이스 인증서를 나열하고 [UpdateCertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateCertificate.html)를 사용하여 디바이스 인증서를 취소합니다.)

# 인증되지 않은 Cognito 역할이 지나치게 허용됨
<a name="audit-chk-unauth-cognito-role-permissive"></a>

인증되지 않은 Amazon Cognito 자격 증명 풀 역할에 연결된 정책은 너무 허용적인 것으로 간주됩니다. 이는 다음 AWS IoT 작업 중 하나를 수행할 수 있는 권한을 부여하기 때문입니다.
+ 사물 관리 또는 수정
+ 사물 관리 데이터 읽기
+ 비사물 관련 데이터 또는 리소스 관리

또는 광범위한 디바이스에서 다음 AWS IoT 작업을 수행할 수 있는 권한을 부여하기 때문입니다.
+ MQTT를 사용하여 예약된 주제(섀도우 또는 작업 실행 데이터 포함) 연결, 게시 또는 구독
+ API 명령을 사용하여 섀도우 또는 작업 실행 데이터 읽기 또는 수정

일반적으로 인증되지 않은 Amazon Cognito 자격 증명 풀 역할을 사용하여 연결된 디바이스는 사물별 MQTT 주제를 게시하고 구독하거나, API 명령을 사용하여 섀도우 또는 작업 실행 데이터와 관련된 사물별 데이터를 읽고 수정하는 제한된 권한만 보유해야 합니다.

이 점검은 CLI 및 API에서 `UNAUTHENTICATED_COGNITO_ROLE_OVERLY_PERMISSIVE_CHECK`와(과) 같이 나타납니다.

**심각도:** 심각

## 세부 사항
<a name="audit-chk-unauth-cognito-role-permissive-details"></a>

이 점검의 경우 AWS IoT Device Defender이(가) 감사 실행 전 31일 동안 AWS IoT 메시지 브로커에 연결하는 데 사용된 모든 Amazon Cognito 자격 증명 풀을 감사합니다. 인증된 또는 인증되지 않은 Amazon Cognito 자격 증명이 연결된 모든 Amazon Cognito 자격 증명 풀이 감사에 포함됩니다.

이 점검에서 규정 미준수 인증되지 않은 Amazon Cognito 자격 증명 풀 역할이 발견된 경우 다음 사유 코드가 반환됩니다.
+ ALLOWS\$1ACCESS\$1TO\$1IOT\$1ADMIN\$1ACTIONS
+ ALLOWS\$1BROAD\$1ACCESS\$1TO\$1IOT\$1DATA\$1PLANE\$1ACTIONS

## 이것이 중요한 이유
<a name="audit-chk-unauth-cognito-role-permissive-why-it-matters"></a>

인증되지 않은 자격 증명은 사용자가 인증하지 않으므로 인증된 Amazon Cognito 자격 증명보다 더 큰 위험을 발생합니다. 인증되지 않은 자격 증명이 손상된 경우 관리 작업을 사용하여 계정 설정을 수정하거나, 리소스를 삭제하거나, 중요한 데이터에 접근할 수 있습니다. 또는 디바이스 설정에 광범위하게 액세스하여 계정의 모든 디바이스에 대한 섀도우 및 작업을 액세스하거나 수정할 수 있습니다. 게스트 사용자는 권한을 사용하여 전체 플릿을 손상시키거나 메시지로 DDOS 공격을 시작할 수 있습니다.

## 수정 방법
<a name="audit-chk-unauth-cognito-role-permissive-how-to-fix"></a>

인증되지 않은 Amazon Cognito 자격 증명 풀 역할에 연결된 정책은 디바이스에서 작업을 수행하는 데 필요한 권한만 부여해야 합니다. 다음 단계를 수행하는 것이 좋습니다.

1. 새 규정 준수 역할을 생성합니다.

1. Amazon Cognito 자격 증명 풀을 생성하고 이 풀에 규정 준수 역할을 연결합니다.

1. 자격 증명이 새 풀을 통해 AWS IoT에 액세스할 수 있는지 확인합니다.

1. 확인이 완료되면 규정 준수 역할을 규정 미준수로 플래그가 지정된 Amazon Cognito 자격 증명 풀에 연결합니다.

완화 작업을 사용하면 다음을 수행할 수 있습니다.
+ Amazon SNS 메시지에 대해 사용자 지정 응답을 구현하려면 `PUBLISH_FINDINGS_TO_SNS` 완화 작업을 적용합니다.

자세한 내용은 [완화 작업](dd-mitigation-actions.md) 단원을 참조하세요.

## 사물 관리 또는 수정
<a name="manage-modify-things-check"></a>

다음 AWS IoT API 작업은 사물을 관리하거나 수정하는 데 사용됩니다. 인증되지 않은 Amazon Cognito 자격 증명 풀을 통해 연결하는 디바이스에는 이 작업을 수행할 권한을 부여해서는 안 됩니다.
+ `AddThingToThingGroup` 
+ `AttachThingPrincipal` 
+ `CreateThing` 
+ `DeleteThing` 
+ `DetachThingPrincipal` 
+ `ListThings` 
+ `ListThingsInThingGroup` 
+ `RegisterThing` 
+ `RemoveThingFromThingGroup` 
+ `UpdateThing` 
+ `UpdateThingGroupsForThing` 

단일 리소스에 대해서도 이러한 작업을 수행하는 권한을 부여하는 모든 역할은 규정 미준수로 간주됩니다.

## 사물 관리 데이터 읽기
<a name="read-thing-admin-data-check"></a>

다음 AWS IoT API 작업은 사물 데이터를 읽거나 수정하는 데 사용됩니다. 인증되지 않은 Amazon Cognito 자격 증명 풀을 통해 연결되는 디바이스에는 이 작업을 수행할 권한을 부여해서는 안 됩니다.
+ `DescribeThing`
+ `ListJobExecutionsForThing`
+ `ListThingGroupsForThing`
+ `ListThingPrincipals`

**Example**  
+ 규정 미준수:

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

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Sid": "AllowIoTThingOperations",
        "Effect": "Allow",
        "Action": [ 
            "iot:DescribeThing",
            "iot:ListJobExecutionsForThing",
            "iot:ListThingGroupsForThing",
            "iot:ListThingPrincipals"
        ],
        "Resource": [
          "arn:aws:iot:us-east-1:123456789012:thing/name-of-thing"
        ]
      }
    ]
  }
  ```

------

  이렇게 하면 디바이스가 사물 하나에 대한 권한만 부여받은 경우에도 지정된 작업을 수행할 수 있습니다.

## 비사물 관리
<a name="manage-non-things-check"></a>

인증되지 않은 Amazon Cognito 자격 증명 풀을 통해 연결되는 디바이스에는 이 섹션에서 설명된 작업 이외의 다른 AWS IoT API 작업을 수행하는 권한을 부여해서는 안 됩니다. 디바이스에서 사용되지 않는 별도의 자격 증명 풀을 생성하여 인증되지 않은 Amazon Cognito 자격 증명 풀을 통해 연결되는 애플리케이션이 있는 계정을 관리할 수 있습니다.

## MQTT 주제 구독/게시
<a name="audit-chk-unauth-cognito-role-permissive-mqtt-topics"></a>

MQTT 메시지는 AWS IoT 메시지 브로커를 통해 전송되며, 섀도우 상태 및 작업 실행 상태 액세스 및 수정을 포함하여 다양한 작업을 수행하기 위해 디바이스에서 사용됩니다. MQTT 메시지를 연결, 게시 또는 구독할 디바이스에 권한을 부여하는 정책은 다음과 같이 이러한 작업을 특정 리소스로 제한해야 합니다.

**연결**  
+ 규정 미준수:

  ```
  arn:aws:iot:region:account-id:client/*
  ```

  와일드카드 \$1를 사용하면 모든 디바이스를 AWS IoT에 연결할 수 있습니다.

  ```
  arn:aws:iot:region:account-id:client/${iot:ClientId}
  ```

  조건 키에서 `iot:Connection.Thing.IsAttached`가 true로 설정되지 않는 한 이전 예에서 와일드카드 \$1와 동일합니다.
+ 규정 준수:

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

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "iot:Connect"
        ],
        "Resource": [
          "arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
        ]
      }
    ]
  }
  ```

------

  리소스 사양에는 연결하는 데 사용된 디바이스 이름과 일치하는 변수가 포함되어 있습니다. 조건문은 MQTT 클라이언트에서 사용되는 인증서가 이름이 사용된 사물에 연결된 인증서와 일치하는지 확인하여 권한을 추가로 제한합니다.

**게시**  
+ 규정 미준수:

  ```
  arn:aws:iot:region:account-id:topic/$aws/things/*/shadow/update
  ```

  이렇게 하면 디바이스가 모든 디바이스의 섀도우를 업데이트할 수 있습니다(\$1 = 모든 디바이스).

  ```
  arn:aws:iot:region:account-id:topic/$aws/things/*
  ```

  이렇게 하면 디바이스가 모든 디바이스의 섀도우에 대해 읽기, 업데이트 또는 삭제 작업을 수행할 수 있습니다.
+ 규정 준수:

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "iot:Publish"
              ],
              "Resource": [
                  "arn:aws:iot:us-east-1:123456789012:topic/$aws/things/${iot:Connection.Thing.ThingName}/shadow/*"
              ]
          }
      ]
  }
  ```

------

  리소스 사양에 와일드카드가 포함되지만, 연결하는 데 사물 이름이 사용된 디바이스의 섀도우 관련 주제와만 일치합니다.

**구독**  
+ 규정 미준수:

  ```
  arn:aws:iot:region:account-id:topicfilter/$aws/things/*
  ```

  이렇게 하면 디바이스가 모든 디바이스에 대한 예약된 섀도우 또는 작업 주제를 구독할 수 있습니다.

  ```
  arn:aws:iot:region:account-id:topicfilter/$aws/things/*
  ```

  이전 예제와 동일하지만, \$1 와일드카드를 사용합니다.

  ```
  arn:aws:iot:region:account-id:topicfilter/$aws/things/+/shadow/update
  ```

  이렇게 하면 디바이스가 모든 디바이스의 섀도우 업데이트를 확인할 수 있습니다(\$1 = 모든 디바이스).
+ 규정 준수:

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "iot:Subscribe"
              ],
              "Resource": [
                  "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/things/${iot:Connection.Thing.ThingName}/shadow/*",
                  "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/things/${iot:Connection.Thing.ThingName}/jobs/*"
              ]
          }
      ]
  }
  ```

------

  리소스 사양에 와일드카드가 포함되지만, 연결하는 데 사물 이름이 사용된 디바이스의 섀도우 관련 주제 및 작업 관련 주제와만 일치합니다.

**수신**  
+ 규정 준수:

  ```
  arn:aws:iot:region:account-id:topicfilter/$aws/things/*
  ```

  디바이스에서 구독할 권한이 있는 주제의 메시지만 수신할 수 있으므로 허용됩니다.

## 섀도우 또는 작업 데이터 읽기/수정
<a name="read-modify-shadow-job-data-check"></a>

디바이스에 디바이스 섀도우 또는 작업 실행 데이터에 액세스하거나 이를 수정하는 API 작업을 수행할 권한을 부여하는 정책은 이러한 작업을 특정 리소스로 제한해야 합니다. 다음은 API 작업입니다.
+ `DeleteThingShadow`
+ `GetThingShadow`
+ `UpdateThingShadow`
+ `DescribeJobExecution`
+ `GetPendingJobExecutions`
+ `StartNextPendingJobExecutio`n
+ `UpdateJobExecution`

**Example**  
+ 규정 미준수:

  ```
  arn:aws:iot:region:account-id:thing/*
  ```

  이렇게 하면 디바이스가 모든 사물에 대해 지정된 작업을 수행할 수 있습니다.
+ 규정 준수:

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

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [ 
            "iot:DeleteThingShadow",
            "iot:GetThingShadow",
            "iot:UpdateThingShadow",
            "iotjobsdata:DescribeJobExecution",
            "iotjobsdata:GetPendingJobExecutions",
            "iotjobsdata:StartNextPendingJobExecution",
            "iotjobsdata:UpdateJobExecution"
        ],
        "Resource": [
          "arn:aws:iot:us-east-1:123456789012:thing/MyThing1",
          "arn:aws:iot:us-east-1:123456789012:thing/MyThing2"
        ]
      }
    ]
  }
  ```

------

  이렇게 하면 디바이스가 두 개의 사물에 대해서만 지정된 작업을 수행할 수 있습니다.

# 인증된 Cognito 역할이 지나치게 허용됨
<a name="audit-chk-auth-cognito-role-permissive"></a>

인증된 Amazon Cognito 자격 증명 풀 역할에 연결된 정책은 과도하게 허용적인 것으로 간주됩니다. 이는 다음 AWS IoT 작업 중 하나를 수행할 수 있는 권한을 부여하기 때문입니다.
+ 사물 관리 또는 수정
+ 비사물 관련 데이터 또는 리소스 관리

또는 광범위한 디바이스에서 다음 AWS IoT 작업을 수행할 수 있는 권한을 부여하기 때문입니다.
+ 사물 관리 데이터 읽기
+ MQTT를 사용하여 예약된 주제(섀도우 또는 작업 실행 데이터 포함) 연결/게시/구독
+ API 명령을 사용하여 섀도우 또는 작업 실행 데이터 읽기 또는 수정

일반적으로 인증된 Amazon Cognito 자격 증명 풀 역할을 사용하여 연결된 디바이스는 사물별 관리 데이터를 읽거나, 사물별 MQTT 주제를 게시하고 구독하거나, API 명령을 사용하여 섀도우 또는 작업 실행 데이터와 관련된 사물별 데이터를 읽고 수정하는 제한된 권한만 보유해야 합니다.

이 점검은 CLI 및 API에서 `AUTHENTICATED_COGNITO_ROLE_OVERLY_PERMISSIVE_CHECK`와(과) 같이 나타납니다.

**심각도:** 심각

## 세부 사항
<a name="audit-chk-auth-cognito-role-permissive-details"></a>

이 점검의 경우 AWS IoT Device Defender이(가) 감사 실행 전 31일 동안 AWS IoT 메시지 브로커에 연결하는 데 사용된 모든 Amazon Cognito 자격 증명 풀을 감사합니다. 인증된 또는 인증되지 않은 Amazon Cognito 자격 증명이 연결된 모든 Amazon Cognito 자격 증명 풀이 감사에 포함됩니다.

이 점검에서 규정 미준수 인증된 Amazon Cognito 자격 증명 풀 역할이 발견된 경우 다음 사유 코드가 반환됩니다.
+ ALLOWS\$1BROAD\$1ACCESS\$1TO\$1IOT\$1THING\$1ADMIN\$1READ\$1ACTIONS
+ ALLOWS\$1ACCESS\$1TO\$1IOT\$1NON\$1THING\$1ADMIN\$1ACTIONS
+ ALLOWS\$1ACCESS\$1TO\$1IOT\$1THING\$1ADMIN\$1WRITE\$1ACTIONS

## 이것이 중요한 이유
<a name="audit-chk-auth-cognito-role-permissive-why-it-matters"></a>

인증된 자격 증명이 손상된 경우 관리 작업을 사용하여 계정 설정을 수정하거나, 리소스를 삭제하거나, 중요한 데이터에 액세스할 수 있습니다.

## 수정 방법
<a name="audit-chk-auth-cognito-role-permissive-how-to-fix"></a>

인증된 Amazon Cognito 자격 증명 풀 역할에 연결된 정책은 디바이스에서 작업을 수행하는 데 필요한 권한만 부여해야 합니다. 다음 단계를 수행하는 것이 좋습니다.

1. 새 규정 준수 역할을 생성합니다.

1. Amazon Cognito 자격 증명 풀을 생성하고 이 풀에 규정 준수 역할을 연결합니다.

1. 자격 증명이 새 풀을 통해 AWS IoT에 액세스할 수 있는지 확인합니다.

1. 확인이 완료되면 역할을 규정 미준수로 플래그가 지정된 Amazon Cognito 자격 증명 풀에 연결합니다.

완화 작업을 사용하면 다음을 수행할 수 있습니다.
+ Amazon SNS 메시지에 대해 사용자 지정 응답을 구현하려면 `PUBLISH_FINDINGS_TO_SNS` 완화 작업을 적용합니다.

자세한 내용은 [완화 작업](dd-mitigation-actions.md) 단원을 참조하세요.

## 사물 관리 또는 수정
<a name="audit-chk-auth-cognito-role-permissive-manage-things"></a>

다음 AWS IoT API 작업은 사물을 관리하거나 수정하는 데 사용되므로 인증된 Amazon Cognito 자격 증명 풀을 통해 연결되는 디바이스에는 이러한 작업을 수행하는 권한을 부여해서는 안 됩니다.
+ `AddThingToThingGroup` 
+ `AttachThingPrincipal` 
+ `CreateThing` 
+ `DeleteThing` 
+ `DetachThingPrincipal` 
+ `ListThings`
+ `ListThingsInThingGroup` 
+ `RegisterThing` 
+ `RemoveThingFromThingGroup` 
+ `UpdateThing` 
+ `UpdateThingGroupsForThing`

단일 리소스에 대해서도 이러한 작업을 수행하는 권한을 부여하는 모든 역할은 규정 미준수로 간주됩니다.

## 비사물 관리
<a name="audit-chk-auth-cognito-role-permissive-manage-non-things"></a>

인증된 Amazon Cognito 자격 증명 풀을 통해 연결되는 디바이스에는 이 섹션에서 설명된 작업 이외의 다른 AWS IoT API 작업을 수행하는 권한을 부여해서는 안 됩니다. 인증된 Amazon Cognito 자격 증명 풀을 통해 연결되는 애플리케이션이 있는 계정을 관리하려면 디바이스에서 사용되지 않는 별도의 자격 증명 풀을 생성합니다.

## 사물 관리 데이터 읽기
<a name="audit-chk-auth-cognito-role-permissive-read-things-admin-data"></a>

다음 AWS IoT API 작업은 사물 데이터를 읽는 데 사용되므로 인증된 Amazon Cognito 자격 증명 풀을 통해 연결되는 디바이스에는 제한된 사물 집합에서만 이러한 작업을 수행하는 권한을 부여해야 합니다.
+ `DescribeThing`
+ `ListJobExecutionsForThing`
+ `ListThingGroupsForThing`
+ `ListThingPrincipals`
+ 규정 미준수:

  ```
  arn:aws:iot:region:account-id:thing/*
  ```

  이렇게 하면 디바이스가 모든 사물에 대해 지정된 작업을 수행할 수 있습니다.
+ 규정 준수:

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

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [ 
            "iot:DescribeThing",
            "iot:ListJobExecutionsForThing",
            "iot:ListThingGroupsForThing",
            "iot:ListThingPrincipals"
        ],
        "Resource": [
          "arn:aws:iot:us-east-1:123456789012:thing/MyThing"
        ]
      }
    ]
  }
  ```

------

  이렇게 하면 디바이스가 한 개의 사물에 대해서만 지정된 작업을 수행할 수 있습니다.
+ 규정 준수:

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "iot:DescribeThing",
                  "iot:ListJobExecutionsForThing",
                  "iot:ListThingGroupsForThing",
                  "iot:ListThingPrincipals"
              ],
              "Resource": [
                  "arn:aws:iot:us-east-1:123456789012:thing/MyThing*"
              ]
          }
      ]
  }
  ```

------

  이는 리소스가 와일드카드(\$1)로 지정된 경우에도 특정 문자열이 리소스 앞에 나오며, 이름에 지정된 접두사가 있는 사물에 액세스된 사물 집합으로 제한하므로 규정 준수입니다.
+ 규정 미준수:

  ```
  arn:aws:iot:region:account-id:thing/*
  ```

  이렇게 하면 디바이스가 모든 사물에 대해 지정된 작업을 수행할 수 있습니다.
+ 규정 준수:

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

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [ 
            "iot:DescribeThing",
            "iot:ListJobExecutionsForThing",
            "iot:ListThingGroupsForThing",
            "iot:ListThingPrincipals"
        ],
        "Resource": [
          "arn:aws:iot:us-east-1:123456789012:thing/MyThing"
        ]
      }
    ]
  }
  ```

------

  이렇게 하면 디바이스가 한 개의 사물에 대해서만 지정된 작업을 수행할 수 있습니다.
+ 규정 준수:

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "iot:DescribeThing",
                  "iot:ListJobExecutionsForThing",
                  "iot:ListThingGroupsForThing",
                  "iot:ListThingPrincipals"
              ],
              "Resource": [
                  "arn:aws:iot:us-east-1:123456789012:thing/MyThing*"
              ]
          }
      ]
  }
  ```

------

  이는 리소스가 와일드카드(\$1)로 지정된 경우에도 특정 문자열이 리소스 앞에 나오며, 이름에 지정된 접두사가 있는 사물에 액세스된 사물 집합으로 제한하므로 규정 준수입니다.

## MQTT 주제 구독/게시
<a name="audit-chk-auth-cognito-role-permissive-mqtt-topic"></a>

MQTT 메시지는 AWS IoT 메시지 브로커를 통해 전송되며, 섀도우 상태와 작업 실행 상태 액세스 및 수정을 비롯하여 다양한 작업을 수행하는 디바이스에서 사용됩니다. MQTT 메시지를 연결, 게시 또는 구독할 디바이스에 권한을 부여하는 정책은 다음과 같이 이러한 작업을 특정 리소스로 제한해야 합니다.

**연결**  
+ 규정 미준수:

  ```
  arn:aws:iot:region:account-id:client/*
  ```

  와일드카드 \$1를 사용하면 모든 디바이스를 AWS IoT에 연결할 수 있습니다.

  ```
  arn:aws:iot:region:account-id:client/${iot:ClientId}
  ```

  조건 키에서 `iot:Connection.Thing.IsAttached`가 true로 설정되지 않는 한 이전 예에서 와일드카드 \$1와 동일합니다.
+ 규정 준수:

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

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "iot:Connect"
        ],
        "Resource": [
          "arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
        ]
      }
    ]
  }
  ```

------

  리소스 사양에는 연결하는 데 사용된 디바이스 이름과 일치하는 변수가 포함되어 있으며, 조건문은 MQTT 클라이언트에서 사용되는 인증서가 이름이 사용된 사물에 연결된 인증서와 일치하는지 확인하여 권한을 추가로 제한합니다.

**게시**  
+ 규정 미준수:

  ```
  arn:aws:iot:region:account-id:topic/$aws/things/*/shadow/update
  ```

  이렇게 하면 디바이스가 모든 디바이스의 섀도우를 업데이트할 수 있습니다(\$1 = 모든 디바이스).

  ```
  arn:aws:iot:region:account-id:topic/$aws/things/*
  ```

  이렇게 하면 디바이스가 모든 디바이스의 섀도우에 대해 읽기/업데이트/삭제를 수행할 수 있습니다.
+ 규정 준수:

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "iot:Publish"
              ],
              "Resource": [
                  "arn:aws:iot:us-east-1:123456789012:topic/$aws/things/${iot:Connection.Thing.ThingName}/shadow/*"
              ]
          }
      ]
  }
  ```

------

  리소스 사양에 와일드카드가 포함되지만, 연결하는 데 사물 이름이 사용된 디바이스의 섀도우 관련 주제와만 일치합니다.

**구독**  
+ 규정 미준수:

  ```
  arn:aws:iot:region:account-id:topicfilter/$aws/things/*
  ```

  이렇게 하면 디바이스가 모든 디바이스에 대한 예약된 섀도우 또는 작업 주제를 구독할 수 있습니다.

  ```
  arn:aws:iot:region:account-id:topicfilter/$aws/things/#
  ```

  이전 예제와 동일하지만, \$1 와일드카드를 사용합니다.

  ```
  arn:aws:iot:region:account-id:topicfilter/$aws/things/+/shadow/update
  ```

  이렇게 하면 디바이스가 모든 디바이스의 섀도우 업데이트를 확인할 수 있습니다(\$1 = 모든 디바이스).
+ 규정 준수:

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "iot:Subscribe"
              ],
              "Resource": [
                  "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/things/${iot:Connection.Thing.ThingName}/shadow/*",
                  "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/things/${iot:Connection.Thing.ThingName}/jobs/*"
              ]
          }
      ]
  }
  ```

------

  리소스 사양에 와일드카드가 포함되지만, 연결하는 데 사물 이름이 사용된 디바이스의 섀도우 관련 주제 및 작업 관련 주제와만 일치합니다.

**수신**  
+ 규정 준수:

  ```
  arn:aws:iot:region:account-id:topicfilter/$aws/things/*
  ```

  디바이스에서 구독할 권한이 있는 주제의 메시지만 받을 수 있으므로 규정 준수입니다.

## 섀도우 또는 작업 데이터 읽기 또는 수정
<a name="audit-chk-auth-cognito-role-permissive-shadow-job-data"></a>

디바이스에 디바이스 섀도우 또는 작업 실행 데이터에 액세스하거나 이를 수정하는 API 작업을 수행할 권한을 부여하는 정책은 이러한 작업을 특정 리소스로 제한해야 합니다. 다음은 API 작업입니다.
+ `DeleteThingShadow`
+ `GetThingShadow`
+ `UpdateThingShadow`
+ `DescribeJobExecution`
+ `GetPendingJobExecutions`
+ `StartNextPendingJobExecution`
+ `UpdateJobExecution`

**예제**
+ 규정 미준수:

  ```
  arn:aws:iot:region:account-id:thing/*
  ```

  이렇게 하면 디바이스가 모든 사물에 대해 지정된 작업을 수행할 수 있습니다.
+ 규정 준수:

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

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "iot:DeleteThingShadow",
          "iot:GetThingShadow",
          "iot:UpdateThingShadow",
          "iot:DescribeJobExecution",
          "iotjobsdata:DescribeJobExecution",
          "iotjobsdata:UpdateJobExecution"
        ],
        "Resource": [
          "arn:aws:iot:us-east-1:123456789012:thing/MyThing1",
          "arn:aws:iot:us-east-1:123456789012:thing/MyThing2"
        ]
      }
    ]
  }
  ```

------

  이렇게 하면 디바이스가 두 개의 사물에 대해서만 지정된 작업을 수행할 수 있습니다.

# AWS IoT지나치게 허용적인 정책
<a name="audit-chk-iot-policy-permissive"></a>

AWS IoT 정책이 너무 광범위하거나 제한되지 않은 권한을 제공합니다. 광범위한 디바이스에 대한 MQTT 메시지를 전송 또는 수신하는 권한을 부여하거나 광범위한 디바이스에 대한 섀도우 및 작업 실행 데이터를 액세스 또는 수정하는 권한을 부여합니다. 

일반적으로 디바이스에 대한 정책은 해당 디바이스에만 관련되며 다른 디바이스에는 관련되지 않거나 몇몇 디바이스에만 관련된 리소스에 대한 액세스 권한을 부여해야 합니다. 일부 예외를 제외하고 이러한 정책에서 와일드카드(예: "\$1")를 사용하여 리소스를 지정하는 것은 너무 광범위하거나 제한되지 않다고 간주됩니다.

이 점검은 CLI 및 API에서 `IOT_POLICY_OVERLY_PERMISSIVE_CHECK`와(과) 같이 나타납니다.

**심각도:** 심각

## 세부 사항
<a name="audit-chk-iot-policy-permissive-details"></a>

이 점검에서 규정 미준수 AWS IoT 정책이 발견된 경우 다음 사유 코드가 반환됩니다.
+ ALLOWS\$1BROAD\$1ACCESS\$1TO\$1IOT\$1DATA\$1PLANE\$1ACTIONS

## 이것이 중요한 이유
<a name="audit-chk-iot-policy-permissive-why-it-matters"></a>

과도하게 허용적인 정책이 있는 인증서, Amazon Cognito 자격 증명 또는 사물 그룹이 손상된 경우 전체 계정의 보안에 영향을 줄 수 있습니다. 해커는 모든 디바이스에 대한 섀도우, 작업 또는 작업 실행을 읽거나 수정할 수 있는 광범위한 액세스 권한을 사용할 수 있습니다. 또는 손상된 인증서를 사용하여 악성 디바이스를 연결하거나 네트워크에 DDOS 공격을 시작할 수도 있습니다.

## 수정 방법
<a name="audit-chk-iot-policy-permissive-how-to-fix"></a>

다음 단계에 따라 사물, 사물 그룹 또는 기타 개체에 연결된 규정 미준수 정책을 수정하세요.

1. [CreatePolicyVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_CreatePolicyVersion.html)을 사용하여 새 규정 준수 정책 버전을 생성합니다. `setAsDefault` 플래그를 true로 설정합니다. (이로 인해 정책을 사용하는 모든 개체에 이 새 버전이 적용됩니다.)

1. [ListTargetsForPolicy](https://docs.aws.amazon.com/iot/latest/apireference/API_ListTargetsForPolicy.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 정책 변수](https://docs.aws.amazon.com/iot/latest/developerguide/iot-policy-variables.html)를 사용하여 정책에서 AWS IoT 리소스를 동적으로 참조합니다.

## MQTT 권한
<a name="audit-chk-iot-policy-permissive-mqtt-permissions"></a>

MQTT 메시지는 AWS IoT 메시지 브로커를 통해 전송되며, 섀도우 상태 및 작업 실행 상태 액세스 및 수정을 포함하여 다양한 작업을 수행하기 위해 디바이스에서 사용됩니다. MQTT 메시지를 연결, 게시 또는 구독할 디바이스에 권한을 부여하는 정책은 다음과 같이 이러한 작업을 특정 리소스로 제한해야 합니다.

**연결**  
+ 규정 미준수:

  ```
  arn:aws:iot:region:account-id:client/*
  ```

  와일드카드 \$1를 사용하면 모든 디바이스를 AWS IoT에 연결할 수 있습니다.

  ```
  arn:aws:iot:region:account-id:client/${iot:ClientId}
  ```

  조건 키에서 `iot:Connection.Thing.IsAttached`가 true로 설정되지 않는 한 이전 예에서 와일드카드 \$1와 동일합니다.
+ 규정 준수:

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

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "iot:Connect"
        ],
        "Resource": [
          "arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
        ]
      }
    ]
  }
  ```

------

  리소스 사양에는 연결하는 데 사용된 디바이스 이름과 일치하는 변수가 포함되어 있습니다. 조건문은 MQTT 클라이언트에서 사용되는 인증서가 이름이 사용된 사물에 연결된 인증서와 일치하는지 확인하여 권한을 추가로 제한합니다.

**게시**  
+ 규정 미준수:

  ```
  arn:aws:iot:region:account-id:topic/$aws/things/*/shadow/update
  ```

  이렇게 하면 디바이스가 모든 디바이스의 섀도우를 업데이트할 수 있습니다(\$1 = 모든 디바이스).

  ```
  arn:aws:iot:region:account-id:topic/$aws/things/*
  ```

  이렇게 하면 디바이스가 모든 디바이스의 섀도우에 대해 읽기, 업데이트 또는 삭제 작업을 수행할 수 있습니다.
+ 규정 준수:

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "iot:Publish"
              ],
              "Resource": [
                  "arn:aws:iot:us-east-1:123456789012:topic/$aws/things/${iot:Connection.Thing.ThingName}/shadow/*"
              ]
          }
      ]
  }
  ```

------

  리소스 사양에 와일드카드가 포함되지만, 연결하는 데 사물 이름이 사용된 디바이스의 섀도우 관련 주제와만 일치합니다.

**구독**  
+ 규정 미준수:

  ```
  arn:aws:iot:region:account-id:topicfilter/$aws/things/*
  ```

  이렇게 하면 디바이스가 모든 디바이스에 대한 예약된 섀도우 또는 작업 주제를 구독할 수 있습니다.

  ```
  arn:aws:iot:region:account-id:topicfilter/$aws/things/*
  ```

  이전 예제와 동일하지만, \$1 와일드카드를 사용합니다.

  ```
  arn:aws:iot:region:account-id:topicfilter/$aws/things/+/shadow/update
  ```

  이렇게 하면 디바이스가 모든 디바이스의 섀도우 업데이트를 확인할 수 있습니다(\$1 = 모든 디바이스).
+ 규정 준수:

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "iot:Subscribe"
              ],
              "Resource": [
                  "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/things/${iot:Connection.Thing.ThingName}/shadow/*",
                  "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/things/${iot:Connection.Thing.ThingName}/jobs/*"
              ]
          }
      ]
  }
  ```

------

  리소스 사양에 와일드카드가 포함되지만, 연결하는 데 사물 이름이 사용된 디바이스의 섀도우 관련 주제 및 작업 관련 주제와만 일치합니다.

**수신**  
+ 규정 준수:

  ```
  arn:aws:iot:region:account-id:topic/$aws/things/*
  ```

  디바이스에서 구독할 권한이 있는 주제의 메시지만 받을 수 있으므로 규정 준수입니다.

## 섀도우 및 작업 권한
<a name="shadow-job-permissions"></a>

디바이스에 디바이스 섀도우 또는 작업 실행 데이터에 액세스하거나 이를 수정하는 API 작업을 수행할 권한을 부여하는 정책은 이러한 작업을 특정 리소스로 제한해야 합니다. 다음은 API 작업입니다.
+ `DeleteThingShadow`
+ `GetThingShadow`
+ `UpdateThingShadow`
+ `DescribeJobExecution`
+ `GetPendingJobExecutions`
+ `StartNextPendingJobExecution`
+ `UpdateJobExecution`

**예제**
+ 규정 미준수:

  ```
  arn:aws:iot:region:account-id:thing/*
  ```

  이렇게 하면 디바이스가 모든 사물에 대해 지정된 작업을 수행할 수 있습니다.
+ 규정 준수:

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

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [ 
            "iot:DeleteThingShadow",
            "iot:GetThingShadow",
            "iot:UpdateThingShadow",
            "iotjobsdata:DescribeJobExecution",
            "iotjobsdata:GetPendingJobExecutions",
            "iotjobsdata:StartNextPendingJobExecution",
            "iotjobsdata:UpdateJobExecution"
        ],
        "Resource": [
          "arn:aws:iot:us-east-1:123456789012:thing/MyThing1",
          "arn:aws:iot:us-east-1:123456789012:thing/MyThing2"
        ]
      }
    ]
  }
  ```

------

  이렇게 하면 디바이스가 두 개의 사물에 대해서만 지정된 작업을 수행할 수 있습니다.

# 잘못 구성되었을 가능성이 있는 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\$1CONTAINS\$1MQTT\$1WILDCARDS\$1IN\$1DENY\$1STATEMENT
+ TOPIC\$1FILTERS\$1INTENDED\$1TO\$1DENY\$1ALLOWED\$1USING\$1WILDCARDS

## 이것이 중요한 이유
<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/*"
        }
    ]
}
```

------

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

## 수정 방법
<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 리소스를 동적으로 참조합니다.

# 역할 별칭이 지나치게 허용됨
<a name="audit-chk-iot-role-alias-permissive"></a>

AWS IoT 역할 별칭은 연결된 디바이스가 X.509 인증서를 사용하여 AWS IoT에 인증한 다음 AWS IoT 역할 별칭과 연결된 IAM 역할에서 수명이 짧은 AWS 자격 증명을 얻는 메커니즘을 제공합니다. 이러한 자격 증명에 대한 권한의 경우 인증 컨텍스트 변수가 있는 액세스 정책을 사용하여 범위를 축소해야 합니다. 정책이 올바르게 구성되지 않은 경우 권한 공격의 에스컬레이션에 노출될 수 있습니다. 이 감사 검사에서는 AWS IoT 역할 별칭에서 제공하는 임시 자격 증명이 과도하게 허용적이지 않도록 합니다.

다음 조건 중 하나가 검색되면 이 점검이 트리거됩니다.
+ 이 정책은 이 역할 별칭(예: "iot:\$1", "dynamodb:\$1", "iam:\$1" 등)에서 작년에 사용한 모든 서비스에 대한 관리 권한을 제공합니다.
+ 이 정책은 사물 메타데이터 작업에 대한 광범위한 액세스, 제한된 AWS IoT 작업에 대한 액세스 또는 AWS IoT 데이터 영역 작업에 대한 광범위한 액세스를 제공합니다.
+ 이 정책은 "iam", "cloudtrail", "guardduty", "inspector" 또는 "trustedadvisor"와 같은 보안 감사 서비스에 대한 액세스를 제공합니다.

이 점검은 CLI 및 API에서 `IOT_ROLE_ALIAS_OVERLY_PERMISSIVE_CHECK`와(과) 같이 나타납니다.

**심각도:** 심각

## 세부 사항
<a name="audit-chk-iot-role-alias-permissive-details"></a>

이 점검에서 규정 미준수 IoT 정책이 발견되면 다음 사유 코드가 반환됩니다.
+ ALLOWS\$1BROAD\$1ACCESS\$1TO\$1USED\$1SERVICES
+ ALLOWS\$1ACCESS\$1TO\$1SECURITY\$1AUDITING\$1SERVICES
+ ALLOWS\$1BROAD\$1ACCESS\$1TO\$1IOT\$1THING\$1ADMIN\$1READ\$1ACTIONS
+ ALLOWS\$1ACCESS\$1TO\$1IOT\$1NON\$1THING\$1ADMIN\$1ACTIONS
+ ALLOWS\$1ACCESS\$1TO\$1IOT\$1THING\$1ADMIN\$1WRITE\$1ACTIONS
+ ALLOWS\$1BROAD\$1ACCESS\$1TO\$1IOT\$1DATA\$1PLANE\$1ACTIONS

## 이것이 중요한 이유
<a name="audit-chk-iot-role-alias-permissive-why-it-matters"></a>

권한을 디바이스가 정상적인 작업을 수행하는 데 필요한 권한으로 제한하면 디바이스가 손상된 경우 계정에 대한 위험을 줄일 수 있습니다.

## 수정 방법
<a name="audit-chk-iot-role-alias-permissive-how-to-fix"></a>

다음 단계에 따라 사물, 사물 그룹 또는 기타 개체에 연결된 규정 미준수 정책을 수정하세요.

1. [AWS IoT Core 보안 인증 정보 공급자를 사용하여 AWS 서비스에 대한 직접 호출 승인](https://docs.aws.amazon.com/iot/latest/developerguide/authorizing-direct-aws.html)의 단계에 따라 역할 별칭에 보다 제한적인 정책을 적용하세요.

완화 조치를 사용하면 다음을 수행할 수 있습니다.
+ Amazon SNS 메시지에 대한 응답으로 사용자 지정 작업을 구현하려면 `PUBLISH_FINDINGS_TO_SNS` 완화 작업을 적용합니다.

자세한 내용은 [완화 작업](dd-mitigation-actions.md) 단원을 참조하세요.

# 역할 별칭으로 사용되지 않는 서비스에 대한 액세스 허용
<a name="audit-chk-role-alias-unused-svcs"></a>

AWS IoT 역할 별칭은 연결된 디바이스가 X.509 인증서를 사용하여 AWS IoT에 인증한 다음 AWS IoT 역할 별칭과 연결된 IAM 역할에서 수명이 짧은 AWS 자격 증명을 얻는 메커니즘을 제공합니다. 이러한 자격 증명에 대한 권한의 경우 인증 컨텍스트 변수가 있는 액세스 정책을 사용하여 범위를 축소해야 합니다. 정책이 올바르게 구성되지 않은 경우 권한 공격의 에스컬레이션에 노출될 수 있습니다. 이 감사 검사에서는 AWS IoT 역할 별칭에서 제공하는 임시 자격 증명이 과도하게 허용적이지 않도록 합니다.

이 점검은 역할 별칭이 작년에 AWS IoT 디바이스에 사용되지 않은 서비스에 액세스할 수 있는 경우 트리거됩니다. 예를 들어, 이 감사에서는 작년에 AWS IoT만 사용한 역할 별칭에 연결된 IAM 역할이 있는데 이 역할에 연결된 정책에서도 `"iam:getRole"` 및 `"dynamodb:PutItem"`에 권한을 부여하는지 보고합니다.

이 점검은 CLI 및 API에서 `IOT_ROLE_ALIAS_ALLOWS_ACCESS_TO_UNUSED_SERVICES_CHECK`와(과) 같이 나타납니다.

**심각도:** 중간

## 세부 사항
<a name="audit-chk-role-alias-unused-svcs-details"></a>

이 점검에서 규정 미준수 AWS IoT 정책이 발견되면 다음 사유 코드가 반환됩니다.
+ ALLOWS\$1ACCESS\$1TO\$1UNUSED\$1SERVICES

## 이것이 중요한 이유
<a name="audit-chk-role-alias-unused-svcs-why-it-matters"></a>

권한을 디바이스가 정상적인 작업을 수행하는 데 필요한 서비스로 제한하면 디바이스가 손상된 경우 계정에 대한 위험을 줄일 수 있습니다.

## 수정 방법
<a name="audit-chk-role-alias-unused-svcs-how-to-fix"></a>

다음 단계에 따라 사물, 사물 그룹 또는 기타 개체에 연결된 규정 미준수 정책을 수정하세요.

1. [AWS IoT Core 보안 인증 정보 공급자를 사용하여 AWS 서비스에 대한 직접 호출 승인](https://docs.aws.amazon.com/iot/latest/developerguide/authorizing-direct-aws.html)의 단계에 따라 역할 별칭에 보다 제한적인 정책을 적용하세요.

완화 조치를 사용하면 다음을 수행할 수 있습니다.
+ Amazon SNS 메시지에 대한 응답으로 사용자 지정 작업을 구현하려면 `PUBLISH_FINDINGS_TO_SNS` 완화 작업을 적용합니다.

자세한 내용은 [완화 작업](dd-mitigation-actions.md) 단원을 참조하세요.

# CA 인증서 만료
<a name="audit-chk-ca-cert-approaching-expiration"></a>

CA 인증서가 30일 이내에 만료되거나 만료되었습니다.

이 점검은 CLI 및 API에서 `CA_CERTIFICATE_EXPIRING_CHECK`와(과) 같이 나타납니다.

**심각도:** 중간

## 세부 사항
<a name="audit-chk-ca-cert-approaching-expiration-details"></a>

이 점검은 ACTIVE 또는 PENDING\$1TRANSFER 상태인 CA 인증서에 적용됩니다.

이 점검에서 규정 미준수 CA 인증서가 발견된 경우 다음 사유 코드가 반환됩니다.
+ CERTIFICATE\$1APPROACHING\$1EXPIRATION
+ CERTIFICATE\$1PAST\$1EXPIRATION

## 이것이 중요한 이유
<a name="audit-chk-ca-cert-approaching-expiration-why-it-matters"></a>

만료된 CA 인증서는 새 디바이스 인증서에 서명하는 데 사용해서는 안 됩니다.

## 수정 방법
<a name="audit-chk-ca-cert-approaching-expiration-how-to-fix"></a>

방법은 보안 모범 사례를 참조하세요. 수행 가능한 작업은 다음과 같습니다.

1. 새 CA 인증서를 AWS IoT에 등록합니다.

1. 새 CA 인증서를 사용하여 디바이스 인증서에 서명할 수 있는지 확인합니다.

1. [UpdateCACertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateCACertificate.html)를 사용하여 AWS IoT에서 이전 CA 인증서를 비활성(INACTIVE)으로 표시합니다. 완화 작업을 사용하여 다음을 수행할 수도 있습니다.
   + 이 변경사항을 실행하려면 감사 결과에서 `UPDATE_CA_CERTIFICATE` 완화 작업을 적용합니다.
   + Amazon SNS 메시지에 대해 사용자 지정 응답을 구현하려면 `PUBLISH_FINDINGS_TO_SNS` 완화 작업을 적용합니다.

   자세한 내용은 [완화 작업](dd-mitigation-actions.md) 단원을 참조하세요.

# 충돌하는 MQTT 클라이언트
<a name="audit-chk-conflicting-client-ids"></a>

여러 디바이스가 동일한 클라이언트 ID를 사용하여 연결됩니다.

이 점검은 CLI 및 API에서 `CONFLICTING_CLIENT_IDS_CHECK`와(과) 같이 나타납니다.

**심각도:** 높음

## 세부 사항
<a name="audit-chk-conflicting-client-ids-details"></a>

동일한 클라이언트 ID를 사용한 다중 연결이 성립되어 이미 연결된 디바이스가 연결 해제되었습니다. MQTT 사양에서는 클라이언트 ID당 활성 연결 하나만 허용하므로, 다른 디바이스가 동일한 클라이언트 ID를 사용하여 연결할 경우 이전 디바이스의 연결이 종료됩니다.

온디맨드 감사의 일부로 이 점검을 수행하면 해당 점검에서는 감사 시작 전 31일 동안 클라이언트 ID가 연결에 사용된 방식을 확인합니다. 예정된 감사의 경우 이 점검은 감사가 실행된 마지막 시간부터 감사의 이 인스턴스가 시작된 시간까지의 데이터를 확인합니다. 점검된 시간 동안 이 상태를 완화하는 단계를 수행한 경우 문제가 지속되는지 여부를 확인하기 위해 연결/연결 해제가 발생한 시기를 기록해 둡니다.

이 점검에서 규정 미준수가 발견된 경우 다음 사유 코드가 반환됩니다.
+ DUPLICATE\$1CLIENT\$1ID\$1ACROSS\$1CONNECTIONS

또한 이 점검에서 반환되는 결과에는 연결에 사용된 클라이언트 ID, 보안 주체 ID 및 연결 해제 횟수가 포함됩니다. 가장 최근 결과가 먼저 나열됩니다.

## 이것이 중요한 이유
<a name="audit-chk-conflicting-client-ids-why-it-matters"></a>

ID가 충돌하는 디바이스는 끊임없이 다시 연결되므로 메시지가 손실되거나 디바이스가 연결할 수 없는 상태가 됩니다.

이는 디바이스 또는 디바이스의 자격 증명이 손상되었으며 DDoS 공격일 수 있음을 나타낼 수 있습니다. 또한 계정에서 디바이스가 올바르게 구성되지 않거나 디바이스의 연결이 잘못되어 1분당 여러 번 다시 시도될 수 있습니다.

## 수정 방법
<a name="audit-chk-conflicting-client-ids-how-to-fix"></a>

각 디바이스를 AWS IoT에서 고유한 사물로 등록하고 사물 이름을 연결할 클라이언트 ID로 사용합니다. 또는 MQTT를 통해 디바이스를 연결할 때 UUID를 클라이언트 ID로 사용합니다. 완화 작업을 사용하면 다음을 수행할 수 있습니다.
+ Amazon SNS 메시지에 대해 사용자 지정 응답을 구현하려면 `PUBLISH_FINDINGS_TO_SNS` 완화 작업을 적용합니다.

자세한 내용은 [완화 작업](dd-mitigation-actions.md) 단원을 참조하세요.

# 디바이스 인증서 만료
<a name="audit-chk-device-cert-approaching-expiration"></a>

디바이스 인증서가 구성된 기준값 기간 내에 만료되거나 이미 만료되었습니다. 인증서 만료 검사 기준값은 30일(최소)에서 3,652일(10년(최대)) 사이로 구성할 수 있으며 기본값은 30일입니다.

이 점검은 CLI 및 API에서 `DEVICE_CERTIFICATE_EXPIRING_CHECK`와(과) 같이 나타납니다.

**심각도:** 중간

## 세부 사항
<a name="audit-chk-device-cert-approaching-expiration-details"></a>

이 점검은 ACTIVE 또는 PENDING\$1TRANSFER 상태인 디바이스 인증서에 적용됩니다.

이 점검에서 규정 미준수 디바이스 인증서가 발견된 경우 다음 사유 코드가 반환됩니다.
+ CERTIFICATE\$1APPROACHING\$1EXPIRATION
+ CERTIFICATE\$1PAST\$1EXPIRATION

## 이것이 중요한 이유
<a name="audit-chk-device-cert-approaching-expiration-why-it-matters"></a>

만료된 후에는 디바이스 인증서를 사용해서는 안 됩니다.

## 디바이스 인증서 만료 검사 구성
<a name="w2aab9c11c43c13"></a>

이 구성을 사용하면 디바이스 플릿 전반에서 만료 날짜가 다가오는 인증서에 대한 알림을 모니터링하고 수신할 수 있습니다. 예를 들어 인증서 만료 후 30일 이내에 알림을 받으려면 다음과 같이 검사를 구성할 수 있습니다.

```
{
    "roleArn": "your-audit-role-arn",
    "auditCheckConfigurations": {
        "DEVICE_CERTIFICATE_EXPIRING_CHECK": {
            "enabled": true,
            "configuration": {
                "CERT_EXPIRATION_THRESHOLD_IN_DAYS": "30"
            }
        }
    }
}
```

## 수정 방법
<a name="audit-chk-device-cert-approaching-expiration-how-to-fix"></a>

방법은 보안 모범 사례를 참조하세요. 수행 가능한 작업은 다음과 같습니다.

1. 새 인증서를 프로비저닝하고 디바이스에 연결합니다.

1. 새 인증서가 유효하고 디바이스가 이 인증서를 사용하여 연결할 수 있는지 확인합니다.

1. [UpdateCertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateCertificate.html)를 사용하여 이전 인증서를 AWS IoT에서 비활성(INACTIVE)으로 표시합니다. 완화 작업을 사용하면 다음을 수행할 수 있습니다.
   + 이 변경사항을 실행하려면 감사 결과에서 `UPDATE_DEVICE_CERTIFICATE` 완화 작업을 적용합니다.
   + 조치를 취할 수 있는 그룹에 디바이스를 추가하려면 `ADD_THINGS_TO_THING_GROUP` 완화 조치를 적용합니다.
   + Amazon SNS 메시지에 대해 사용자 지정 응답을 구현하려면 `PUBLISH_FINDINGS_TO_SNS` 완화 작업을 적용합니다.

   자세한 내용은 [완화 작업](dd-mitigation-actions.md) 단원을 참조하세요.

1. 기존 인증서를 디바이스에서 분리합니다. ([DetachThingPrincipal](https://docs.aws.amazon.com/iot/latest/apireference/API_DetachThingPrincipal.html) 참조)

# 디바이스 인증서 수명 확인
<a name="device-certificate-age-check"></a>

이 감사 확인은 디바이스 인증서가 지정한 수보다 크거나 동일한 일수 동안 활성화되어 있을 경우 알림을 전달합니다. 이 검사를 통해 인증서 상태에 대한 정보를 얻을 수 있는 덕분에 인증서 수명이 종료되더라도 주기적으로 적절한 조치를 취할 수 있어 인증서 손상 위험을 줄여 보안을 강화할 수 있습니다.

인증서 수명 검사 기준값은 30일(최소)에서 3,652일(10년(최대)) 사이로 구성할 수 있으며 기본값은 365일입니다.

이 점검은 CLI 및 API에서 `DEVICE_CERTIFICATE_AGE_CHECK`와(과) 같이 나타납니다. 이 검사는 기본적으로 심각도: **낮음**으로 사용 해제되어 있습니다.

## 세부 사항
<a name="w2aab9c11c45b9"></a>

이 점검은 ACTIVE 또는 PENDING\$1TRANSFER 상태인 디바이스 인증서에 적용됩니다. 이 점검에서 규정 미준수 디바이스 인증서가 발견된 경우 다음 사유 코드가 반환됩니다.
+ CERTIFICATE\$1PAST\$1AGE\$1THRESHOLD

## 디바이스 인증서 수명 확인 구성
<a name="w2aab9c11c45c11"></a>

이 구성을 사용하면 플릿의 특정 요구 사항에 맞게 인증서 교체 알림을 맞춤화하여 모든 디바이스 전반에서 강력한 보안 태세를 유지할 수 있습니다. `UpdateAccountAuditConfiguration` API를 사용하여 이 검사를 구성할 수 있습니다. 예를 들어 인증서가 365일 이상 활성 상태일 때 알림을 받으려면 다음과 같이 검사를 구성할 수 있습니다.

```
{
    "roleArn": "your-audit-role-arn",
    "auditCheckConfigurations": {
        "DEVICE_CERTIFICATE_AGE_CHECK": {
            "enabled": true,
            "configuration": {
                "CERT_AGE_THRESHOLD_IN_DAYS": "365"
            }
        }
    }
}
```

# 취소된 디바이스 인증서가 계속 활성 상태
<a name="audit-chk-revoked-device-cert"></a>

취소된 디바이스 인증서가 계속 활성 상태입니다.

이 점검은 CLI 및 API에서 `REVOKED_DEVICE_CERTIFICATE_STILL_ACTIVE_CHECK`와(과) 같이 나타납니다.

**심각도:** 중간

## 세부 사항
<a name="audit-chk-revoked-device-cert-details"></a>

디바이스 인증서가 해당 CA의 [인증서 해지 목록](https://en.wikipedia.org/wiki/Certificate_revocation_list)에 있지만, AWS IoT에서 여전히 활성 상태입니다.

이 점검은 ACTIVE 또는 PENDING\$1TRANSFER 상태인 디바이스 인증서에 적용됩니다.

이 점검에서 규정 미준수가 발견된 경우 다음 사유 코드가 반환됩니다.
+ CERTIFICATE\$1REVOKED\$1BY\$1ISSUER

## 이것이 중요한 이유
<a name="audit-chk-revoked-device-cert-why-it-matters"></a>

일반적으로 손상되었으므로 디바이스 인증서가 취소됩니다. 오류 또는 실수로 인해 AWS IoT에서 아직 취소되지 않을 수 있습니다.

## 수정 방법
<a name="audit-chk-revoked-device-cert-how-to-fix"></a>

디바이스 인증서가 손상되지 않았는지 확인합니다. 손상되었다면 보안 모범 사례를 따라 상황을 완화시킵니다. 수행 가능한 작업은 다음과 같습니다.

1. 디바이스에 새 인증서를 프로비저닝합니다.

1. 새 인증서가 유효하고 디바이스가 이 인증서를 사용하여 연결할 수 있는지 확인합니다.

1. [UpdateCertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateCertificate.html)을 사용하여 이전 인증서를 AWS IoT에서 취소됨(REVOKED)으로 표시합니다. 완화 작업을 사용하면 다음을 수행할 수 있습니다.
   + 이 변경사항을 실행하려면 감사 결과에서 `UPDATE_DEVICE_CERTIFICATE` 완화 작업을 적용합니다.
   + 조치를 취할 수 있는 그룹에 디바이스를 추가하려면 `ADD_THINGS_TO_THING_GROUP` 완화 조치를 적용합니다.
   + Amazon SNS 메시지에 대해 사용자 지정 응답을 구현하려면 `PUBLISH_FINDINGS_TO_SNS` 완화 작업을 적용합니다.

   자세한 내용은 [완화 작업](dd-mitigation-actions.md) 단원을 참조하세요.

1. 기존 인증서를 디바이스에서 분리합니다. ([DetachThingPrincipal](https://docs.aws.amazon.com/iot/latest/apireference/API_DetachThingPrincipal.html) 참조)

# 로깅 비활성화
<a name="audit-chk-logging-disabled"></a>

AWS IoT 로그는 Amazon CloudWatch에서 활성화되지 않습니다. V1, V2 로깅을 모두 확인합니다.

이 점검은 CLI 및 API에서 `LOGGING_DISABLED_CHECK`와(과) 같이 나타납니다.

**심각도: ** 낮음

## 세부 사항
<a name="audit-chk-logging-disabled-details"></a>

이 점검에서 규정 미준수가 발견된 경우 다음 사유 코드가 반환됩니다.
+ LOGGING\$1DISABLED

## 이것이 중요한 이유
<a name="audit-chk-logging-disabled-why-it-matters"></a>

CloudWatch의 AWS IoT 로그를 통해 인증 실패, 예상치 못한 연결 및 연결 해제 등 디바이스가 손상되었음을 나타낼 수 있는 AWS IoT 내의 동작을 파악할 수 있습니다.

## 수정 방법
<a name="audit-chk-logging-disabled-how-to-fix"></a>

CloudWatch의 AWS IoT 로그를 활성화합니다. **AWS IoT Core 개발자 안내서의 [모니터링 및 로깅](https://docs.aws.amazon.com/iot/latest/developerguide/security-logging.html) 완화 작업을 사용하면 다음을 수행할 수 있습니다.
+ 이 변경사항을 실행하려면 감사 결과에서 `ENABLE_IOT_LOGGING` 완화 작업을 적용합니다.
+ Amazon SNS 메시지에 대해 사용자 지정 응답을 구현하려면 `PUBLISH_FINDINGS_TO_SNS` 완화 작업을 적용합니다.

자세한 내용은 [완화 작업](dd-mitigation-actions.md) 섹션을 참조하세요.

# 감사 명령
<a name="AuditCommands"></a>

## 감사 설정 관리
<a name="AuditCommandsManageSettings"></a>

`UpdateAccountAuditConfiguration`을 사용하여 계정에 대한 감사 설정을 구성합니다. 이 명령을 사용하면 감사에 사용할 점검을 활성화하고, 선택적 알림을 설정하고, 권한을 구성할 수 있습니다.

`DescribeAccountAuditConfiguration`으로 이러한 설정을 점검합니다.

감사 설정을 삭제하려면 `DeleteAccountAuditConfiguration`을 사용합니다. 이렇게 하면 모든 기본값이 복원되며, 모든 점검이 기본적으로 비활성화되므로 효율적으로 감사를 비활성화합니다.

### UpdateAccountAuditConfiguration
<a name="dd-api-iot-UpdateAccountAuditConfiguration"></a>

이 계정에 대한 Device Defender 감사 설정을 구성하거나 재구성합니다. 설정에는 감사 알림을 전송하는 방법과 활성화 또는 비활성화된 감사 검사가 포함되어 있습니다.

 **시놉시스**

```
aws iot  update-account-audit-configuration \
    [--role-arn <value>] \
    [--audit-notification-target-configurations <value>] \
    [--audit-check-configurations <value>]  \
    [--cli-input-json <value>] \
    [--generate-cli-skeleton]
```

 `cli-input-json` 형식

```
{
  "roleArn": "string",
  "auditNotificationTargetConfigurations": {
    "string": {
      "targetArn": "string",
      "roleArn": "string",
      "enabled": "boolean"
    }
  },
  "auditCheckConfigurations": {
    "string": {
      "enabled": "boolean"
    }
  }
}
```


**`cli-input-json` Fields**  

|  명칭 |  유형 |  설명 | 
| --- | --- | --- | 
|  roleArn |  문자열  최대 길이: 2048 최소 길이: 20  |  감사를 수행할 때 AWS IoT에 디바이스, 정책, 인증서 및 기타 항목에 대한 정보에 액세스할 수 있는 권한을 부여하는 역할의 ARN입니다.  | 
|  auditNotificationTargetConfigurations |  map |  감사 알림을 전송할 대상에 대한 정보입니다. | 
|  targetArn |  문자열 |  감사 알림을 전송할 대상(SNS 주제)의 ARN입니다. | 
|  roleArn |  문자열  최대 길이: 2048 최소 길이: 20  |  대상으로 알림을 전송할 권한을 부여하는 역할의 ARN입니다. | 
|  활성화 |  boolean |  대상에 대한 알림이 활성화된 경우 True입니다. | 
|  auditCheckConfigurations |  map |  이 계정에 대해 활성화 및 비활성화된 감사 검사를 지정합니다. 현재 활성화된 점검을 비롯한 모든 점검 목록을 보려면 `DescribeAccountAuditConfiguration`을 사용합니다. 특정 점검이 활성화된 경우 일부 데이터 수집이 즉시 시작될 수 있습니다. 점검이 비활성화되면 점검과 관련하여 지금까지 수집된 모든 데이터가 삭제됩니다. 예정된 감사에서 사용되는 경우에는 점검을 비활성화할 수 없습니다. 먼저 예정된 감사에서 점검을 삭제하거나 예정된 감사 자체를 삭제해야 합니다. `UpdateAccountAuditConfiguration`에 대한 첫 번째 호출에서 이 파라미터는 필수이며, 하나 이상의 활성화된 점검을 지정해야 합니다.  | 
|  활성화 |  boolean |  이 계정에 대해 이 감사 검사가 활성화된 경우 True입니다. | 
|  구성 |  map  |  (선택 사항) `CERT_AGE_THRESHOLD_IN_DAYS` 및 `CERT_EXPIRATION_THRESHOLD_IN_DAYS` 등의 특정 감사 검사에 대한 사용자 지정 구성을 사용하면 인증서 수명 및 임박한 만료에 대한 알림을 받을 시기를 정의할 수 있습니다.  | 

출력

없음

 **오류**

`InvalidRequestException`  
요청 내용이 잘못되었습니다.

`ThrottlingException`  
속도가 제한을 초과했습니다.

`InternalFailureException`  
예상치 못한 오류가 발생했습니다.

### DescribeAccountAuditConfiguration
<a name="dd-api-iot-DescribeAccountAuditConfiguration"></a>

이 계정에 대한 Device Defender Audit 설정에 대한 정보를 가져옵니다. 설정에는 감사 알림을 전송하는 방법과 활성화 또는 비활성화된 감사 검사가 포함되어 있습니다.

 **시놉시스**

```
aws iot  describe-account-audit-configuration  \
    [--cli-input-json <value>] \
    [--generate-cli-skeleton]
```

 `cli-input-json` 형식

```
{
}
```

출력

```
{
  "roleArn": "string",
  "auditNotificationTargetConfigurations": {
    "string": {
      "targetArn": "string",
      "roleArn": "string",
      "enabled": "boolean"
    }
  },
  "auditCheckConfigurations": {
    "string": {
      "enabled": "boolean"
    }
  }
}
```


**CLI 출력 필드**  

|  명칭 |  유형 |  설명 | 
| --- | --- | --- | 
|  roleArn |  문자열  최대 길이: 2048 최소 길이: 20  |  감사를 수행할 때 AWS IoT에 디바이스, 정책, 인증서 및 기타 항목에 대한 정보에 액세스할 수 있는 권한을 부여하는 역할의 ARN입니다. `UpdateAccountAuditConfiguration`에 대한 첫 번째 호출에서 이 파라미터는 필수입니다.  | 
|  auditNotificationTargetConfigurations |  map |  이 계정의 감사 알림을 전송할 대상에 대한 정보입니다.  | 
|  targetArn |  문자열 |  감사 알림을 전송할 대상(SNS 주제)의 ARN입니다. | 
|  roleArn |  문자열  최대 길이: 2048 최소 길이: 20  |  대상으로 알림을 전송할 권한을 부여하는 역할의 ARN입니다. | 
|  활성화 |  boolean |  대상에 대한 알림이 활성화된 경우 True입니다. | 
|  auditCheckConfigurations |  map |  이 계정에 대해 활성화 및 비활성화된 감사 검사입니다. | 
|  활성화 |  boolean |  이 계정에 대해 이 감사 검사가 활성화된 경우 True입니다. | 
|  구성 |  map |  (선택 사항) 여기서는 인증서의 최대 허용 기간 또는 알림이 트리거되어야 하는 만료 전 일수와 같은 특정 감사 검사에 적합한 특정 구성을 제공합니다. | 

 **오류**

`ThrottlingException`  
속도가 제한을 초과했습니다.

`InternalFailureException`  
예상치 못한 오류가 발생했습니다.

### DeleteAccountAuditConfiguration
<a name="dd-api-iot-DeleteAccountAuditConfiguration"></a>

이 계정에 대한 Device Defender 감사의 기본 설정을 복원합니다. 입력한 모든 구성 데이터가 삭제되고 모든 감사 검사가 비활성화됨으로 재설정됩니다. 

 **시놉시스**

```
aws iot  delete-account-audit-configuration \
    [--delete-scheduled-audits | --no-delete-scheduled-audits]  \
    [--cli-input-json <value>] \
    [--generate-cli-skeleton]
```

 `cli-input-json` 형식

```
{
  "deleteScheduledAudits": "boolean"
}
```


**`cli-input-json` Fields**  

|  명칭 |  유형 |  설명 | 
| --- | --- | --- | 
|  deleteScheduledAudits |  boolean |  true인 경우 예정된 감사가 모두 삭제됩니다. | 

출력

없음

 **오류**

`InvalidRequestException`  
요청 내용이 잘못되었습니다.

`ResourceNotFoundException`  
지정한 리소스가 존재하지 않습니다.

`ThrottlingException`  
속도가 제한을 초과했습니다.

`InternalFailureException`  
예상치 못한 오류가 발생했습니다.

## 감사 예약
<a name="device-defender-AuditCommandsManageSchedules"></a>

`CreateScheduledAudit`을 사용하여 하나 이상의 예정된 감사를 생성합니다. 이 명령을 사용하면 감사 중 수행할 점검과 감사를 실행해야 하는 빈도를 지정할 수 있습니다.

`ListScheduledAudits` 및 `DescribeScheduledAudit`을 통해 예정된 감사를 계속 추적합니다.

`UpdateScheduledAudit`으로 기존 예정된 감사를 변경하거나 `DeleteScheduledAudit`으로 삭제합니다.

### CreateScheduledAudit
<a name="dd-api-iot-CreateScheduledAudit"></a>

지정된 시간 간격으로 실행되는 예정된 감사를 생성합니다.

 **시놉시스**

```
aws iot  create-scheduled-audit \
    --frequency <value> \
    [--day-of-month <value>] \
    [--day-of-week <value>] \
    --target-check-names <value> \
    [--tags <value>] \
    --scheduled-audit-name <value>  \
    [--cli-input-json <value>] \
    [--generate-cli-skeleton]
```

 `cli-input-json` 형식

```
{
  "frequency": "string",
  "dayOfMonth": "string",
  "dayOfWeek": "string",
  "targetCheckNames": [
    "string"
  ],
  "tags": [
    {
      "Key": "string",
      "Value": "string"
    }
  ],
  "scheduledAuditName": "string"
}
```


**`cli-input-json` Fields**  

|  명칭 |  유형 |  설명 | 
| --- | --- | --- | 
|  frequency |  문자열 |  예정된 감사가 발생하는 빈도입니다. DAILY, WEEKLY, BIWEEKLY 또는 MONTHLY 중 하나일 수 있습니다. 각 감사의 실제 시작 시간은 시스템에서 결정됩니다.  열거형: DAILY \$1 WEEKLY \$1 BIWEEKLY \$1 MONTHLY  | 
|  dayOfMonth |  문자열  패턴: ^([1-9]\$1[12][0-9]\$13[01])\$1\$1^LAST\$1  |  예정된 감사가 발생하는 월의 날입니다. 1\$131 또는 LAST일 수 있습니다. `frequency` 파라미터가 MONTHLY로 설정된 경우 이 필드는 필수입니다. 29\$131일이 지정되고 그만큼 많은 날이 없는 월의 경우에는 월의 LAST 날에 감사가 발생합니다.  | 
|  dayOfWeek |  문자열 |  예정된 감사가 발생하는 주의 날입니다. SUN, MON, TUE, WED, THU, FRI 또는 SAT 중 하나일 수 있습니다. `frequency` 파라미터가 WEEKLY 또는 BIWEEKLY로 설정된 경우 이 필드는 필수입니다.  열거형: SUN \$1 MON \$1 TUE \$1 WED \$1 THU \$1 FRI \$1 SAT  | 
|  targetCheckNames |  list  멤버: AuditCheckName  |  예정된 감사 중 어떤 점검이 수행되는지를 나타냅니다. 계정에 대해 점검이 활성화되어야 합니다. (활성화된 점검을 비롯한 모든 점검 목록을 보려면 `DescribeAccountAuditConfiguration`을 사용하고, 활성화된 점검을 선택하려면 `UpdateAccountAuditConfiguration`을 사용합니다.)  | 
|  tags |  list  멤버: Tag  java 클래스: java.util.List  |  예정된 감사 관리에 사용할 수 있는 메타데이터입니다. | 
|  키 |  문자열 |  태그 키. | 
|  값 |  문자열 |  태그 값. | 
|  scheduledAuditName |  문자열  최대 길이: 128 최소 길이: 1  패턴: [a-zA-Z0-9\$1-]\$1  |  예정된 감사에 제공할 이름입니다. (최대 128자) | 

출력

```
{
  "scheduledAuditArn": "string"
}
```


**CLI 출력 필드**  

|  명칭 |  유형 |  설명 | 
| --- | --- | --- | 
|  scheduledAuditArn |  문자열 |  예정된 감사의 ARN입니다. | 

 **오류**

`InvalidRequestException`  
요청 내용이 잘못되었습니다.

`ThrottlingException`  
속도가 제한을 초과했습니다.

`InternalFailureException`  
예상치 못한 오류가 발생했습니다.

`LimitExceededException`  
한도를 초과했습니다.

### ListScheduledAudits
<a name="dd-api-iot-ListScheduledAudits"></a>

예정된 감사를 모두 나열합니다.

 **시놉시스**

```
aws iot  list-scheduled-audits \
    [--next-token <value>] \
    [--max-results <value>]  \
    [--cli-input-json <value>] \
    [--generate-cli-skeleton]
```

 `cli-input-json` 형식

```
{
  "nextToken": "string",
  "maxResults": "integer"
}
```


**`cli-input-json` Fields**  

|  명칭 |  유형 |  설명 | 
| --- | --- | --- | 
|  nextToken |  문자열 |  다음 결과 집합에 대한 토큰입니다. | 
|  maxResults |  정수  최대 범위: 250 최소 범위: 1  |  한 번에 반환할 수 있는 최대 결과 수입니다. 기본값은 25입니다. | 

출력

```
{
  "scheduledAudits": [
    {
      "scheduledAuditName": "string",
      "scheduledAuditArn": "string",
      "frequency": "string",
      "dayOfMonth": "string",
      "dayOfWeek": "string"
    }
  ],
  "nextToken": "string"
}
```


**CLI 출력 필드**  

|  명칭 |  유형 |  설명 | 
| --- | --- | --- | 
|  scheduledAudits |  list  멤버: ScheduledAuditMetadata  java 클래스: java.util.List  |  예정된 감사의 목록입니다. | 
|  scheduledAuditName |  문자열  최대 길이: 128 최소 길이: 1  패턴: [a-zA-Z0-9\$1-]\$1  |  예약된 감사의 이름입니다. | 
|  scheduledAuditArn |  문자열 |  예정된 감사의 ARN입니다. | 
|  frequency |  문자열 |  예정된 감사가 발생하는 빈도입니다.  열거형: DAILY \$1 WEEKLY \$1 BIWEEKLY \$1 MONTHLY  | 
|  dayOfMonth |  문자열  패턴: ^([1-9]\$1[12][0-9]\$13[01])\$1\$1^LAST\$1  |  예정된 감사가 실행되는 월의 날입니다(`frequency`가 MONTHLY인 경우). 29\$131일이 지정되고 그만큼 많은 날이 없는 월의 경우에는 월의 LAST 날에 감사가 발생합니다.  | 
|  dayOfWeek |  문자열 |  예정된 감사가 실행되는 주의 날입니다(`frequency`가 WEEKLY 또는 BIWEEKLY인 경우).  열거형: SUN \$1 MON \$1 TUE \$1 WED \$1 THU \$1 FRI \$1 SAT  | 
|  nextToken |  문자열 |  다음 결과 집합을 가져오는 데 사용할 수 있는 토큰 또는 결과가 더 이상 없는 경우 `null`입니다.  | 

 **오류**

`InvalidRequestException`  
요청 내용이 잘못되었습니다.

`ThrottlingException`  
속도가 제한을 초과했습니다.

`InternalFailureException`  
예상치 못한 오류가 발생했습니다.

### DescribeScheduledAudit
<a name="dd-api-iot-DescribeScheduledAudit"></a>

예정된 감사에 대한 정보를 가져옵니다.

 **시놉시스**

```
aws iot  describe-scheduled-audit \
    --scheduled-audit-name <value>  \
    [--cli-input-json <value>] \
    [--generate-cli-skeleton]
```

 `cli-input-json` 형식

```
{
  "scheduledAuditName": "string"
}
```


**`cli-input-json` Fields**  

|  명칭 |  유형 |  설명 | 
| --- | --- | --- | 
|  scheduledAuditName |  문자열  최대 길이: 128 최소 길이: 1  패턴: [a-zA-Z0-9\$1-]\$1  |  가져올 정보가 포함된 예정된 감사의 이름입니다. | 

출력

```
{
  "frequency": "string",
  "dayOfMonth": "string",
  "dayOfWeek": "string",
  "targetCheckNames": [
    "string"
  ],
  "scheduledAuditName": "string",
  "scheduledAuditArn": "string"
}
```


**CLI 출력 필드**  

|  명칭 |  유형 |  설명 | 
| --- | --- | --- | 
|  frequency |  문자열 |  예정된 감사가 발생하는 빈도입니다. DAILY, WEEKLY, BIWEEKLY 또는 MONTHLY 중 하나입니다. 각 감사의 실제 시작 시간은 시스템에서 결정됩니다.  열거형: DAILY \$1 WEEKLY \$1 BIWEEKLY \$1 MONTHLY  | 
|  dayOfMonth |  문자열  패턴: ^([1-9]\$1[12][0-9]\$13[01])\$1\$1^LAST\$1  |  예정된 감사가 발생하는 월의 날입니다. 1\$131 또는 LAST일 수 있습니다. 29\$131일이 지정되고 그만큼 많은 날이 없는 월의 경우에는 월의 LAST 날에 감사가 발생합니다.  | 
|  dayOfWeek |  문자열 |  예정된 감사가 발생하는 주의 날입니다. SUN, MON, TUE, WED, THU, FRI 또는 SAT 중 하나입니다.  열거형: SUN \$1 MON \$1 TUE \$1 WED \$1 THU \$1 FRI \$1 SAT  | 
|  targetCheckNames |  list  멤버: AuditCheckName  |  예정된 감사 중 어떤 점검이 수행되는지를 나타냅니다. 계정에 대해 점검이 활성화되어야 합니다. (활성화된 점검을 비롯한 모든 점검 목록을 보려면 `DescribeAccountAuditConfiguration`을 사용하고, 활성화된 점검을 선택하려면 `UpdateAccountAuditConfiguration`을 사용합니다.)  | 
|  scheduledAuditName |  문자열  최대 길이: 128 최소 길이: 1  패턴: [a-zA-Z0-9\$1-]\$1  |  예약된 감사의 이름입니다. | 
|  scheduledAuditArn |  문자열 |  예정된 감사의 ARN입니다. | 

 **오류**

`InvalidRequestException`  
요청 내용이 잘못되었습니다.

`ResourceNotFoundException`  
지정한 리소스가 존재하지 않습니다.

`ThrottlingException`  
속도가 제한을 초과했습니다.

`InternalFailureException`  
예상치 못한 오류가 발생했습니다.

### UpdateScheduledAudit
<a name="dd-api-iot-UpdateScheduledAudit"></a>

수행되는 점검 및 감사가 발생하는 빈도를 비롯하여 예정된 감사를 업데이트합니다.

 **시놉시스**

```
aws iot  update-scheduled-audit \
    [--frequency <value>] \
    [--day-of-month <value>] \
    [--day-of-week <value>] \
    [--target-check-names <value>] \
    --scheduled-audit-name <value>  \
    [--cli-input-json <value>] \
    [--generate-cli-skeleton]
```

 `cli-input-json` 형식

```
{
  "frequency": "string",
  "dayOfMonth": "string",
  "dayOfWeek": "string",
  "targetCheckNames": [
    "string"
  ],
  "scheduledAuditName": "string"
}
```


**`cli-input-json` Fields**  

|  명칭 |  유형 |  설명 | 
| --- | --- | --- | 
|  frequency |  문자열 |  예정된 감사가 발생하는 빈도입니다. DAILY, WEEKLY, BIWEEKLY 또는 MONTHLY 중 하나일 수 있습니다. 각 감사의 실제 시작 시간은 시스템에서 결정됩니다.  열거형: DAILY \$1 WEEKLY \$1 BIWEEKLY \$1 MONTHLY  | 
|  dayOfMonth |  문자열  패턴: ^([1-9]\$1[12][0-9]\$13[01])\$1\$1^LAST\$1  |  예정된 감사가 발생하는 월의 날입니다. 1\$131 또는 LAST일 수 있습니다. `frequency` 파라미터가 MONTHLY로 설정된 경우 이 필드는 필수입니다. 29\$131일이 지정되고 그만큼 많은 날이 없는 월의 경우에는 월의 LAST 날에 감사가 발생합니다.  | 
|  dayOfWeek |  문자열 |  예정된 감사가 발생하는 주의 날입니다. SUN, MON, TUE, WED, THU, FRI 또는 SAT 중 하나일 수 있습니다. `frequency` 파라미터가 WEEKLY 또는 BIWEEKLY로 설정된 경우 이 필드는 필수입니다.  열거형: SUN \$1 MON \$1 TUE \$1 WED \$1 THU \$1 FRI \$1 SAT  | 
|  targetCheckNames |  list  멤버: AuditCheckName  |  예정된 감사 중 어떤 점검이 수행되는지를 나타냅니다. 계정에 대해 점검이 활성화되어야 합니다. (활성화된 점검을 비롯한 모든 점검 목록을 보려면 `DescribeAccountAuditConfiguration`을 사용하고, 활성화된 점검을 선택하려면 `UpdateAccountAuditConfiguration`을 사용합니다.)  | 
|  scheduledAuditName |  문자열  최대 길이: 128 최소 길이: 1  패턴: [a-zA-Z0-9\$1-]\$1  |  예약된 감사의 이름입니다. (최대 128자) | 

출력

```
{
  "scheduledAuditArn": "string"
}
```


**CLI 출력 필드**  

|  명칭 |  유형 |  설명 | 
| --- | --- | --- | 
|  scheduledAuditArn |  문자열 |  예정된 감사의 ARN입니다. | 

 **오류**

`InvalidRequestException`  
요청 내용이 잘못되었습니다.

`ResourceNotFoundException`  
지정한 리소스가 존재하지 않습니다.

`ThrottlingException`  
속도가 제한을 초과했습니다.

`InternalFailureException`  
예상치 못한 오류가 발생했습니다.

### DeleteScheduledAudit
<a name="dd-api-iot-DeleteScheduledAudit"></a>

예정된 감사를 삭제합니다.

 **시놉시스**

```
aws iot  delete-scheduled-audit \
    --scheduled-audit-name <value>  \
    [--cli-input-json <value>] \
    [--generate-cli-skeleton]
```

 `cli-input-json` 형식

```
{
  "scheduledAuditName": "string"
}
```


**`cli-input-json` Fields**  

|  명칭 |  유형 |  설명 | 
| --- | --- | --- | 
|  scheduledAuditName |  문자열  최대 길이: 128 최소 길이: 1  패턴: [a-zA-Z0-9\$1-]\$1  |  삭제할 예정된 감사의 이름입니다. | 

출력

없음

 **오류**

`InvalidRequestException`  
요청 내용이 잘못되었습니다.

`ResourceNotFoundException`  
지정한 리소스가 존재하지 않습니다.

`ThrottlingException`  
속도가 제한을 초과했습니다.

`InternalFailureException`  
예상치 못한 오류가 발생했습니다.

## 온디맨드 감사 실행
<a name="device-defender-AuditCommandsOnDemand"></a>

`StartOnDemandAuditTask`를 사용하여 수행할 점검을 지정하고 즉시 감사를 실행합니다.

### StartOnDemandAuditTask
<a name="dd-api-iot-StartOnDemandAuditTask"></a>

온디맨드 Device Defender 감사를 시작합니다.

 **시놉시스**

```
aws iot  start-on-demand-audit-task \
    --target-check-names <value>  \
    [--cli-input-json <value>] \
    [--generate-cli-skeleton]
```

 `cli-input-json` 형식

```
{
  "targetCheckNames": [
    "string"
  ]
}
```


**`cli-input-json` Fields**  

|  명칭 |  유형 |  설명 | 
| --- | --- | --- | 
|  targetCheckNames |  list  멤버: AuditCheckName  |  감사 중 어떤 점검이 수행되는지를 나타냅니다. 지정하는 점검은 계정에 대해 활성화되어야 합니다. 그렇지 않으면 예외가 발생합니다. 활성화된 점검을 비롯한 모든 점검 목록을 보려면 `DescribeAccountAuditConfiguration`을 사용하고, 활성화된 점검을 선택하려면 `UpdateAccountAuditConfiguration`을 사용합니다.  | 

출력

```
{
  "taskId": "string"
}
```


**CLI 출력 필드**  

|  명칭 |  유형 |  설명 | 
| --- | --- | --- | 
|  taskId |  문자열  최대 길이: 40 최소 길이: 1  패턴: [a-zA-Z0-9-]\$1  |  시작한 온디맨드 감사의 ID입니다. | 

 **오류**

`InvalidRequestException`  
요청 내용이 잘못되었습니다.

`ThrottlingException`  
속도가 제한을 초과했습니다.

`InternalFailureException`  
예상치 못한 오류가 발생했습니다.

`LimitExceededException`  
한도를 초과했습니다.

## 감사 인스턴스 관리
<a name="device-defender-AuditCommandsManageInstances"></a>

특정 감사 인스턴스에 대한 정보를 가져오려면 `DescribeAuditTask`를 사용합니다. 이미 실행된 경우 결과에는 실패한 점검과 통과된 점검, 시스템이 완료할 수 없는 점검 및 감사가 계속 진행 중인 경우 작업 중인 점검이 포함됩니다.

지정된 시간 간격 동안 실행된 감사를 찾으려면 `ListAuditTasks`를 사용합니다.

진행 중인 감사를 중지하려면 `CancelAuditTask`를 사용합니다.

### DescribeAuditTask
<a name="dd-api-iot-DescribeAuditTask"></a>

Device Defender 감사에 대한 정보를 가져옵니다.

 **시놉시스**

```
aws iot  describe-audit-task \
    --task-id <value>  \
    [--cli-input-json <value>] \
    [--generate-cli-skeleton]
```

 `cli-input-json` 형식

```
{
  "taskId": "string"
}
```


**`cli-input-json` Fields**  

|  명칭 |  유형 |  설명 | 
| --- | --- | --- | 
|  taskId |  문자열  최대 길이: 40 최소 길이: 1  패턴: [a-zA-Z0-9-]\$1  |  가져올 정보가 포함된 감사의 ID입니다. | 

출력

```
{
  "taskStatus": "string",
  "taskType": "string",
  "taskStartTime": "timestamp",
  "taskStatistics": {
    "totalChecks": "integer",
    "inProgressChecks": "integer",
    "waitingForDataCollectionChecks": "integer",
    "compliantChecks": "integer",
    "nonCompliantChecks": "integer",
    "failedChecks": "integer",
    "canceledChecks": "integer"
  },
  "scheduledAuditName": "string",
  "auditDetails": {
    "string": {
      "checkRunStatus": "string",
      "checkCompliant": "boolean",
      "totalResourcesCount": "long",
      "nonCompliantResourcesCount": "long",
      "errorCode": "string",
      "message": "string"
    }
  }
}
```


**CLI 출력 필드**  

|  명칭 |  유형 |  설명 | 
| --- | --- | --- | 
|  taskStatus |  문자열 |  감사의 상태로 IN\$1PROGRESS, COMPLETED, FAILED 또는 CANCELED 중 하나입니다.  열거형: IN\$1PROGRESS \$1 COMPLETED \$1 FAILED \$1 CANCELED  | 
|  taskType |  문자열 |  감사 유형으로 ON\$1DEMAND\$1AUDIT\$1TASK 또는 SCHEDULED\$1AUDIT\$1TASK입니다.  열거형: ON\$1DEMAND\$1AUDIT\$1TASK \$1 SCHEDULED\$1AUDIT\$1TASK  | 
|  taskStartTime |  타임스탬프 |  감사가 시작된 시간입니다. | 
|  taskStatistics |  TaskStatistics |  감사에 대한 통계 정보입니다. | 
|  totalChecks |  정수 |  이 감사의 점검 수입니다. | 
|  inProgressChecks |  정수 |  진행 중인 점검 수입니다. | 
|  waitingForDataCollectionChecks |  정수 |  데이터 수집 대기 중인 점검 수입니다. | 
|  compliantChecks |  정수 |  규정 준수 리소스를 발견한 점검 수입니다. | 
|  nonCompliantChecks |  정수 |  규정 미준수 리소스를 발견한 점검 수입니다. | 
|  failedChecks |  정수 |  점검 수입니다. | 
|  canceledChecks |  정수 |  감사가 취소되어 실행되지 않은 점검 수입니다. | 
|  scheduledAuditName |  문자열  최대 길이: 128 최소 길이: 1  패턴: [a-zA-Z0-9\$1-]\$1  |  예정된 감사의 이름입니다(감사가 예정된 감사인 경우에만 해당). | 
|  auditDetails |  map |  이 감사 중 수행된 각 점검에 대한 세부 정보입니다. | 
|  checkRunStatus |  문자열 |  이 점검의 완료 상태로 IN\$1PROGRESS, WAITING\$1FOR\$1DATA\$1COLLECTION, CANCELED, COMPLETED\$1COMPLIANT, COMPLETED\$1NON\$1COMPLIANT 또는 FAILED 중 하나입니다.  열거형: IN\$1PROGRESS \$1 WAITING\$1FOR\$1DATA\$1COLLECTION \$1 CANCELED \$1 COMPLETED\$1COMPLIANT \$1 COMPLETED\$1NON\$1COMPLIANT \$1 FAILED  | 
|  checkCompliant |  boolean |  점검이 완료되고 모든 리소스가 규정 준수로 확인된 경우 True입니다. | 
|  totalResourcesCount |  long |  점검이 수행된 리소스의 수입니다. | 
|  nonCompliantResourcesCount |  long |  점검에서 규정 미준수가 발견된 리소스의 수입니다. | 
|  errorCode |  문자열 |  이 감사 중 이 점검을 수행할 때 발생한 오류 코드입니다. INSUFFICIENT\$1PERMISSIONS 또는 AUDIT\$1CHECK\$1DISABLED 중 하나입니다.  | 
|  message |  문자열  최대 길이: 2048  |  이 감사 중 이 점검을 수행할 때 발생한 오류와 연관된 메시지입니다. | 

 **오류**

`InvalidRequestException`  
요청 내용이 잘못되었습니다.

`ResourceNotFoundException`  
지정한 리소스가 존재하지 않습니다.

`ThrottlingException`  
속도가 제한을 초과했습니다.

`InternalFailureException`  
예상치 못한 오류가 발생했습니다.

### ListAuditTasks
<a name="dd-api-iot-ListAuditTasks"></a>

지정된 기간 동안 수행된 Device Defender 감사를 나열합니다.

 **시놉시스**

```
aws iot  list-audit-tasks \
    --start-time <value> \
    --end-time <value> \
    [--task-type <value>] \
    [--task-status <value>] \
    [--next-token <value>] \
    [--max-results <value>]  \
    [--cli-input-json <value>] \
    [--generate-cli-skeleton]
```

 `cli-input-json` 형식

```
{
  "startTime": "timestamp",
  "endTime": "timestamp",
  "taskType": "string",
  "taskStatus": "string",
  "nextToken": "string",
  "maxResults": "integer"
}
```


**`cli-input-json` Fields**  

|  명칭 |  유형 |  설명 | 
| --- | --- | --- | 
|  startTime |  타임스탬프 |  기간의 시작입니다. 감사 정보는 제한된 시간(180일) 동안 보관됩니다. 보관되기 전에 시작 시간을 요청하면 `InvalidRequestException`이 발생합니다.  | 
|  endTime |  타임스탬프 |  기간의 끝입니다. | 
|  taskType |  문자열 |  출력을 지정된 감사 유형으로 제한하기 위한 필터로 ON\$1DEMAND\$1AUDIT\$1TASK 또는 SCHEDULED\$1\$1AUDIT\$1TASK 중 하나일 수 있습니다.  열거형: ON\$1DEMAND\$1AUDIT\$1TASK \$1 SCHEDULED\$1AUDIT\$1TASK  | 
|  taskStatus |  문자열 |  감사에 대한 출력을 지정된 완료 상태로 제한하기 위한 필터로 IN\$1PROGRESS, COMPLETED, FAILED 또는 CANCELED 중 하나일 수 있습니다.  열거형: IN\$1PROGRESS \$1 COMPLETED \$1 FAILED \$1 CANCELED  | 
|  nextToken |  문자열 |  다음 결과 집합에 대한 토큰입니다. | 
|  maxResults |  정수  최대 범위: 250 최소 범위: 1  |  한 번에 반환할 수 있는 최대 결과 수입니다. 기본값은 25입니다. | 

출력

```
{
  "tasks": [
    {
      "taskId": "string",
      "taskStatus": "string",
      "taskType": "string"
    }
  ],
  "nextToken": "string"
}
```


**CLI 출력 필드**  

|  명칭 |  유형 |  설명 | 
| --- | --- | --- | 
|  작업 |  list  멤버: AuditTaskMetadata  java 클래스: java.util.List  |  지정된 기간 동안 수행된 감사입니다. | 
|  taskId |  문자열  최대 길이: 40 최소 길이: 1  패턴: [a-zA-Z0-9-]\$1  |  이 감사의 ID입니다. | 
|  taskStatus |  문자열 |  이 감사의 상태로 IN\$1PROGRESS, COMPLETED, FAILED 또는 CANCELED 중 하나입니다.  열거형: IN\$1PROGRESS \$1 COMPLETED \$1 FAILED \$1 CANCELED  | 
|  taskType |  문자열 |  이 감사 유형으로 ON\$1DEMAND\$1AUDIT\$1TASK 또는 SCHEDULED\$1AUDIT\$1TASK 중 하나입니다.  열거형: ON\$1DEMAND\$1AUDIT\$1TASK \$1 SCHEDULED\$1AUDIT\$1TASK  | 
|  nextToken |  문자열 |  다음 결과 집합을 가져오기 위해 사용할 수 있는 토큰이지만 결과가 더 이상 없는 경우에는 `null`입니다.  | 

 **오류**

`InvalidRequestException`  
요청 내용이 잘못되었습니다.

`ThrottlingException`  
속도가 제한을 초과했습니다.

`InternalFailureException`  
예상치 못한 오류가 발생했습니다.

### CancelAuditTask
<a name="dd-api-iot-CancelAuditTask"></a>

진행 중인 감사를 취소합니다. 감사는 예정된 감사이거나 온디맨드 감사일 수 있습니다. 감사가 진행 중이 아닌 경우 `InvalidRequestException`이 발생합니다.

 **시놉시스**

```
aws iot  cancel-audit-task \
    --task-id <value>  \
    [--cli-input-json <value>] \
    [--generate-cli-skeleton]
```

 `cli-input-json` 형식

```
{
  "taskId": "string"
}
```


**`cli-input-json` Fields**  

|  명칭 |  유형 |  설명 | 
| --- | --- | --- | 
|  taskId |  문자열  최대 길이: 40 최소 길이: 1  패턴: [a-zA-Z0-9-]\$1  |  취소할 감사의 ID입니다. IN\$1PROGRESS인 감사만 취소할 수 있습니다.  | 

출력

없음

 **오류**

`ResourceNotFoundException`  
지정한 리소스가 존재하지 않습니다.

`InvalidRequestException`  
요청 내용이 잘못되었습니다.

`ThrottlingException`  
속도가 제한을 초과했습니다.

`InternalFailureException`  
예상치 못한 오류가 발생했습니다.

## 감사 결과 점검
<a name="device-defender-AuditCommandsFindings"></a>

감사 결과를 확인하려면 `ListAuditFindings`를 사용합니다. 점검 유형, 특정 리소스 또는 감사 시간을 기준으로 결과를 필터링할 수 있습니다. 이 정보를 사용하여 발견된 문제를 완화할 수 있습니다.

완화 조치를 정의하고 감사 결과에 적용할 수 있습니다. 자세한 내용은 [완화 작업](dd-mitigation-actions.md) 단원을 참조하세요.

### ListAuditFindings
<a name="dd-api-iot-ListAuditFindings"></a>

지정된 기간 동안 수행된 Device Defender 감사의 결과를 나열합니다. (결과는 180일 동안 보관됩니다.)

 **시놉시스**

```
aws iot  list-audit-findings \
    [--task-id <value>] \
    [--check-name <value>] \
    [--resource-identifier <value>] \
    [--max-results <value>] \
    [--next-token <value>] \
    [--start-time <value>] \
    [--end-time <value>]  \
    [--cli-input-json <value>] \
    [--generate-cli-skeleton]
```

 `cli-input-json` 형식

```
{
  "taskId": "string",
  "checkName": "string",
  "resourceIdentifier": {
    "deviceCertificateId": "string",
    "caCertificateId": "string",
    "cognitoIdentityPoolId": "string",
    "clientId": "string",
    "policyVersionIdentifier": {
      "policyName": "string",
      "policyVersionId": "string"
    },
   
    "roleAliasArn": "string",
    "account": "string"
  },
  "maxResults": "integer",
  "nextToken": "string",
  "startTime": "timestamp",
  "endTime": "timestamp"
}
```


**`cli-input-json` Fields**  

|  명칭 |  유형 |  설명 | 
| --- | --- | --- | 
|  taskId  |  문자열  최대 길이: 40 최소 길이: 1  패턴: [a-zA-Z0-9-]\$1  |  감사에 대한 결과를 지정된 ID로 제한하는 필터입니다. taskId나 startTime 및 endTime을 지정해야 하지만, 둘 다 지정하면 안 됩니다.  | 
|  checkName  |  문자열  |  결과를 지정된 감사 검사에 대한 결과로 제한하는 필터입니다.  | 
|  resourceIdentifier  |  ResourceIdentifier  |  규정 미준수 리소스를 식별하는 정보입니다.  | 
|  deviceCertificateId  |  문자열  최대 길이: 64 최소 길이: 64  패턴: (0x)?[a-fA-F0-9]\$1  |  리소스에 연결된 인증서의 ID입니다.  | 
|  caCertificateId  |  문자열  최대 길이: 64 최소 길이: 64  패턴: (0x)?[a-fA-F0-9]\$1  |  인증서를 승인하는 데 사용되는 CA 인증서의 ID입니다.  | 
|  cognitoIdentityPoolId  |  문자열  |  Amazon Cognito 자격 증명 풀의 ID입니다.  | 
|  clientId  |  문자열  |  클라이언트 ID입니다.  | 
|  policyVersionIdentifier  |  PolicyVersionIdentifier  |  리소스와 연관된 정책의 버전입니다.  | 
|  policyName  |  문자열  최대 길이: 128 최소 길이: 1  패턴: [w\$1=,.@-]\$1  |   정책의 이름입니다.  | 
|  policyVersionId  |  문자열  패턴: [0-9]\$1  |  리소스와 연관된 정책의 버전 ID입니다.  | 
|  roleAliasArn  |  문자열  |  과도하게 허용적인 작업이 있는 역할 별칭의 ARN입니다.  최대 길이: 2048 최소 길이: 1  | 
|  account  |  문자열  최대 길이: 12 최소 길이: 12  패턴: [0-9]\$1  |  리소스와 연관된 계정입니다.  | 
|  maxResults  |  정수  최대 범위: 250 최소 범위: 1  |  한 번에 반환할 수 있는 최대 결과 수입니다. 기본값은 25입니다.  | 
|  nextToken  |  문자열  |  다음 결과 집합에 대한 토큰입니다.  | 
|  startTime  |  타임스탬프  |  결과를 지정된 시간 이후에 발견된 결과로 제한하는 필터입니다. startTime 및 endTime이나 taskId를 지정해야 하지만, 둘 다 지정하면 안 됩니다.  | 
|  endTime  |  타임스탬프  |  결과를 지정된 시간 이전에 발견된 결과로 제한하는 필터입니다. startTime 및 endTime이나 taskId를 지정해야 하지만, 둘 다 지정하면 안 됩니다.  | 

출력

```
{
  "findings": [
    {
      "taskId": "string",
      "checkName": "string",
      "taskStartTime": "timestamp",
      "findingTime": "timestamp",
      "severity": "string",
      "nonCompliantResource": {
        "resourceType": "string",
        "resourceIdentifier": {
          "deviceCertificateId": "string",
          "caCertificateId": "string",
          "cognitoIdentityPoolId": "string",
          "clientId": "string",
          "policyVersionIdentifier": {
            "policyName": "string",
            "policyVersionId": "string"
          },
          "account": "string"
        },
        "additionalInfo": {
          "string": "string"
        }
      },
      "relatedResources": [
        {
          "resourceType": "string",
          "resourceIdentifier": {
            "deviceCertificateId": "string",
            "caCertificateId": "string",
            "cognitoIdentityPoolId": "string",
            "clientId": "string",
    
            "iamRoleArn": "string",
    
            "policyVersionIdentifier": {
              "policyName": "string",
              "policyVersionId": "string"
            },
            "account": "string"
          },
    
          "roleAliasArn": "string",
    
          "additionalInfo": {
            "string": "string"
          }
        }
      ],
      "reasonForNonCompliance": "string",
      "reasonForNonComplianceCode": "string"
    }
  ],
  "nextToken": "string"
}
```


**CLI 출력 필드**  

|  명칭 |  유형 |  설명 | 
| --- | --- | --- | 
|  결과  |  list  멤버: AuditFinding  |  감사의 결과입니다.  | 
|  taskId  |  문자열  최대 길이: 40 최소 길이: 1  패턴: [a-zA-Z0-9-]\$1  |  이 결과가 생성된 감사의 ID입니다.  | 
|  checkName  |  문자열  |  이 결과가 생성된 감사 검사입니다.  | 
|  taskStartTime  |  타임스탬프  |  감사가 시작된 시간입니다.  | 
|  findingTime  |  타임스탬프  |  결과가 발견된 시간입니다.  | 
|  severity  |  문자열  |  결과의 심각도입니다.  열거형: CRITICAL \$1 HIGH \$1 MEDIUM \$1 LOW  | 
|  nonCompliantResource  |  NonCompliantResource  |  감사 검사를 통해 규정 미준수로 확인된 리소스입니다.  | 
|  resourceType  |  문자열  |  규정 미준수 리소스의 유형입니다.  열거형: DEVICE\$1CERTIFICATE \$1 CA\$1CERTIFICATE \$1 IOT\$1POLICY \$1 COGNITO\$1IDENTITY\$1POOL \$1 CLIENT\$1ID \$1 ACCOUNT\$1SETTINGS  | 
|  resourceIdentifier  |  ResourceIdentifier  |  규정 미준수 리소스를 식별하는 정보입니다.  | 
|  deviceCertificateId  |  문자열  최대 길이: 64 최소 길이: 64  패턴: (0x)?[a-fA-F0-9]\$1  |  리소스에 연결된 인증서의 ID입니다.  | 
|  caCertificateId  |  문자열  최대 길이: 64 최소 길이: 64  패턴: (0x)?[a-fA-F0-9]\$1  |  인증서를 승인하는 데 사용되는 CA 인증서의 ID입니다.  | 
|  cognitoIdentityPoolId  |  문자열  |  Amazon Cognito 자격 증명 풀의 ID입니다.  | 
|  clientId  |  문자열  |  클라이언트 ID입니다.  | 
|  policyVersionIdentifier  |  PolicyVersionIdentifier  |  리소스와 연관된 정책의 버전입니다.  | 
|  policyName  |  문자열  최대 길이: 128 최소 길이: 1  패턴: [w\$1=,.@-]\$1  |   정책의 이름입니다.  | 
|  policyVersionId  |  문자열  패턴: [0-9]\$1  |  리소스와 연관된 정책의 버전 ID입니다.  | 
|  account  |  문자열  최대 길이: 12 최소 길이: 12  패턴: [0-9]\$1  |  리소스와 연관된 계정입니다.  | 
|  additionalInfo  |  map  |  규정 미준수 리소스에 대한 기타 정보입니다.  | 
|  relatedResources  |  list  멤버: RelatedResource  |  관련 리소스의 목록입니다.  | 
|  resourceType  |  문자열  |  리소스의 유형입니다.  열거형: DEVICE\$1CERTIFICATE \$1 CA\$1CERTIFICATE \$1 IOT\$1POLICY \$1 COGNITO\$1IDENTITY\$1POOL \$1 CLIENT\$1ID \$1 ACCOUNT\$1SETTINGS  | 
|  resourceIdentifier  |  ResourceIdentifier  |  리소스를 식별하는 정보입니다.  | 
|  deviceCertificateId  |  문자열  최대 길이: 64 최소 길이: 64  패턴: (0x)?[a-fA-F0-9]\$1  |  리소스에 연결된 인증서의 ID입니다.  | 
|  caCertificateId  |  문자열  최대 길이: 64 최소 길이: 64  패턴: (0x)?[a-fA-F0-9]\$1  |  인증서를 승인하는 데 사용되는 CA 인증서의 ID입니다.  | 
|  cognitoIdentityPoolId  |  문자열  |  Amazon Cognito 자격 증명 풀의 ID입니다.  | 
|  clientId  |  문자열  |  클라이언트 ID입니다.  | 
|  policyVersionIdentifier  |  PolicyVersionIdentifier  |  리소스와 연관된 정책의 버전입니다.  | 
|  iamRoleArn  |  문자열  최대 길이: 2048 최소 길이: 20  |  과도하게 허용적인 작업이 있는 IAM 역할의 ARN입니다.  | 
|  policyName  |  문자열  최대 길이: 128 최소 길이: 1  패턴: [w\$1=,.@-]\$1  |   정책의 이름입니다.  | 
|  policyVersionId  |  문자열  패턴: [0-9]\$1  |  리소스와 연관된 정책의 버전 ID입니다.  | 
|  roleAliasArn  |  문자열  최대 길이: 2048 최소 길이: 1  |  과도하게 허용적인 작업이 있는 역할 별칭의 ARN입니다.  | 
|  account  |  문자열  최대 길이: 12 최소 길이: 12  패턴: [0-9]\$1  |  리소스와 연관된 계정입니다.  | 
|  additionalInfo  |  map  |  리소스에 대한 기타 정보입니다.  | 
|  reasonForNonCompliance  |  문자열  |  리소스가 규정 미준수인 사유입니다.  | 
|  reasonForNonComplianceCode  |  문자열  |  리소스가 규정 미준수인 사유를 나타내는 코드입니다.  | 
|  nextToken  |  문자열  |  다음 결과 집합을 가져오기 위해 사용할 수 있는 토큰이지만 결과가 더 이상 없는 경우에는 `null`입니다.  | 

 **오류**

`InvalidRequestException`  
요청 내용이 잘못되었습니다.

`ThrottlingException`  
속도가 제한을 초과했습니다.

`InternalFailureException`  
예상치 못한 오류가 발생했습니다.

# 감사 결과 금지
<a name="audit-finding-suppressions"></a>

감사를 실행하면 모든 비준수 리소스에 대한 검색 결과를 보고합니다. 즉, 감사 보고서에는 문제 완화를 위해 작업하고 있는 리소스와 테스트 또는 고장난 디바이스와 같이 규정을 준수하지 않는 것으로 알려진 리소스에 대한 결과가 포함됩니다. 감사는 연속적인 감사 실행에서 규정을 준수하지 않는 리소스에 대한 결과를 계속 보고하며, 이로 인해 원치 않는 정보가 보고서에 추가될 수 있습니다. 감사 결과 금지를 사용하면 리소스가 수정될 때까지 정의된 기간 동안 또는 테스트 또는 손상된 디바이스와 연결된 리소스에 대해 무기한으로 결과를 표시하지 않거나 필터링할 수 있습니다.

**참고**  
금지된 감사 결과에 대해서는 완화 작업을 사용할 수 없습니다. 완화 작업에 대한 자세한 내용은 [완화 작업](dd-mitigation-actions.md) 단원을 참조하세요.

감사 결과 금지 할당량에 대한 자세한 내용은 [AWS IoT Device Defender 엔드포인트 및 할당량](https://docs.aws.amazon.com/general/latest/gr/iot_device_defender.html)을 참조하세요.

## 감사 결과 금지 작동 방식
<a name="how-suppressions-work"></a>

비준수 리소스에 대한 감사 결과 금지를 만들면 감사 보고서와 알림이 다르게 작동합니다.

감사 보고서에는 보고서와 관련된 모든 금지된 결과를 나열하는 새 섹션이 포함됩니다. 감사 검사가 준수되는지 여부를 평가할 때 금지된 결과는 고려되지 않습니다. 명령줄 인터페이스(CLI)에서 [describe-audit-task](https://docs.aws.amazon.com/cli/latest/reference/iot/describe-audit-task.html) 명령을 사용하면 각 감사 검사에 대해 금지된 리소스 수도 반환됩니다.

감사 알림의 경우, 감사 검사가 준수되는지 여부를 평가할 때 금지된 결과는 고려되지 않습니다. 금지된 리소스 수도 AWS IoT Device Defender이(가) Amazon CloudWatch 및 Amazon Simple Notification Service(Amazon SNS)에 게시하는 각 감사 검사 알림에 포함됩니다.

## 콘솔에서 감사 검사 금지를 사용하는 방법
<a name="audit-finding-suppressions-console"></a>

**감사 보고서에서 결과를 금지하려면**

다음 절차에서는 AWS IoT 콘솔에서 감사 결과 금지를 생성하는 방법을 소개합니다.

1. [AWS IoT 콘솔](https://console.aws.amazon.com/iot)의 탐색 창에서 **방어**를 확장하여 **감사** 및 **결과**를 차례로 선택합니다.

1. 검토하려는 감사 보고서를 선택합니다.  
![\[최근 날짜에 대한 여러 감사의 규정 준수 상태가 표시되어 있으며, 대부분의 감사가 규정 미준수로 표시되어 있는 AWS IoT Device Defender 감사 결과 표입니다.\]](http://docs.aws.amazon.com/ko_kr/iot-device-defender/latest/devguide/images/audit-results.png)

1. **미준수 점검** 섹션의 **이름 확인**에서 관심 있는 감사 검사를 선택합니다.  
![\[서비스에 대한 심각도 수준 심각, 높음, 중간에서 로깅 비활성화에 대한 미준수 점검 1건과 준수 점검 13건이 표시되어 있는 AWS 감사 보고서입니다.\]](http://docs.aws.amazon.com/ko_kr/iot-device-defender/latest/devguide/images/audit-results-details.png)

1. 감사 검사 세부 정보 화면에서 확인하지 않으려는 결과가 있는 경우 결과 옆에 있는 옵션 버튼을 선택합니다. 그런 다음 **작업**을 선택한 다음 감사 결과 금지를 지속할 시간을 선택합니다.
**참고**  
콘솔에서 *1주(1 week)*, *1개월(1 month)*, *3개월(3 months)*, *6개월(6 months)* 또는 *무기한(Indefinitely)*을 감사 결과 금지 만료 날짜로 선택할 수 있습니다. 특정 만료 날짜는 CLI 또는 API에서만 설정할 수 있습니다. 감사 결과 금지는 만료 날짜에 관계없이 언제든지 취소할 수 있습니다.  
![\[세부 정보 및 완화 조치와 함께 비활성화된 로깅과 규정 미준수 계정 1개가 표시되어 있는 AWS IoT Device Defender 감사 결과입니다.\]](http://docs.aws.amazon.com/ko_kr/iot-device-defender/latest/devguide/images/non-compliant-check.png)

1. 금지 세부 정보를 확인한 다음 **금지 활성화**를 선택합니다.  
![\[검사 이름에 로깅 비활성화가, 계정 설정에 번호가, 만료 기간에 3개월이, 만료 날짜에 2020-10-28이 표시되어 있는 금지 확인 대화 상자입니다.\]](http://docs.aws.amazon.com/ko_kr/iot-device-defender/latest/devguide/images/confirm-suppression.png)

1. 감사 결과 금지를 생성한 후에는 감사 결과 금지가 만들어졌음을 확인하는 배너가 나타납니다.  
![\[로깅이 비활성화된 비준수 계정 1개가 표시되어 있는 AWS IoT Device Defender 감사 결과 페이지와 CloudWatch 로그를 활성화하는 완화 단계가 표시됩니다.\]](http://docs.aws.amazon.com/ko_kr/iot-device-defender/latest/devguide/images/suppression-created-successfully.png)

**감사 보고서에서 금지된 결과를 보려면**

1. [AWS IoT 콘솔](https://console.aws.amazon.com/iot)의 탐색 창에서 **방어**를 확장하여 **감사** 및 **결과**를 차례로 선택합니다.

1. 검토하려는 감사 보고서를 선택합니다.

1. **금지된 결과** 섹션에서 선택한 감사 보고서에 대해 어떤 감사 결과가 금지되는지 확인합니다.  
![\[심각도 수준 및 결과 요약과 함께 규정 준수 점검이 표시된 AWS IoT Device Defender 감사 보고서입니다.\]](http://docs.aws.amazon.com/ko_kr/iot-device-defender/latest/devguide/images/audit-report-findings.png)

**감사 결과 금지를 나열하려면**
+ [AWS IoT 콘솔](https://console.aws.amazon.com/iot)의 탐색 창에서 **방어**를 확장한 다음 **감지**, **결과 금지**를 차례로 선택합니다.  
![\[2020년 10월 28일에 만료되는 '로깅 비활성화' 검사 대한 단일 금지가 있는 AWS IoT Device Defender 감사 결과 금지 표입니다.\]](http://docs.aws.amazon.com/ko_kr/iot-device-defender/latest/devguide/images/list-suppressions.png)

**감사 결과 금지를 편집하려면**

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

1. 편집하려는 감사 결과 금지 옆에 있는 옵션 버튼을 선택합니다. 다음으로, **작업(Actions)**, **편집(Edit)**을 선택합니다.

1. **감사 결과 금지 편집** 창에서 **금지 기간** 또는 **설명(선택 사항)**을 변경할 수 있습니다.  
![\[지정된 리소스에 대해 6개월 동안 '로깅 비활성화' 검사를 금지하는 옵션과 설명 필드가 있는 감사 결과 금지 대화 상자를 편집합니다.\]](http://docs.aws.amazon.com/ko_kr/iot-device-defender/latest/devguide/images/edit-suppression.png)

1. 변경을 적용한 후 **저장**을 선택합니다. **결과 금지** 창이 열립니다.

**감사 결과 금지를 삭제하려면**

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

1. 삭제하려는 감사 결과 금지 옆에 있는 옵션 버튼을 선택한 후**작업**, **삭제**를 차례로 선택합니다.

1. **감사 결과 금지 삭제** 창에서 삭제를 확인할 입력란에 `delete`을(를) 입력한 다음 **삭제**를 선택합니다. **결과 금지** 창이 열립니다.  
![\['삭제'를 입력하는 입력 필드와 삭제 버튼이 있는 감사 결과 금지 삭제 대화 상자를 선택합니다.\]](http://docs.aws.amazon.com/ko_kr/iot-device-defender/latest/devguide/images/delete-suppression.png)

## CLI에서 감사 결과 금지를 사용하는 방법
<a name="audit-finding-suppressions-cli"></a>

다음 CLI 명령을 사용하여 감사 결과 금지를 만들고 관리할 수 있습니다.
+ [create-audit-suppression](https://docs.aws.amazon.com/cli/latest/reference/iot/create-audit-suppression.html)
+ [describe-audit-suppression](https://docs.aws.amazon.com/cli/latest/reference/iot/describe-audit-suppression.html)
+ [update-audit-suppression](https://docs.aws.amazon.com/cli/latest/reference/iot/update-audit-suppression.html)
+ [delete-audit-suppression](https://docs.aws.amazon.com/cli/latest/reference/iot/delete-audit-suppression.html)
+ [list-audit-suppressions](https://docs.aws.amazon.com/cli/latest/reference/iot/list-audit-suppressions.html)

입력한 `resource-identifier`은(는) 결과를 금지하는 `check-name`에 따라 달라집니다. 다음 표는 금지 생성 및 편집을 위해 어떤 검사가 어떤 `resource-identifier`을(를) 필요로 하는지 자세히 보여줍니다.

**참고**  
금지 명령은 감사를 비활성화하는 것을 나타내지 않습니다. 감사는 여전히 AWS IoT 디바이스에서 실행됩니다. 금지는 감사 결과에만 적용할 수 있습니다.


| `check-name` | `resource-identifier` | 
| --- | --- | 
| AUTHENTICATE\$1COGNITO\$1ROLE\$1OVERLY\$1PERMISSIVE\$1CHECK | cognitoIdentityPoolId | 
| CA\$1CERT\$1APPROACHING\$1EXPIRATION\$1CHECK | caCertificateId | 
| CA\$1CERTIFICATE\$1KEY\$1QUALITY\$1CHECK | caCertificateId | 
| CONFLICTING\$1CLIENT\$1IDS\$1CHECK | clientId | 
| DEVICE\$1CERT\$1APPROACHING\$1EXPIRATION\$1CHECK | deviceCertificateId | 
| DEVICE\$1CERTIFICATE\$1KEY\$1QUALITY\$1CHECK | deviceCertificateId | 
| DEVICE\$1CERTIFICATE\$1SHARED\$1CHECK | deviceCertificateId | 
| IOT\$1POLICY\$1OVERLY\$1PERMISSIVE\$1CHECK | policyVersionIdentifier | 
| IOT\$1ROLE\$1ALIAS\$1ALLOWS\$1ACCESS\$1TO\$1UNUSED\$1SERVICES\$1CHECK | roleAliasArn | 
| IOT\$1ROLE\$1ALIAS\$1OVERLY\$1PERMISSIVE\$1CHECK | roleAliasArn | 
| LOGGING\$1DISABLED\$1CHECK | account | 
| REVOKED\$1CA\$1CERT\$1CHECK | caCertificateId | 
| REVOKED\$1DEVICE\$1CERT\$1CHECK | deviceCertificateId | 
| UNAUTHENTICATED\$1COGNITO\$1ROLE\$1OVERLY\$1PERMISSIVE\$1CHECK | cognitoIdentityPoolId | 

**감사 결과 금지를 만들고 적용하려면**

다음 절차에서는 AWS CLI에서 감사 결과 금지를 생성하는 방법을 소개합니다.
+ `create-audit-suppression` 명령을 사용하여 감사 결과 금지를 생성합니다. 다음 예제에서는 **로깅 비활성화** 검사를 기반으로 AWS 계정 *123456789012*에 대해 감사 결과 금지를 생성합니다.

  ```
  aws iot create-audit-suppression \
      --check-name LOGGING_DISABLED_CHECK \
      --resource-identifier account=123456789012 \
      --client-request-token 28ac32c3-384c-487a-a368-c7bbd481f554 \
      --suppress-indefinitely \
      --description "Suppresses logging disabled check because I don't want to enable logging for now."
  ```

  이 명령에 대한 출력이 없습니다.

## 감사 결과 금지 API
<a name="audit-finding-suppressions-apis"></a>

다음 API를 사용하여 감사 결과 금지를 만들고 관리할 수 있습니다.
+ [CreateAuditSuppression](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateAuditSuppression.html)
+ [DescribeAuditSuppression](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeAuditSuppression.html)
+ [UpdateAuditSuppression](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateAuditSuppression.html)
+ [DeleteAuditSuppression](https://docs.aws.amazon.com/iot/latest/apireference/API_DeleteAuditSuppression.html)
+ [ListAuditSuppressions](https://docs.aws.amazon.com/iot/latest/apireference/API_ListAuditSuppressions.html)

특정 감사 결과에 *대해* 필터링하려면 [ListAuditFindings](https://docs.aws.amazon.com/iot/latest/apireference/API_ListAuditFindings.html) API를 사용할 수 있습니다.