Skip to main content

Alternatives

There are many great existing solutions out there that solve similar problems and I've tried to learn from them as much as I can. This tool that I've built is definitely not better or more feature-rich than for example 99designs/aws-vault in many scenarios as it has a lot more features, more contributors and been around some time. Instead vegas-credentials aims to "one thing well": See Design Principles.

The comparison below focuses on the specific use case this tool tries to solve (i.e. providing a nice UX for assuming a role with MFA using credential_process to support as many AWS tools as possible without having to use wrapper scripts).

Feature/Infoaripalo/vegas-credentials99designs/aws-vaultbroamski/aws-mfameeuw/aws-credential-process
Github StatsGitHub Repo stars
GitHub last commit
GitHub Repo stars
GitHub last commit
GitHub Repo stars
GitHub last commit
GitHub Repo stars
GitHub last commit
credential_process
with MFA + Assume Role
[*2][*4]
Automatic Temporary Session Credential Refresh[*3][*5]
Yubikey✅ ✅ [*1][*1][*6][*10]
Cache Encryption[*7]
Cache Invalidation on config change✅ ?[*8]
Cached Performance⚡️
<100ms[*11]
⚡️
<50ms
⚡️
[*9]
🐢
>400ms[*11]
Comprehensively Unit Tested?
Installation methodsbrew, scoopbrew, port, choco, scoop, pacman, pkg, zypper, nix-env, asdfpipbrew, pip

Please, correct me if I'm wrong above or there's any other good alternatives!

99designs/aws-vault


  1. Yubikey support in 99designs/aws-vault is not perfect:
    • Using multiple Yubikeys is cumbersome due to having to pass in Yubikey device serial as environment variable for each command – vs. this tool allows setting device serial via configuration per profile (no need to remember the serial for each Yubikey).
    • Uses deprecated ykman commands.
    • See also point 2 about credential_process, assumed roles and Yubikeys.

  1. Does not seem to play well with credential_process:

  1. This pretty much relates to point 1: For AWS tools to automatically request refreshed credentials, the credentials need to be provided via either the multiple standard methods or via credential_process.

broamski/aws-mfa


  1. Works differently by writing temporary session credentials into ~/.aws/credentials, so therefore no credential_process support at all.

  1. If temporary session credentials written into ~/.aws/credentials by broamski/aws-mfa are expired, AWS tools will fail and you must invoke aws-mfa command manually to fetch new session credentials. There is no (automatic) way for AWS tools to trigger aws-mfa command.

  1. You may use Yubikey, but it requires you to manually copy-paste the value from ykman or Yubikey Manager GUI. No "touch integration".

  1. Temporary session credentials are written in plaintext into ~/aws/credentials. Besides being available as plaintext, it pollutes the credentials file.

  1. Configuration is only provided via flags to aws-mfa CLI command, so each time you execute aws-mfa it will use the flags provided. But, the gotcha is that again you need to execute aws-mfa manually always.

  1. As temporary session credentials (or "short-term" as aws-mfa calls them) are stored as plaintext into ~/aws/credentials, there is no delay since AWS tools can directly read them from that file.

meeuw/aws-credential-process


  1. Does not support multiple Yubikey devices.

  1. Performance

    Hyperfine benchmark for retrieving cached temporary session credentials:

    TODO: update