Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
Warum können meine IAM-Benutzer oder -Rollen mit vollen Amazon-EC2-Berechtigungen nicht eine EC2-Instance starten?
Meine AWS Identity and Access Management (IAM)-Entität verfügt über Berechtigungen für eine Amazon Elastic Compute Cloud (Amazon EC2)-Instance. Ich habe versucht, die Instance zu starten, aber ihr Status ist von „Ausstehend“ zu „Angehalten“ gewechselt.
Lösung
Ermitteln der Ursache für den angehaltenen Status der EC2-Instance
Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.
Wenn du ein Amazon Elastic Block Store (Amazon EBS)-Volume an die EC2-Instance angefügt hast, überprüfe die Volume-Verschlüsselung. Wenn du das EBS-Volume mit einem AWS Key Management Service (AWS KMS)-Schlüssel verschlüsselt hast, liegt möglicherweise ein Berechtigungsproblem vor. Der IAM-Prinzipal, der die API-Aktion StartInstances aufruft, muss über kms:CreateGrant-Berechtigungen verfügen, um eine Zuweisung für Amazon EC2 zu erstellen. Die Zuweisung ermöglicht es Amazon EC2, den Datenschlüssel des Volumes mithilfe des AWS-KMS-Schlüssels zu entschlüsseln.
EBS-Volumes senden einen GenerateDataKeyWithoutPlaintext-API-Aufruf an AWS KMS, der einen neuen Datenschlüssel erstellt und ihn im AWS-KMS-Schlüssel verschlüsselt. AWS KMS sendet den verschlüsselten Datenschlüssel an das EBS-Volume. Dann fügt das Volume den Datenschlüssel an die Instance an. Der Datenschlüssel befindet sich im selben AWS-Konto wie die Instance und der AWS-KMS-Schlüssel.
Führe den AWS-CLI-Befehl describe-instances aus, um zu ermitteln, warum sich die Instance im Status Angehalten befindet:
aws ec2 describe-instances --instance-id your-instance-id --query "Reservations[*].Instances[*].StateReason"
Hinweis: Ersetze your-instance-id durch deine Instance-ID.
Beispielausgabe:
[ [ { "Message": "Client.InternalError: Client error on launch", "Code": "Client.InternalError" } ] ]
Der vorhergehende Fehler könnte bedeuten, dass du das Root-Volume oder weitere angefügte Volumes verschlüsselt hast. Du bist nicht berechtigt, zur Entschlüsselung auf den AWS-KMS-Schlüssel zuzugreifen.
Du kannst AWS-CloudTrail-Ereignisse auch nach dem Ereignisnamen CreateGrant filtern.
Beispielausgabe:
"errorMessage": "User: arn:aws:iam::123456789012:user/test is not authorized to perform: kms:CreateGrant on resource: arn:aws:kms:eu-west-1:123456789012:key/8e3426b8-87b4-434c-ae74-8e63dadf354a"
Der vorhergehende Fehler bedeutet, dass der IAM-Prinzipal nicht über die CreateGrant-Berechtigung für Amazon EC2 zum Entschlüsseln des Datenschlüssels verfügt. Die Instance kann also nicht gestartet werden.
Hinweis: Wenn du einen von AWS verwalteten Schlüssel verwendest, tritt dieser Fehler nur auf, wenn in den IAM-Richtlinien oder der Service-Kontrollrichtlinie (SCP) des Prinzipals eine ausdrückliche Verweigerung vorliegt. Für die Verwendung von AWS-verwalteten Schlüsseln sind keine zusätzlichen IAM-Berechtigungen erforderlich.
Den AWS-KMS-Schlüsseltyp finden
Führe die folgenden Schritte aus:
- Öffne die Amazon-EC2-Konsole.
- Wähle im Navigationsbereich Instances.
- Wähle die Instance-ID und dann Speicher aus.
- Wähle für Volume-ID die Volume-ID für das verschlüsselte Volume aus.
- Kopiere für KMS-Schlüssel-ID die AWS-KMS-Schlüssel-ID.
- Öffne die AWS-KMS-Konsole in derselben AWS-Region.
- Wähle im Navigationsbereich Kundenverwaltete Schlüssel. Suche dann nach der AWS-KMS-Schlüssel-ID aus Schritt 4.
- Wähle die AWS-KMS-Schlüssel-ID aus.
- Notiere dir in Allgemeine Konfiguration unter Beschreibung den AWS-KMS-Schlüsseltyp.
Eine IAM-Richtlinie anfügen
Füge dem IAM-Prinzipal eine IAM-Richtlinie an, die dem folgenden Beispiel ähnelt:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:CreateGrant" ], "Resource": [ "arn:aws:kms:region:123456789012:key/ExampleKey" ], "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } } ] }
Der Bedingungsschlüssel kms:GrantIsForAWSResource stellt sicher, dass der IAM-Prinzipal nur Zuweisungen für den AWS-KMS-Schlüssel mit AWS-Ressourcen erstellt. Diese Richtlinie erlaubt es dem IAM-Prinzipal nicht, Zuweisungen für einen anderen IAM-Prinzipal zu erstellen. Verwende den Bedingungsschlüssel kms:ViaService, um den Zugriff auf Amazon EC2 einzuschränken.
Du musst die IAM-Berechtigungen, die du dem IAM-Prinzipal hinzufügst, über die Schlüsselrichtlinie für dein Konto aktivieren, wie im folgenden Beispiel gezeigt:
{ "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::123456789012:root"}, "Action": "kms:*", "Resource": "*" }
Du kannst der Schlüsselrichtlinie auch den IAM-Prinzipal hinzufügen, um die CreateGrant-API-Aktion zuzulassen.
Wenn sich der AWS-KMS-Schlüssel und der IAM-Prinzipal im selben Konto befinden, kannst du den Prinzipal explizit in die Schlüsselrichtlinie aufnehmen. Du benötigst keine IAM-Berechtigungen, um auf den AWS-KMS-Schlüssel zuzugreifen.
Um explizite Berechtigungen über die Schlüsselrichtlinie zu gewähren, füge der Schlüsselrichtlinie die folgende Anweisung hinzu:
{ "Principal": { "AWS": "arn:aws:iam::123456789012:role/Role_Name" }, "Effect": "Allow", "Action": [ "kms:CreateGrant" ], "Resource": [ "*" ], "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } }
Es hat sich bewährt, die geringste Berechtigung für die Berechtigungen zu gewähren, die für die Ausführung einer Aufgabe erforderlich sind.
Wenn du Amazon-EC2-Auto-Scaling-Gruppen verwendest, um Instances zu erstellen, findest du weitere Informationen unter Erforderliche AWS-KMS-Schlüsselrichtlinie für die Verwendung mit verschlüsselten Volumes.
Ähnliche Informationen
- Sprache
- Deutsch

Relevanter Inhalt
AWS OFFICIALAktualisiert vor 7 Monaten