Durch die Nutzung von AWS re:Post stimmt du den AWS re:Post Nutzungsbedingungen

Wie behebe ich Fehler beim Zugriff auf AWS-KMS-Schlüssel, nachdem ich versucht habe, ein verschlüsseltes Secrets Manager-Secret abzurufen?

Lesedauer: 4 Minute
0

Ich habe versucht, ein verschlüsseltes AWS Secrets Manager-Secret abzurufen oder darauf zuzugreifen, aber ich habe einen Schlüsselzugriffsfehler für den AWS Key Management Service (AWS KMS) erhalten.

Lösung

Wenn Sie aufgrund von Problemen mit der AWS KMS-Schlüsselberechtigung kein Secrets Manager-Secret abrufen oder darauf zugreifen können, erhalten Sie möglicherweise eine der folgenden Fehlermeldungen:

  • „You can't access a secret from a different AWS account if you encrypt the secret with the default KMS service key.“
  • „Access to KMS is not allowed“
  • „InternalFailure“
  • „An unknown error occurred“
  • „Access to KMS is not allowed. This version of secret is not encrypted with the current KMS key.“

Um dieses Problem zu beheben, aktualisieren Sie die AWS KMS-Schlüsselrichtlinie mit den richtigen Berechtigungen zum Abrufen des verschlüsselten Secrets. Verschlüsseln Sie dann das Secret erneut mit dem aktualisierten AWS-KMS-Schlüssel.

**Hinweis:**Wenn bei der Ausführung von AWS Command Line Interface (AWS CLI)-Befehlen Fehler auftreten, finden Sie weitere Informationen unter Troubleshoot AWS CLI errors. Stellen Sie außerdem sicher, dass Sie die neueste Version von AWS CLI verwenden.

Von AWS KMS verwaltete Schlüssel

Um von einem anderen Konto aus auf das Secret zuzugreifen, stellen Sie sicher, dass das Secret nicht mit einem von AWS KMS verwalteten Schlüssel verschlüsselt ist. Sie können von einem anderen Konto aus nicht auf ein von AWS KMS verwaltetes Schlüssel-verschlüsseltes Secret zugreifen.

Da sie schreibgeschützt sind, können Sie von AWS verwaltete Schlüssel-Richtlinien nicht bearbeiten. Sie können also keine kontoübergreifenden Berechtigungen für von AWS verwaltete Schlüsselrichtlinien gewähren.

Kontoübergreifender Zugriff

Stellen Sie bei kontoübergreifenden Konten sicher, dass die identitätsbasierte Richtlinie und die ressourcenbasierte Richtlinie dem Prinzipal ausdrücklich den Zugriff auf den AWS-KMS-Schlüssel ermöglichen.

Beispiel für eine Identitätsrichtlinie, die dem Prinzipal den Zugriff auf den AWS-KMS-Schlüssel ermöglicht:

{  "Version": "2012-10-17",  "Statement": [
    {
      "Effect": "Allow",
      "Action": "kms:Decrypt",
      "Resource": "arn:aws:kms:Region:AccountID:key/EncryptionKey"
    }
  ]
}

Beispiel für eine ressourcenbasierte KMS-Richtlinie, die dem Prinzipal den Zugriff auf den AWS-KMS-Schlüssel ermöglicht:

{  "Effect": "Allow",  "Principal": {
    "AWS": [
      "arn:aws:iam::AccountID:user/UserName",
      "arn:aws:iam::AccountID:role/RoleName"
    ]
  },
  "Action": [
    "kms:Decrypt",
    "kms:DescribeKey"
  ],
  "Resource": "*"
}

Erneutes Verschlüsseln des Secrets mit dem aktualisierten AWS-KMS-Schlüssel

Verwenden Sie die Secrets Manager-Konsole oder die AWS CLI, um das Geheimnis mit dem aktualisierten AWS-KMS-Schlüssel erneut zu verschlüsseln.

Secrets Manager-Konsole

**Hinweis:**Wenn Sie die Secrets Manager-Konsole verwenden, erstellt Secrets Manager eine neue Version des Secrets und verschlüsselt es mit dem aktualisierten Schlüssel. Stellen Sie sicher, dass Anwendungen, die das Secret verwenden, berechtigt sind, das Secret mit dem aktualisierten Schlüssel zu entschlüsseln. Weitere Informationen finden Sie unter Secret-Verschlüsselung und Entschlüsselung im Secrets Manager.

  1. Öffnen Sie die Secrets Manager-Konsole.
  2. Wählen Sie unter Secret-Name Ihr Secret aus.
  3. Wählen Sie Aktionen und dann Schlüssel bearbeiten aus.
  4. Wählen Sie Create new version of secret with new encryption key (Neue Version des Secrets mit neuem Verschlüsselungsschlüssel erstellen) aus, und wählen Sie dann Speichern aus.

AWS CLI

Führen Sie die Schritte 1–3 vom Quellkonto aus, in dem sich das Secret befindet, und Schritt 4 vom anderen Konto aus:

  1. Führen Sie den Befehl get-secret-value aus, um den Secret-Wert abzurufen:

    aws secretsmanager get-secret-value --secret-id arn:aws:secretsmanager:us-east-1:123456789012:secret:cross-account --query SecretString --output text    {"CrossAccount":"DefaultEncryption"}
    
  2. Erstellen Sie eine Datei mit dem Namen creds.txt:

    cat creds.txt    {"CrossAccount":"DefaultEncryption"}
    
  3. Führen Sie den Befehl update-secret aus, um den Verschlüsselungsschlüssel erneut zu verschlüsseln:

    aws secretsmanager update-secret --secret-id arn:aws:secretsmanager:us-east-1:123456789012:secret:cross-account --secret-string file://creds.txt    {
        "ARN": "arn:aws:secretsmanager:us-east-1:123456789012:cross-account",
        "Name": "cross-account",
        "VersionId": "f68246e8-1cfb-4c3b-952b-17c9298d3462"
        }
    

    Hinweis: Wenn Sie einen vom Kunden verwalteten Schlüssel verwenden, müssen Sie auch die Berechtigungen kms:GenerateDataKey und kms:Decrypt für den Schlüssel haben.

  4. Führen Sie den Befehl get-secret-value von dem anderen Konto aus:

    aws secretsmanager get-secret-value --secret-id arn:aws:secretsmanager:us-east-1:123456789012:secret:cross-account --version-stage AWSCURRENT --profile    {"CrossAccount":"DefaultEncryption"}

Ähnliche Informationen

So verwenden Sie ressourcenbasierte Richtlinien in der AWS Secrets Manager-Konsole, um über AWS-Konten hinweg sicher auf Geheimnisse zuzugreifen

Wie teile ich Secrets vom AWS Secrets Manager zwischen AWS-Konten?

Von einem anderen Konto aus auf AWS Secrets Manager-Secrets zugreifen

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Monaten