Schritt 1: Aufnehmen, wer heute was darf
Vor jeder Umstellung steht eine ehrliche Bestandsaufnahme. Die beiden wichtigsten Berichte holst du in wenigen Befehlen, und sie zeigen fast immer mehr, als das Team erwartet hat.
aws iam generate-credential-report
aws iam get-credential-report --query Content --output text \
| base64 -d > kontenbericht.csv
# Wer hat langlebige Schluessel und wann wurden sie zuletzt benutzt?
for u in $(aws iam list-users --query 'Users[].UserName' --output text); do
aws iam list-access-keys --user-name "$u" \
--query 'AccessKeyMetadata[].[UserName,AccessKeyId,Status,CreateDate]' \
--output text
done
aws iam get-account-summaryDer Bericht enthält je Benutzer, wann Passwort und Schlüssel zuletzt genutzt wurden und ob eine mehrstufige Anmeldung aktiv ist. Alles, was seit mehr als neunzig Tagen unbenutzt ist, ist zunächst ein Kandidat für die Deaktivierung, nicht sofort für die Löschung. Deaktivieren ist umkehrbar, löschen nicht.
ROLLE=$(aws iam get-role --role-name build-runner --query 'Role.Arn' --output text)
JOB=$(aws iam generate-service-last-accessed-details --arn "$ROLLE" \
--query JobId --output text)
aws iam get-service-last-accessed-details --job-id "$JOB" \
--query 'ServicesLastAccessed[?TotalAuthenticatedEntities>`0`].[ServiceName,LastAuthenticated]' \
--output tableDie Dienstzugriffshistorie reicht bis zu ein Jahr zurück. Dienste, die dort nie auftauchen, kannst du der Rolle mit vertretbarem Risiko entziehen. Achte auf saisonale Läufe wie Jahresabschlüsse, bevor du eine Berechtigung entfernst, die nur einmal jährlich gebraucht wird und trotzdem geschäftskritisch ist.