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:ListAccountAliases",
"iam:ListUsers",
"iam:ListSSHPublicKeys",
"iam:ListAccessKeys",
"iam:ListServiceSpecificCredentials",
"iam:ListMFADevices",
"iam:GetAccountSummary",
"sts:GetSessionToken"
],
"Resource": "*",
"Condition": {
"Bool": {
"aws:MultiFactorAuthPresent": "false",
"aws:ViaAWSService": "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": "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": {
"BoolIfExists": {
"aws:MultiFactorAuthPresent": "false",
"aws:ViaAWSService": "false"
}
}
}
注: 長期的な認証情報で AWS CLI を使用する IAM ユーザーはアクセスを拒否され、認証するために MFA を使用しなくてはなりません。そのため、必ず MFA トークンを使用して CLI セッションを認証してください。
関連情報
他の AWS アカウントのユーザーに Amazon S3 バケットへのアクセスに MFA の使用を義務付けるにはどうすればよいですか?
多要素認証を使用する
AWS CLI または AWS API で MFA デバイスを割り当てる