AssumeRoleで取得する一時的な認証情報の有効期限を長くしてみた

2021.01.07

こんにちは、CX事業本部の若槻です。

AWSでのスイッチロール(AssumeRole)により取得できる一時的な認証情報の有効期限は、各種assumeの方法(AWSマネジメントコンソール、CLI、API)とも既定で1h、最大12hとなっています。

今回は、AssumeRoleで取得する一時的な認証情報の有効期限を既定の1hから長くしてみました。

現状の有効期限の確認

コマンド実行で使用する変数を定義します。

% profile=<Profile>
% role_name=<Role Name>

Assumeの引受けロールの有効期限(MaxSessionDuration)は既定の1hとなっています。

% aws iam get-role \
    --profile ${profile} \
    --role-name ${role_name} \
    --query Role.MaxSessionDuration
3600

AWS CLIのsts assume-roleコマンドで取得した一時的な認証情報の有効期限(Credentials.Expiration)も既定の1hとなっています。(オプションを指定しない場合)

% date -u
Thu Jan  7 01:54:10 UTC 2021
% aws sts assume-role \
  --profile default \
  --role-arn $(aws configure get ${profile}.role_arn) \
  --role-session-name ${profile}-session \
  --serial-number $(aws configure get ${profile}.mfa_serial) \
  --token-code $mfa_code \
  --query Credentials.Expiration
"2021-01-07T02:56:27+00:00"

有効期限を長くしてみる

AWS CLIでAssume引受けロールの有効期限(max-session-duration)を最大の12h(43600s)に変更します。

% aws iam update-role \
  --role-name ${role_name} \
  --max-session-duration $((60*60*12))

これでAWSマネジメントコンソールからの利用時の有効期限が12hとなりました。

AWS CLIのsts assume-roleコマンドではduration-secondsオプションを指定することにより有効期限を既定から変更できます。

% date -u
Thu Jan  7 02:28:30 UTC 2021
% aws sts assume-role \
  --profile default \
  --role-arn $(aws configure get ${profile}.role_arn) \
  --role-session-name ${profile}-session \
  --serial-number $(aws configure get ${profile}.mfa_serial) \
  --token-code $mfa_code \
  --duration-seconds $((60*60*12)) \
  --query Credentials.Expiration
"2021-01-07T14:28:48+00:00"

おわりに

AssumeRoleで取得する一時的な認証情報の有効期限を既定の1hから長くしてみました。

1hの有効期限だと長時間の作業をする間に何度も認証を聞かれてしまうので延ばすことにより便利になりますね。一方でトークンの有効期限を延ばすことは便利な半面セキュリティを緩和することになるので、より気をつけて運用をしましょう。

参考

以上