Permanent credential for 10000+ IoT devices?

0

The goal: design an AWS usage system for 10,000 devices, using a single AWS account, and non-expiring (but revokable) permissions. For use by 3rd party tools, not some custom in-house code!

The problem(s): A single AWS account has a limit of no more than 5000 roles, and no more than 5000 user accounts. So apparently, I cant use EITHER of those directly as 1-to-1 mapping for the devices.

A single AWS account CAN have an unlimited number of IoT things. However.. there doesnt seem to be a way to permently grant an IoT device permission to do something directly? It seems heavily biased towards pushing you into using MQTT for everything. Which will cost more money, funnily enough.

General specific example: I want to have 10,000 devices, each with some kind of unique identity, that can then run either fluentd, or telegraf, to directly send data to my choice of AWS endpoints. For example, Timestream. Or S3. Or anything else that might be supported by such tools. But I need to supply them with a cred to use.

Yes I know that I can set up greengrass to kinda proxy creds, using AWS_CONTAINER_AUTHORIZATION_TOKEN AWS_CONTAINER_CREDENTIALS_FULL_URI The AWS SDK libs do support using those. However:

For various reasons, greengrass may or may not be running on each device at any one time. Meanwhile, i want fluentd/telegraf to be running independantly, and reliably, streaming to AWS.

So I dont want to have to rely on greengrass for this.

Can anyone suggest alternatives to accomplish this goal, of 10,000 devices having unique usable AWS creds, to use arbitrary services directly, in a single AWS account?

Please note "directly". So, creating some kind of cloud-side proxy gateway, etc. is not a desirable solution, since that incurs additional cost.

  • What level of granularity do you need per device? AWS IoT Credential Provider can use the IoT thing name or certificate id as policy variables, while IAM Roles Anywhere is more flexible with parsing the certificate subject. Both endpoints can be called directly without needing AWS IoT Greengrass, but your third party applications will need to deal with credential refresh (which makes the AWS SDKs super helpful).

  • This sounds similar to something I tried earlier, if not the actual same thing. The problem is I need something that the AWS SDK/runtime will then automatically handle the refresh. otherwise, the third party apps wont work.

2 Answers
1
Accepted Answer

Take a look at IAM Roles Anywhere.

profile pictureAWS
EXPERT
kentrad
answered a year ago
0

ahhh, I see. This is sounding promising. One grey area left...

Even though I'm using the amazon built-in CA for the IoT devices, it didnt show up as a target for a trust anchor CA. Seems like I had to create a NEW "Amazon private CA"?

So now I'm seemingly stuck, between "AWS IoT (greengrass) is an easy way to get certs on a device initially, with a provisioning cert", but for the stuff I actually want to do, I'm being pushed towards "Pay more money for the extra, OTHER Amazon CA".

Is there some way to use the same CA that is default use for the IoT certs, with this Roles Anywhere thing?

Or some other way to somehow say "trust IoT certs" ?

answered a year ago
  • It doesn't look like that is supported.

  • Hi, there is no way to use AWS IoT generated certificates with IAM Roles Anywhere. AWS IoT does not provide access to the CA that signs the certificates. AWS IoT certificates are used only for IoT operations (authN/authZ) and not as a fully managed PKI. The options would be to a fully managed PKI such a Private CA, generate and register your certificates with AWS IoT and as the truststore for IAM Roles Anywhere from a CA you manage.

  • Ah well. I'll make do. Thanks a lot for the useful replies!

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions