Wie kann ich Probleme beim Zugriff auf ein verschlüsseltes Geheimnis in AWS Secrets Manager lösen?

Lesedauer: 4 Minute
0

Ich möchte ein AWS-Secrets-Manager-Geheimnis abrufen oder darauf zugreifen, erhalte aber eine Fehlermeldung.

Lösung

Wenn Sie ein Secrets Manager-Geheimnis nicht abrufen oder darauf zugreifen können, wird möglicherweise einer der folgenden Fehler angezeigt:

  • „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.“

Gehen Sie wie folgt vor, um einen dieser Fehler zu beheben.

Hinweis: Wenn Sie beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehler erhalten, stellen Sie sicher, dass Sie die neueste AWS-CLI-Version verwenden.

Stellen Sie sicher, dass das Geheimnis nicht mit einem von AWS KMS verwalteten Schlüssel verschlüsselt ist, wenn Sie auf ein Geheimnis in einem anderen Konto zugreifen.

Von AWS verwaltete Schlüsselrichtlinien können nicht bearbeitet werden, da sie schreibgeschützt sind. Sie können jedoch Richtlinien für verwaltete Schlüssel und vom Kunden verwaltete Schlüssel von AWS Key Management Service (AWS KMS) einsehen. Da von AWS KMS verwaltete Schlüsselrichtlinien nicht bearbeitet werden können, können für diese wichtigen Richtlinien keine kontoübergreifenden Berechtigungen erteilt werden. Secrets Manager-Geheimnisse, die mit einem von AWS KMS verwalteten Schlüssel verschlüsselt wurden, können von anderen AWS-Konten nicht abgerufen werden.

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

Die Identitätsrichtlinie sollte dem Prinzipal den Zugriff auf den AWS-KMS-Schlüssel ermöglichen, ähnlich der folgenden:

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

Die ressourcenbasierte Richtlinie sollte dem Prinzipal den Zugriff auf den AWS-KMS-Schlüssel ermöglichen, ähnlich der folgenden:

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

Stellen Sie nach der Aktualisierung des AWS-KMS-Schlüssels sicher, dass das Geheimnis mit dem neuen AWS-KMS-Schlüssel verschlüsselt ist.

Durch das Aktualisieren des mit einem Secrets Manager-Schlüssel verknüpften AWS-KMS-Schlüssels mithilfe der AWS-CLI werden aktuelle oder frühere Versionen des Secrets nicht erneut mit dem neuen KMS-Schlüssel verschlüsselt. Das bedeutet, dass externe Konten, auch kontoübergreifende Konten genannt, nicht auf das Geheimnis zugreifen können, da das Geheimnis nicht erneut mit dem neuen AWS-KMS-Schlüssel verschlüsselt wurde. Sie müssen das Geheimnis mit dem neuen AWS-KMS-Schlüssel erneut verschlüsseln, um den geheimen Wert aus dem kontoübergreifendem Konto abzurufen.

Hinweis: Wenn Sie die Secrets Manager-Konsole verwenden, um den mit einem Geheimnis verknüpften AWS-KMS-Schlüssel zu ändern, wird standardmäßig eine neue Version des Geheimnisses erstellt und mit dem neuen AWS-KMS-Schlüssel verschlüsselt. Weitere Informationen finden Sie unter Geheime Verschlüsselung und Entschlüsselung in AWS Secrets Manager.

Verschlüsseln Sie das Geheimnis erneut mit dem neuen AWS-KMS-Schlüssel.

Folgen Sie diesen Schritten, um das Geheimnis mithilfe der AWS-Managementkonsole oder der AWS CLI erneut mit dem neuen AWS-KMS-Schlüssel zu verschlüsseln.

AWS-Managementkonsole

1.    Öffnen Sie die Secrets Manager-Konsole.

2.    Wählen Sie unter Secret name Ihr Geheimnis aus.

3.    Wählen Sie Actions und dann die Dropdownliste aus, wählen Sie den AWS-KMS-Schlüssel aus, aktivieren Sie das Kontrollkästchen Create new version of secret with new encryption key und wählen Sie dann Save aus.

AWS CLI

Folgen Sie diesen Schritten von dem Quellkonto aus, in dem sich das Geheimnis befindet.

1.    Führen Sie den AWS-CLI-Befehl get-secret-value ähnlich dem folgenden aus:

$ 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 AWS-CLI-Befehl update-secret aus, um den Verschlüsselungsschlüssel ähnlich dem folgenden erneut zu verschlüsseln:

.    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.

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

4.    Führen Sie den AWS-CLI-Befehl get-secret-value vom kontoübergreifenden Konto aus, ähnlich dem folgenden:

$ aws secretsmanager get-secret-value --secret-id arn:aws:secretsmanager:us-east-1:123456789012:secret:cross-account --version-stage AWSCURRENT --profile

    {"CrossAccount":"DefaultEncryption"}

Verwandte Informationen

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

Wie teile ich Geheimnisse von AWS Secrets Manager zwischen AWS-Konten?

Berechtigungen für Geheimnisse in AWS Secrets Manager für Benutzer in einem anderen Konto

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren