Descripción del problema
Los recursos de AWS están disponibles para los usuarios que inician sesión en la cuenta de AWS de su empresa a través de la consola de administración de AWS. Por lo tanto, la actividad no autorizada dentro de su cuenta de AWS, por ejemplo, puede dañar su proceso de I+D o generar facturas de nube impredecibles.
La mejor práctica de seguridad es eliminar las contraseñas de la consola de administración de AWS cuando los usuarios abandonan su organización, ya no las necesitan o simplemente usan claves de acceso (una combinación de un ID de clave de acceso y una clave de acceso secreta) para acceder a la cuenta de AWS.
Terminar el acceso del usuario a la consola de administración de AWS eliminando su contraseña No afecta la posibilidad de acceder a la consola mediante un rol o permisos asumidos. Si el usuario tiene claves de acceso activas, estas continúan funcionando y permiten el acceso a los recursos de AWS.
Nuestras recomendaciones le ayudarán a aumentar la seguridad de las cuentas de AWS al identificar a los usuarios inactivos con contraseñas de consola. En nuestro artículo, recomendamos desactivar las contraseñas de consola que no estén activas durante 90 días o más; sin embargo, puede ajustar un período de tiempo específico según sus requisitos.
Por favor, encuentre las recomendaciones sobre la terminación de cuentas de usuarios inactivas de IAM en nuestra artículo anterior.
Recomendaciones
Encuentra todos los usuarios que tienen el acceso a la consola activado, pero que no lo han utilizado durante más de 90 días.
Resto
Si el usuario tiene acceso a la consola y no la ha utilizado durante más de 90 días y tiene claves de acceso activas y tampoco la ha utilizado durante más de 90 días, se trata de otra categoría de usuarios. Consulta la publicación del blog sobre usuarios inactivos.
Paso 1
Enumere todos los usuarios que se crearon hace más de 90 días y la última vez que iniciaron sesión en la consola de AWS fue hace más de 90 días o no se utilizó en absoluto.
Comando CLI de AWS:
aws iam list-users --query 'Usuarios[?(FechaDeCreación <= `2021-12-26` && (ÚltimaContraseñaUsada <= `2021-12-26`) || !not_null(ÚltimaContraseñaUsada))].NombreDeUsuario' --texto de salida
Puede encontrar más información aquí:
https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/list-users.html
Paso 2
Filtrar los usuarios sin acceso a la consola
aws iam get-login-profile --nombre-usuario "$user" 2>/dev/null
Tenga en cuenta que, en caso de que el usuario no tenga acceso a la consola, este comando generará una excepción.
2>/dev/null
Es necesario para omitir dicho usuario y no muestra mensajes de error.
Puede encontrar más información aquí:
https://docs.aws.amazon.com/cli/latest/reference/iam/get-login-profile.html
Paso 3
Para cada usuario de esta lista debemos verificar todas las teclas de acceso.
Comando CLI de AWS:
aws iam list-access-keys --nombre-usuario "$user" --consulta 'AccessKeyMetadata[].AccessKeyId' --texto de salida
Puede encontrar más información aquí:
https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/list-access-keys.html
Paso 4
Para cada clave de acceso, debemos comprobar la fecha de último uso. En caso de que al menos una clave de acceso se haya utilizado hace menos de 45 días, se debe omitir dicho usuario, ya que de lo contrario podría marcarse como usuario de destino.
Comando CLI de AWS:
aws iam obtener-clave-de-acceso-última-utilización --id-clave-de-acceso "$access_key" --consulta 'AccessKeyLastUsed.LastUsedDate >= `2022-02-09`' --texto de salida
Puede encontrar más información aquí:
https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/get-access-key-last-used.html
Optimización gratuita de los costos de la nube. De por vida
Nota 1
En los comandos usamos fechas 2021-12-26 los 2022-02-09 que son fechas relativas iguales (ahora – 90 días) y (ahora – 45 días). Debes usar tu propia fecha relativa.
Nota 2
AWS CLI tiene un mecanismo de paginación para grandes cantidades de datos en la salida. Si tiene muchos usuarios en una cuenta, el script proporcionado procesará solo la primera página. Considere usar algo más potente que AWS CLI.
Como resultado, una línea de comando:
para el usuario en $(aws iam list-users --query 'Usuarios[?(FechaDeCreación <= `2021-12-26` && (ÚltimaContraseñaUsada <= `2021-12-26`) || !not_null(ÚltimaContraseñaUsada))].NombreDeUsuario' --texto de salida); hacer para clave_de_acceso en $(aws iam list-access-keys --nombre_usuario "$user" --query 'Metadata_de_Clave_de_Acceso[].Id_de_Clave_de_Acceso' --texto de salida); hacer si [[ "$(aws iam get-access-key-last-used --access-key-id "$access_key" --query 'AccessKeyLastUsed.LastUsedDate >= `2022-02-09`' --output text)" == True ]]; entonces continuar 2; hecho; hecho; echo "$user"; hecho
Como resultado, este comando proporcionará una lista de nombres de usuario.
👆🏻 El acceso no autorizado a los entornos de TI internos no cumple con los estándares de seguridad de la empresa. La terminación del acceso a los usuarios inactivos tiene como objetivo reducir el riesgo de acceso no controlado a sus recursos.
💡 Descubra 3 sencillos pasos para encontrar todos los usuarios inactivos en su cuenta de AWS para mejorar la gestión de acceso y la seguridad → https://hystax.com/3-easy-steps-to-find-all-inactive-users-in-your-aws-account-for-access-management-and-security-improvements