

MFA-Anforderung für AWS-Root-Benutzer
Ab Ende März 2025 wird AWS Multi-Faktor-Authentifizierung (MFA) für alle AWS Organizations-Mitgliedskonten Root-Benutzer erzwingen. Benutzer haben die Möglichkeit, die MFA-Registrierung bis zu 35 Tage herauszuzögern, indem du die Aufforderung überspringst. Nach dieser Kulanzfrist ist die Registrierung für eine der folgenden MFA-Typen zwingend notwendig:
- Passkeys und Sicherheitsschlüssel
- Virtuelle Authentifikator-Anwendungen
- Hardware-TOTP-Token
Weitere Einzelheiten findest du in der AWS-Dokumentation.
Herausforderungen bei mehreren AWS-Mitgliedskonten
Die Verwaltung der MFA-Registrierung für zahlreiche AWS Organizations-Mitgliedskonten kann eine anspruchsvolle Aufgabe sein, besonders wenn du fünfzig oder mehr Konten hast. Sobald du diese Aufgabe gemeistert hast, ist es entscheidend sicherzustellen, dass die richtigen Personen Zugang zu den Konten hast. Es gibt Fälle, in denen du dich als Root-Benutzer einloggen musst, beispielsweise beim Löschen einer S3-Bucket-Richtlinie.
Glücklicherweise bietet AWS eine Lösung mit der Durchsetzung der MFA-Registrierung.
Zentralisierten Root-Zugang aktivieren
Um zentralisierten Root-Zugang zu aktivieren, stelle sicher, dass du die folgenden Voraussetzungen erfüllen:
- Verwalte deine AWS-Konten innerhalb von AWS Organizations.
- Verfüge über die folgenden Berechtigungen:
- iam:EnableOrganizationsRootCredentialsManagement
- iam:EnableOrganizationsRootSessions
- organizations:RegisterDelegatedAdministrator
- organizations:EnableAwsServiceAccess
Du findest Dokumentationen zur Aktivierung dieser Funktionen innerhalb der AWS-Konsole oder AWS CLI.
Wir haben dies erfolgreich mit dem folgenden Terraform-Code implementiert:
resource "aws_organizations_organization" "this" { aws_service_access_principals = [ "iam.amazonaws.com" ] } resource { enabled_features = [ "RootCredentialsManagement", "RootSessions" ] }
Root-Anmeldedaten im grossen Massstab entfernen
Nach der Aktivierung des zentralisierten Root-Zugangs werden für die einzelnen AWS-Organisationsmitgliedskonten keine Änderungen vorgenommen. Der nächste Schritt besteht darin, die Root-Anmeldedaten für jedes AWS-Organisationsmitgliedskonto zu entfernen. Wenn du nur wenige Konten haben, kannst du diese Aufgabe über die AWS-Konsole durchführen:
- Melde dich bei der AWS Management Console an und öffne IAM.
- Wähle dich im Navigationsbereich Root-Zugangsverwaltung.
- Wähle einen Namen aus der Liste der Mitgliedskonten und klicke auf «Privilegierte Aktion durchführen».
- Wähle die privilegierte Aktion aus, die du im Mitgliedskonto durchführen möchtest:
Wähle «Root-Anmeldedaten löschen», um den Root-Zugang von einem Mitgliedskonto zu entfernen. Diese Aktion löscht das Root-Benutzerkennwort, Zugriffsschlüssel, Signaturzertifikate und deaktiviert MFA für das Mitgliedskonto.
Klicke auf «Root-Anmeldedaten löschen».
Weitere Informationen finden du in der AWS-Dokumentation zur Durchführung privilegierter Aufgaben auf AWS Organizations-Mitgliedskonten.
Da du nicht mehrere Konten gleichzeitig für privilegierte Aktionen auswählen kannst, kann das manuelle Entfernen der Root-Anmeldedaten über zahlreiche Konten zeitaufwendig sein und Stunden dauern. Um diesen Prozess zu vereinfachen, hat AWS ein Beispiel-Bash-Skript veröffentlicht. Dieses Skript wurde von uns angepasst, um auch Zugriffsschlüssel, MFA-Geräte und Signaturzertifikate zu löschen.
Wichtig: Verwende dieses Bash-Skript mit Vorsicht.
Stelle vor dem Ausführen des Skripts sicher, dass folgende Voraussetzungen erfüllt sind:
- Installiere die AWS CLI.
- Richte das Anmeldeprofil „root-access-management“ mit Berechtigungen ein, um alle erforderlichen Aktionen auszuführen.
#!/bin/bash # Specify the account IDs to exclude (comma-separated) EXCLUDED_ACCOUNTS="123456789" # Specify the AWS profile to use AWS_PROFILE="root-access-management" # Set the role name and additional parameters REGION="us-east-1" TASK_POLICY_ARN="arn=arn:aws:iam::aws:policy/root-task/IAMDeleteRootUserCredentials" # Function to handle errors handle_error() { echo "Error on line $2: Command exited with status $1" >&2 exit "$1" } # Get the list of accounts in the organization ACCOUNTS=$(aws organizations list-accounts --profile $AWS_PROFILE --query 'Accounts[*].[Id]' --output text 2>&1) || handle_error $? $LINENO # Open a CSV file for writing : > root_user_deletion.csv # Create an empty file echo "AccountId,RootUserDeleted" >> root_user_deletion.csv # Iterate over each account for account_id in $ACCOUNTS; do # Check if the account is excluded if echo ",$EXCLUDED_ACCOUNTS," | grep -q ",$account_id,"; then echo "Skipping account $account_id as it is excluded." continue fi # Check if the account is suspended account_status=$(aws organizations describe-account --account-id "$account_id" --query 'Account.Status' --output text --profile $AWS_PROFILE) if [ "$account_status" = "SUSPENDED" ]; then echo "Skipping account $account_id as it is suspended." continue fi TARGET_PRINCIPAL="${account_id}" # Assume the role assume_role=$(aws sts assume-root \ --profile "$AWS_PROFILE" \ --region $REGION \ --task-policy-arn "$TASK_POLICY_ARN" \ --target-principal "$TARGET_PRINCIPAL" \ --output json)
Einschränkung des Root-Sitzungszugangs
Gewähre den Zugang zur Verwendung der neuen Root-Sitzungen mit AssumeRoot nur Administratoren und Automatisierungen, die dies benötigen. Gewähre innerhalb des Verwaltungskontos deiner Organisation und des delegierten Administratorkontos für Root-Management die Berechtigungen sts:AssumeRoot nur den Personen und Automatisierungen, die du benötigst.
Du kannst die Aktionen, die ein Administrator oder eine Automatisierungsprinzip durchführen kann, weiter einschränken, indem du den AWS Security Token Service (AWS STS) Bedingungsschlüssel sts:TaskPolicyArn verwendest, wie im folgenden Richtlinienausschnitt gezeigt:
{ "Sid": "AllowLaunchingRootSessionsforS3Action", "Effect": "Allow", "Action": "sts:AssumeRoot", "Resource": "*", "Condition": { "StringEquals": { "sts:TaskPolicyARN":"arn:aws:iam::aws:policy/root-task/S3UnlockBucketPolicy" } } }