Research
Security News
Malicious npm Package Targets Solana Developers and Hijacks Funds
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
hubot-heroku
Advanced tools
A hubot library that exposes heroku commands via Heroku's Platform API, with focus of letting non privileged developers carry out tasks around deployments, but not run dangerous commands or get access to the data.
Under Heroku's permission model, giving someone access to push/promote to production means giving full access to the data as well. This is generally not a good practice and for certain companies, it might be non-compliant.
Our team wanted to let every engineer do deployments without giving production access. We started this by using atmos/hubot-deploy and atmos/heaven, but that didn't the ability to run migrations, set config variables etc. hubot-heroku was made with this consideration in mind.
By the way, I'm also actively looking for co-contributors!
Deployment usually involves some form of CI process. Hence it is best suited for a robust solution like Github deployments, where you can set required CI contexts etc.
This robot is focused on letting you run auxiliary commands around the heroku system, so developers don't have to be given production access to independently manage deployments.
You can restrict command usage to specific roles using the hubot-auth package. Role names take the form heroku-<app>
.
To enable auth:
npm install hubot-auth --save
hubot-auth
to external-scripts.json
(e.g. ["hubot-auth", "some-other-plugin"]
)HUBOT_HEROKU_USE_AUTH
to true
.hubot <user> has heroku-<app> role
You can set config variables using this. Hence the Heroku API key used should not have access to your hubot instance on Heroku. For example:
hubot heroku config:set my-hubot HUBOT_ADMIN=dr_evil
# Muhaha, now I'm to use hubot's other commands to take over the world
You can also avoid this if you are using auth as described above, in which case you can ensure only admins have the role necessary to set config variables on the hubot instance.
npm install hubot-heroku --save
hubot-heroku
to external-scripts.json
(e.g. ["hubot-heroku", "some-other-plugin"]
)HUBOT_HEROKU_API_KEY
to a heroku account's API key. This user must have access to the apps you want to use this script on.hubot help
. The commands usually follow hubot heroku The API key can be obtained here.
Use hubot help
to look for the commands. They are all prefixed by heroku. (e.g. hubot heroku restart my-app
)
Some commands (hubot help will be a better source of truth):
hubot heroku info <app>
- Returns useful information about the apphubot heroku dynos <app>
- Lists all dynos and their statushubot heroku releases <app>
- Latest 10 releaseshubot heroku rollback <app>
- Rollback to a releasehubot heroku restart <app> <dyno>
- Restarts the specified app or dyno/s (e.g. worker
or web.2
)hubot heroku migrate <app>
- Runs migrations. Remember to restart the app =)hubot heroku config <app>
- Get config keys for the app. Values not given for securityhubot heroku config:set <app> <KEY=value>
- Set KEY to value. Case sensitive and overrides present keyhubot heroku config:unset <app> <KEY>
- Unsets KEY, does not throw error if key is not presentFor example, hubot heroku config:set API_KEY=12345
If you get hubot errors, this might help:
Reference the API documentation for more information. Search for "Error Responses".
Run tests by running npm test
npm install -g node-inspector
node-inspector --no-preload --web-port 8123
# In your hubot folder
npm link /path/to/hubot-heroku
coffee --nodejs --debug node_modules/.bin/hubot
Visit http://127.0.0.1:8123/debug?port=5858
and use debugger
statements to pause execution.
PRs and Issues greatly welcomed. Please read Contributing for more information.
FAQs
Run heroku commands via hubot without direct access to Heroku
We found that hubot-heroku demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.