Netflix/edda — pull request #8 by e-gineer (2013-02-20 06:01:08+00:00)
Title: Added basic IAM data collection for users, groups, roles and virtualmfadevices.

I've been working on basic IAM data support for Edda - the aim is to support historical records of permissions for compliance audits etc. (Obviously access to true audit trails of who changed what when would be better, but this is hopefully a good historical record.)

This is my first attempt at Scala, so I'm sure there are many minor improvements to be made before accepting this pull request.

Here are some specific things I'd like your help with / input on:
1. AwsIamUserCrawler uses futures, but actually does a few requests for more data rather than a single one. Is there a better way?
2. This code creates aws/users and aws/groups collections, which seems appropriate. How should user to group / group to user mappings be captured? At this point, I'm capturing them into the aws/users information.
3. I could not work out how to collate together extra metadata into an existing object map, so instead created parameterized maps (e.g. user data is mapped into attributes, groups, policies, etc). This feels sub-optimal, and I'd rather simply add new attributes of groups and policies to the existing set of user data fields. How can this be done?
4. Policies are difficult, since they require an extra level of fan out group > policy name > policy. Are you able to give guidance on how this can / should be accomplished?

Thanks for edda ... it really is an amazing tool and approach to a complex problem!

Nathan