【问题标题】:AWS IoT policy not inserting policy variables (iot:ClientId)AWS IoT 策略未插入策略变量 (iot:ClientId)
【发布时间】:2020-06-30 17:19:42
【问题描述】:

我正在尝试设置即时供应 (JITP),如本文档 https://aws.amazon.com/blogs/iot/setting-up-just-in-time-provisioning-with-aws-iot-core/ 中所述。我设法创建了一个脚本,用于创建所有 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】:

    所以事实证明这毕竟是一个权限问题。对于尝试使用 JITP 策略模板的任何人,请尝试将 AWSIoTConfigReadOnlyAccess 添加到您的 IAM 角色。这对于通常的 JITP 操作不是必需的,但如果您尝试访问事物数据,则它是必需的。

    【讨论】:

    • 对不起,如果我的编辑带有讽刺意味,那不是我的意图。但是这里没有必要在问题的底部说“谢谢”。如果您想感谢某人的回答,您应该投票和/或接受它。此外,“提前感谢”是错误的,应该是“提前感谢”。
    • 您也可以接受自己的答案,以便其他人可以轻松看到问题已解决。
    猜你喜欢
    • 2023-03-30
    • 1970-01-01
    • 2018-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-16
    • 2016-06-30
    • 1970-01-01
    相关资源
    最近更新 更多