
Un piccolo script lambda che disabilita le chiavi di accesso più vecchie di un determinato numero di giorni.

Il Disabilitatore di Chiavi AWS è una funzione Lambda che disabilita le chiavi di accesso degli utenti IAM AWS dopo un periodo di tempo prestabilito per ridurre il rischio associato alle chiavi di accesso obsolete.



report_to nel file di configurazione della build /grunt/package.json.Questo script richiede i seguenti componenti per funzionare.
Si presuppone inoltre di disporre di un account AWS con SES abilitato, ovvero dominio verificato e modalità sandbox rimossa.
Queste istruzioni sono per OSX. I risultati possono variare su Windows e altri sistemi *nix.
/gruntnpm install/grunt/package.json
aws_account_number con il tuo ID account AWS trovato su https://portal.aws.amazon.com/gp/aws/manageYourAccountfirst_warning e last_warning all'età in giorni della chiave per attivare un avviso. Questi limiti attivano l'invio di un'email a report_toexpiry all'età in giorni alla quale la chiave scade. A questa età la chiave viene disabilitata e viene inviata un'email a report_to che notifica la modificaserviceaccount al nome utente dell'account che si desidera ignorare nello scriptexclusiongroup al nome di un gruppo assegnato agli utenti che si desidera ignorare nello script.send_completion_report su True per abilitare la consegna delle email tramite SESreport_to all'indirizzo email a cui desideri ricevere i report di eliminazionereport_from all'indirizzo email che desideri utilizzare come mittente per i report di eliminazione. Nota che il dominio deve essere verificato in AWS SES.deployment_region su una regione che supporta Lambda.
10 Imposta email_region sulla regione che supporta SES. Assicurati inoltre che la regione abbia la modalità sandbox SES disabilitata.
aws iam get-user per verificare la connessione/grunt esegui grunt bumpup && grunt deployLambda per incrementare il numero di versione ed eseguire una build/distribuzione della funzione Lambda nella regione selezionataEsegui la funzione lambda per nome, AccessKeyRotation, registrando l'output della scansione in un file chiamato scan.report.log:
aws lambda invoke --function-name AccessKeyRotation scan.report.log --region us-east-1
{
"StatusCode": 200
}
Usa jq per visualizzare il contenuto del file scan.report.log nella console:
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>.messagekey_disabler.mask_accesskey_length. Le chiavi di accesso sono lunghe 20 caratteri.Questo script è fornito così com'è. Siamo felici di rispondere alle domande se il tempo lo consente, ma non possiamo garantire nulla.