
Un pequeño script lambda que deshabilitará las claves de acceso con más de una cantidad determinada de días.

El desactivador de claves de AWS es una función Lambda que desactiva las claves de acceso de usuarios IAM de AWS después de un tiempo determinado para reducir el riesgo asociado a claves de acceso antiguas.



report_to en el archivo de configuración de compilación /grunt/package.json.Este script requiere los siguientes componentes para ejecutarse.
También asume que tiene una cuenta de AWS con SES habilitado, es decir, dominio verificado y modo sandbox eliminado.
Estas instrucciones son para OSX. Puede variar en Windows y otros *nix.
/grunt.npm install./grunt/package.json:
aws_account_number con el ID de su cuenta de AWS que se encuentra en https://portal.aws.amazon.com/gp/aws/manageYourAccount.first_warning y last_warning con la antigüedad en días que debe tener la clave para activar una advertencia. Estos límites activan el envío de un correo electrónico a report_to.expiry con la antigüedad en días en que la clave expira. A esta antigüedad, la clave se desactiva y se envía un correo electrónico a report_to notificando el cambio.serviceaccount con el nombre de usuario de la cuenta que desea que el script ignore.exclusiongroup con el nombre de un grupo asignado a usuarios que desea que el script ignore.send_completion_report en True para habilitar la entrega de correo electrónico a través de SES.report_to con la dirección de correo electrónico a la que desea recibir los informes de eliminación.report_from con la dirección de correo electrónico que desea utilizar como dirección del remitente para los informes de eliminación. Tenga en cuenta que el dominio de esta dirección debe estar verificado en AWS SES.deployment_region en una región que admita Lambda.email_region en la región que admita SES. También asegúrese de que la región tenga el modo sandbox de SES deshabilitado.
aws iam get-user para verificar la conexión./grunt, ejecute grunt bumpup && grunt deployLambda para aumentar el número de versión y realizar una compilación/implementación de la función Lambda en la región seleccionada.Ejecute la función Lambda por nombre, AccessKeyRotation, guardando la salida del escaneo en un archivo llamado scan.report.log:
aws lambda invoke --function-name AccessKeyRotation scan.report.log --region us-east-1
{
"StatusCode": 200
}
Use jq para mostrar el contenido de scan.report.log en la consola:
jq '.' scan.report.log
{
"reportdate": "2016-06-26 10:37:24.071091",
"users": [
{
"username": "TestS3User",
"userid": "1",
"keys": [
{
"age": 72,
"changed": false,
"state": "key is already in an INACTIVE state",
"accesskeyid": "**************Q3GA1"
},
{
"age": 12,
"changed": false,
"state": "key is still young",
"accesskeyid": "**************F3AA2"
}
]
},
{
"username": "BlahUser22",
"userid": "2",
"keys": []
},
{
"username": "LambdaFake1",
"userid": "3",
"keys": [
{
"age": 23,
"changed": false,
"state": "key is due to expire in 1 week (7 days)",
"accesskeyid": "**************DFG12"
},
{
"age": 296,
"changed": false,
"state": "key is already in an INACTIVE state",
"accesskeyid": "**************4ZASD"
}
]
},
{
"username": "apiuser49",
"userid": "4",
"keys": [
{
"age": 30,
"changed": true,
"state": "key is now EXPIRED! Changing key to INACTIVE state",
"accesskeyid": "**************ER2E2"
},
{
"age": 107,
"changed": false,
"state": "key is already in an INACTIVE state",
"accesskeyid": "**************AWQ4K"
}
]
},
{
"username": "UserEMRKinesis",
"userid": "5",
"keys": [
{
"age": 30,
"changed": false,
"state": "key is now EXPIRED! Changing key to INACTIVE state",
"accesskeyid": "**************MGB41A"
}
]
},
{
"username": "CDN-Drupal",
"userid": "6",
"keys": [
{
"age": 10,
"changed": false,
"state": "key is still young",
"accesskeyid": "**************ZDSQ5A"
},
{
"age": 5,
"changed": false,
"state": "key is still young",
"accesskeyid": "**************E3ODA"
}
]
},
{
"username": "ChocDonutUser1",
"userid": "7",
"keys": [
{
"age": 59,
"changed": false,
"state": "key is already in an INACTIVE state",
"accesskeyid": "**************CSA123"
}
]
},
{
"username": "ChocDonut2",
"userid": "8",
"keys": [
{
"age": 60,
"changed": false,
"state": "key is already in an INACTIVE state",
"accesskeyid": "**************FDGD2"
}
]
},
{
"username": "[email protected]",
"userid": "9",
"keys": [
{
"age": 45,
"changed": false,
"state": "key is already in an INACTIVE state",
"accesskeyid": "**************BLQ5GJ"
},
{
"age": 71,
"changed": false,
"state": "key is already in an INACTIVE state",
"accesskeyid": "**************GJFF53"
}
]
}
]
}
key_disabler.keystates.<state>.message.key_disabler.mask_accesskey_length. Las claves de acceso tienen 20 caracteres de longitud.