Skip to main content

A CLI tool that allows you to log in and retrieve AWS temporary credentials using Red Hat SAML IDP

Project description

rh-aws-saml-login

Ruff PyPI PyPI platforms PyPI - License Checked with mypy

A CLI tool that allows you to log in and retrieve AWS temporary credentials using Red Hat SAML IDP.

demo

Pre-requisites

  • Python 3.11 or later
  • Connected to Red Hat VPN
  • A Red Hat managed computer (Kerberos must be installed and configured) and you are logged in with your Red Hat account

How it works

The rh-aws-saml-login CLI is a tool that simplifies the process of logging into an AWS account via Red Hat SSO. It retrieves a SAML token from the Red Hat SSO server, then fetches and parses the AWS SSO login page to present you with a list of all available accounts and their respective roles. You can then choose your desired account and role, and rh-aws-saml-login uses the SAML token to generate temporary AWS role credentials. Finally, it spawns a new shell with the necessary AWS_ environment variables already set up, so you can immediately use the aws CLI without any further configuration.

Installation

Prerequisites

rh-aws-saml-login needs the krb5 library to work. On most system, e.g., MacOS, this library is already installed. On CSB Fedora, you need to install the Kerberos development package:

sudo dnf install krb5-devel

Recommended Installation Method

The recommended way to install rh-aws-saml-login is to use the uv tool:

uv tool install -p python3.12 rh-aws-saml-login

and upgrade an existing installation with:

uv tool upgrade rh-aws-saml-login

Alternative Installation Methods

You can install this library from PyPI with pip:

python3 -m pip install rh-aws-saml-login

or install it with pipx:

pipx install rh-aws-saml-login

and upgrade an existing installation with:

pipx upgrade rh-aws-saml-login

Usage

Interactive mode

Just run rh-aws-saml-login to start the interactive mode. It will list all available AWS accounts and roles, and you can choose the one you want to log in to:

$ rh-aws-saml-login

         __                                                         __      __            _
   _____/ /_        ____ __      _______      _________ _____ ___  / /     / /___  ____ _(_)___
  / ___/ __ \______/ __ `/ | /| / / ___/_____/ ___/ __ `/ __ `__ \/ /_____/ / __ \/ __ `/ / __ \
 / /  / / / /_____/ /_/ /| |/ |/ (__  )_____(__  ) /_/ / / / / / / /_____/ / /_/ / /_/ / / / / /
/_/  /_/ /_/      \__,_/ |__/|__/____/     /____/\__,_/_/ /_/ /_/_/     /_/\____/\__, /_/_/ /_/
                                                                                /____/

✅ Test for a valid Kerberos ticket ...
✅ Getting SAML token ...
✅ Getting AWS accounts ...
✅ Getting temporary AWS credentials ...

Spawning a new shell. Use exit or CTRL+d to leave it!

🤓 app-sre
🚀 1234567890-app-sre
⌛ 59 minutes from now (2024-10-07 11:16:54+02:00)

$ aws s3 ls
...

This spawns a new shell with all required AWS environment variables set. See the Environment Variables section for more information.

Non-interactive mode

Instead of running the interactive mode, you can also use rh-aws-saml-login to run any arbitrary command with the AWS environment variables set:

rh-aws-saml-login <ACCOUNT_NAME> -- <COMMAND> [ARGUMENTS]

For example:

$ rh-aws-saml-login app-sre-stage -- aws s3 ls

         __                                                         __      __            _
   _____/ /_        ____ __      _______      _________ _____ ___  / /     / /___  ____ _(_)___
  / ___/ __ \______/ __ `/ | /| / / ___/_____/ ___/ __ `/ __ `__ \/ /_____/ / __ \/ __ `/ / __ \
 / /  / / / /_____/ /_/ /| |/ |/ (__  )_____(__  ) /_/ / / / / / / /_____/ / /_/ / /_/ / / / / /
/_/  /_/ /_/      \__,_/ |__/|__/____/     /____/\__,_/_/ /_/ /_/_/     /_/\____/\__, /_/_/ /_/
                                                                                /____/

✅ Test for a valid Kerberos ticket ...
✅ Getting SAML token ...
✅ Getting AWS accounts ...
✅ Getting temporary AWS credentials ...
2022-05-17 13:48:49 bucket-name-stage
2022-12-13 13:21:02 bucket-name-tfstate-stage
Thank you for using rh-aws-saml-login. 🙇‍♂️ Have a great day ahead! ❤️

Environment Variables

rh-aws-saml-login sets the following environment variables:

  • AWS_ACCOUNT_NAME: The name/alias of the AWS account
  • AWS_ROLE_NAME: The name of the role
  • AWS_ROLE_ARN: The ARN of the role
  • AWS_ACCESS_KEY_ID: The access key used by the AWS CLI
  • AWS_SECRET_ACCESS_KEY: The secret access key used by the AWS CLI
  • AWS_SESSION_TOKEN: The session token used by the AWS CLI
  • AWS_REGION: The default region used by the AWS CLI

Features

rh-aws-saml-login currently provides the following features (get help with -h or --help):

  • No configuration needed

  • Uses Kerberos authentication

  • Open the AWS web console for an account with the --console option

  • Shell auto-completion (bash, zsh, and fish) including AWS account names

  • Integrates nicely with the starship

     [env_var.AWS_ACCOUNT_NAME]
     format = "$symbol$style [$env_value]($style) "
     style = "cyan"
     symbol = "🚀"
    

Development

  • Update CHANGELOG.md with the new version number and date
  • Bump the version number in pyproject.toml

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

rh_aws_saml_login-0.5.0.tar.gz (8.8 kB view details)

Uploaded Source

Built Distribution

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

rh_aws_saml_login-0.5.0-py3-none-any.whl (10.1 kB view details)

Uploaded Python 3

File details

Details for the file rh_aws_saml_login-0.5.0.tar.gz.

File metadata

  • Download URL: rh_aws_saml_login-0.5.0.tar.gz
  • Upload date:
  • Size: 8.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.4.18

File hashes

Hashes for rh_aws_saml_login-0.5.0.tar.gz
Algorithm Hash digest
SHA256 1f99db42acd2d2bc9f1cd29a21c2d4be8f79fd9ca17d72bfe5e7b01e893b979f
MD5 d5f67cc34921b7fbe7640999f661d66b
BLAKE2b-256 e50549e5efaef1171d9c9b05d620204d48b016f8c9d0980e222bcde5b2b72738

See more details on using hashes here.

File details

Details for the file rh_aws_saml_login-0.5.0-py3-none-any.whl.

File metadata

File hashes

Hashes for rh_aws_saml_login-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 81d9804a17517f743aa26f7ee5e0a393b151db0f3bd2c4812c49545f37d8f655
MD5 a42ba945bd51c97c390d260870c3233f
BLAKE2b-256 960da0ec36fd2353edd27efe3fad73be15d131daa436ec9ad76ecde95ec69bb5

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