Come posso applicare l'autenticazione MFA per gli utenti IAM che utilizzano la Console di gestione AWS e l'interfaccia della linea di comando AWS?

3 minuti di lettura
0

Ho creato una policy di autenticazione a più fattori (MFA) per limitare l'accesso ai servizi AWS agli utenti di AWS Identity and Access Management (IAM). La policy funziona con la Console di gestione AWS, ma non con l'Interfaccia della linea di comando AWS (AWS CLI).

Descrizione breve

Il seguente esempio di policy IAM richiede agli utenti IAM di utilizzare l'autenticazione a più fattori (MFA) per accedere a servizi AWS specifici:

{  "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"
    }
  }
}

Nella policy precedente, agli utenti IAM che utilizzano la Console di gestione AWS viene richiesto di inserire le credenziali di autenticazione MFA per accedere ai servizi AWS. Tuttavia, gli utenti IAM con AWS CLI possono accedere ai servizi AWS anche senza inserire le credenziali di autenticazione a più fattori (MFA).

Risoluzione

Nota: se visualizzi dei messaggi di errore quando esegui i comandi dell'interfaccia della linea di comando AWS, consulta la sezione Risolvere gli errori AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.

Poiché la chiave aws:MultiFactorAuthPresent non esiste nelle richieste di credenziali a lungo termine, la chiave non nega l'accesso alle richieste. Con l'operatore di condizione booleano, se la chiave non è presente nella policy, i valori non corrispondono.

Gli utenti IAM che utilizzano la Console di gestione AWS generano credenziali temporanee e consentono l'accesso solo quando utilizzano l'MFA.

Per applicare l'autenticazione MFA con l'AWS CLI, aggiungi l'operatore di condizione IfExists per verificare se la chiave MultiFactorAuthPresent è presente nella richiesta. La condizione booleana consente di limitare l'accesso con un valore della chiave impostato su true o false. Se la chiave MultiFactorAuthPresent non è presente nella richiesta, IfExists valuta l'elemento condizione come true.

Esempio di policy 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"
        }
    }
}

Nota: agli utenti IAM che utilizzano AWS CLI con credenziali a lungo termine viene negato l'accesso e devono utilizzare l'autenticazione a più fattori (MFA). Pertanto, assicurati di utilizzare un token MFA per autenticare la sessione CLI.

Informazioni correlate

Come faccio a richiedere agli utenti di altri account AWS di utilizzare l'autenticazione a più fattori per accedere ai miei bucket Amazon S3?

Utilizzo dell’autenticazione a più fattori

Assegna dispositivi MFA nell'interfaccia della linea di comando AWS o nell'API AWS