This post might get a bit long, but it shows how powerful NCM and compliance rules can be. However, in order to run a compliance rule, it kind of has to be in the configuration, right? Well, lets say "yes" and "no"?!
With most Cisco IOS devices, and possibly other devices, they removed the SNMP users from the configuration for some sort of security purposes, this is true of things like certificates also. We have another application here that uses different SNMP credentials than our network management does, but have been having problems with those credentials being set up incorrectly. Until I realized that they weren't in the config I was thinking Compliance Rules, but once I realized they weren't there I started going down the roads of trying to figure out how to write scripts and maybe couple them with API programming to do this. No path looked very easy, so I kept contemplating which might be the best way.
Then all of a sudden I realized that just because it's not in the startup or running configurations doesn't necessarily rule out using Compliance Rules, but it took a bit of setup to prepare for what I wanted to do. The first step being declaring a brand new configuration type, which I decided to call "CiscoSNMPUser", but you can easily choose your own name. Why put Cisco in there? We do use Arista here also, but Arista leaves the SNMP user right in the config, so at least for us, this problem is pretty Cisco-specific. So, under "Admin" and "NCM Settings" I went to "Config Types". Was kind of surprised to see 3 types already there, "Startup" and "Running" which I expected, and a third one called "Device State". But, either way I added my new type here, and once I had it added I went and edited it where I can choose the "Vendor" for the config type. I added "Cisco" as a vendor, like this:

This is just the first step though, once you have a new config type set up, you need to go tell it how to download the configs. So, I went in to "Settings" and "Manage Device Templates". Note that this is in the main part of settings and not the NCM specific settings. Once there I copied a device template, in my case the "Cisco IOS" template. I gave it a name which made it easy to see that this was a company specific setting and saved it. Since this is a pretty simple change, I selected my copy and went to "Edit" and "Using Interactive Wizard". The first thing you do here is select a node to use as a test for the rest of the setup. The next setting asks you if you want to "Execute scripts only", "Execute scripts and download config from the device" or "Execute scripts, download config from the device and upload config to the device". For this to work, you'd have to choose one of the two that allowed you to download the config, I'd recommend the one that allows you to upload also.
The next page is how to access the device you chose in the first step. If you're editing a template like I was, most things should be filled in for you. Click on the "Test" button to make sure its working. Note that this will affect ALL config types for your device, and not just the new one you're setting up. If the test is successful, go to the next step.
This is where it might be a bit tricky for you. The "Download config command" probably has something like "Show ${ConfigType}" with the macro ${ConfigType} relating to the config types defined in the section below. In my case, the "Running Config File Name" was "running", so the config command gets expanded to "Show running". In the case of our new configuration type, we want the command to be "show snmp user", so in the 3rd box for "CiscoSNMPUser Config File Name", we need to put in "snmp user". So, it should look something like this:

Now, below these sections there is a "Download Test" area where you can perform a download test on the device you previously selected to see if it works. Go ahead and do this. It should end up with a "CiscoSNMPUser" config downloaded with the contents being your SNMP users that you would get by executing that command. This particular config has 3 SNMP users defined.

One last step to get the configuration down. Most configurations are longer than these, so the minimum length of a config command is 11 lines by default. If you have only a single SNMP user defined, it will be only 6 lines, so I recommend changing this to 6. You do this under "NCM Settings" again, and under "Config Settings". You can either slide the slider over, or type 6 in to the box.
You can now go into Configuration Management, select as many devices as you want, and tell it to "Download" where you should see a Custom config type called "CiscoSNMPUser". This will download what the SNMPv3 user is from all your devices. You do need to pay attention for an error that says your configuration is too short, if you set it to 6 like I recommended and still get some of these, you probably don't have any SNMP users on the device, or you might need to set it to be shorter.
But, you now have a new configuration type that allows you to check the configuration of your SNMPv3 users! I'll follow up later with a post to tell you how to write a complaince rule to do some testing on this. Guessing some of you can write your own...
Guessing this has the potential to be used for other things, does anyone have ideas on what?