近几年来,随着物联网技术的不断成熟和相关国家政策的驱动,大量物联网行业创新应用得到了快速发展。从消费端智能家居、智能单品的爆发式增长,到企业端在智能制造、智慧交通、公共安全和医疗领域等不断创新,整个物联网的市场规模在迅速扩展。然而,随之而来的问题便是越来越多的物联网信息安全事件不断频发。由于物联网设备的一些先天限制,比如要求设备低功耗、体积小、成本低,通常企业选择的物联网模组芯片安全性能不高,因此这些物联网设备都容易成为黑客的攻击对象。作者根据近几年频发的物联网安全事件总结出常见的物联网设备异常行为如下:
▌DDOS 攻击。设备被控制并对服务器进行 DDOS 攻击,设备发送大量异常数据到服务器,结果导致设备本身无法正常工作以及服务器瘫痪。
▌设备证书泄露以及滥用、设备证书不唯一、设备证书共享导致的安全问题。另外 IoT 权限设置过于宽泛,黑客可以利用以上漏洞来控制设备并造成数据泄露。
▌设备离线问题。黑客通过扫描默认密码或者弱密码进入设备,删除设备防火墙或者磁盘分区,导致大量设备“变砖”,无法正常工作,造成企业和个人的生命财产安全损失。
亚马逊云科技推出了众多原生的物联网服务来满足不同客户对于物联网设备上云的需求。其中 Amazon IoT Core 是最主要的连接服务,它能帮助客户将海量设备连接上云;Amazon IoT Device Defender 是一项针对物联网设备的安全服务,客户可以借助此服务审核设备的安全配置,检测异常行为,从而降低安全风险;此外,亚马逊云还提供了常见的消息通知服务和日志分析监控服务帮助客户实现对云中安全事件的持续检测和监控。
在这篇博文中,作者将介绍如何通过集成亚马逊云相关服务来实现企业对于以上物联网安全事件的持续检测和监控。主要内容包含以下几个方面:
▌针对物联网设备 DDOS 攻击的持续检测和监控解决方案
▌针对物联网设备证书安全和权限问题的持续检测和监控解决方案
▌针对物联网设备生命周期事件的持续检测和监控解决方案
## **关于 Amazon IoT Device Defender Audit/Detect**
Amazon IoT Device Defender 推出 Audit (审计) 功能,它能够从设备和客户账户层面来审计相关的安全配置和权限是否满足安全规范。比如 Audit 能够帮助检查设备证书是否唯一、是否存在证书共享问题、IoT policy 权限是否设置过高、设备证书是否快过期等问题。您可以定期或者按要求来启动 Audit。
当前,IoT Device Defender Audit 配置了预先定义好的审计检查项,您可以通过启动 Audit 功能来完成对所有审计项的检查。具体审计列表请查看以下官方文档:https://docs.aws.amazon.com/iot/latest/developerguide/device-defender-audit-checks.html
Amazon IoT Device Defender 推出 Detect 功能帮助客户发现设备产生的异常行为。它通过检测设备行为来帮助客户发现设备是否存在被入侵的倾向。Detect 定义了 cloud-side metrics 和 device-side metrics 来帮助客户检测云中和设备端的异常现象,比如:
▌设备连接状态的异常
▌设备是否尝试连接未授权的端口
▌设备收到和发出的数据量大小异常
客户可以创建一个 security profiles 将需要检测的 metrics 包含其中,然后集成 [Amazon CloudWatch](https://aws.amazon.com/cn/cloudwatch/?trk=cndc-detail) 和 [Amazon SNS](https://aws.amazon.com/cn/sns/?trk=cndc-detail) 服务。这样,一旦设备有异常行为发生,相关的报警事件就可以第一时间通知到客户。详细说明请查看以下官方文档:https://docs.aws.amazon.com/iot/latest/developerguide/device-defender-detect.html
## **解决方案架构综述**
此解决方案在设备侧利用 IoT SDK (亚马逊云提供 embedded C、C++、java、python 等 SDK) 将客户的物联网设备,比如传感器、机器、家电产品等连接到 Amazon IoT Core 服务中,这样设备便能够连接上云。接下来 IoT Device Defender 服务会对从设备产生的运行数据和日志进行审计和检测,并将结果发送到 [Amazon CloudWatch](https://aws.amazon.com/cn/cloudwatch/?trk=cndc-detail) 中。客户可以在 CloudWatch 中查看到对应的审计日志并做初步分析,同时您还可以针对特定的 Metric 创建 Alarm,定义报警规则以及下一步的触发对象,比如 [Amazon SNS](https://aws.amazon.com/cn/sns/?trk=cndc-detail) 服务。在 SNS 中,您可以配置 SNS 的通知对象为 lambda 函数,并在 lambda 中对数据进行预处理并将结果推送到 Amazon OpenSearch 服务。最终,我们通过 OpenSearch 服务来实时分析和可视化日志事件。当中,我们通过 Amazon Secrets Manager 服务来存储 OpenSearch 服务相关的验证密钥。通过这样的方式,我们就可以对物联网设备产生的异常事件和安全配置问题进行持续检测和监控。
![image.png](https://dev-media.amazoncloud.cn/57b8087631294efaa69ab25848e5a13b_image.png "image.png")
## **先决条件**
▌您在本地有 demo 硬件,并且安装了对应的 IoT Device SDK,而且设备可以成功连接上 Amazon IoT Core 并上报数据。
▌如果没有达到以上条件,可以通过以下方式在 [Amazon EC2 ](https://aws.amazon.com/cn/ec2/?trk=cndc-detail)中建立虚拟设备,并将设备连接上云。以下提供 C++ 和 embedded C 的 SDK。
https://github.com/awslabs/aws-iot-device-client
https://github.com/aws/aws-iot-device-sdk-embedded-C
▌在设备端完成 device-side metric 相关 SDK 配置工作,具体的配置方式请参考以下官方文档:
https://docs.aws.amazon.com/iot/latest/developerguide/detect-device-side-metrics.html#DetectMetricsMessages
## **演练操作步骤**
本演练操作包含三个部分:
▌创建 Amazon IoT Core 和 Device Defender 相关资源,完成对物联网设备的审计和异常行为检测。包括 DDOS 攻击,设备证书安全相关事件和生命周期事件。
▌创建 [Amazon SNS](https://aws.amazon.com/cn/sns/?trk=cndc-detail)、[Amazon CloudWatch](https://aws.amazon.com/cn/cloudwatch/?trk=cndc-detail)、Amazon Lambda 相关资源,从而建立对设备安全事件的持续监控和响应。
▌创建 Amazon OpenSearch 等相关资源,完成对设备安全事件的实时分析和可视化监控。
## **创建 Amazon IoT Core 和 Device Defender 相关资源,完成对物联网设备的审计和异常行为检测。包括 DDOS 攻击,设备证书安全相关事件和生命周期事件。**
针对前文提到的三类物联网设备安全事件(DDOS 攻击、设备证书安全和权限配置问题、设备变砖离线问题),我们可以通过 Amazon IoT Core 和 Device Defender 来持续检测。
首先,我们来创建对于设备证书安全和权限配置的检测。本文提供相应的 CloudFormation 代码帮助快速部署相应资源。首先我们部署本解决方案需要用到的 IAM 资源。我们打开 Amazon CloudFormation Console,创建 Stack 并导入如下 CloudFormation 代码:
```
AWSTemplateFormatVersion: "2010-09-09"
Description: ""
Resources:
IAMRole:
Type: "AWS::IAM::Role"
Properties:
Path: "/"
RoleName: "aod_iot_defender_SNS"
AssumeRolePolicyDocument: "{\\"Version\\":\\"2012-10-17\\",\\"Statement\\":[{\\"Sid\\":\\"\\",\\"Effect\\":\\"Allow\\",\\"Principal\\":{\\"Service\\":\\"iot.amazonaws.com\\"},\\"Action\\":\\"sts:AssumeRole\\"}]}"
MaxSessionDuration: 3600
ManagedPolicyArns:
- "arn:aws:iam::aws:policy/service-role/AWSIoTDeviceDefenderAddThingsToThingGroupMitigationAction"
- "arn:aws:iam::aws:policy/service-role/AWSIoTDeviceDefenderEnableIoTLoggingMitigationAction"
- "arn:aws:iam::aws:policy/service-role/AWSIoTDeviceDefenderReplaceDefaultPolicyMitigationAction"
- "arn:aws:iam::aws:policy/service-role/AWSIoTDeviceDefenderUpdateCACertMitigationAction"
- "arn:aws:iam::aws:policy/service-role/AWSIoTDeviceDefenderUpdateDeviceCertMitigationAction"
- "arn:aws:iam::aws:policy/service-role/AWSIoTDeviceDefenderPublishFindingsToSNSMitigationAction"
Description: "Provides AWS IoT Device Defender write access to IoT and related resources for execution of Mitigation Actions."
IAMRole2:
Type: "AWS::IAM::Role"
Properties:
Path: "/"
RoleName: "iot_device_connect_status_to_SNS_role"
AssumeRolePolicyDocument: "{\\"Version\\":\\"2012-10-17\\",\\"Statement\\":[{\\"Sid\\":\\"\\",\\"Effect\\":\\"Allow\\",\\"Principal\\":{\\"Service\\":\\"iot.amazonaws.com\\"},\\"Action\\":\\"sts:AssumeRole\\"}]}"
MaxSessionDuration: 3600
Policies:
- PolicyName: iot-device-connect-status-policy
PolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: Allow
Action: 'sns:Publish'
Resource: !Sub "arn:aws:sns:\${AWS::Region}:\${AWS::AccountId}:SNS_test"
IAMRole3:
Type: "AWS::IAM::Role"
Properties:
Path: "/service-role/"
RoleName: "iot-logs-to-OpenSearch-aod-test-role-g373dnli"
AssumeRolePolicyDocument: "{\\"Version\\":\\"2012-10-17\\",\\"Statement\\":[{\\"Effect\\":\\"Allow\\",\\"Principal\\":{\\"Service\\":\\"lambda.amazonaws.com\\"},\\"Action\\":\\"sts:AssumeRole\\"}]}"
MaxSessionDuration: 3600
ManagedPolicyArns:
- !Sub "arn:aws:iam::\${AWS::AccountId}:policy/service-role/AWSLambdaBasicExecutionRole-5ca5e513-45ed-4ad0-9250-aa0ed765f5a9"
- 'arn:aws:iam::aws:policy/AmazonOpenSearchServiceFullAccess'
- 'arn:aws:iam::aws:policy/SecretsManagerReadWrite'
```
由上,我们启动了3个 IAM role,后面的资源部署会用到以上 IAM 资源,用户可以根据自己的情况自定义 Role Name。
接下来我们启动 Amazon IoT Device Defender Audit 功能。我们打开 Amazon CloudFormation Console,创建 Stack 并导入如下 CloudFormation 代码:
```
AWSTemplateFormatVersion: "2010-09-09"
Description: ""
Resources:
IoTScheduledAudit:
Type: "AWS::IoT::ScheduledAudit"
Properties:
ScheduledAuditName: "Aod_IoT_device_defender_audit"
Frequency: "DAILY"
TargetCheckNames:
- "AUTHENTICATED_COGNITO_ROLE_OVERLY_PERMISSIVE_CHECK"
- "CA_CERTIFICATE_EXPIRING_CHECK"
- "CA_CERTIFICATE_KEY_QUALITY_CHECK"
- "CONFLICTING_CLIENT_IDS_CHECK"
- "DEVICE_CERTIFICATE_EXPIRING_CHECK"
- "DEVICE_CERTIFICATE_KEY_QUALITY_CHECK"
- "DEVICE_CERTIFICATE_SHARED_CHECK"
- "INTERMEDIATE_CA_REVOKED_FOR_ACTIVE_DEVICE_CERTIFICATES_CHECK"
- "IOT_POLICY_OVERLY_PERMISSIVE_CHECK"
- "IOT_ROLE_ALIAS_ALLOWS_ACCESS_TO_UNUSED_SERVICES_CHECK"
- "IOT_ROLE_ALIAS_OVERLY_PERMISSIVE_CHECK"
- "LOGGING_DISABLED_CHECK"
- "REVOKED_CA_CERTIFICATE_STILL_ACTIVE_CHECK"
- "REVOKED_DEVICE_CERTIFICATE_STILL_ACTIVE_CHECK"
- "UNAUTHENTICATED_COGNITO_ROLE_OVERLY_PERMISSIVE_CHECK"
```
当部署成功后,我们可以在 Amazon IoT Core Console-Audit 中 看到 daily 的审计结果,如下图所示,其中5条审计规则报警,其中包括 IoT policy overly permissive 和 CA certificate expiring 等问题。
![image.png](https://dev-media.amazoncloud.cn/cf2dd59dcc2d4533b36c4e640f67c474_image.png "image.png")
点击对应的 Check Name 可以看到哪些 IoT 资源违反了审计规则,如下图所示。
![image.png](https://dev-media.amazoncloud.cn/103c0fef55b24e9a943b3f0e1c33d6ef_image.png "image.png")
![image.png](https://dev-media.amazoncloud.cn/dfa48999216349ac82921d4634302ddb_image.png "image.png")
另外,我们还可以看到其他9项合规的审计,如果未来有相关资源违规也会被持续检测到,如下图所示:
![image.png](https://dev-media.amazoncloud.cn/cb17e998c4ea42dba549ab66496323d4_image.png "image.png")
以上,我们完成了对于设备证书安全和权限配置的审计工作。
针对设备 DDOS 攻击,我们需要启动 Amazon IoT Device Defender Detect 来进行 device side metric 的检测。在本文中,我们通过开启对于设备端 Packets in/out 以及 Bytes in/out 的异常行为来检测设备是否发起 DDOS 攻击。同样,作者提供 CloudFormation 代码如下:
```
AWSTemplateFormatVersion: "2010-09-09"
Description: ""
Resources:
IoTSecurityProfile:
Type: "AWS::IoT::SecurityProfile"
Properties:
SecurityProfileName: "aod_demo"
TargetArns:
- "arn:aws:iot:us-west-2:xxxxxxxxxxxx:all/things"
Behaviors:
-
Name: "Bytes_in"
Metric: "aws:all-bytes-in"
Criteria:
ComparisonOperator: "greater-than"
ConsecutiveDatapointsToAlarm: 1
ConsecutiveDatapointsToClear: 1
DurationSeconds: 300
Value:
Count: 500
-
Name: "Bytes_out"
Metric: "aws:all-bytes-out"
Criteria:
ComparisonOperator: "greater-than"
ConsecutiveDatapointsToAlarm: 1
ConsecutiveDatapointsToClear: 1
DurationSeconds: 300
Value:
Count: 500
-
Name: "Packets_in"
Metric: "aws:all-packets-in"
Criteria:
ComparisonOperator: "greater-than"
ConsecutiveDatapointsToAlarm: 1
ConsecutiveDatapointsToClear: 1
DurationSeconds: 300
Value:
Count: 5
-
Name: "Packets_out"
Metric: "aws:all-packets-out"
Criteria:
ComparisonOperator: "greater-than"
ConsecutiveDatapointsToAlarm: 1
ConsecutiveDatapointsToClear: 1
DurationSeconds: 300
Value:
Count: 5
AlertTargets:
SNS:
AlertTargetArn: 'arn:aws:sns:us-west-2:xxxxxxxxxxxx:SNS_test'
RoleArn: 'arn:aws:iam::xxxxxxxxxxxx:role/aod_iot_defender_SNS'
```
打开 CloudFormation console,导入以上 yaml 文件,创建 stack,成功之后我们可以在 IoT Console-Security-Detect-Security Profiles 中看到创建的 Metrics 监控事件。从以上 CloudFormation 中我们创建了 Bytes in/out 事件,定义当5分钟内设备端接受或者发出的数据量大于 500 Bytes 便报警;同时创建 Packets in/out 事件,定义当5分钟内设备接受或者发出的数据包数量大于5时报警。您可以根据自己的业务情况来定义 DDOS 攻击的判断条件。如下图所示,在 console 中相关的事件已经被云端检测到。
![image.png](https://dev-media.amazoncloud.cn/47824df09c274feeaf0c2fc656eaa290_image.png "image.png")
![image.png](https://dev-media.amazoncloud.cn/e9cd62617319459681c89a2da582e1d5_image.png "image.png")
接下来,我们将创建针对于设备变砖离线事件的检测。Amazon IoT Core 会将设备的生命周期事件发送到云端,我们可以利用这些生命周期事件来知道设备现在处于什么连接状态。比如针对于设备的 Connect/Disconnect 事件,我们可以通过以下默认的两个 MQTT topic 来进行监听:
▌$amazon/events/presence/connected/clientId
▌$amazon/events/presence/disconnected/clientId
作者将建立一个 Iot Rule 对以上 topic 来进行监听,同时将事件消息发送到 SNS 服务。同样,提供 Cloudformation 代码如下:
```
AWSTemplateFormatVersion: '2010-09-09'
Resources:
MyTopicRule:
Type: AWS::IoT::TopicRule
Properties:
RuleName:
'device_connection_aod'
TopicRulePayload:
Sql: SELECT * FROM '\$aws/events/presence/+/demo_device'
Actions:
- Sns:
RoleArn: 'arn:aws:iam::xxxxxxxxxxxx:role/iot_device_connect_status_to_SNS_role'
TargetArn: !Sub "arn:aws:sns:\${AWS::Region}:\${AWS::AccountId}:SNS_test"
```
通过 CloudFormation 来启动以上资源,成功后你可以在 IoT Console 中订阅到设备的上下线状态事件,如下图所示:
![image.png](https://dev-media.amazoncloud.cn/7d6e06d04d8e4dd590d14bd65a6356ea_image.png "image.png")
以上我们便完成了对于三类物联网设备安全事件(DDOS 攻击,设备证书安全和权限配置问题,设备变砖离线问题)的持续检测。
## **创建 Amazon SNS、Amazon CloudWatch、Amazon Lambda 相关资源,从而建立对设备安全事件的持续监控和响应。**
基于前文,我们完成了安全事件的审计和持续检测,接下来,我们需要对检测事件进行分析并将结果推送给消费者,从而完成对事件的持续监控和响应。首先,我们定义 [Amazon CloudWatch](https://aws.amazon.com/cn/cloudwatch/?trk=cndc-detail) Alarm 功能,将 IoT Metrics 作为监控对象,当检测到来自 IoT Device Defender Audit 和 Detect 的 Metrics 超过某个阈值时,向 SNS 发送报警。提供 CloudFormation 代码如下:
```
AWSTemplateFormatVersion: "2010-09-09"
Description: ""
Resources:
CloudWatchAlarm:
Type: "AWS::CloudWatch::Alarm"
Properties:
AlarmName: "Audit-IOT-POLICY-OVERLY-PERMISSIVE-Alarm"
ActionsEnabled: true
AlarmActions:
- !Sub "arn:aws:sns:\${AWS::Region}:\${AWS::AccountId}:SNS_test"
MetricName: "NonCompliantResources"
Namespace: "AWS/IoT"
Statistic: "Average"
Dimensions:
-
Name: "CheckName"
Value: "IOT_POLICY_OVERLY_PERMISSIVE_CHECK"
-
Name: "ScheduledAuditName"
Value: "Aod_IoT_device_defender_audit_test"
Period: 86400
EvaluationPeriods: 1
DatapointsToAlarm: 1
Threshold: 10
ComparisonOperator: "GreaterThanThreshold"
TreatMissingData: "missing"
CloudWatchAlarm2:
Type: "AWS::CloudWatch::Alarm"
Properties:
AlarmName: "device-side-bytes-out-alarm"
ActionsEnabled: true
AlarmActions:
- !Sub "arn:aws:sns:\${AWS::Region}:\${AWS::AccountId}:SNS_test"
MetricName: "BehaviorEvaluationCompleted"
Namespace: "AWS/IoT"
Statistic: "Average"
Dimensions:
-
Name: "BehaviorName"
Value: "Bytes_out"
-
Name: "SecurityProfileName"
Value: "aod_demo"
Period: 300
EvaluationPeriods: 1
DatapointsToAlarm: 1
Threshold: 5
ComparisonOperator: "GreaterThanThreshold"
TreatMissingData: "missing"
CloudWatchAlarm3:
Type: "AWS::CloudWatch::Alarm"
Properties:
AlarmName: "device-side-packets-out-aod"
ActionsEnabled: true
AlarmActions:
- !Sub "arn:aws:sns:\${AWS::Region}:\${AWS::AccountId}:SNS_test"
MetricName: "Violations"
Namespace: "AWS/IoT"
Statistic: "Average"
Dimensions:
-
Name: "BehaviorName"
Value: "Packets_out"
-
Name: "SecurityProfileName"
Value: "aod_demo"
Period: 300
EvaluationPeriods: 1
DatapointsToAlarm: 1
Threshold: 5
ComparisonOperator: "GreaterThanThreshold"
TreatMissingData: "missing"
```
由上,我们定义当 IOT_POLICY_OVERLY_PERMISSIVE_CHECK 在24小时内超过10个资源违规时产生报警并发送到 SNS 服务;Bytes out/Packets out 在5分钟内触发超过5次时产生报警并发送到 SNS 服务。
接下来,我们创建 SNS 服务,接受以上报警并将消息发送给 Lambda。提供以下 CloudFormation 代码:
```
AWSTemplateFormatVersion: "2010-09-09"
Description: ""
Resources:
SNSTopic:
Type: "AWS::SNS::Topic"
Properties:
DisplayName: ""
TopicName: "SNS_test"
KmsMasterKeyId: "alias/aws/sns"
```
最后,我们创建 Lambda 函数,Lambda 函数会接受从 SNS 发来的数据,并将数据推送给 Amazon OpenSearch 服务进行实时分析和可视化展示。提供 CloudFormation 代码如下:
```
AWSTemplateFormatVersion: "2010-09-09"
Description: ""
Resources:
LambdaFunction:
Type: "AWS::Lambda::Function"
Properties:
Description: ""
FunctionName: "iot-logs-to-OpenSearch-aod-test"
Handler: "sample.handler"
Architectures:
- "x86_64"
Code:
S3Bucket: "aod-iot-device-client"
S3Key: "iot-logs-to-OpenSearch-aod-test-9e7975a0-a071-4026-9c1c-91f520f80d9b.zip"
MemorySize: 128
Role: !Sub "arn:aws:iam::\${AWS::AccountId}:role/service-role/iot-logs-to-OpenSearch-aod-test-role-g373dnli "
Runtime: "python3.7"
Timeout: 3
TracingConfig:
Mode: "PassThrough"
EphemeralStorage:
Size: 512
```
其中您需要将 Lambda 代码打包成 zip 格式,放在 S3 bucket 中。
将 Lambda 中关键代码展示如下,在 Lambda handler 中定义 message 为来自 event[‘Records’] [‘Sns’] 消息,并将 message 组成 document,并通过 requests.post 发送给 OpenSearch endpoint url。
```
def handler(event, context):
for record in event['Records']:
message = record['Sns']
document = {"message": message }
r = requests.post(url, auth=HTTPBasicAuth(account, pwd), json=document, headers=headers)
return event
```
其中 url = host + ‘/’ + index + ‘/’ + type;host为 OpenSearch endpoint url;index 客户可以自定义 string 类型比如 ‘iot-metric-cloudwatch-index’;type = ‘_doc’;account 和 pwd 为 OpenSearch Dashboard 账号和密码。下文会介绍 Amazon OpenSearch 和 Amazon Secret Manager 相关资源创建。
以上,当设备安全事件(DDOS 攻击、设备证书安全和权限配置问题、设备变砖离线问题)发生时, 事件就会被 Amazon IoT Core 持续监测到,并且通过集成 [Amazon CloudWatch](https://aws.amazon.com/cn/cloudwatch/?trk=cndc-detail)、[Amazon SNS](https://aws.amazon.com/cn/sns/?trk=cndc-detail) 服务发送到 Lambda 函数进行持续监控和响应。
## **创建 Amazon OpenSearch 等相关资源,完成对设备安全事件的实时分析和可视化监控。**
接下来,我们将完成本解决方案的最后一步,即创建 Amazon OpenSearch 和 Amazon Secrets Manager 相关服务。首先,我们根据以下官方文档创建 OpenSearch endpoint:https://docs.aws.amazon.com/opensearch-service/latest/developerguide/gsg.html
其中我们选择 enable Fine-grained access control,并设置 Master user 通过账号和密码方式认证登录。这里的账号和密码便是上文 lambda 中的 account 和 pwd。我们将 account 和 pwd 通过 Amazon Secret Manager 服务进行管理,这样密钥就不会以明文方式暴露在代码中,从而提高安全性。Amazon Secret Manager 相关 CloudFormation 代码如下:
```
AWSTemplateFormatVersion: "2010-09-09"
Description: ""
Resources:
SecretsManagerSecret:
Type: "AWS::SecretsManager::Secret"
Properties:
Name: "ES_Kibana_credential-aod"
SecretString: "{\\"es_account\\":\\"xxx\\",\\"es_pwd\\":\\"xxx\\"}"
```
通过以上步骤,我们创建了 Amazon OpenSearch 和 Amazon Secret Manager 相关服务。打开 OpenSearch Console,并点击创建的 DashBoard url。点击 Discover 并搜索相应的关键字如 “over-permission”,我们看到如下界面:
![image.png](https://dev-media.amazoncloud.cn/72ba552511e34d3e8f83a2aee3074541_image.png "image.png")
以上,相应的安全事件都已经存储到 OpenSearch 服务。接下来,我们可以在 OpenSearch 中建立一些 Dashboard 从而对不同的物联网安全事件进行实时的可视化监控。比如作者建立了一些简单的 Dashboard 如下:
![image.png](https://dev-media.amazoncloud.cn/d2880f00f11b42adaf294f9b6b8ca936_image.png "image.png")
## **总结**
在本文中,作者介绍了几种当前主要物联网安全事件的行为模式,包括 DDOS 攻击、设备证书安全和权限配置问题、设备离线问题。针对这些问题,作者结合了亚马逊云物联网相关服务(主要是 Amazon IoT Device Defender 服务)提供了对应的检测和审计方案;同时作者结合了亚马逊云其他相关消息推送,日志监控服务搭建了针对事件的持续监控和响应方案;最后作者介绍了 Amazon OpenSearch 服务帮助搭建完整的日志事件实时分析和可视化方案。通过本文的介绍,客户可以建立基于亚马逊云相关服务的针对物联网安全事件的持续检测,监控和可视化分析方案,从而帮助客户建立物联网安全事件响应机制,降低潜在安全风险,减少企业损失。