Abe Estrada

AWS Force_MFA + CodeCommit

Después de que pude agregar el soporte para MFA, el siguiente problema que tuve que resolver fue dar permiso para utilizar CodeCommit con SSH y poder clonar repositorios sin necesidad de MFA, por que desde la linea de comando no se puede.

Para el siguiente truco es necesario agregar "codecommit:*" a la lista de acciones dentro de "Sid": "DenyAllExceptListedIfNoMFA", y además agregar una condición extra al final:

"Null": {
    "kms:ViaService": true
}

Al final queda de la siguiente forma:

{
    "Sid": "DenyAllExceptListedIfNoMFA",
    "Effect": "Deny",
    "NotAction": [
        "iam:CreateVirtualMFADevice",
        "iam:EnableMFADevice",
        "iam:GetUser",
        "iam:ListMFADevices",
        "iam:ListVirtualMFADevices",
        "iam:ResyncMFADevice",
        "sts:GetSessionToken",
        "iam:ChangePassword",
-        "iam:CreateLoginProfile"
+        "iam:CreateLoginProfile",
+        "codecommit:*"
    ],
    "Resource": "*",
    "Condition": {
        "BoolIfExists": {
            "aws:MultiFactorAuthPresent": "false"
+       },
+       "Null": {
+           "kms:ViaService": true
        }
    }
}

Con esto si el usuario ya tiene su SSH key ID configurada, ya puede clonar y utilizar el repositorio por medio de SSH.

He actualizado el gist por si quieren el archivo completo.

Fuente