Skip to main content

1Password aws-vault like utility

Project description

op-aws-vault 🚀

A handy aws-vault-like utility built entirely on 1Password!

🤔 What is it?

Ever wished aws-vault played nicely with 1Password? Or found the official 1Password AWS plugin a little... quirky? This tool scratches that itch! ✨

It's a small Python script that mimics aws-vault's core behavior but integrates seamlessly with your 1Password vault. It leverages the power of the 1Password CLI (op).

Prerequisites:

  • A 1Password account
  • The 1Password CLI (op) installed and configured
  • The 1Password desktop app running and unlocked

Tested and working on macOS, Linux, Windows, and WSL2! ✅

Core Features:

  • 🔑 Execute commands or open a shell with temporary AWS credentials (including MFA support!) for any role you can assume.
  • 🌐 Log in to the AWS Management Console via federation with a single command.

No more juggling configuration files! All settings – AWS credentials, OTP secrets, and assumable roles – live securely within your 1Password vault. Set it up once, use it everywhere! 🌍

🛠️ How to install

  1. Create a Python Virtual Environment (recommended):
    python -m venv .venv
    source .venv/bin/activate # On Linux/macOS
    # .\.venv\Scripts\activate # On Windows
    
  2. Install using pip:
    pip install op-aws-vault
    

Tip: You might want to disable the 1Password AWS integration (unalias aws in your shell profile if needed) to avoid potential conflicts.

⚙️ Setup in 1Password

Create a new Login item (or use an existing one) in 1Password and add the following fields with these exact labels:

  • access key id (Your AWS Access Key ID)
  • secret access key (Your AWS Secret Access Key)
  • mfa serial (Your MFA device ARN, e.g., arn:aws:iam::123456789012:mfa/YourUser. Recommended!)
  • one-time password (Link this to the TOTP secret for your MFA device)
  • default-region (e.g., us-east-1, eu-west-1)
  • session name (Optional: A custom name for the AWS session. Defaults to op-aws-vault if omitted)

Adding Assumable Roles:

For each AWS role you want to assume, add a Text field with the label following the pattern role-{your-role-name}. The value should be the full ARN of the role.

Example:

  • Label: role-developer
  • Value: arn:aws:iam::987654321098:role/DeveloperRole

Add as many roles as you need!

Tagging:

Finally, add the tag aws-credentials to this 1Password item. This is how op-aws-vault finds your configuration.

Your item should look something like this:

Example Configuration

🚀 Usage

All commands require the role name as the first argument. This can be:

  • The name you defined after role- (e.g., developer from the example above).
  • default to use the base credentials directly (MFA will still be used if configured).

Expect 1Password to prompt for authentication periodically.

Common Optional Arguments:

  • --region <aws-region>: Specify the AWS region for the command (overrides default-region).
  • --duration <duration>: Set the session validity period (e.g., 15m, 1h, 8h). Defaults to 1h.

op-aws-vault exec 💻

Opens an authenticated shell or runs a command with the specified role's credentials.

Examples:

  • Open your default shell with the developer role credentials:
    op-aws-vault exec developer
    
  • Run a specific command (aws s3 ls) with the developer role:
    op-aws-vault exec developer -- aws s3 ls
    
  • Open a specific shell (/bin/bash) with the default credentials:
    op-aws-vault exec default -- /bin/bash
    

Unlike the original aws-vault, op-aws-vault sessions can be safely nested if needed.


op-aws-vault login 🌐

Generates a federated login URL for the AWS Management Console and opens it in your default web browser.

Example:

  • Log in to the console as the developer role:
    op-aws-vault login developer
    

Get URL Only:

If you prefer to copy the URL instead of opening a browser, use the --stdout flag:

op-aws-vault login developer --stdout

Happy vaulting! 🎉

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

op_aws_vault-0.0.8.tar.gz (20.5 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

op_aws_vault-0.0.8-py3-none-any.whl (6.4 kB view details)

Uploaded Python 3

File details

Details for the file op_aws_vault-0.0.8.tar.gz.

File metadata

  • Download URL: op_aws_vault-0.0.8.tar.gz
  • Upload date:
  • Size: 20.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.13.2

File hashes

Hashes for op_aws_vault-0.0.8.tar.gz
Algorithm Hash digest
SHA256 5664158f8c288a482e4febe4396028a5e8986d33737021e9ad9c9955aeb7efb6
MD5 cf633e15ee2d1979c62bd16e0a0f4659
BLAKE2b-256 feb50ca0b0525aca59e78fbe6d9c4b98346f8064a0a0dfc817ec94d3f876067e

See more details on using hashes here.

File details

Details for the file op_aws_vault-0.0.8-py3-none-any.whl.

File metadata

  • Download URL: op_aws_vault-0.0.8-py3-none-any.whl
  • Upload date:
  • Size: 6.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.13.2

File hashes

Hashes for op_aws_vault-0.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 87e736900477afb9b3093db6e7767a27d04d223ecce50318f5c933ae27cc31b3
MD5 1b854a3ca035b184ad04ad6738c56d7c
BLAKE2b-256 ef6976ecf94bd678881baab273b16455a72b6b702ce26aa031c18dd11e72ca40

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page