亚马逊IoT Core身份验证
身份验证的过程不同于根据声音识别某个人是谁,但是原理是类似的。当某个设备需要访问Iot资源的时候,第一步就是需要确认设备的身份,如果IoT Core不能识别设备的身份,那么就不会产生连接,IoT Core提供了多个不同的身份验证处理方法,比如证书认证,自定义身份认证。
举例:
当有人在敲你家门的时候,第一反应是问对方是谁,然后通过这人说的名字,并且判断他的声音来确认这人的身份,这时候做的就是身份验证的过程,如果不认识这人,或者名字和声音不匹配,你会让对方离开。
亚马逊Iot Core授权
在验证了设备的身份之后,需要给设备授予相对应的权限,以访问亚马逊资源。接着上面的案例来讲,门外的人身份验证通过了,这时候你可能需要做一些决策,
- 你要打开门吗?
- 你要让这人进来吗?
- 你要让这人上楼吗?
基于这个人的身份,你可能要做一些不同的决策,比如,如果是送披萨的,你只需要打开门就好了;如果是家庭成员,那他可以去房子的任何地方,不同的人将有不同的访问权限。
亚马逊Iot Core策略
授权是通过IoT Core授予设备相对应的策略来实现的,策略决定了被授权的设备可以做哪些操作,策略是一个JSON文档,包含了一组权限,通过策略可以启用或者禁用权限,限制设备访问AWS IoT的某些资源。
1、权限决定机制:
首先所有的权限默认是deny的,然后看策略文档中是否显示存在deny权限,如果有,则该操作没有访问权限,如果没有,再看是否显示存在allow的权限,有则该操作有访问权限,没有则该操作无访问权限。
2、策略文档案例:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": [
"iot:Connect"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:client/client1",
"arn:aws:iot:us-east-1:123456789012:client/client2"
]
},
{
"Effect": "Allow",
"Action": [
"iot:Connect"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
]
}
]
}
3、策略文档组成部分
Effect:有效值只有Allow和Deny,表示有权限和没有权限
Action:表示运行执行的操作,或者禁止执行的操作
Resource:表示这个操作权限影响的对象范围,通常使用Amazon Resource Name指定资源
Condition:可以指定一组条件,在满足触发条件之后授予设备权限
最小权限原则:
AWS安全的最佳实践是授予设备最小的权限。