関連記事
目的
IAMロールにはセッション期間の設定があり、デフォルトでは1時間でセッションが切れます。
マネジメントコンソールで SwitchRole
した場合にもその時間でセッション切れが発生しますが、セッションが切れると再ロードを促され、いくらでも延長が可能です。1
つまり実質的には無期限になっています。
関連記事1 と同様、ログインしっぱなしを防止したいケースもあると思います。それほど多くはないと思いますが。
ということで、擬似的にセッションタイムアウトさせてみます。
方法
関連記事1 と基本は一緒。
SwitchRole先のIAMロールに、ログインから一定時間経過後に全ての権限を禁止(Deny)するポリシーを付与します。
そうするとSwitch元のログインから一定時間後に、Switch先での権限がDenyになります。
尚、MFA必須です。他にログイン時間を基準にする方法がないので。
ポリシー例
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": "*",
"Resource": "*",
"Condition": {
"NumericGreaterThanIfExists": {
"aws:MultiFactorAuthAge": "3600"
}
}
}
]
}
-
"aws:MultiFactorAuthAge"
は秒数です。
このポリシー例の場合は 3600秒 = 1時間。 - MFAなしでログインした場合は、"常に全てDeny"になります。
そもそもSwitch不可にしたほうがよさそう。
注意事項
- 「最後の操作から一定時間経過後」ではありません。
何か作業途中であろうと、ログインから一定時間で権限が剥奪されます。
-
開いている画面によってはセッション延長に未対応のところもあるようです。 ↩