X.509证书授权是基于IoT策略,而不是IAM策略,可以使用证书的特性作为变量设置到IoT策略中,基于变量的值来授予证书权限。
策略变量
1、证书发布者:iot:Certificate.Issuer
2、证书主题:iot:Certificate.Subject
3、发布者其他名称: iot:Certificate.Issuer.AlternativeName
4、主题其他名称:iot:Certificate.Subject.AlternativeName
5、证书其他的属性:iot:Certificate......
完整属性参考地址:X.509 Certificate AWS IoT Core policy variables - AWS IoT Core
创建策略
1、编写策略文档batterpolicy.json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "iot:AssumeRoleWithCertificate",
"Resource": "arn:aws:iot:<region>:<account number>:rolealias/${iot:Connection.Thing.ThingTypeName}-dynamodb-access-role-alias",
"Condition": {
"StringEquals": {
"iot:Certificate.Issuer.Country": "?"
},
"Bool": {
"iot:Connection.Thing.IsAttached": "true"
}
}
}
]
}
2、创建策略
aws iot create-policy --policy-name batterpolicy --policy-document file://batterpolicy.json
3、给证书附加策略
aws iot attach-policy --target <certificate arn> --policy-name batterpolicy