AWS CLI を使用する IAM ユーザーに MFA による認証を適用するにはどうすればよいですか?

最終更新日: 2020 年 6 月 16 日

AWS Identity and Access Management (IAM) ユーザーに対し、AWS のサービスへのアクセスを制限する多要素認証 (MFA) 条件ポリシーを作成しました。このポリシーは AWS マネジメントコンソールでは機能しますが、AWS コマンドラインインターフェイス (AWS CLI) では機能しません。AWS CLI で MFA を使用するにはどうすればよいですか?

簡単な説明

次に挙げた IAM ポリシーの例では、特定の AWS のサービスにアクセスする IAM ユーザーは、MFA を使用する必要があります。

{

            "Sid": "BlockMostAccessUnlessSignedInWithMFA",
            "Effect": "Deny",
            "NotAction": [
                "iam:CreateVirtualMFADevice",
                "iam:DeleteVirtualMFADevice",
                "iam:ListVirtualMFADevices",
                "iam:EnableMFADevice",
                "iam:ResyncMFADevice",
                "iam:ListAccountAliases",
                "iam:ListUsers",
                "iam:ListSSHPublicKeys",
                "iam:ListAccessKeys",
                "iam:ListServiceSpecificCredentials",
                "iam:ListMFADevices",
                "iam:GetAccountSummary",
                "sts:GetSessionToken"
            ],
            "Resource": "*",
            "Condition": {
                "Bool": {
                    "aws:MultiFactorAuthPresent": "false"
                }
            }
}

AWS マネジメントコンソールを使用する IAM ユーザーの場合は、MFA 認証情報の入力を求められるので、AWS のサービスにアクセスできます。一方、AWS CLI を使用する IAM ユーザーは MFA 認証情報の入力を求められず、AWS のサービスにアクセスできません。
</p

解決方法

注: AWS CLI コマンドの実行時にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください

MultiFactorAuthPresent キーは、MFA が使用されていることが確認される 一時的なセキュリティ認証情報 にのみ適用されます。この MultiFactorAuthPresent キーでは、長期的な認証情報 を使用して行われたリクエストや、AWS CLI による MFA リクエストへのアクセスを拒否しません。

AWS マネジメントコンソールを使用する IAM ユーザーには一時的な認証情報が生成され、MFA を使用した場合のアクセスのみが許可されます。

Bool 条件演算子を使用すると、キー値を true または false に設定してのアクセス制限が可能です。BoolIfExists 条件演算子を追加することで、リクエストに MultiFactorAuthPresent キーが含まれるかどうかを確認できます。MultiFactorAuthPresent キーが含まれていない場合、IfExists は条件要素を次のように true と評価します。

"Effect" : "Deny",
"Condition" : { "BoolIfExists" : { "aws:MultiFactorAuthPresent" : "false" } }

AWS CLI と長期的な認証情報を使用している IAM ユーザーはアクセスを拒否されるので、認証には MFA を使用する必要があります。

詳細については「ブール条件演算子」を参照してください。
</p