はじめに
AWS への認証が Azure AD で SSO 行われている環境で aws-cli を利用するため aws-azure-login
というツールを試してみました。
事前準備
aws-azure-login
は node.js のパッケージとしてインストールを行うため nvm をインストールしておきます。
nvm インストール
ここでは curl を使って nvm のインストールスクリプトをダウンロードし、そのまま bash で実行しています。
% curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
有効化
nvm のインストールディレクトリを NVM_DIR
という環境変数に設定します。
% export NVM_DIR="$HOME/.nvm"
nvm のスクリプト (nvm.sh) が存在していれば、それを読み込んで nvm を有効化します。
% [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
nvm の Bash 保管機能 (bash_completion) を読み込みます。
% [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
node 最新化
以下のコマンドを実行し node のバージョンを最新化しておきます。
% nvm install --lts
% nvm --version
node のバージョンは最新化されますが nvm コマンドのバージョンが最新化されるわけではないです。
nvm の最新化を行いたい場合は以下のリポジトリを確認し、最新のバージョンで nvm インストール を行います。
aws-azure-login の設定
事前準備ができたらここから aws-azure-login をインストールして設定をしていきます。
インストール
npm を使って aws-azure-login
パッケージをインストールします。
% npm install -g aws-azure-login
aws 環境設定
aws へログインするための環境設定を行います。
修正するファイルは普段 aws-cli で利用する config ファイルです。
% vim ~/.aws/config
[default]
azure_tenant_id="************************""
azure_app_id_uri="************************"
azure_default_username="test@example.com"
azure_default_role_arn=arn:aws:iam::***********:role/AzureLoginRole
azure_default_duration_hours=8
項目について
項目 | 説明 |
---|---|
azure_tenant_id | Azure AD のテナント ID |
azure_app_id_uri | Azure AD で AWS SSO に関連づけられたアプリケーション ID URI |
azure_default_username | AWS にログインする際の Azure AD のデフォルトユーザー名 |
azure_default_role_arn | AWS にログインする際のデフォルト IAM ロール ARN |
azure_default_duration_hours | AWS SSO ログインのデフォルト有効時間(セッション持続時間) |
設定を行ったら先ほどインストールしたコマンドを実行します。
% aws-azure-login --mode=gui
Logging in with profile 'default'...
Using AWS SAML endpoint https://signin.aws.amazon.com/saml
Please complete the login in the opened window
するとブラウザが立ち上がり、ログイン画面が表示されるため メールアドレス を入力して [Next]
をクリックします。
次に パスワード を入力し [Sign in]
をクリックします。
先ほどのコンソールの続きで以下のような表示が出力されたら成功です。
Assuming role arn:aws:iam::***********:role/AzureLoginRole in region ap-northeast-1...
確認
S3 のバケット一覧表示など、ログインロールに付与されている権限を実行してみてください。
% aws s3 ls
おわりに
Azure AD 連携 でコマンドを利用するのはハードルが高そうだなと思っていましたが、いざ試してみるとすごく簡単でした。
また、Node について改めて整理することができてよかったです。