AWS Identity and Access Management (IAM) ユーザーに対して AWS サービスへのアクセスを制限する多要素認証 (MFA) 条件ポリシーを作成しました。このポリシーは AWS マネジメントコンソールでは機能しますが、AWS コマンドラインインターフェイス (AWS CLI) では機能しません。
簡単な説明
次の IAM ポリシーの例では、IAM ユーザーは特定の AWS サービスへアクセスするために MFA を使用する必要があります。
{
"Sid": "BlockMostAccessUnlessSignedInWithMFA",
"Effect": "Deny",
"NotAction": [
"iam:CreateVirtualMFADevice",
"iam:DeleteVirtualMFADevice",
"iam:ListVirtualMFADevices",
"iam:EnableMFADevice",
"iam:ResyncMFADevice",
"iam:GetUser",
"iam:GetLoginProfile",
"iam:ListAccountAliases",
"iam:ListUsers",
"iam:ListSSHPublicKeys",
"iam:ListAccessKeys",
"iam:ListServiceSpecificCredentials",
"iam:ListMFADevices",
"iam:GetAccountSummary",
"sts:GetSessionToken"
],
"Resource": "*",
"Condition": {
"BoolIfExists": {
"aws:MultiFactorAuthPresent": "false"
}
}
}
前述のポリシーでは、AWS マネジメントコンソールを使用する IAM ユーザーは、AWS サービスにアクセスするために MFA 認証情報の入力を求められます。ただし、AWS CLI を使用する IAM ユーザーの場合は、AWS サービスにアクセスするための MFA 認証情報の入力を求められません。
解決策
注: AWS CLI コマンドの実行時にエラーが発生する場合は、「AWS CLI のエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
aws:MultiFactorAuthPresent キーは長期間の認証情報リクエストには存在しないため、キーによってリクエストへのアクセスが拒否されることはありません。ポリシーのキーがブール条件演算子と組み合わせて使用されていない場合、値は一致しません。
AWS マネジメントコンソールを使用する IAM ユーザーは一時的な認証情報を生成し、MFA を使用する場合にのみアクセスが許可されます。
AWS CLI で MFA 認証を適用するには、IfExists 条件演算子を追加して、MultiFactorAuthPresent キーがリクエストに含まれているかどうかを確認します。Boolean 条件では、キー値を true または false に設定してアクセスを制限できます。MultiFactorAuthPresent キーがリクエストに含まれていない場合、IfExists は条件エレメントを true と評価します。
IAM ポリシーの例:
{
"Sid": "DenyAllExceptListedIfNoMFA",
"Effect": "Deny",
"NotAction": [
"iam:CreateVirtualMFADevice",
"iam:EnableMFADevice",
"iam:GetUser",
"iam:GetLoginProfile",
"iam:GetMFADevice",
"iam:ListMFADevices",
"iam:ListVirtualMFADevices",
"iam:ResyncMFADevice",
"sts:GetSessionToken"
],
"Resource": "*",
"Condition": {
"BoolIfExists": {
"aws:MultiFactorAuthPresent": "false"
}
}
}
注: 長期間の認証情報で AWS CLI を使用する IAM ユーザーはアクセスを拒否され、認証するために MFA を使用する必要があります。必ず MFA トークンを使用して CLI セッションを認証してください。
関連情報
他の AWS アカウントのユーザーが Amazon S3 バケットにアクセスする際、MFA を使用するように要求するにはどうすればよいですか?
多要素認証を使用する
AWS CLI または AWS API で MFA デバイスを割り当てる