Image

Image
von Raphael Eymann
Cloud Engineer

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:

  1. Melde dich bei der AWS Management Console an und öffne IAM.
  2. Wähle dich im Navigationsbereich Root-Zugangsverwaltung.
  3. Wähle einen Namen aus der Liste der Mitgliedskonten und klicke auf «Privilegierte Aktion durchführen».
  4. 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)
Durch die Befolgung dieser Schritte kannst du die Entfernung von Root-Anmeldedaten über mehrere AWS-Organisationsmitgliedskonten effizient verwalten.

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"
      }
   }
}
  
  
Image

Ein Beispiel für den Einsatz von GitOps zur Bereitstellung einer modernen Anwendungs­entwicklungs­plattform

In diesem Artikel erfährst du, wie GitOps mit OpenShift GitOps (ArgoCD) das Infrastrukturmanagement automatisiert, Entwickler stärkt und die Anwendungsbereitstellung beschleunigt.
zum Artikel
HYCU Teaser

Vereinfache deinen Datacenter Fussabdruck im hybriden Cloudzeitalter

Wir alle befinden uns in einer Welt, die sich rasch auf exponentielle technologische Fortschritte zubewegt. Für Unternehmen ist es von entscheidender Bedeutung, ihre IT-Plattformen nicht nur anzupassen, sondern sie auch zukunftssicher zu machen.
zum Artikel
HYCU Teaser

HYCU Data Protection bietet resilientes Backup-Management im hybriden Cloudzeitalter

Ist dir in den letzten Monaten auch schon mal der Gedanke gekommen, dass die technologische Entwicklung in atemberaubendem Tempo voranschreitet!?! Im Blog merkst du schnell, damit bist du nicht alleine.
zum Artikel
HYCU Story Teaser

Digitale Transformation mit HYCU und Nutanix

Die digitale Transformation ist längst keine Option mehr, sondern eine Notwendigkeit. Wer sich nicht anpasst, bleibt zurück. Doch was, wenn du nicht nur Schritt halten, sondern aktiv Einfluss nehmen willst? Das erfährst du in diesem Blogbeitrag.
zum Artikel