AWS マネジメントコンソールと AWS CLI を使用する IAM ユーザーに MFA 認証を適用する方法を教えてください。

所要時間1分
0

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 デバイスを割り当てる

コメントはありません

関連するコンテンツ