Blog de Amazon Web Services (AWS)

Cómo rotar las claves de acceso para los usuarios de IAM

Por Ben Brauer, Product Manager for AWS Identity and Access Management
 

La rotación de forma regular, de claves de acceso (que constan de un ID de clave de acceso y una clave de acceso secreta) es una buena práctida de seguridad muy conocida, ya que reduce el período durante el que una clave de acceso está activa y, por lo tanto, reduce el impacto al negocio en caso de que se vea comprometida. Disponer de un proceso establecido que se ejecute con regularidad también garantiza que se verifiquen los pasos operativos relacionados con la rotación de claves, de modo que rotar una clave nunca sea un paso abrumador.

En una publicación anterior, describimos los roles de Administración de Identidad y Accesos (IAM, por sus siglas en inglés) para Amazon EC2. Si ejecuta aplicaciones en EC2 que necesitan acceso a los servicios de AWS, le recomendamos que utilice esta función. Los roles utilizan credenciales de seguridad temporales que caducan y se renuevan automáticamente, para que no tenga que preocuparse por rotar sus claves de acceso; AWS lo hace por usted. Sin embargo, si ejecuta aplicaciones en otro lugar que no sea EC2, usted debería añadir la rotación de claves de acceso al proceso de administración de aplicaciones. En este artículo, Cristian Ilac, software development manager, le explicará los pasos para rotar las claves de acceso de un usuario de IAM.


Para rotar las claves de acceso, debe seguir estos pasos:

  1. Cree una segunda clave de acceso además de la que está en uso.
  2. Actualice todas tus aplicaciones para usar la nueva clave de acceso y confirme que funcionan.
  3. Cambie el estado de la clave de acceso original a inactivo.
  4. Confirme que tus aplicaciones siguen funcionando como se esperaba.
  5. Elimine la clave de acceso inactiva.

Ejemplo de rotación de claves

A continuación, se muestra un ejemplo de los pasos de rotación de claves que se enumeraron anteriormente. Usted un usuario administrativo de IAM y utilizará la interfaz de línea de comandos (CLI) de AWS para rotar las claves de acceso a un solo usuario, Alice. La CLI usa la API de IAM, por lo que se pueden realizar los mismos pasos programáticamente, mediante el SDK de AWS, o mediante la interfaz web de la consola de administración de IAM, como mostramos en una publicación anterior. Dado que las claves se consideran información confidencial, debe ejecutar todos estos comandos solo en un equipo seguro.

Tras instalar la CLI, ejecute el siguiente comando para ver cuáles son las claves de acceso de Alice:

aws iam list-access-keys --user-name Alice

El comando devolverá algo como esto:

{
    "AccessKeyMetadata": [
        {
            "UserName": "Alice",
            "Status": "Active",
            "CreateDate": "2013-04-03T18:49:57Z",
            "AccessKeyId": "AKIAI44QH8DHBEXAMPLE"
        }
    ]
}

Paso 1: Crear una segunda clave de acceso

Cree una nueva (segunda) clave de acceso para Alice con este comando:

aws iam create-access-key --user-name Alice

Esto devuelve:

{
    "AccessKey": {
        "UserName": "Alice",
        "Status": "Active",
        "CreateDate": "2013-09-06T17:09:10.384Z",
        "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY",
        "AccessKeyId": “AKIAIOSFODNN7EXAMPLE"
    }
}

Note que los comandos de AWS IAM utilizan identificadores de clave de acceso únicos (AKID) para hacer referencia a las claves de acceso individuales. Puede usar AKIDs para identificar y administrar las claves de acceso que usa su aplicación. La creación de la clave es el único momento en que AWS expone el secreto asociado a la clave de acceso en texto plano.  Grábelo y almacénelo de forma segura.

 

Alice ahora tiene dos claves de acceso activas. Tenga en cuenta que AWS solo permite dos claves por usuario. Si ya tiene dos claves de acceso activas, no podrá crear una tercera.

Al enumerar las claves mediante el comando list-access-keys, se muestran ambas claves:

aws iam list-access-keys --user-name Alice
{

    "AccessKeyMetadata": [
        {
            "UserName": "Alice",
            "Status": "Active",
            "CreateDate": "2013-04-03T18:49:57Z",
            "AccessKeyId": "AKIAI44QH8DHBEXAMPLE"
        },
        {
            "UserName": "Alice",
            "Status": "Active",
            "CreateDate": "2013-09-06T17:09:10.384Z",
            "AccessKeyId": "AKIAIOSFODNN7EXAMPLE"
        }
    ]
}

Paso 2: Distribuya su clave de acceso a todas las instancias de sus aplicaciones

Tras crear la nueva clave, distribuirá y configurará la aplicación para comenzar a utilizarla, en lugar de la anterior. Antes de continuar con el siguiente paso, asegúrese de que todas las instancias de la aplicación estén utilizando realmente la nueva clave y que funcionen correctamente.

Paso 3: Cambie el estado de la clave de acceso anterior a inactivo.

Desactive la antigua clave de acceso mediante este comando:

aws iam update-access-key --access-key-id AKIAI44QH8DHBEXAMPLE --status Inactive --user-name Alice

Para comprobar que la clave está desactivada, utilice este comando para mostrar las claves activas e inactivas de Alice:

aws iam list-access-keys --user-name Alice

Verá algo como esto:

{
    "AccessKeyMetadata": [
        {
            "UserName": "Alice",
            "Status": "Inactive",
            "CreateDate": "2013-04-03T18:49:57Z",
            "AccessKeyId": "AKIAI44QH8DHBEXAMPLE"
        },
        {
            "UserName": "Alice",
            "Status": "Active",
            "CreateDate": "2013-09-06T17:09:10.384Z",
            "AccessKeyId": "AKIAIOSFODNN7EXAMPLE"
        }
    ]
}

Paso 4 Valide que su aplicación siga funcionando como se esperaba

Una vez que la clave anterior se marca como inactiva, no se puede utilizar para autenticar las llamadas a la API de servicios de AWS, por lo que debe comprobar en este momento si la aplicación sigue funcionando. Por eso desactivamos primero la antigua clave de acceso. Si algo sale mal, puede reactivar rápidamente la clave de acceso anterior mediante el comando aws iam update-access-key.

Paso 5: Eliminar la clave de acceso inactiva

El último paso consiste en eliminar la clave de acceso inactiva mediante este comando:

aws iam delete-access-key --access-key-id AKIAI44QH8DHBEXAMPLE --user-name Alice

Tenga en cuenta que la acción de eliminación, a diferencia de deshabilitar la clave de acceso, es una operación irreversible. Una vez eliminada, la clave de acceso ya no estará disponible. Puede volver a enumerar las claves de acceso de Alice para confirmar que eliminó la clave de acceso anterior:

aws iam list-access-keys --user-name Alice

La antigua clave de acceso desapareció de los resultados:

{
    "AccessKeyMetadata": [
        {
            "UserName": "Alice",
            "Status": "Active",
            "CreateDate": "2013-09-06T17:09:10.384Z",
            "AccessKeyId": "AKIAIOSFODNN7EXAMPLE"
        }
    ]
}

Conclusión:

Si utiliza instancias de EC2, le recomendamos que utilice roles para que EC2 rote automáticamente las claves de acceso. Si no utiliza EC2, le sugerimos que rote las claves de manualmente, de forma periódica, como práctica recomendada de seguridad. Para obtener más información sobre las claves de acceso y los procedimientos de rotación, consulte la documentación de AWS IAM.

– Ben

 

Este artículo fue traducido del Blog de AWS en Inglés.


Sobre o autor

Ben Brauer, autor do blog.

 

 

 

 

Revisores

Ricardo Makino es actualmente un arquitecto de soluciones en AWS que ayuda a los clientes gubernamentales en su viaje a la nube. Cuenta con más de 20 años de experiencia en TI en los sectores gubernamental, educativo e investigador, actuando como administrador de redes y sistemas, analista de seguridad de la información, investigador de seguridad de la información y especialista en la nube, y participó en varios proyectos de tecnología de orquestación de infraestructuras y plataformas, optimización de la seguridad de las aplicaciones, migraciones, de redes y aplicaciones, entre otros.

 

 

 

 

Carolina Carneiro trabaja como formadora técnica en AWS. Brinda capacitación en seguridad, aprendizaje automático, arquitectura, operación del sistema, entre otros. Comenzó su andadura en la nube de AWS en 2020 como parte del programa Tech U, un programa de formación en la nube de AWS. Después de Tech U, comenzó su andadura con el equipo de Capacitación y Certificación de LATAM, que tuvo la oportunidad de profundizar en temas como la seguridad y el aprendizaje automático. En la actualidad, su objetivo es enseñar AWS de una manera accesible y atractiva.

 

 

 

 

Javier Sánchez Navarro es Technical Account Manager (TAM) en AWS, acompañando las operaciones en la nube de los clientes y dando soporte a sus objetivos de seguridad, resiliencia, eficiencia operacional y negocios. En su trayectoria lleva más de 20 años como Administrador de Sistemas, Consultor de Tecnología y Project Manager.