AWS PowerShell で MFA入力を減らしてみる

AWS PowerShell で MFA入力を減らしてみる:

AWS PowerShell 使ってますか?

awscliはMFA対応がちゃんとしていて、一度MFA入力したらしばらく大丈夫ですが、AWSPowerShellだと入力の都度求められて嫌になりますよね。

PowerShellでもスクリプトスコープの変数にSessionTokenを突っ込めばイケそうなきがしたので実装してみました。


インストール方法

モジュール内部からAWSPowerShellを使うのでインストールしておいてください。

msi版でもよいですが、PowerShell v5.x(Windows10)ならinstall-module awspowershellでもインストールできます。

スクリプトモジュールとして実装したので、 STSHelper.psm1 をダウンロードして、BOM付きUTF-8で保存して、下記の要領でインストールしてください。

install.ps1
$destdir = Join-Path $env:PSModulePath.split(';')[0] "STSHelper" 
if (Test-Path $destdir) {} else { mkdir $destdir } 
copy-item STSHelper.psm1 $destdir 


使用方法


準備

認証情報をプロファイルに保存します


  • <ソースプロファイル> IAMアカウントのアクセスキーを指定したプロファイル



    Set-AWSCredential -StoreAs <ソースプロファイル> -AccessKey <アクセスキー> -SecretKey <シークレットキー> 
    

  • <ターゲットプロファイル> AssumeRole先を指定したプロファイル



    Set-AWSCredential -StoreAs <ターゲットプロファイル> -SourceProfile <ソースプロファイル> -RoleArn <ロールのARN> -MfaSerial <MFAのARN> 
    
毎回起動時に設定するのは大変なので下記のprofile.ps1に書いておくのがおすすめ

$env:USERPROFILE\Documents\WindowsPowerShell\profile.ps1 
profile.ps1について詳しく知りたい場合は PowerShell で Profile を利用して スクリプトの自動読み込みをしてみよう が詳しいです。


利用

import-module STSHelper 
New-STSCredential <ターゲットプロファイル> <ソースプロファイル> 
iex (Update-STSCredential) 
以降はiex... だけで更新されます。

iex (Update-STSCredential) 
プロセス起動毎に初回利用時または期限切れのときはMFA入力が求められます。

それ以外は新たなMFA入力無しで1時間延長です。

メモリ(スクリプトスコープの変数)に保存しているのでランタイム毎に必要です。

スクリプト内でプロファイル保存しても呼び出し元に反映されないのでiexしてます。


期限の確認

Get-STSCredential 


課題

ファイルに保存すればランタイムをまたげると思うのですが、生で保存したくないので実装していません。

awscliみたいに無効時に必要に応じて自動的に呼び出せるようにしたいかな。

コメント

このブログの人気の投稿

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2020-12-01 09:41:49 RSSフィード2020-12-01 09:00 分まとめ(69件)