前提
- IAMユーザーを作成済であること
- プログラムからアクセス
- 仮想MFAを設定済み(ARNを控えておく)
- 以下のポリシーをインラインポリシーで設定済み
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllDenyWithoutMFA",
"Effect": "Deny",
"Action": [
"*"
],
"Resource": [
"*"
],
"Condition": {
"BoolIfExists": {
"aws:MultiFactorAuthPresent": false
}
}
}
]
}
コマンド例
以下で一時クレデンシャルを取得可能
% aws sts get-session-token --serial-number [MFAのARN] --token-code [MFAトークン]
メモ
- 上記「前提」記載の通り、
get-session-token
の実行にはいかなるIAMポリシーも不要- ただし、
get-session-token
で取得した一時クレデンシャルを用いた時に実行できるのは上記ポリシーで許可された操作だけなので、一時クレデンシャルを用いて実行したい操作はあらかじめポリシーで許可する必要がある
- ただし、
また、IAM ユーザーは、一時的セキュリティ認証情報を作成するために GetSessionToken を呼び出すこともできます。ユーザーが GetSessionToken を呼び出すためには、アクセス権限を必要としません。このオペレーションの目的は、MFA を使用してユーザーを認証することです。認証を制御するためにポリシーを使用することはできません。つまり、IAM ユーザーが GetSessionToken を呼び出して、一時的な認証情報を作成することを回避することはできません。
https://aws.amazon.com/jp/premiumsupport/knowledge-center/authenticate-mfa-cli/