감사 수행 방법 - AWS IoT

감사 수행 방법

  1. 계정에 대한 감사 설정을 구성합니다. UpdateAccountAuditConfiguration을 사용하여 감사에 사용할 점검을 활성화하고, 알림 선택 사항을 설정하고, 권한을 구성합니다.

    일부 점검의 경우 AWS IoT는 점검이 활성화된 즉시 데이터 수집을 시작합니다.

  2. 하나 이상의 감사 일정을 생성합니다. CreateScheduledAudit을 사용하여 감사 중 수행할 점검과 이러한 감사를 실행해야 하는 빈도를 지정합니다.

    또는 필요한 경우 온디맨드 감사를 실행할 수 있습니다. StartOnDemandAuditTask를 사용하여 수행할 점검을 지정하고 즉시 감사를 실행합니다. (최근에 온디맨드 감사에 포함된 점검을 활성화한 경우에는 결과가 준비되지 않을 수 있습니다.)

  3. AWS IoT 콘솔을 사용하여 감사 결과를 볼 수 있습니다.

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

  4. AWS 계정에서 정의한 완화 조치를 규정 미준수 결과에 적용할 수 있습니다. 자세한 내용은 완화 작업 적용 단원을 참조하십시오.

알림

감사가 완료되면 발견된 규정 미준수 리소스의 수에 대한 세부 정보를 비롯하여 수행한 각 감사 점검 결과의 요약과 함께 SNS 알림이 전송될 수 있습니다. UpdateAccountAuditConfiguration 명령의 입력에 auditNotificationTargetConfigurations 필드를 사용합니다. SNS 알림에는 다음 페이로드가 있습니다.

{ "accountId": "123456789012", "taskId": "4e2bcd1ccbc2a5dd15292a82ab80c380", "taskStatus": "FAILED|CANCELED|COMPLETED", "taskType": "ON_DEMAND_AUDIT_TASK|SCHEDULED_AUDIT_TASK", "scheduledAuditName": "myWeeklyAudit", "failedChecksCount": 0, "canceledChecksCount": 0, "nonCompliantChecksCount": 1, "compliantChecksCount": 0, "totalChecksCount": 1, "taskStartTime": 1524740766191, "auditDetails": [ { "checkName": "DEVICE_CERT_APPROACHING_EXPIRATION_CHECK | REVOKED_DEVICE_CERT_CHECK | CA_CERT_APPROACHING_EXPIRATION_CHECK | REVOKED_CA_CERT_CHECK | DEVICE_CERTIFICATE_SHARED_CHECK | IOT_POLICY_UNRESTRICTED_CHECK | UNAUTHENTICATED_COGNITO_IDENTITY_UNRESTRICTED_ACCESS_CHECK | AUTHENTICATED_COGNITO_IDENTITY_UNRESTRICTED_ACCESS_CHECK | CONFLICTING_CLIENT_IDS_CHECK | LOGGING_DISABLED_CHECK", "checkRunStatus": "FAILED | CANCELED | COMPLETED_COMPLIANT | COMPLETED_NON_COMPLIANT", "nonCompliantResourcesCount": 1, "totalResourcesCount": 1, "message": "optional message if an error occurred", "errorCode": "INSUFFICIENT_PERMISSIONS|AUDIT_CHECK_DISABLED" } ] }
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "arn:aws:iot:::schema:auditnotification/1.0", "type": "object", "properties": { "accountId": { "type": "string" }, "taskId": { "type": "string" }, "taskStatus": { "type": "string", "enum": [ "FAILED", "CANCELED", "COMPLETED" ] }, "taskType": { "type": "string", "enum": [ "SCHEDULED_AUDIT_TASK", "ON_DEMAND_AUDIT_TASK" ] }, "scheduledAuditName": { "type": "string" }, "failedChecksCount": { "type": "integer" }, "canceledChecksCount": { "type": "integer" }, "nonCompliantChecksCount": { "type": "integer" }, "compliantChecksCount": { "type": "integer" }, "totalChecksCount": { "type": "integer" }, "taskStartTime": { "type": "integer" }, "auditDetails": { "type": "array", "items": [ { "type": "object", "properties": { "checkName": { "type": "string", "enum": [ "DEVICE_CERT_APPROACHING_EXPIRATION_CHECK", "REVOKED_DEVICE_CERT_CHECK", "CA_CERT_APPROACHING_EXPIRATION_CHECK", "REVOKED_CA_CERT_CHECK", "LOGGING_DISABLED_CHECK" ] }, "checkRunStatus": { "type": "string", "enum": [ "FAILED", "CANCELED", "COMPLETED_COMPLIANT", "COMPLETED_NON_COMPLIANT" ] }, "nonCompliantResourcesCount": { "type": "integer" }, "totalResourcesCount": { "type": "integer" }, "message": { "type": "string", }, "errorCode": { "type": "string", "enum": [ "INSUFFICIENT_PERMISSIONS", "AUDIT_CHECK_DISABLED" ] } }, "required": [ "checkName", "checkRunStatus", "nonCompliantResourcesCount", "totalResourcesCount" ] } ] } }, "required": [ "accountId", "taskId", "taskStatus", "taskType", "failedChecksCount", "canceledChecksCount", "nonCompliantChecksCount", "compliantChecksCount", "totalChecksCount", "taskStartTime", "auditDetails" ] }

AWS IoT 콘솔에서 디바이스에 대한 정보, 디바이스 통계(예: 마지막 연결 시간, 활성 상태의 연결 수, 데이터 전송 속도) 및 디바이스에 대한 과거 알림과 함께 알림을 볼 수도 있습니다.

권한

이 섹션에는 AWS IoT Device Defender 감사를 생성, 실행 및 관리하는 데 필요한 IAM 역할 및 정책을 설정하는 방법에 대한 정보가 있습니다. 자세한 내용은 AWS 자격 증명 및 액세스 관리 사용 설명서 단원을 참조하십시오.

감사를 실행하려면 AWS IoT Device Defender에 데이터를 수집할 권한을 부여하십시오.

UpdateAccountAuditConfiguration을 호출하려면 두 가지 정책, 즉 권한 정책과 신뢰 정책이 있는 IAM 역할을 지정해야 합니다. 권한 정책은 AWS IoT Device Defender에 감사를 실행할 때 AWS IoT API를 사용하여 계정 데이터에 액세스할 수 있는 권한을 부여합니다. 신뢰 정책은 AWS IoT Device Defender에 필요한 역할을 수임할 권한을 부여합니다.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "iot:GetLoggingOptions", "iot:GetV2LoggingOptions", "iot:ListCACertificates", "iot:ListCertificates", "iot:DescribeCACertificate", "iot:DescribeCertificate", "iot:ListPolicies", "iot:GetPolicy", "iot:GetEffectivePolicies", "iot:ListRoleAliases", "iot:DescribeRoleAlias", "cognito-identity:GetIdentityPoolRoles", "iam:ListRolePolicies", "iam:ListAttachedRolePolicies", "iam:GetRole", "iam:GetPolicy", "iam:GetPolicyVersion", "iam:GetRolePolicy", "iam:GenerateServiceLastAccessedDetails", "iam:GetServiceLastAccessedDetails" ], "Resource":[ "*" ] } ] }
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

SNS 주제에 알림을 게시할 권한을 AWS IoT Device Defender에 부여합니다.

UpdateAccountAuditConfiguration에서 auditNotificationTargetConfigurations 파라미터를 사용하려면 두 가지 정책, 즉 권한 정책과 신뢰 정책이 있는 IAM 역할을 지정해야 합니다. 권한 정책은 SNS 주제에 알림을 게시할 권한을 AWS IoT Device Defender에 부여합니다. 신뢰 정책은 AWS IoT Device Defender에 필요한 역할을 수임할 권한을 부여합니다.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "sns:Publish" ], "Resource":[ "arn:aws:sns:region:account-id:your-topic-name" ] } ] }
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

IAM 사용자 또는 그룹에 AWS IoT Device Defender 감사 명령을 실행할 권한을 부여합니다.

IAM 사용자 또는 그룹이 AWS IoT Device Defender의 결과를 관리, 실행 또는 확인할 수 있도록 하려면 역할을 생성하고 적절한 명령을 실행할 권한을 부여하는 연결된 정책에 역할을 할당해야 합니다. 각 정책의 내용은 사용자 또는 그룹이 실행하도록 하려는 명령에 따라 달라집니다.

  • UpdateAccountAuditConfiguration

이 명령이 실행되는 계정과 동일한 계정에 연결된 정책이 있는 IAM 역할을 생성해야 합니다. 교차 계정 액세스는 허용되지 않습니다. 정책에는 iam:PassRole 권한(이 역할을 전달할 권한)이 있어야 합니다.

다음 정책 템플릿에서 audit-permissions-role-arnroleArn 파라미터를 사용하여 UpdateAccountAuditConfiguration 요청에서 AWS IoT Device Defender에 전달하는 역할 ARN입니다. audit-notifications-permissions-role-arnauditNotificationTargetConfigurations 파라미터를 사용하여 UpdateAccountAuditConfiguration 요청에서 AWS IoT Device Defender에 전달하는 역할 ARN입니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:UpdateAccountAuditConfiguration" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::account-id:role/audit-permissions-role-arn", "arn:aws:iam::account-id:role/audit-notifications-permissions-role-arn" ] } ] }
  • DescribeAccountAuditConfiguration

  • DeleteAccountAuditConfiguration

  • StartOnDemandAuditTask

  • CancelAuditTask

  • DescribeAuditTask

  • ListAuditTasks

  • ListScheduledAudits

  • ListAuditFindings

이러한 모든 명령에는 정책의 Resource 필드에 *가 필요합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:DescribeAccountAuditConfiguration", "iot:DeleteAccountAuditConfiguration", "iot:StartOnDemandAuditTask", "iot:CancelAuditTask", "iot:DescribeAuditTask", "iot:ListAuditTasks", "iot:ListScheduledAudits", "iot:ListAuditFindings" ], "Resource": [ "*" ] } ] }
  • CreateScheduledAudit

  • UpdateScheduledAudit

  • DeleteScheduledAudit

  • DescribeScheduledAudit

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:CreateScheduledAudit", "iot:UpdateScheduledAudit", "iot:DeleteScheduledAudit", "iot:DescribeScheduledAudit" ], "Resource": [ "arn:aws:iot:region:account-id:scheduledaudit/scheduled-audit-name" ] } ] }

AWS IoT Device Defender 예정된 감사 역할 ARN의 형식은 다음과 같습니다.

arn:aws:iot:region:account-id:scheduledaudit/scheduled-audit-name