
Ein kleines Lambda-Skript, das Zugriffsschlüssel deaktiviert, die älter als eine bestimmte Anzahl von Tagen sind.

Der AWS-Key-Deaktivierer ist eine Lambda-Funktion, die AWS-IAM-Benutzerzugriffsschlüssel nach einer festgelegten Zeit deaktiviert, um das Risiko alter Zugriffsschlüssel zu verringern.



report_to in der Build-Konfigurationsdatei /grunt/package.json.Dieses Skript erfordert die folgenden Komponenten zum Ausführen.
Es wird außerdem vorausgesetzt, dass Sie ein AWS-Konto mit aktiviertem SES haben, d. h. Domain verifiziert und Sandbox-Modus entfernt.
Diese Anleitung ist für OSX. Unter Windows und anderen *nix-Systemen können die Ergebnisse abweichen.
/grunt.npm install/grunt/package.json aus.
aws_account_number auf Ihre AWS-Konto-ID, die Sie unter https://portal.aws.amazon.com/gp/aws/manageYourAccount finden.first_warning und last_warning auf das Alter in Tagen, das der Schlüssel haben muss, um eine Warnung auszulösen. Diese Grenzwerte lösen das Senden einer E-Mail an report_to aus.expiry auf das Alter in Tagen, bei dem der Schlüssel abläuft. Bei diesem Alter wird der Schlüssel deaktiviert und eine E-Mail an report_to gesendet, die über diese Änderung informiert.serviceaccount auf den Kontobenutzernamen, den das Skript ignorieren soll.exclusiongroup auf den Namen einer Gruppe, die Benutzern zugewiesen ist, die das Skript ignorieren soll.send_completion_report auf True, um die E-Mail-Zustellung über SES zu aktivieren.report_to auf die E-Mail-Adresse, an die Sie Löschberichte erhalten möchten.report_from auf die E-Mail-Adresse, die Sie als Absenderadresse für Löschberichte verwenden möchten. Beachten Sie, dass die Domain dafür in AWS SES verifiziert sein muss.deployment_region auf eine Region, die Lambda unterstützt.email_region auf die Region, die SES unterstützt. Stellen Sie außerdem sicher, dass in der Region der SES-Sandbox-Modus deaktiviert ist.
aws iam get-user aus, um die erfolgreiche Verbindung zu überprüfen./grunt-Verzeichnis aus grunt bumpup && grunt deployLambda aus, um Ihre Versionsnummer zu erhöhen und einen Build/Deploy der Lambda-Funktion in die ausgewählte Region durchzuführen.Führen Sie die Lambda-Funktion mit dem Namen AccessKeyRotation aus und protokollieren Sie die Ausgabe des Scans in einer Datei namens scan.report.log:
aws lambda invoke --function-name AccessKeyRotation scan.report.log --region us-east-1
{
"StatusCode": 200
}
Verwenden Sie jq, um den Inhalt von scan.report.log in der Konsole anzuzeigen:
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 ändern.key_disabler.mask_accesskey_length ändern. Die Zugriffsschlüssel haben eine Länge von 20 Zeichen.