0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WSL2でAWS SSOのアカウント切り替えを楽にする(granted)

0
Posted at

何が面倒だったか

AWS SSOで複数アカウントを使ってると、切り替えるたびに aws sso login → ブラウザ開く → 認証コード確認 → ボタンポチ、
を毎回やらないといけない
同じSSOの組織内のアカウント間の切り替えなのに、毎回ブラウザ認証は面倒。

granted で解決

granted を使うと、1回ブラウザ認証すれば同じSSO start
URLのアカウント間はブラウザ不要で即切り替え
が可能に。

インストール(WSL2 / Linux x86_64)

# ダウンロード & 展開
cd /tmp
curl -OL https://github.com/fwdcloudsec/granted/releases/download/v0.38.0/granted_0.38.0_linux_x86_64.tar.gz
tar -xzf granted_0.38.0_linux_x86_64.tar.gz

# ~/.local/bin に配置
mkdir -p ~/.local/bin
mv granted assume ~/.local/bin/

# assumego のシンボリックリンク作成(assume スクリプトが内部で使う)
ln -sf ~/.local/bin/granted ~/.local/bin/assumego

# 確認
export PATH="$HOME/.local/bin:$PATH"
granted --version

WSL2 でブラウザが自動で開かない問題の対策

WSL2 だと xdg-open がパスのスペースで死ぬので、ラッパースクリプトを作る。

cat << 'EOF' > ~/.local/bin/wsl-open
#!/bin/sh
exec "/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe" "$@"
EOF
chmod +x ~/.local/bin/wsl-open

Chrome の場合はパスを変えるだけ:
exec "/mnt/c/Program Files/Google/Chrome/Application/chrome.exe" "$@"

.bashrc の設定

# PATH(なければ追加)
export PATH="$HOME/.local/bin:$PATH"

# ブラウザ設定(WSL2用)
export BROWSER="$HOME/.local/bin/wsl-open"

# granted の assume エイリアス
alias assume="source ~/.local/bin/assume"

# 既存の sso エイリアスを assume ベースに書き換え
alias ssoaaa='assume aaa'
alias ssoaaa='assume bbb'
alias ssoaaa='assume ccc'

source ~/.bashrc するか新しいターミナルを開けばOK。

使い方

# プロファイル指定で切り替え
assume aaa

# 初回だけブラウザ認証が走る。認証したら↓

# 同じSSO start URLのアカウントはブラウザ不要で即切り替え
assume bbb    # 一瞬
assume ccc   # 一瞬
assume aaa    # 戻すのも一瞬


# 既存のエイリアスもそのまま使える
ssoaaa
ssobbb
ssoccc

# 対話式でプロファイルを選ぶ
assume

# セッション解除
assume --unset
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?