I feel like I need to preface with, "I'm not a security expert." This is just what I tend to do.
For specific processes, I create specific keys and set expiration dates. I don't have many background, long-running tasks, so I try not to have open keys floating around under the admin account. Expirations help me stay on top of that. If I really need to do something, it's easy to kick up another key for that particular job.
You can scope out API keys without needing OAuth. In the Admin page, go to Developer Keys and create a new API key. All you really need is a title and owner email. Then, hit the Enforce Scopes toggle and you can select which endpoints you want to open up to the application.
When you save, it adds your application to the keys list. To get the API key as a string, click on Show Key. That key can be used in background applications to make authenticated API calls without kicking off the OAuth flow.
The Canvas docs have this process written up with screenshots.