AWS IoT策略未插入策略变量(iot:ClientId)

问题描述 投票:0回答:1

我正在尝试按照本文档https://aws.amazon.com/blogs/iot/setting-up-just-in-time-provisioning-with-aws-iot-core/中的说明设置即时配置(JITP)。我设法创建了一个脚本,该脚本可创建所有CA证书,并在AWS CLI中注册它们,并将预配模板附加到证书。当我第一次尝试连接设备时,证书和设备将正常创建,但是我创建的附加到证书的策略未插入{iot:clientID}。我也尝试使用其他变量,例如{iot:Connection.Thing.ThingName},但似乎没有任何效果。通过将clientID硬编码到我的策略模板中,我能够验证代码和其他所有功能是否正常工作,因此唯一的问题似乎是未插入变量。

我以为这可能是因为IAM角色没有足够的权限?目前,它仅具有上面文档中提到的AWSIoTThingsRegistration,AWSIOTLogging和AWSIOTRulesAction权限。还是只是自动配置设备时策略无法使用这些变量,尽管配置模板文档中没有任何内容表明这一点?

我的参考政策:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "iot:Publish",
      "Resource": "arn:aws:iot:eu-west-1:ACCOUNTID:topic/PROJECTTOPIC/"
    },
    {
      "Effect": "Allow",
      "Action": [
        "iot:Connect"
      ],
      "Resource": [
        "arn:aws:iot:eu-west-1:ACCOUNTID:client/${iot:ClientId}"
      ]
    },
    {
      "Effect": "Allow",
      "Action": "iot:Receive",
      "Resource": [
        "arn:aws:iot:eu-west-1:ACCOUNTID:topic/PROJECTTOPIC/${iot:ClientId}"
      ]
    },
    {
      "Effect": "Allow",
      "Action": "iot:Subscribe",
      "Resource": [
        "arn:aws:iot:eu-west-1:ACCOUNTID:topicfilter/PROJECTTOPIC/${iot:ClientId}"
      ]
    }
  ]
}

我不知道它是否相关,但这也是我的预配置政策:

{
 "templateBody":"{ \"Parameters\" : { \"AWS::IoT::Certificate::Country\" : { \"Type\" : \"String\" }, \"AWS::IoT::Certificate::Id\" : { \"Type\" : \"String\" }, \"AWS::IoT::Certificate::CommonName\" : { \"Type\" : \"String\" } }, \"Resources\" : { \"thing\" : { \"Type\" : \"AWS::IoT::Thing\", \"Properties\" : { \"ThingName\" : {\"Ref\" : \"AWS::IoT::Certificate::CommonName\"}, \"AttributePayload\" : { \"version\" : \"v1\", \"country\" : \"IE\"} } }, \"certificate\" : { \"Type\" : \"AWS::IoT::Certificate\", \"Properties\" : { \"CertificateId\": {\"Ref\" : \"AWS::IoT::Certificate::Id\"}, \"Status\" : \"ACTIVE\" } }, \"policy\" : {\"Type\" : \"AWS::IoT::Policy\", \"Properties\" : { \"PolicyName\" :  \"MYPOLICYNAME\"} } } }",
 "roleArn":"arn:aws:iam::ACCOUNTID:role/MYROLENAME"
}

我刚开始使用IAM策略,因此,任何建议或帮助都将不胜感激。

python amazon-web-services amazon-iam x509certificate aws-iot
1个回答
0
投票

所以事实证明,这毕竟是权限问题。对于尝试将策略模板用于JITP的任何人,请尝试向您的IAM角色添加AWSIoTConfigReadOnlyAccess。通常的JITP操作不需要此操作,但是如果您要访问Thing数据,则需要这样做。希望现在关闭此功能,将来会对其他人有所帮助。

也感谢您对他们的讽刺修改非常有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.