IBM Cloud Docs
Fehlernachrichten

Fehlernachrichten

Diese Fehlernachrichten werden von Key Protect erstellt und in der Benutzeroberfläche angezeigt.

Die meisten Fehlernachrichten weisen ein oder mehrere Beispiele auf, in der Regel curl, die die Anforderung und die Antwort anzeigen.

Dies ist keine vollständige Liste aller Fehlernachrichten. Einige Nachrichten werden von anderen Systemen erstellt, wie z. B. Identity and Access Management (IAM), wobei die Fehlermeldung von einem anderen System, wie z. B. IAM, an Key Protect an den Benutzer weitergegeben wird.

Inhaltsverzeichnis

Das Inhaltsverzeichnis ist nach den Fehlernachrichten geordnet.

Bei Fehlernachrichten, die mehr als einmal vorkommen, wird der HTTP-Statuscode am Ende der Fehlernachricht angegeben.

  1. Summe der Erfassung entspricht nicht der Anzahl ... Details
  2. Daten im Hauptteil stimmen nicht mit Daten überein ... Details
  3. Extrahieren des Subjekts aus Träger ... Details
  4. Ungültige Hauptteildaten wurden übergeben ... Details
  5. Ungültiger Feldfehler ... Details
  6. Schlüssel konnte nicht gelöscht werden ... Details
  7. Schlüssel wurde bereits gelöscht ... Details
  8. Der Schlüssel besitzt keinen gültigen Status (409) Details
  9. Der Schlüssel besitzt keinen gültigen Status (422) Details
  10. Schlüssel schützt eine oder mehrere Cloud- ... Details
  11. Schlüsselmetadaten wurden beschädigt ... Details
  12. Die Schlüsselwiederherstellung ist abgelaufen ... Details
  13. KeyCreateImportAccess-Instanzrichtlinie ... Details
  14. Der Hauptteil fehlt in Anforderung ... Details
  15. Anzahl der erforderlichen Autorisierungen zum ... Details
  16. Es darf nur eine einzelne Instanzrichtlinie ... Details
  17. Nur importierte Schlüssel können wiederhergestellt werden Details
  18. Die angeforderte Aktion kann nur mit einem Rootschlüssel durchgeführt werden (400) Details
  19. Die angeforderte Aktion kann nur mit einem Rootschlüssel durchgeführt werden (422) Details
  20. Die angeforderte Änderung ist nicht mit einer Konfigurationsregel kompatibel ... Details
  21. Signatur ist ungültig ... Details
  22. Die Aktion konnte nicht durchgeführt werden für ... Details
  23. Die angegebene verschlüsselte Nonce stimmt nicht mit dem ... Details
  24. Das Importtoken ist abgelaufen ... Details
  25. Der Schlüssel kann nicht gelöscht werden, da er ... Details
  26. Der Schlüssel ist nicht für doppelte Authentifizierung aktiviert und ... Details
  27. Der Schlüssel wurde kürzlich aktualisiert ... Details
  28. Der angegebene verschlüsselte Text ist ungültig oder ... Details
  29. Die angegebene verschlüsselte Nonce wurde nicht ... Details
  30. Die angeforderten Ressourcen gehören nicht zum Service. Details
  31. Diese Aktion kann nur von einem Service durchgeführt werden ... Details
  32. Diese Aktion ist nicht zulässig auf dieser ... Details
  33. Für diese Anforderung muss die Version dieses Schlüssels ... Details
  34. Dieser Rootschlüssel wurde innerhalb von ... Details
  35. Dieser Rootschlüssel wurde mit vom Benutzer bereitgestellten ... Details
  36. Nicht berechtigt: Der Benutzer verfügt über keinen ... Details

1 - Die Summe der Erfassung stimmt nicht mit der Anzahl ...

Nachricht

Die Summe der Erfassung stimmt nicht mit der Anzahl der Ressourcen überein.

Ursachencode: COLLECTION_TOTAL_MISMATCH_ERR

HTTP-Statuscode

400 - Bad Request

Der HTTP-Antwortstatuscode 400 Bad Request gibt an, dass der Server die Anforderung nicht verarbeiten kann oder wird, da ein Clientfehler erkannt wurde (z. B. fehlerhafte Anforderungssyntax, ungültiges Framing der Anforderungsnachricht oder irreführendes Routing der Anforderung).

Der Client sollte diese Anforderung nicht ohne Änderung wiederholen.

Kontext

Dieser Fehler tritt auf, wenn eine Instanzrichtlinie erstellt wird.

Der Wert des Felds metadata.collectionTotal stimmt nicht mit der Anzahl der Ressourcen im Array resources überein.

Die Anforderung create instance policy schlägt fehl, weil die metadata.collectionTotal ist 2, während 1 (eine) Ressource in der resources-Array.

# this request fails because the collectionTotal is 2 and there is 1 (one) resource
$ curl -X PUT \
    "https://us-south.kms.cloud.ibm.com/api/v2/instance/policies?policy=dualAuthDelete" \
    -H "authorization: Bearer $ACCESS_TOKEN" \
    -H "bluemix-instance: $KP_INSTANCE_ID" \
    -H "content-type: application/vnd.ibm.kms.policy+json" \
    -d '{
            "metadata": {
                "collectionType": "application/vnd.ibm.kms.policy+json",
                "collectionTotal": 2
            },
            "resources": [
                {
                    "policy_type": "dualAuthDelete",
                    "policy_data": {
                        "enabled": false
                    }
                }
            ]
        }'

JSON-Antwort

{
    "metadata": {
        "collectionType": "application/vnd.ibm.kms.error+json",
        "collectionTotal": 1
    },
    "resources":[
        {
            "errorMsg": "Bad Request: Instance policy could not be created. Please see `reasons` for more details.",
            "reasons": [
                {
                    "code": "COLLECTION_TOTAL_MISMATCH_ERR",
                    "message": "Collection total does not match number of resources",
                    "status": 400,
                    "moreInfo": "https://cloud.ibm.com/apidocs/key-protect"
                }
            ]
        }
    ]
}

2 - Daten im Hauptteil entsprechen nicht den...

Nachricht

Die Daten im Hauptteil stimmen nicht mit den für den Abfrageparameter erforderlichen Daten überein - Details

Ursachencode: BODY_QUERY_PARAM_MISMATCH_ERR

HTTP-Statuscode

400 - Bad Request

Der HTTP-Antwortstatuscode 400 Bad Request gibt an, dass der Server die Anforderung nicht verarbeiten kann oder wird, da ein Clientfehler erkannt wurde (z. B. fehlerhafte Anforderungssyntax, ungültiges Framing der Anforderungsnachricht oder irreführendes Routing der Anforderung).

Der Client sollte diese Anforderung nicht ohne Änderung wiederholen.

Kontext

Dieser Fehler tritt auf, wenn eine Instanzrichtlinie erstellt wird.

Der Abfrageparameter, der die Richtlinie angibt dualAuthDelete,, allowedNetwork, oder allowedIP ), stimmt nicht mit dem ersten policy_type in der resources Array.

Die Anforderung create instance policy schlägt fehl, da der Abfrageparameter policy (dualAuthDelete) nicht mit resources.policy_type (badName) übereinstimmt.

# this request fails because the query parameter does not match the resource
$ curl -X PUT \
    "https://us-south.kms.cloud.ibm.com/api/v2/instance/policies?policy=dualAuthDelete" \
    -H "authorization: Bearer $ACCESS_TOKEN" \
    -H "bluemix-instance: $KP_INSTANCE_ID" \
    -H "content-type: application/vnd.ibm.kms.policy+json" \
    -d '{
            "metadata": {
                "collectionType": "application/vnd.ibm.kms.policy+json",
                "collectionTotal": 1
            },
            "resources": [
                {
                    "policy_type": "badName",
                    "policy_data": {
                        "enabled": false
                    }
                }
            ]
        }'

JSON-Antwort

{
    "metadata": {
        "collectionType": "application/vnd.ibm.kms.error+json",
        "collectionTotal": 1
    },
    "resources": [
        {
            "errorMsg": "Bad Request: Instance policy could not be created. Please see `reasons` for more details.",
            "reasons": [
                {
                    "code": "BODY_QUERY_PARAM_MISMATCH_ERR",
                    "message": "Data in body does not match data required by query parameter",
                    "status": 400,
                    "moreInfo": "https://cloud.ibm.com/apidocs/key-protect"
                }
            ]
        }
    ]
}

3 - Das Extrahieren des Betreffs aus dem Trägertoken ...

Nachricht

Das Extrahieren des Betreffs aus dem Trägertoken ist fehlgeschlagen: Stellen Sie sicher, dass es sich bei dem übergebenen Trägertoken um das richtige (und das richtige Format) handelt und dass es die Berechtigungen zum Durchführen der angeforderten Aktionen besitzt.

Ursachencode: BEARER_SUB_EXTRACTION_ERR

HTTP-Statuscode

400 - Bad Request

Der HTTP-Antwortstatuscode 400 Bad Request gibt an, dass der Server die Anforderung nicht verarbeiten kann oder wird, da ein Clientfehler erkannt wurde (z. B. fehlerhafte Anforderungssyntax, ungültiges Framing der Anforderungsnachricht oder irreführendes Routing der Anforderung).

Der Client sollte diese Anforderung nicht ohne Änderung wiederholen.

Kontext

Das IAM-Zugriffstoken (IAM = Identify and Access Management) oder das zugehörige Format war ungültig. Wenn es sich um eine curl-Anforderung handelt, muss der Autorisierungsheader im folgenden Format festgelegt werden:

-H "authorization: Bearer $ACCESS_TOKEN"

Je nach verwendeter Plattform (Linux, Mac, Windows) bzw. verwendeter Shell (bash, sh, zsh) müssen entweder einzelne oder doppelte Anführungszeichen verwendet werden. Auf manchen Systemen werden Variablen in einfachen Anführungszeichen nicht korrekt interpretiert. Beispiel: ('Bearer $ACCESS_TOKEN') ersetzt möglicherweise nicht $ACCESS_TOKEN durch den Wert.

Stellen Sie sicher, dass ein gültiges IAM-Token angegeben wird. Gegebenenfalls müssen Sie sich (erneut) anmelden, wenn Ihr Token abgelaufen ist. Mit den folgenden Codezeilen in der Befehlszeilenschnittstelle (CLI) kann die Anmeldung ausgeführt und das Zugriffstoken festgelegt werden.

# login with single sign on (sso)
$ ibmcloud login --sso

# set the region (-r) and resource group (-g)
$ ibmcloud target -r us-south -g Default

# set the ACCESS_TOKEN environment variable (with Bearer)
$ export ACCESS_TOKEN=`ibmcloud iam oauth-tokens | grep IAM | cut -d \: -f 2 | sed 's/^ *//'`

# show the access token
$ echo $ACCESS_TOKEN

Bearer eyJraWQiOiIyMDIwMDcyNDE4MzEiLCJh...<redacted>...o4qlcKjl9sVqLa8Q

# set the ACCESS_TOKEN environment variable (without Bearer)
$ export ACCESS_TOKEN=`ibmcloud iam oauth-tokens | grep IAM | cut -d ' ' -f 5 | sed 's/^ *//'`

eyJraWQiOiIyMDIwMDcyNDE4MzEiLCJh...<redacted>...o4qlcKjl9sVqLa8Q

4 - Ungültige Hauptteildaten wurden übergeben...

Nachricht

Ungültige Hauptteildaten wurden übergeben: Stellen Sie sicher, dass die übergebenen Daten eine gültige Formatierung und keine ungültigen Zeichen aufweist.

Ursachencode: BAD_BODY_ERR

HTTP-Statuscode

400 - Bad Request

Der HTTP-Antwortstatuscode 400 Bad Request gibt an, dass der Server die Anforderung nicht verarbeiten kann oder wird, da ein Clientfehler erkannt wurde (z. B. fehlerhafte Anforderungssyntax, ungültiges Framing der Anforderungsnachricht oder irreführendes Routing der Anforderung).

Der Client sollte diese Anforderung nicht ohne Änderung wiederholen.

Kontext

Beispiele für diesen Fehler:

  • Instanzrichtlinie erstellen

    • Es kann jeweils nur eine für jede Richtlinie erstellt werden
    • Es wurde kein Abschnitt resources angegeben
    • Der Abschnitt resources enthält fremde Felder (siehe Beispiel 1)
  • Schlüssel erstellen

    • Eine Ressource ist erforderlich (siehe Beispiel 2)
    • Leere Metadaten (siehe Beispiel 3)
    • Schlüssel mit Nullwert oder leerer Schlüssel

Beispiel 1

Die Anforderung create instance policy schlägt fehl, da die Ressource ein zusätzliches Feld (extra_field) enthält.

# this request fails because there is an extra field in the body
$ curl -X PUT \
    "https://us-south.kms.cloud.ibm.com/api/v2/instance/policies?policy=dualAuthDelete" \
    -H "authorization: Bearer $ACCESS_TOKEN" \
    -H "bluemix-instance: $KP_INSTANCE_ID" \
    -H "content-type: application/vnd.ibm.kms.policy+json" \
    -d '{
            "metadata": {
                "collectionType": "application/vnd.ibm.kms.policy+json",
                "collectionTotal": 1
            },
            "resources": [
                {
                    "policy_type": "dualAuthDelete",
                    "policy_data": {
                        "enabled": false
                    },
                    "extra_field": "junk data"
                }
            ]
        }'
JSON-Antwort
{
    "metadata": {
        "collectionType": "application/vnd.ibm.kms.error+json",
        "collectionTotal": 1
    },
    "resources": [
        {
            "errorMsg": "Bad Request: Instance policy could not be created. Please see `reasons` for more details.",
            "reasons":[
                {
                    "code": "BAD_BODY_ERR",
                    "message": "Invalid body data was passed. Please ensure the data passed had valid formatting with no invalid characters: json: unknown field \"extra_field\"",
                    "status": 400,
                    "moreInfo": "https://cloud.ibm.com/apidocs/key-protect"
                }
            ]
        }
    ]
}

Beispiel 2

Die Anforderung create key schlägt fehl, da mehr als eine (1) Ressource vorhanden ist.

# this request fails because there is more than 1 (one) resource
$ curl -X POST \
    "https://us-south.kms.cloud.ibm.com/api/v2/keys" \
    -H "authorization: Bearer $ACCESS_TOKEN" \
    -H "bluemix-instance: $KP_INSTANCE_ID" \
    -H "content-type: application/vnd.ibm.kms.key+json" \
    -d '{
            "metadata": {
                "collectionType": "application/vnd.ibm.kms.key+json",
                "collectionTotal": 1
            },
            "resources": [
                {
                    "type": "application/vnd.ibm.kms.key+json",
                    "name": "Root-key-1",
                    "description": "example-key",
                    "extractable": false
                },
                {
                    "type": "application/vnd.ibm.kms.key+json",
                    "name": "Root-key-2",
                    "description": "example-key",
                    "extractable": false
                }
            ]
        }'
JSON-Antwort
{
    "metadata": {
        "collectionType": "application/vnd.ibm.kms.error+json",
        "collectionTotal": 1
    },
    "resources": [
        {
            "errorMsg": "Bad Request: Key could not be created. Please see `reasons` for more details.",
            "reasons": [
                {
                    "code": "BAD_BODY_ERR",
                    "message": "Invalid body data was passed. Please ensure the data passed had valid formatting with no invalid characters: Only creation of one key per request is supported",
                    "status": 400,
                    "moreInfo": "https://cloud.ibm.com/apidocs/key-protect"
                }
            ]
        }
    ]
}

Beispiel 3

Diese Anforderung zum Erstellen eines Schlüssels schlägt fehl, da die Metadaten (metadata) leer sind.

# this request fails because the metadata is empty
$ curl -X POST \
    "https://us-south.kms.cloud.ibm.com/api/v2/keys" \
    -H "authorization: Bearer $ACCESS_TOKEN" \
    -H "bluemix-instance: $KP_INSTANCE_ID" \
    -H "content-type: application/vnd.ibm.kms.key+json" \
    -d '{
            "metadata": {},
            "resources": [
                {
                    "type": "application/vnd.ibm.kms.key+json",
                    "name": "Root-key-1",
                    "description": "example-key",
                    "extractable": false
                }
            ]
        }'
JSON-Antwort
{
    "metadata": {
        "collectionType": "application/vnd.ibm.kms.error+json",
        "collectionTotal": 1
    },
    "resources": [
        {
            "errorMsg": "Bad Request: Key could not be created. Please see `reasons` for more details.",
            "reasons": [
                {
                    "code": "BAD_BODY_ERR",
                    "message": "Invalid body data was passed. Please ensure the data passed had valid formatting with no invalid characters: CollectionMetadata is empty",
                    "status": 400,
                    "moreInfo": "https://cloud.ibm.com/apidocs/key-protect"
                }
            ]
        }
    ]
}

5 - Fehler bei ungültigem Schlüssel...

Nachricht

Wenn Sie einen Schlüssel umschließen, wird die Nachricht The field 'plaintext' must be: a base64 encoded key material angezeigt werden, wenn ein ungültiger Klartext in der Anforderung übergeben wird.

Beim Entpacken eines Schlüssels muss die Nachricht The field 'ciphertext' must be: the original base64 encoded ciphertext from the wrap operation (Der ursprüngliche Base64-codierte Verschlüsselungstext aus der Umwicklungsoperation) sein, wenn ein ungültiger Verschlüsselungstext übergeben wird.

HTTP-Statuscode

400

Kontext

Ein Beispiel für eine fehlgeschlagene Anfrage zum Einschließen eines Schlüssels:

curl -X POST \
"https://us-south.kms.cloud.ibm.com/api/v2/keys/$KEY_ID/actions/wrap" \
-H "authorization: Bearer <ACCESS_TOKEN>" \
-H "bluemix-instance: <KP_INSTANCE_ID>" \
-H "application/vnd.ibm.kms.key_action+json" \
-d '{
    "plaintext": "q+x3Qi.../BVb8bPj....vVD;",
}'

Die Antwort:

{
    "metadata": {
        "collectionType": "application/vnd.ibm.kms.error+json",
        "collectionTotal": 1
    },
    "resources": [
        {
            "errorMsg": "Bad Request: Wrap with key could not be performed: Please see `reasons` for more details (INVALID_FIELD_ERR)",
            "reasons": [
                {
                    "code": "INVALID_FIELD_ERR",
                    "message": "The field `plaintext` must be: a base64 encoded key material: illegal base64 data at input byte 38",
                    "status": 400,
                    "moreInfo": "https://cloud.ibm.com/apidocs/key-protect",
                    "target": {
                        "type": "field",
                        "name": "plaintext"
                    }
                }
            ]
        }
    ]
}

Eine Beispielanforderung zum Auspacken eines Schlüssels, die fehlschlägt:

request:

curl -X POST \
"https://us-south.kms.cloud.ibm.com/api/v2/keys/$KEY_ID/actions/unwrap" \
-H "authorization: Bearer <ACCESS_TOKEN>" \
-H "bluemix-instance: <KP_INSTANCE_ID>" \
-H "application/vnd.ibm.kms.key_action+json" \
-d '{
    "ciphertext": "eyJjaXBoZXJ0ZXh0IjoiUnl...hYTUtNDNmMi05NTc5LWM2NjAzN2EwNjhkNyJ"
}'

Die Antwort:

{
    "metadata": {
        "collectionType": "application/vnd.ibm.kms.error+json",
        "collectionTotal": 1
    },
    "resources": [
        {
            "errorMsg": "Bad Request: Unwrap with key could not be performed: Please see 'reasons' for more details (INVALID_FIELD_ERR)",
            "reasons": [
                {
                    "code": "INVALID_FIELD_ERR",
                    "message": "The field 'ciphertext' must be: the original base64 encoded ciphertext from the wrap operation: illegal base64 data at input byte 208",
                    "status": 400,
                    "moreInfo": "https://cloud.ibm.com/apidocs/key-protect",
                    "target": {
                        "type": "field",
                        "name": "ciphertext"
                    }
                }
            ]
        }
    ]
}

6-Schlüssel konnte nicht gelöscht werden ...

HTTP-Statuscode

409 - Conflict

Der HTTP 409 Conflict -Clientfehlerantwortcode zeigt an, dass ein Fehler in der Clientanforderung pro zurückgegebener Ursachencode aufgelöst werden kann.

Kontext

Die Nachricht gibt einen Grund in der Nachricht zurück, die den spezifischen Kontext bereitstellt.

Nachricht

Ursachencode: AUTHORIZATIONS_NOT_MET

Der Schlüssel kann nicht gelöscht werden, da er die doppelte Autorisierungsanfrage nicht bestanden hat. Bevor Sie diesen Schlüssel löschen, vergewissern Sie sich, dass das Verfahren der doppelten Autorisierung eingehalten wird. Informationen hierzu finden Sie im Abschnitt Schlüssel mit doppelter Berechtigung löschen.

Ursachencode: PROTECTED_RESOURCE_ERR

Der Schlüssel kann nicht gelöscht werden, weil der Schlüssel über eine oder mehrere zugehörige Ressourcen verfügt. Informationen hierzu finden Sie im Abschnitt Hinweise vor dem Löschen und Löschen eines Schlüssels.

Ursachencode: PREV_KEY_DEL_ERR

Der Schlüssel kann nicht gelöscht werden, weil er eine Cloud-Ressource schützt, die eine Aufbewahrungsrichtlinie hat. Bevor Sie diesen Schlüssel löschen, wenden Sie sich an einen Accounteigentümer, um die Aufbewahrungsrichtlinie für jede Ressource zu entfernen, die dem Schlüssel zugeordnet ist. Informationen hierzu finden Sie im Abschnitt Hinweise vor dem Löschen und Löschen eines Schlüssels.

Beispiel- Antwort 1

{
    "metadata": {
        "collectionType": "application/vnd.ibm.kms.error+json",
        "collectionTotal": 1
    },
    "resources": [
        {
            "errorMsg": "Key could not be deleted. Please 'reasons' for more details.",
            "reasons": [
                {
                    "code": "AUTHORIZATIONS_NOT_MET",
                    "message": "The key cannot be deleted because it failed the dual authorization request.",
                    "status": 409,
                    "moreInfo":"https://cloud.ibm.com/apidocs/key-protect"
                }
            ]
        }
    ]
}

Beispiel-Antwort 2

{
    "metadata": {
        "collectionType": "application/vnd.ibm.kms.error+json",
        "collectionTotal": 1
    },
    "resources": [
        {
            "errorMsg": "Key could not be deleted. Please 'reasons' for more details.",
            "reasons": [
                {
                    "code": "PROTECTED_RESOURCE_ERR",
                    "message": "The key cannot be deleted because the key has one or more associated resources.",
                    "status": 409,
                    "moreInfo":"https://cloud.ibm.com/apidocs/key-protect"
                }
            ]
        }
    ]
}

Beispiel- Antwort 3

{
    "metadata": {
        "collectionType": "application/vnd.ibm.kms.error+json",
        "collectionTotal": 1
    },
    "resources": [
        {
            "errorMsg": "Key could not be deleted. Please 'reasons' for more details.",
            "reasons": [
                {
                    "code": "PREV_KEY_DEL_ERR",
                    "message": "The key cannot be deleted because it's protecting a cloud resource that has a retention policy.",
                    "status": 409,
                    "moreInfo":"https://cloud.ibm.com/apidocs/key-protect"
                }
            ]
        }
    ]
}

7 - Der Schlüssel wurde bereits gelöscht ...

Nachricht

Der Schlüssel wurde bereits gelöscht: Löschen Sie Verweise auf diesen Schlüssel.

Ursachencode: KEY_DELETED_ERR

HTTP-Statuscode

410 - Gone

Der HTTP-Clientfehlerantwortcode 410 Gone gibt an, dass auf dem Ursprungsserver kein Zugriff auf die Zielressource mehr besteht und dass dieser Zustand voraussichtlich dauerhaft bestehen bleibt.

Wenn nicht bekannt ist, ob dieser Zustand temporär oder permanent ist, sollte stattdessen ein Statuscode 404 verwendet werden.

Ein Antwortcode 410 ist standardmäßig zwischenspeicherbar.

Kontext

Die Anforderung delete key schlägt fehl, da der Schlüssel bereits gelöscht wurde. Ein Schlüssel kann nicht mehrmals gelöscht werden.

Beispiel

# delete an existing key
$ ibmcloud kp key delete $KEY_ID -i $KP_INSTANCE_ID

Deleting key: '0c17...<redacted>...5c34', from instance: 'a192...<redacted>...7411'...
OK
Deleted Key
0c17...<redeacted>...5c34

# this request fails because the key was previously deleted
$ curl -X DELETE \
    "https://us-south.kms.cloud.ibm.com/api/v2/keys/$KEY_ID" \
    -H "authorization: Bearer $ACCESS_TOKEN" \
    -H "bluemix-instance: $KP_INSTANCE_ID" \
    -H "content-type: application/vnd.ibm.kms.key+json"
JSON-Antwort
{
    "metadata": {
        "collectionType": "application/vnd.ibm.kms.error+json",
        "collectionTotal": 1
    },
    "resources": [
        {
            "errorMsg": "Gone: Key could not be deleted. Please see `reasons` for more details.",
            "reasons": [
                {
                    "code": "KEY_DELETED_ERR",
                    "message": "Key has already been deleted. Please delete references to this key.",
                    "status": 410,
                    "moreInfo":"https://cloud.ibm.com/apidocs/key-protect"
                }
            ]
        }
    ]
}

7 - Der Schlüssel besitzt keinen gültigen Status.

Nachricht

Der Schlüssel befindet sich nicht in einem gültigen Status.

Ursachencode: KEY_ACTION_INVALID_STATE_ERR

HTTP-Statuscode

409 - Conflict

Der HTTP-Antwortstatuscode 409 Conflict weist auf einen Konflikt zwischen der Anforderung und dem aktuellen Status des Servers hin.

Konflikte treten meist als Folge einer Anforderung PUT auf. Beispielsweise kann eine Antwort mit dem Code 409 beim Hochladen einer Datei ausgegeben werden, die älter ist als die bereits auf dem Server vorhandene Datei (dies führt zu einem Konflikt bei der Versionssteuerung).

Kontext

Dieser Fehler tritt auf, wenn eine Aktion für einen Schlüssel ausgeführt wird und der Schlüsselstatus nicht gültig ist.

Folgende Aktionen sind zu berücksichtigen:

  • Beim Wrapping, beim Aufheben des Wrappings, bei der Schlüsselrotation, beim Vorbereiten der Löschanforderung für einen Schlüssel (doppelte Autorisierung), beim Stornieren der Löschanforderung für einen Schlüssel oder beim Inaktivieren eines Schlüssels muss der Schlüssel einen aktiven Status (Statuswert 1) aufweisen.

  • Dieser Fehler tritt auf, wenn Sie versuchen, einen abgelaufenen Schlüssel (Statuswert 3) zu aktivieren oder einen gelöschten Schlüssel (Statuswert 5) wiederherzustellen.

Beispiel 1

Die Anforderung key disable schlägt fehl, da ein Schlüssel, der bereits inaktiviert ist, nicht erneut inaktiviert werden kann.

# disable a key the first time
$ ibmcloud kp key disable $KEY_ID -i $KP_INSTANCE_ID

Disabling key: '6933...<redacted>...5dbf', in instance: 'a192...<redacted>...7411'...
OK

# this CLI request fails because the key is deleted a second time
$ ibmcloud key disable $KEY_ID -i $KP_INSTANCE_ID

Disabling key: '69332...<redacted>...5dbf', in instance: 'a192...<redacted>...7411'...
FAILED
kp.Error:
    correlation_id='aca1...<redacted>...66e9',
    msg='Conflict:
        Key is not in active state:
        Key could not be disabled.
        Please see `reasons` for more details.',
    reasons='[KEY_ACTION_INVALID_STATE_ERR:
        Key is not in a valid state -
        FOR_MORE_INFO_REFER: https://cloud.ibm.com/apidocs/key-protect]'

# this API request fails because the key is deleted a third time
$ curl -X POST \
    "https://us-south.kms.cloud.ibm.com/api/v2/keys/$KEY_ID/actions/disable" \
    -H "authorization: Bearer $ACCESS_TOKEN" \
    -H "bluemix-instance: $KP_INSTANCE_ID" \
    -H "content-type: application/vnd.ibm.kms.key_action+json"
JSON-Antwort
{
    "metadata": {
        "collectionType": "application/vnd.ibm.kms.error+json",
        "collectionTotal": 1
    },
    "resources": [
        {
            "errorMsg": "Conflict: Key is not in active state: Key could not be disabled. Please see `reasons` for more details.",
            "reasons": [
                {
                    "code": "KEY_ACTION_INVALID_STATE_ERR",
                    "message": "Key is not in a valid state",
                    "status": 409,
                    "moreInfo": "https://cloud.ibm.com/apidocs/key-protect"
                }
            ]
        }
    ]
}

Beispiel 2

Die Anforderung key disable schlägt fehl, da Sie versuchen, den Status eines abgelaufenen Schlüssels von 'Inaktiviert' (Statuswert 3) in 'Aktiviert' (Statuswert 1) zu ändern.

Die folgenden Schritte geben den Fehler key has been disabled (Schlüssel wurde inaktiviert) zurück.

  1. Schlüssel mit Ablaufdatum erstellen

  2. Warten, bis das Ablaufdatum überschritten ist

  3. Schlüssel aktivieren

# on a Mac, add 1 (one) minute to the current time
$ EXPIRE=$(date -u -v+1M "+%Y-%m-%dT%H:%M:%SZ")

$ echo $EXPIRE

# step 1 - create a key with an expiration date
$ curl -X POST \
    "https://us-south.kms.cloud.ibm.com/api/v2/keys" \
    -H "authorization: Bearer $ACCESS_TOKEN" \
    -H "bluemix-instance: $KP_INSTANCE_ID" \
    -H "content-type: application/vnd.ibm.kms.key+json" \
    -d '{
            "metadata": {
                "collectionType": "application/vnd.ibm.kms.key+json",
                "collectionTotal": 1
            },
            "resources": [
                {
                    "type": "application/vnd.ibm.kms.key+json",
                    "name": "Root-key-1",
                    "description": "example-key",
                    "expirationDate": "'$EXPIRE'",
                    "extractable": false
                }
            ]
        }'
JSON-Antwort
{
    "metadata": {
        "collectionType": "application/vnd.ibm.kms.key+json",
        "collectionTotal": 1
    },
    "resources": [
        {
            "type": "application/vnd.ibm.kms.key+json",
            "id": "88d649f8-41b8-4426-b52b-45c88953d5b8",
            "name": "Root-key-1",
            "description": "example-key",
            "state": 1,
            "expirationDate": "2020-08-12T23:38:09Z",
            "extractable": false,
            "crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:a192d603-0b8d-452f-aac3-f9e1f95e7411:key:88d649f8-41b8-4426-b52b-45c88953d5b8",
            "imported": false,
            "deleted": false
        }
    ]
}
# capture the key id
$ KEY_ID=88d649f8-41b8-4426-b52b-45c88953d5b8

# step 2 - allow the expiration date to pass by sleeping for 1 (one) minute
$ sleep 60

# step 3 - fails because you cannot enable a key after the expiration date
$ curl -X POST \
    "https://us-south.kms.cloud.ibm.com/api/v2/keys/$KEY_ID/actions/enable" \
    -H "authorization: Bearer $ACCESS_TOKEN" \
    -H "bluemix-instance: $KP_INSTANCE_ID" \
    -H "content-type: application/vnd.ibm.kms.key_action+json"
JSON-Antwort
{
    "metadata": {
        "collectionType": "application/vnd.ibm.kms.error+json",
        "collectionTotal": 1
    },
    "resources": [
        {
            "errorMsg": "Conflict: Key is not in suspended state: Key could not be enabled. Please see `reasons` for more details.",
            "reasons": [
                {
                    "code":" KEY_ACTION_INVALID_STATE_ERR",
                    "message": "Key is not in a valid state",
                    "status": 409,
                    "moreInfo": "https://cloud.ibm.com/apidocs/key-protect"
                }
            ]
        }
    ]
}

8 - Der Schlüssel befindet sich nicht in einem gültigen Status.

Nachricht

Der Schlüssel befindet sich nicht in einem gültigen Status.

Ursachencode: KEY_INVALID_STATE_ERR

HTTP-Statuscode

422 - Unprocessable Entity

Der HTTP-Antwortstatuscode 422 Unprocessable Entity gibt an, dass der Inhaltstyp der Anforderungsentität vom Server erkannt wird und die Syntax der Anforderungsentität korrekt ist, die darin enthaltenen Anweisungen jedoch nicht verarbeitet werden können.

Der Client sollte diese Anforderung nicht ohne Änderung wiederholen.

Kontext

Dieser Fehler kommt bei Schlüsseln vor, die für 'Registrierungen' verwendet werden.

Der Schlüssel muss einen aktiven Status (Statuswert 1) aufweisen, wenn er bei einer Cloudressource registriert wird.

Registrierungen sind Zuordnungen zwischen Rootschlüsseln und anderen Cloudressourcen (z. B. Cloud Object Storage-Buckets oder Bereitstellungen von Clouddatenbanken).

Weitere Informationen zu Registrierungen finden Sie im Abschnitt zum Anzeigen von Zuordnungen zwischen Rootschlüsseln und verschlüsselten IBM Cloud-Ressourcen.

9 - Der Schlüssel schützt eine oder mehrere Clouds ...

Nachricht

Der Schlüssel schützt mindestens eine Cloudressource.

Ursachencode: PROTECTED_RESOURCE_ERR

HTTP-Statuscode

409 - Conflict

Der HTTP-Antwortstatuscode 409 Conflict weist auf einen Konflikt zwischen der Anforderung und dem aktuellen Status des Servers hin.

Konflikte treten meist als Folge einer Anforderung PUT auf. Beispielsweise kann eine Antwort mit dem Code 409 beim Hochladen einer Datei ausgegeben werden, die älter ist als die bereits auf dem Server vorhandene Datei (dies führt zu einem Konflikt bei der Versionssteuerung).

Kontext

Dieser Fehler kommt bei Schlüsseln vor, die für 'Registrierungen' verwendet werden.

Ein Schlüssel, der für eine Cloud-Ressource registriert ist, kann nicht gelöscht werden, es sei denn, der force option ist angegeben.

Sie müssen die Option force verwenden, um einen Rootschlüssel zu löschen, der für eine andere Cloudressource registriert ist.

Registrierungen sind Zuordnungen zwischen Rootschlüsseln und anderen Cloudressourcen (z. B. Cloud Object Storage-Buckets oder Bereitstellungen von Clouddatenbanken).

Weitere Informationen zu Registrierungen finden Sie im Abschnitt zum Anzeigen von Zuordnungen zwischen Rootschlüsseln und verschlüsselten IBM Cloud-Ressourcen.

Siehe diese Erklärung zum Löschen von Schlüsseln, die bei einer anderen Cloud-Ressource registriert sind (siehe force ).

# this CLI request fails because the registration was not deleted
$ ibmcloud kp key delete $KEY_ID -i $KP_INSTANCE_ID

Deleting key: 52a9d772-8982-4620-bfb4-b070dd812a0c, from instance: b0d84b32-09d0-4314-8049-da78e3b9ab6f...
FAILED
kp.Error:
    correlation_id='c27b7948-4a1f-4cbd-8770-cb3616888e27',
    msg='Conflict:
        Key could not be deleted.
        Please see "reasons" for more details.',
    reasons='[PROTECTED_RESOURCE_ERR:
        Key is protecting one or more cloud resources -
        FOR_MORE_INFO_REFER: https://cloud.ibm.com/docs/key-protect?topic=key-protect-troubleshooting#unable-to-delete-keys]'

# this CLI request succeeds when using the --force option
# the registration between Key Protect and the cloud resource exists
$ ibmcloud kp key delete $KEY_ID -i $KP_INSTANCE_ID --force --output json

{
    "id": "52a9d772-8982-4620-bfb4-b070dd812a0c"
}

10 - Schlüsselmetadaten wurden beschädigt ...

Nachricht

Die Schlüsselmetadaten wurden beschädigt: Löschen Sie diesen Schlüssel.

Ursachencode: INCOMPLETE_METADATA_ERR

HTTP-Statuscode

500 - Internal Server Error

Der HTTP-Antwortcode für Serverfehler 500 Internal Server gibt an, dass vom Server eine unerwartete Bedingung erkannt wurde, die das Ausführen der Anforderung verhindert hat.

Diese Fehlerantwort ist eine generische Antwort zum Abfangen beliebiger Fehler. Sie wird in der Regel ausgegeben, wenn der Server keinen bestimmten Fehlercode des Typs 5xx als Antwort finden kann. In manchen Fällen protokollieren Serveradministratoren Fehlerantworten wie den Statuscode 500 zusammen mit weiteren Details der Anforderung, damit dieser Fehler künftig vermieden werden kann.

Kontext

Dieser Fehler wird zurückgegeben, wenn ein interner Fehler aufgetreten ist.

Wenn Sie diese Fehlermeldung erhalten, wenden Sie sich bitte an IBM

11 - Die Schlüsselwiederherstellung ist abgelaufen

Nachricht

Die Schlüsselwiederherstellung ist abgelaufen

Ursachencode: KEY_RESTORE_EXPIRED

HTTP-Statuscode

400 - Bad Request

Der HTTP-Antwortstatuscode 400 Bad Request gibt an, dass der Server die Anforderung nicht verarbeiten kann oder wird, da ein Clientfehler erkannt wurde (z. B. fehlerhafte Anforderungssyntax, ungültiges Framing der Anforderungsnachricht oder irreführendes Routing der Anforderung).

Der Client sollte diese Anforderung nicht ohne Änderung wiederholen.

Kontext

Dieser Fehler tritt auf, wenn Sie versuchen, einen Schlüssel wiederherzustellen, der vor mehr als 30 Tagen gelöscht wurde.

12-KeyCreateImportAccess-Instanzrichtlinie ...

Nachricht

Die Instanzrichtlinie 'KeyCreateImportAccess' lässt diese Aktion nicht zu.

Ursachencode: KEY_CREATE_IMPORT_ACCESS_ERR

HTTP-Statuscode

409 - Conflict

Der HTTP-Antwortstatuscode 409 Conflict weist auf einen Konflikt zwischen der Anforderung und dem aktuellen Status des Servers hin.

Konflikte treten meist als Folge einer Anforderung PUT auf. Beispielsweise kann eine Antwort mit dem Code 409 beim Hochladen einer Datei ausgegeben werden, die älter ist als die bereits auf dem Server vorhandene Datei (dies führt zu einem Konflikt bei der Versionssteuerung).

Kontext

Die Instanzrichtlinie KeyCreateImportAccess wurde aktiviert und eine Anforderung zum Erstellen oder Importieren eines Schlüssels war nicht zulässig.

Die Instanzrichtlinie lässt beispielsweise nicht zu, dass ein Standardschlüssel erstellt wird und eine Anforderung zum Erstellen eines Standardschlüssels zurückgewiesen wurde.

Beispiel

Die folgenden Schritte führen zu diesem Fehler.

  1. Aktivieren Sie die Instanzrichtlinie und verhindern Sie die Erstellung von Standardschlüsseln

  2. Versuch, einen Standardschlüssel zu erstellen, der fehlschlägt

  3. Entfernen (inaktivieren) der Instanzrichtlinie, die das Erstellen von Standardschlüsseln zulässt

  4. Einen Standardschlüssel erstellen, der erfolgreich ist

# step 1 - enable an instance policy, which prevents creating standard keys
$ curl -X PUT \
    "https://us-south.kms.cloud.ibm.com/api/v2/instance/policies?policy=keyCreateImportAccess" \
    -H "accept: application/vnd.ibm.kms.policy+json" \
    -H "authorization: Bearer $ACCESS_TOKEN" \
    -H "bluemix-instance: $KP_INSTANCE_ID" \
    -H "content-type: application/vnd.ibm.kms.policy+json" \
    -d '{
            "metadata": {
                "collectionType": "application/vnd.ibm.kms.policy+json",
                "collectionTotal": 1
            },
            "resources": [
                {
                    "policy_type": "keyCreateImportAccess",
                    "policy_data": {
                        "enabled": true,
                        "attributes": {
                            "create_root_key": true,
                            "create_standard_key": false,
                            "import_root_key": true,
                            "import_standard_key": true,
                            "enforce_token": true
                        }
                    }
                }
            ]
        }'

# step 2a - fails when using the ibmcloud CLI
# because the instance policy prevents creating standard keys
$ ibmcloud kp key create my-standard-key --standard-key

FAILED
kp.Error:
    correlation_id='43c45c85-7a1f-478c-b235-49decec8c88f',
    msg='Conflict:
        Key could not be created:
        Please see `reasons` for more details (KEY_CREATE_IMPORT_ACCESS_ERR)',
    reasons='[KEY_CREATE_IMPORT_ACCESS_ERR:
        KeyCreateImportAccess instance policy does not allow this action -
        FOR_MORE_INFO_REFER: https://cloud.ibm.com/apidocs/key-protect]'

# step 2b - fails when using the the ibmcloud API
# because the instance policy prevents creating standard keys
$ curl -X POST \
    "https://us-south.kms.cloud.ibm.com/api/v2/keys" \
    -H "authorization: Bearer $ACCESS_TOKEN" \
    -H "bluemix-instance: $KP_INSTANCE_ID" \
    -H "content-type: application/vnd.ibm.kms.key+json" \
    -d '{
            "metadata": {
                "collectionType": "application/vnd.ibm.kms.key+json",
                "collectionTotal": 1
            },
            "resources": [
                {
                    "type": "application/vnd.ibm.kms.key+json",
                    "name": "my-standard-key",
                    "description": "my-standard-key",
                    "extractable": true
                }
            ]
        }'

JSON-Antwort von der ibmcloud-API

{
    "metadata": {
        "collectionType": "application/vnd.ibm.kms.error+json",
        "collectionTotal": 1
    },
    "resources": [
        {
            "errorMsg": "Conflict: Key could not be created: Please see `reasons` for more details (KEY_CREATE_IMPORT_ACCESS_ERR)",
            "reasons": [
                {
                    "code": "KEY_CREATE_IMPORT_ACCESS_ERR",
                    "message": "KeyCreateImportAccess instance policy does not allow this action",
                    "status": 409,
                    "moreInfo": "https://cloud.ibm.com/apidocs/key-protect"
                }
            ]
        }
    ]
}

In den Schritten 3 - 4 wird die Richtlinie keyCreateImportAccess inaktiviert und erfolgreich ein Standardschlüssel erstellt.

# step 3 - disable the policy, that is, enable creating standard keys
$ curl -X PUT \
    "https://us-south.kms.cloud.ibm.com/api/v2/instance/policies?policy=keyCreateImportAccess" \
    -H "accept: application/vnd.ibm.kms.policy+json" \
    -H "authorization: Bearer $ACCESS_TOKEN" \
    -H "bluemix-instance: $KP_INSTANCE_ID" \
    -H "content-type: application/vnd.ibm.kms.policy+json" \
    -d '{
            "metadata": {
                "collectionType": "application/vnd.ibm.kms.policy+json",
                "collectionTotal": 1
            },
            "resources": [
                {
                    "policy_type": "keyCreateImportAccess",
                    "policy_data": {
                        "enabled": false
                    }
                }
            ]
        }'

# step 4a - create a standard key using the ibmcloud CLI
$ ibmcloud kp key create my-standard-key --standard-key -o json

{
    "id": "3511e0bc-e32d-40b8-b6c2-96cd651858a4",
    "name": "my-standard-key",
    "type": "application/vnd.ibm.kms.key+json",
    "extractable": true,
    "state": 1,
    "crn": "crn:v1:bluemic:public:kms:us-south:a/819bdf4436ef4c198fdf4f0b81d53116:87fa68d0-fa10-47d0-a201-603949808530:key:3511e0bc-e32d-40b8-b6c2-96cd651858a4",
    "deleted": false
}

# step 4b - create a standard key using the ibmcloud API
curl -X POST \
    "https://us-south.kms.cloud.ibm.com/api/v2/keys" \
    -H "authorization: Bearer $ACCESS_TOKEN" \
    -H "bluemix-instance: $KP_INSTANCE_ID" \
    -H "content-type: application/vnd.ibm.kms.key+json" \
    -d '{
            "metadata": {
                "collectionType": "application/vnd.ibm.kms.key+json",
                "collectionTotal": 1
            },
            "resources": [
                {
                    "type": "application/vnd.ibm.kms.key+json",
                    "name": "my-standard-key",
                    "description": "my-standard-key",
                    "extractable": true
                }
            ]
        }'

JSON-Antwort von der ibmcloud-API

{
    "metadata": {
        "collectionType": "application/vnd.ibm.kms.key+json",
        "collectionTotal": 1
    },
    "resources": [
        {
            "type": "application/vnd.ibm.kms.key+json",
            "id": "60d72058-ec53-4d77-b7ef-ba56443e76d5",
            "name": "my-standard-key",
            "description": "my-standard-key",
            "state": 1,
            "extractable": true,
            "crn":"crn:v1:bluemix:public:kms:us-south:a/819bdf4436ef4c198fdf4f0b81d53116:87fa68d0-fa10-47d0-a201-603949808530:key:60d72058-ec53-4d77-b7ef-ba56443e76d5",
            "imported": false,
            "deleted": false
        }
    ]
}

13 - Fehlender Text in der Anfrage

Nachricht

Fehlender Text in der Anfrage

Ursachencode: NO_BODY_ERR

HTTP-Statuscode

400 - Bad Request

Der HTTP-Antwortstatuscode 400 Bad Request gibt an, dass der Server die Anforderung nicht verarbeiten kann oder wird, da ein Clientfehler erkannt wurde (z. B. fehlerhafte Anforderungssyntax, ungültiges Framing der Anforderungsnachricht oder irreführendes Routing der Anforderung).

Der Client sollte diese Anforderung nicht ohne Änderung wiederholen.

Kontext

Dieser Fehler tritt auf, wenn beim erneuten Wrapping oder beim Aufheben des Wrappings für einen Schlüssel kein Anforderungshauptteil vorhanden ist.

Beispiel

Die folgenden Schritte geben den Fehler missing body in request (Schlüssel wurde inaktiviert) zurück.

  1. Rootschlüssel erstellen

  2. Datenverschlüsselungsschlüssel (Data Encryption Key, DEK) erstellen (dies ist der plaintext)

  3. Wrapping für DEK mit Rootschlüssel durchführen (das Ergebnis ist der ciphertext)

  4. Anforderung zum Aufheben des Key-Wrappings für neuen verschlüsselten Text schlägt fehl (da der Hauptteil fehlt) und der ursprüngliche DEK (unverschlüsselter Text) wird nicht sichtbar gemacht

  5. Anforderung zum Aufheben des Key-Wrappings für den neuen verschlüsselten Text ist erfolgreich (da der Hauptteil vorhanden ist) und der ursprüngliche DEK (unverschlüsselter Text) wird sichtbar gemacht

# step 1 - create a root key
$ KEY_ID=$(ibmcloud kp key create example-key -i $KP_INSTANCE_ID --output json | jq -r '.["id"]')

$ echo $KEY_ID

66ffaf5b-86c8-4a50-8a2a-920ae71f86dc

# step 2 - create a random, base64-encoded, 32-byte data encryption key (DEK)
$ PLAINTEXT=$(openssl rand -base64 32)

$ echo $PLAINTEXT

2eLAD3LyD3H2bq8dIDAy0A/lN9DSE/Ne3bwu40CdErs=

# step 3 - wrap the DEK (plaintext key) with the root key, creating the ciphertext
$ CIPHERTEXT=$(ibmcloud kp key wrap $KEY_ID -i $KP_INSTANCE_ID -p $PLAINTEXT --output json | jq -r '.["Ciphertext"]')

$ echo $CIPHERTEXT

eyJjaXBoZXJ0ZXh0IjoiR0VnTFZGSmpK...<redacted>...YWU3MWY4NmRjIn0=

# step 4 - fails to unwrap the ciphertext, which reveals the original DEK
# (plaintext), because there is no body (the -d option)
$ curl -X POST \
    "https://us-south.kms.cloud.ibm.com/api/v2/keys/$KEY_ID/actions/unwrap" \
    -H "authorization: Bearer $ACCESS_TOKEN" \
    -H "bluemix-instance: $KP_INSTANCE_ID" \
    -H "content-type: application/vnd.ibm.kms.key_action+json"

JSON-Antwort

{
    "metadata": {
        "collectionType": "application/vnd.ibm.kms.error+json",
        "collectionTotal": 1
    },
    "resources": [
        {
            "errorMsg": "Bad Request: Action could not be performed on key. Please see `reasons` for more details.",
            "reasons": [
                {
                    "code": "NO_BODY_ERR",
                    "message": "Missing body in request",
                    "status": 400,
                    "moreInfo": "https://cloud.ibm.com/apidocs/key-protect"
                }
            ]
        }
    ]
}
# step 5 - succeeds to unwrap the ciphertext because the request is complete
$ curl -X POST \
    "https://us-south.kms.cloud.ibm.com/api/v2/keys/$KEY_ID/actions/unwrap" \
    -H "authorization: Bearer $ACCESS_TOKEN" \
    -H "bluemix-instance: $KP_INSTANCE_ID" \
    -H "content-type: application/vnd.ibm.kms.key_action+json" \
    -d '{
            "ciphertext": "'$CIPHERTEXT'"
        }'

JSON-Antwort

{
    "plaintext": "2eLAD3LyD3H2bq8dIDAy0A/lN9DSE/Ne3bwu40CdErs=",
    "keyVersion": {
        "id": "66ffaf5b-86c8-4a50-8a2a-920ae71f86dc"
    }
}

14 - Anzahl der erforderlichen Berechtigungen für ...

Nachricht

Die für Löschvorgänge erforderliche Anzahl von Berechtigungen ist nicht vorhanden

Ursachencode: AUTHORIZATIONS_NOT_MET

HTTP-Statuscode

409 - Conflict

Der HTTP-Antwortstatuscode 409 Conflict weist auf einen Konflikt zwischen der Anforderung und dem aktuellen Status des Servers hin.

Konflikte treten meist als Folge einer Anforderung PUT auf. Beispielsweise kann eine Antwort mit dem Code 409 beim Hochladen einer Datei ausgegeben werden, die älter ist als die bereits auf dem Server vorhandene Datei (dies führt zu einem Konflikt bei der Versionssteuerung).

Kontext

Ein Schlüssel mit einer dual authorization policy kann nur gelöscht werden, wenn eine Autorisierung von zwei Benutzern vorliegt.

Beispiel

Mit diesen Schritten kann die Fehlernachricht ausgelöst werden.

  1. Rootschlüssel erstellen

  2. Richtlinie für doppelte Autorisierung aktivieren

  3. Richtlinien auflisten (verifizieren, dass die doppelte Autorisierung aktiviert ist)

  4. Schlüssel löschen (dieser Vorgang schlägt fehl, da die erforderlichen Autorisierungen zum Löschen des Schlüssels nicht vorliegen)

# step 1 - create a root key
$ KEY_ID=$(ibmcloud kp key create example-key -i $KP_INSTANCE_ID --output json | jq -r '.["id"]')

$ echo $KEY_ID

8f97b016-bc31-4e3d-9cd6-a0a1c7caffdb

# step 2 - enable the dual authorization policy
$ ibmcloud kp key policy-update dual-auth-delete $KEY_ID -i $KP_INSTANCE_ID --enable

Setting a rotation interval for key ID: 8f97b016-bc31-4e3d-9cd6-a0a1c7caffdb...
OK

Key ID          8f97b016-bc31-4e3d-9cd6-a0a1c7caffdb
Created By      IBMid-...<redacted>...
Creation Date   2020-08-13T22:33:50Z
Last Updated    2020-08-13T22:33:50Z
Updated By      IBMid-...<redacted>...
Enabled         true

# step 3 - list the policies (verify dual authorization is enabled)
$ ibmcloud kp key policies $KEY_ID -i $KP_INSTANCE_ID --output json

[
    {
        "createdBy": "IBMid-...<redacted>...",
        "creationDate": "2020-08-13T22:33:50Z",
        "crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:a192d603-0b8d-452f-aac3-f9e1f95e7411:policy:0b93cd65-8359-4891-9289-8701f4c6ad9c",
        "lastUpdateDate": "2020-08-13T22:33:50Z",
        "updatedBy": "IBMid-...<redacted>...",
        "dualAuthDelete": {
            "enabled": true
        }
    }
]

# step 4 - fails because not enough authorizations are met to delete the key
$ curl -X DELETE \
    "https://us-south.kms.cloud.ibm.com/api/v2/keys/$KEY_ID" \
    -H "authorization: Bearer $ACCESS_TOKEN" \
    -H "bluemix-instance: $KP_INSTANCE_ID" \
    -H "content-type: application/vnd.ibm.kms.key+json"
JSON-Antwort
{
    "metadata": {
        "collectionType": "application/vnd.ibm.kms.error+json",
        "collectionTotal": 1
    },
    "resources": [
        {
            "errorMsg": "Conflict: 1 prior authorization(s) are required for deletion: Key could not be deleted. Please see `reasons` for more details.",
            "reasons": [
                {
                    "code": "AUTHORIZATIONS_NOT_MET",
                    "message": "Number of authorizations required to delete is not met",
                    "status": 409,
                    "moreInfo": "https://cloud.ibm.com/apidocs/key-protect"
                }
            ]
        }
    ]
}

15 - Es kann nur eine einzelne Instanzrichtlinie ...

Nachricht

Es kann nur eine einzige Instanzrichtlinie pro Abfrageparameter erstellt werden: Übergeben Sie nur ein einzelnes Ressourcenobjekt

Ursachencode: NUM_COLLECTION_RESOURCE_ERR

HTTP-Statuscode

400 - Bad Request

Der HTTP-Antwortstatuscode 400 Bad Request gibt an, dass der Server die Anforderung nicht verarbeiten kann oder wird, da ein Clientfehler erkannt wurde (z. B. fehlerhafte Anforderungssyntax, ungültiges Framing der Anforderungsnachricht oder irreführendes Routing der Anforderung).

Der Client sollte diese Anforderung nicht ohne Änderung wiederholen.

Kontext

Die Anforderung create instance policy schlägt fehl, da die gleiche Richtlinie mehrmals angegeben wurde.

In der Anforderung können mehrere Richtlinien übergeben werden, wenn jede Richtlinie eindeutig ist. Sie können beispielsweise Instanzrichtlinien für dualAuthDelete und allowedIP in derselben Anforderung.

Beispiel

Diese Anforderung schlägt fehl, da mehr als eine Instanzrichtlinie angegeben wurde.

# this request fails because the dualAuthDelete policy was specified more than once
$ curl -X PUT \
    "https://us-south.kms.cloud.ibm.com/api/v2/instance/policies?policy=dualAuthDelete" \
    -H "authorization: Bearer $ACCESS_TOKEN" \
    -H "bluemix-instance: $KP_INSTANCE_ID" \
    -H "content-type: application/vnd.ibm.kms.policy+json" \
    -d '{
            "metadata": {
                "collectionType": "application/vnd.ibm.kms.policy+json",
                "collectionTotal": 2
            },
            "resources": [
                {
                    "policy_type": "dualAuthDelete",
                    "policy_data": {
                        "enabled": false
                    }
                },
                {
                    "policy_type": "dualAuthDelete",
                    "policy_data": {
                        "enabled": false
                    }
                }
            ]
        }'
JSON-Antwort
{
    "metadata": {
        "collectionType": "application/vnd.ibm.kms.error+json",
        "collectionTotal": 1
    },
    "resources": [
        {
            "errorMsg": "Bad Request: Instance policy could not be created. Please see `reasons` for more details.",
            "reasons": [
                {
                    "code": "NUM_COLLECTION_RESOURCE_ERR",
                    "message": "Only a single instance policy may be created per query parameter. Please pass single resource object",
                    "status": 400,
                    "moreInfo": "https://cloud.ibm.com/apidocs/key-protect"
                }
            ]
        }
    ]
}

16 - Nur importierte Schlüssel können wiederhergestellt werden

Nachricht

Nur importierte Schlüssel können wiederhergestellt werden

Ursachencode: KEY_IMPT_REQ_ERR

HTTP-Statuscode

400 - Bad Request

Der HTTP-Antwortstatuscode 400 Bad Request gibt an, dass der Server die Anforderung nicht verarbeiten kann oder wird, da ein Clientfehler erkannt wurde (z. B. fehlerhafte Anforderungssyntax, ungültiges Framing der Anforderungsnachricht oder irreführendes Routing der Anforderung).

Der Client sollte diese Anforderung nicht ohne Änderung wiederholen.

Kontext

Mit Key Protect kann ein zuvor gelöschter Rootschlüssel wiederhergestellt werden, und damit auch der Zugriff auf die zugehörigen Daten in der Cloud.

Als Administrator müssen Sie möglicherweise einen Rootschlüssel wiederherstellen, der in Key Protect für den Zugriff auf Daten, die zuvor vom Schlüssel geschützt wurden, importiert wurde.

Beim Wiederherstellen eines Schlüssels wird der Schlüssel vom Status Gelöscht (Statuswert 5) in den Status Aktiv (Statuswert 1) versetzt und der Zugriff auf alle Daten wiederhergestellt, die zuvor mithilfe des Schlüssels verschlüsselt wurden.

Ein gelöschter Schlüssel kann innerhalb von 30 Tagen nach der Löschung wiederhergestellt werden. Diese Funktion ist nur für Rootschlüssel verfügbar, die mit den Schlüsselinformationen (key material, auch als 'Nutzdaten' bezeichnet) erstellt wurden.

Es können nur Rootschlüssel wiederhergestellt werden, die mithilfe von Schlüsselinformationen (key material) unter Verwendung des Befehls kp key create mit der Option -k, --key-material erstellt wurden. Sie können keinen Rootschlüssel wiederherstellen, wenn die Option --key-material nicht angegeben wurde.

Wenn Sie einen gelöschten Rootschlüssel wiederherstellen möchten, müssen Sie den key material, die zum Erstellen des Rootschlüssels verwendet wurde Sie können einen gelöschten Schlüssel nicht wiederherstellen, ohne das ursprüngliche key material zur Verfügung zu stellen.

Beispiel

Führen Sie die folgenden Schritte aus, um den Fehler only imported keys may be restored auszulösen.

  1. Rootschlüssel ohne Schlüsselinformationen (Nutzdaten) erstellen

  2. Schlüssel löschen

  3. Ruhemodus für 30 Sekunden aktivieren

  4. Schlüsselinformationen erstellen

  5. Schlüssel wiederherstellen und dabei Schlüsselinformationen (Nutzdaten) angeben

# step 1 - create a root key without a key material (payload)
$ KEY_ID=$(ibmcloud kp key create example-key -i $KP_INSTANCE_ID --output json | jq -r '.["id"]')

$ echo $KEY_ID

e631925f-affb-457e-886d-57cb2a5f565b

# step 2 - delete the key
$ ibmcloud kp key delete $KEY_ID -i $KP_INSTANCE_ID

Deleting key: 'e631925f-affb-457e-886d-57cb2a5f565b', from instance: 'a192d603-0b8d-452f-aac3-f9e1f95e7411'...
OK
Deleted Key
e631925f-affb-457e-886d-57cb2a5f565b

# step 3 - sleep 30 seconds
$ sleep 30

# step 4 - create a key material
$ KEY_MATERIAL=$(openssl rand -base64 32)

$ echo $KEY_MATERIAL

lZM/guRnn/VklwRBoNOP/AUdCtpDNSo3+xXXhwrnO7c=

# step 5 - this CLI request fails because you can only restore keys
# that were imported (created with a key material or an import token)
$ ibmcloud kp key restore $KEY_ID -i $KP_INSTANCE_ID --key-material $KEY_MATERIAL

Restoring key: 'e631925f-affb-457e-886d-57cb2a5f565b', in instance: 'a192d603-0b8d-452f-aac3-f9e1f95e7411'...
FAILED
kp.Error:
    correlation_id='6d000f60-47f2-4a49-ba72-f02a8efa2945',
    msg='Bad Request:
        Key could not be restored.
        Please see `reasons` for more details.',
    reasons='[KEY_IMPT_REQ_ERR:
        Only imported keys may be restored. -
        FOR_MORE_INFO_REFER: https://cloud.ibm.com/apidocs/key-protect]'

# step 5 - this API request fails because you can only restore keys
# that were imported (created with a key material or an import token)
$ curl -X POST \
    "https://us-south.kms.cloud.ibm.com/api/v2/keys/$KEY_ID/restore" \
    -H "authorization: Bearer $ACCESS_TOKEN" \
    -H "bluemix-instance: $KP_INSTANCE_ID" \
    -H "content-type: application/vnd.ibm.kms.key_action+json" \
    -d '{
            "metadata": {
                "collectionType": "application/vnd.ibm.kms.key+json",
                "collectionTotal": 1
            },
            "resources": [
                {
                    "payload": "'$KEY_MATERIAL'"
                }
            ]
        }'
JSON-Antwort
{
    "metadata": {
        "collectionType": "application/vnd.ibm.kms.error+json",
        "collectionTotal": 1
    },
    "resources": [
        {
            "errorMsg": "Bad Request: Key could not be restored. Please see `reasons` for more details.",
            "reasons": [
                {
                    "code": "KEY_IMPT_REQ_ERR",
                    "message": "Only imported keys may be restored.",
                    "status": 400,
                    "moreInfo": "https://cloud.ibm.com/apidocs/key-protect"
                }
            ]
        }
    ]
}

17 - Angeforderte Aktion kann nur abgeschlossen werden ...

Nachricht

Die angeforderte Aktion kann nur mit einem Rootschlüssel durchgeführt werden

Ursachencode: KEY_ROOT_REQ_ERR

HTTP-Statuscode

400 - Bad Request

Der HTTP-Antwortstatuscode 400 Bad Request gibt an, dass der Server die Anforderung nicht verarbeiten kann oder wird, da ein Clientfehler erkannt wurde (z. B. fehlerhafte Anforderungssyntax, ungültiges Framing der Anforderungsnachricht oder irreführendes Routing der Anforderung).

Der Client sollte diese Anforderung nicht ohne Änderung wiederholen.

Kontext

Viele Aktionen für Schlüssel können nur mit Rootschlüsseln ausgeführt werden. Die folgenden Befehle können nur für Rootschlüssel ausgeführt werden.

  • Schlüssel inaktivieren
  • Schlüssel aktivieren
  • Schlüssel wiederherstellen
  • Schlüssel turnusmäßig wechseln
  • Wrapping von Schlüssel aufheben
  • Wrapping für Schlüssel durchführen

Beispiel

In diesem Beispiel wird ein Standardschlüssel erstellt. Anschließend wird versucht, den erstellten Schlüssel zu inaktivieren. Der Versuch schlägt fehl, da nur Rootschlüssel inaktiviert werden können.

# create a standard key
$ KEY_ID=$(ibmcloud kp key create example-key -i $KP_INSTANCE_ID --output json --standard-key | jq -r '.["id"]')

$ echo $KEY_ID

b2dae7bb-2da5-493e-99d2-a6379e35e58c

# this request fails because a standard key cannot be disabled
$ curl -X POST \
    "https://us-south.kms.cloud.ibm.com/api/v2/keys/$KEY_ID/actions/disable" \
    -H "authorization: Bearer $ACCESS_TOKEN" \
    -H "bluemix-instance: $KP_INSTANCE_ID" \
    -H "content-type: application/vnd.ibm.kms.key_action+json"
JSON-Antwort
{
    "metadata": {
        "collectionType": "application/vnd.ibm.kms.error+json",
        "collectionTotal": 1
    },
    "resources": [
        {
            "errorMsg": "Bad Request: Key could not be disabled. Please see `reasons` for more details.",
            "reasons": [
                {
                    "code": "KEY_ROOT_REQ_ERR",
                    "message": "Requested action can only be completed with a root key.",
                    "status": 400,
                    "moreInfo": "https://cloud.ibm.com/apidocs/key-protect"
                }
            ]
        }
    ]
}

18 - Angeforderte Aktion kann nur abgeschlossen werden ...

Nachricht

Die angeforderte Aktion kann nur mit einem Rootschlüssel durchgeführt werden

Ursachencode: KEY_ROOT_REQ_REG_ERR

HTTP-Statuscode

422 - Unprocessable Entity

Der HTTP-Antwortstatuscode 422 Unprocessable Entity gibt an, dass der Inhaltstyp der Anforderungsentität vom Server erkannt wird und die Syntax der Anforderungsentität korrekt ist, die darin enthaltenen Anweisungen jedoch nicht verarbeitet werden können.

Der Client sollte diese Anforderung nicht ohne Änderung wiederholen.

Kontext

Dieser Fehler kommt bei Schlüsseln vor, die für 'Registrierungen' verwendet werden. Zum Erstellen einer Registrierung ist ein Rootschlüssel erforderlich. Dieser Fehler wird zurückgegeben, wenn eine API-Anfrage zur Erstellung einer Registrierung gestellt wird.

Registrierungen sind Zuordnungen zwischen Rootschlüsseln und anderen Cloudressourcen (z. B. Cloud Object Storage-Buckets oder Bereitstellungen von Clouddatenbanken).

Weitere Informationen zu Registrierungen finden Sie im Abschnitt zum Anzeigen von Zuordnungen zwischen Rootschlüsseln und verschlüsselten IBM Cloud-Ressourcen.

19 - Angeforderte Änderung ist nicht konform ...

Nachricht

Die angeforderte Änderung ist nicht mit den Konfigurationsregeln konform.

Ursachencode: CONFIG_RULE_CONFLICT_ERR

HTTP-Statuscode

403 - Forbidden

Der HTTP-Statusantwortcode 403 Forbidden für Clientfehler gibt an, dass die Anforderung vom Server zwar verstanden wurde, jedoch nicht autorisiert wird.

Dieser Status ähnelt dem Statuscode 401; im vorliegenden Fall bleibt die erneute Authentifizierung jedoch wirkungslos. Der Zugriff wird dauerhaft verweigert und an die Anwendungslogik gebunden (z. B. unzureichende Berechtigungen für eine Ressource).

Kontext

Diese Fehlermeldung tritt auf, wenn eine Instanzrichtlinie den Zugriff auf eine Ressource verhindert. Wenn die Anforderung beispielsweise aus einer öffentlichen IP-Adresse stammt und die Instanzrichtlinie den Zugriff von einer öffentlichen IP-Adresse verbietet, erhalten Sie diese Fehlernachricht.

20 - Signatur ist ungültig

Nachricht

Signatur ist ungültig

Ursachencode: INVALID_SIG_EXP_ERR

HTTP-Statuscode

422 - Unprocessable Entity

Der HTTP-Antwortstatuscode 422 Unprocessable Entity gibt an, dass der Inhaltstyp der Anforderungsentität vom Server erkannt wird und die Syntax der Anforderungsentität korrekt ist, die darin enthaltenen Anweisungen jedoch nicht verarbeitet werden können.

Der Client sollte diese Anforderung nicht ohne Änderung wiederholen.

Kontext

Ein Fehler ist aufgetreten, als für einen Schlüssel ein erneutes Wrapping durchgeführt wurde.

Wenn Sie diese Fehlermeldung erhalten, wenden Sie sich bitte an IBM

21 - Die Aktion konnte nicht durchgeführt werden auf ...

Nachricht

Die Aktion konnte nicht für den Schlüssel durchgeführt werden, da der Schlüssel abgelaufen ist

Ursachencode: KEY_EXPIRED_ERR

HTTP-Statuscode

400 - Bad Request

Der HTTP-Antwortstatuscode 400 Bad Request gibt an, dass der Server die Anforderung nicht verarbeiten kann oder wird, da ein Clientfehler erkannt wurde (z. B. fehlerhafte Anforderungssyntax, ungültiges Framing der Anforderungsnachricht oder irreführendes Routing der Anforderung).

Der Client sollte diese Anforderung nicht ohne Änderung wiederholen.

Kontext

Dieser Fehler tritt beim Wiederherstellen eines Schlüssels auf, wenn der Schlüssel abgelaufen ist.

Beispiel

Eine Anforderung key restore schlägt fehl, da der Schlüssel gelöscht wurde und abgelaufen ist.

Dieser Fehler kann mit den folgenden Schritten ausgelöst werden.

  1. Schlüsselinformationen (Nutzdaten) und ein Ablaufdatum erstellen

  2. Mithilfe der Schlüsselinformationen einen Rootschlüssel und das Ablaufdatum erstellen

  3. Schlüssel-ID erfassen

  4. Warten, bis das Ablaufdatum überschritten ist

  5. Schlüssel löschen

  6. Schlüssel wiederherstellen (dieser Vorgang schlägt fehl, da ein gelöschter Schlüssel nach dem Ablaufdatum nicht mehr wiederhergestellt werden kann)

# step 1 - create a key material (payload) and an expiration date
#          create an expiration date, on a Mac, add 1 (one) minute to the current time
$ KEY_MATERIAL=$(openssl rand -base64 32)
$ EXPIRE=$(date -u -v+1M "+%Y-%m-%dT%H:%M:%SZ")

# step 2 - Create a root key using the key material and the expiration date
$ curl -X POST \
    "https://us-south.kms.cloud.ibm.com/api/v2/keys" \
    -H "authorization: Bearer $ACCESS_TOKEN" \
    -H "bluemix-instance: $KP_INSTANCE_ID" \
    -H "content-type: application/vnd.ibm.kms.key+json" \
    -d '{
            "metadata": {
                "collectionType": "application/vnd.ibm.kms.key+json",
                "collectionTotal": 1
            },
            "resources": [
                {
                    "type": "application/vnd.ibm.kms.key+json",
                    "name": "Root-key-1",
                    "payload": "'$KEY_MATERIAL'",
                    "description": "example-key",
                    "expirationDate": "'$EXPIRE'",
                    "extractable": false
                }
            ]
        }'
JSON-Antwort
{
    "metadata": {
        "collectionType": "application/vnd.ibm.kms.key+json",
        "collectionTotal": 1
    },
    "resources": [
        {
            "type": "application/vnd.ibm.kms.key+json",
            "id": "aa713df1-857c-4c46-be80-3051756280c9",
            "name": "Root-key-1",
            "description": "example-key",
            "state": 1,
            "expirationDate": "2020-08-14T19:33:47Z",
            "extractable": false,
            "crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:a192d603-0b8d-452f-aac3-f9e1f95e7411:key:aa713df1-857c-4c46-be80-3051756280c9",
            "imported": true,
            "deleted": false
        }
    ]
}
# step 3 - capture the key id
$ KEY_ID=aa713df1-857c-4c46-be80-3051756280c9

# step 4 - allow the expiration date to pass by sleeping for 1 (one) minute
$ sleep 60

# step 5 - delete the key
$ ibmcloud kp key delete $KEY_ID

Deleting key: 'aa713df1-857c-4c46-be80-3051756280c9', from instance: 'a192d603-0b8d-452f-aac3-f9e1f95e7411'...
OK
Deleted Key
aa713df1-857c-4c46-be80-3051756280c9

# step 6 - fails because you cannot restore a deleted key after the expiration date
$ curl -X POST \
    "https://us-south.kms.cloud.ibm.com/api/v2/keys/$KEY_ID/restore" \
    -H "authorization: Bearer $ACCESS_TOKEN" \
    -H "bluemix-instance: $KP_INSTANCE_ID" \
    -H "content-type: application/vnd.ibm.kms.key_action+json" \
    -d '{
            "metadata": {
                "collectionType": "application/vnd.ibm.kms.key+json",
                "collectionTotal": 1
            },
            "resources": [
                {
                    "payload": "'$KEY_MATERIAL'"
                }
            ]
        }'
JSON-Antwort
{
    "metadata": {
        "collectionType": "application/vnd.ibm.kms.error+json",
        "collectionTotal": 1
    },
    "resources": [
        {
            "errorMsg": "Bad Request: The key expired on 2020-08-14 19:33:47 +0000 UTC: Key could not be restored. Please see `reasons` for more details.",
            "reasons": [
                {
                    "code": "KEY_EXPIRED_ERR",
                    "message": "The action could not be performed on the key because the key is expired.",
                    "status": 400,
                    "moreInfo": "https://cloud.ibm.com/apidocs/key-protect"
                }
            ]
        }
    ]
}

22 - Die angegebene verschlüsselte Nonce stimmt nicht überein...

Nachricht

Die verschlüsselte Nonce stimmt mit keinem vorhandenen Datensatz überein. Stellen Sie sicher, dass in der Anforderung die richtige Nonce angegeben wurde

Ursachencode: INCORRECT_NONCE_ERR

HTTP-Statuscode

400 - Bad Request

Der HTTP-Antwortstatuscode 400 Bad Request gibt an, dass der Server die Anforderung nicht verarbeiten kann oder wird, da ein Clientfehler erkannt wurde (z. B. fehlerhafte Anforderungssyntax, ungültiges Framing der Anforderungsnachricht oder irreführendes Routing der Anforderung).

Der Client sollte diese Anforderung nicht ohne Änderung wiederholen.

Kontext

Diese Fehlernachricht bezieht sich auf die Aktionen restore und rotate für Schlüssel.

Dieses Beispiel basiert auf dem Schlüsselbefehl restore und verwendet die CLI, da die Ausgabe einfacher zu verfolgen ist als die API.

Schritt 1 - Fehler auslösen, indem mithilfe eines Importtokens ein Rootschlüssel erstellt und anschließend gelöscht wird

# create an import token that expires in 15 minutes (900 seconds) and allows 10 retrievals
$ ibmcloud kp import-token create -e 900 -m 10

Created                         Expires                         Max Retrievals   Remaining Retrievals
2020-08-18 19:05:51 +0000 UTC   2020-08-18 19:20:51 +0000 UTC   10               10

# create a random, base64-encoded, 32-byte key material
$ KEY_MATERIAL=$(openssl rand -base64 32)

$ echo $KEY_MATERIAL

DL4Avc1yL7DhclfV9Uksvzy8VkYIKWZA9InYQv/iiro=

# extract the nonce that was created by the "kp import-token create" command
$ NONCE=$(ibmcloud kp import-token show | jq -r '.["nonce"]')

$ echo $NONCE

6SB0nQ8ROUCPUiyF

# extract the public key that was created by the "kp import-token create" command
$ PUBLIC_KEY=$(ibmcloud kp import-token show | jq -r '.["payload"]')

$ echo $PUBLIC_KEY

LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0t ...<redacted>... QyBLRVktLS0tLQo=

# encrypt the key material using the public key
$ ibmcloud kp import-token key-encrypt -k $KEY_MATERIAL -p $PUBLIC_KEY

Encrypted Key
rATe0oyYy+793MDlxQi2kJxf5BqLbmVY ...<redacted>... gNVJ5oxm7KX94iE=

# capture the encrypted key material
$ ENCRYPTED_KEY=rATe0oyYy+793MDlxQi2kJxf5BqLbmVY ...<redacted>... gNVJ5oxm7KX94iE=

# encrypt the nonce
$ ibmcloud kp import-token nonce-encrypt -k $KEY_MATERIAL -n $NONCE

Encrypted Nonce                            IV
+KjUDFD38r8zlXKJkn+dOR4/xNYN5ozpvKCiIQ==   CSPZwm2qJ5mL00oP

# capture the encrypted nonce and the initialization vector (IV)
$ ENCRYPTED_NONCE=+KjUDFD38r8zlXKJkn+dOR4/xNYN5ozpvKCiIQ==
$ IV=CSPZwm2qJ5mL00oP

# create a root key using an import token, provide an encrypted key, nonce, and initialization vector (IV)
$ KEY_ID=$(ibmcloud kp key create my-imported-root-key -k $ENCRYPTED_KEY -n $ENCRYPTED_NONCE -v $IV --output json | jq -r '.["id"]')

$ echo $KEY_ID

fa0a7d81-a947-4bac-883d-952f6288f0a9

# delete the root key
$ ibmcloud kp key delete $KEY_ID

Deleting key: 'fa0a7d81-a947-4bac-883d-952f6288f0a9', from instance: 'a192d603-0b8d-452f-aac3-f9e1f95e7411'...
OK
Deleted Key
fa0a7d81-a947-4bac-883d-952f6288f0a9

Schritt 2 - Fehler auslösen, indem ein Importtoken erstellt wird, das für die Wiederherstellung des Schlüssels erforderlich ist, dann den Schlüssel löschen und anschließend wiederherstellen

# NOTE: the "kp key restore" requires an import token to complete the process,
# if you follow this example, the import token created above may still exist and
# the example works; otherwise, if the import token has expired then you need to
# create a new import token prior to restoring the key

# create an import token that expires in 15 minutes (900 seconds) and allows 10 retrievals
$ ibmcloud kp import-token create -e 900 -m 10

Created                         Expires                         Max Retrievals   Remaining Retrievals
2020-08-18 19:12:35 +0000 UTC   2020-08-18 19:27:35 +0000 UTC   10               10

# extract the nonce that was created by the "kp import-token create" command
$ NONCE=$(ibmcloud kp import-token show | jq -r '.["nonce"]')

$ echo $NONCE

N3x8F0ihAZ51nj6M

# extract the public key that was created by the "kp import-token create" command
$ PUBLIC_KEY=$(ibmcloud kp import-token show | jq -r '.["payload"]')

$ echo $PUBLIC_KEY

LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0t ...<redacted>... QyBLRVktLS0tLQo=

# encrypt the key material using the public key
$ ibmcloud kp import-token key-encrypt -k $KEY_MATERIAL -p $PUBLIC_KEY

Encrypted Key
qkhpyERrqgU+q6M0ulCyFLP4/uAyTRNJ ...<redacted>... RvVRAyhPP9civbU=

# capture the encrypted key material
$ ENCRYPTED_KEY=qkhpyERrqgU+q6M0ulCyFLP4/uAyTRNJ ...<redacted>... RvVRAyhPP9civbU=

# encrypt the nonce
$ ibmcloud kp import-token nonce-encrypt -k $KEY_MATERIAL -n $NONCE

Encrypted Nonce                            IV
nrrCczvYXvc6T7J2G+EOLjHZO1cpPyu/nhsIlA==   N6oLJnUqaKF3v5Sd

# Normally, you would capture the last encrypted nonce and the initialization
# vector (IV) (from the import token). Then use those new values with the
# "key restore" command.

# To force an error we are using the old (original) encrypted nonce and IV to
# restore the key, which fails because the ENCRYPTED_NONCE does not match the
# value in the import token

# we skipped these steps to force an error
# $ ENCRYPTED_NONCE=nrrCczvYXvc6T7J2G+EOLjHZO1cpPyu/nhsIlA==
# $ IV=N6oLJnUqaKF3v5Sd

# use the CLI to restore the deleted key
# this fails because the ENCRYPTED_NONCE does not match the value in the import token
$ ibmcloud kp key restore $KEY_ID -k $ENCRYPTED_KEY -n $ENCRYPTED_NONCE -v $IV --output json

FAILED
kp.Error:
    correlation_id='a9412941-7986-421d-a67f-b22892e7634d',
    msg='Bad Request:
        Key could not be restored.
        Please see `reasons` for more details.',
    reasons='[INCORRECT_NONCE_ERR:
        The encrypted nonce given does not match existing record,
        please ensure the correct nonce was given in the request -
        FOR_MORE_INFO_REFER: https://cloud.ibm.com/apidocs/key-protect]'

23 - Das Importtoken ist abgelaufen.

Nachricht

Das Importtoken ist abgelaufen

Ursachencode: IMPORT_TOKEN_EXPIRED_ERR

HTTP-Statuscode

409 - Conflict

Der HTTP-Antwortstatuscode 409 Conflict weist auf einen Konflikt zwischen der Anforderung und dem aktuellen Status des Servers hin.

Konflikte treten meist als Folge einer Anforderung PUT auf. Beispielsweise kann eine Antwort mit dem Code 409 beim Hochladen einer Datei ausgegeben werden, die älter ist als die bereits auf dem Server vorhandene Datei (dies führt zu einem Konflikt bei der Versionssteuerung).

Kontext

Beispiel 1

Mithilfe der API ein Importtoken erstellen, die Ablaufzeit des Tokens überschreiten und anschließend versuchen, das Token abzurufen.

# create an import token
$ curl -X POST \
    "https://us-south.kms.cloud.ibm.com/api/v2/import_token" \
    -H "authorization: Bearer $ACCESS_TOKEN" \
    -H "bluemix-instance: $KP_INSTANCE_ID" \
    -H "content-type: application/json" \
    -d '{
            "expiration": 300,
            "maxAllowedRetrievals": 2
        }'
JSON-Antwort
{
    "maxAllowedRetrievals": 2,
    "creationDate": "2020-08-18T19:54:57Z",
    "expirationDate": "2020-08-18T19:59:57Z",
    "remainingRetrievals":2
}
# retrieve the import token after it expires
$ curl -X GET \
    "https://us-south.kms.cloud.ibm.com/api/v2/import_token" \
    -H "authorization: Bearer $ACCESS_TOKEN" \
    -H "bluemix-instance: $KP_INSTANCE_ID" \
    -H "content-type: application/vnd.ibm.kms.import_token+json"
JSON-Antwort
{
    "metadata": {
        "collectionType": "application/vnd.ibm.kms.error+json",
        "collectionTotal": 1
    },
    "resources": [
        {
            "errorMsg": "Conflict: Import Token could not be retrieved. Please see `reasons` for more details.",
            "reasons":[
                {
                    "code": "IMPORT_TOKEN_EXPIRED_ERR",
                    "message": "The import token has expired.",
                    "status": 409,
                    "moreInfo": "https://cloud.ibm.com/apidocs/key-protect"
                }
            ]
        }
    ]
}

Beispiel 2

Mithilfe der CLI ein Importtoken erstellen, das Ablaufdatum des Tokens überschreiten und anschließend versuchen, das Token abzurufen.

# create an import token that expires in 5 minutes (300 seconds) and allows 2 retrievals
$ ibmcloud kp import-token create -e 300 -m 2

Created                         Expires                         Max Retrievals   Remaining Retrievals
2020-08-18 19:39:06 +0000 UTC   2020-08-18 19:44:06 +0000 UTC   2                2

# sleep 300 seconds, which allows the import token to expire
$ sleep 300

# show the import token
$ ibmcloud kp import-token show

FAILED
kp.Error:
    correlation_id='fb677c6e-9bfa-422e-a14b-0e221bbad32b',
    msg='Conflict:
        Import Token could not be retrieved.
        Please see `reasons` for more details.',
    reasons='[IMPORT_TOKEN_EXPIRED_ERR:
        The import token has expired. -
        FOR_MORE_INFO_REFER: https://cloud.ibm.com/apidocs/key-protect]'

24 - Der Schlüssel kann nicht gelöscht werden, weil er ...

Nachricht

Der Schlüssel kann nicht gelöscht werden, da er eine Cloudressource mit einer Aufbewahrungsrichtlinie schützt: Bevor Sie diesen Schlüssel löschen, wenden Sie sich an einen Kontoeigner, damit dieser die Aufbewahrungsrichtlinie für jede diesem Schlüssel zugeordnete Ressource entfernt

Ursachencode: PREV_KEY_DEL_ERR

HTTP-Statuscode

409 - Conflict

Der HTTP-Antwortstatuscode 409 Conflict weist auf einen Konflikt zwischen der Anforderung und dem aktuellen Status des Servers hin.

Konflikte treten meist als Folge einer Anforderung PUT auf. Beispielsweise kann eine Antwort mit dem Code 409 beim Hochladen einer Datei ausgegeben werden, die älter ist als die bereits auf dem Server vorhandene Datei (dies führt zu einem Konflikt bei der Versionssteuerung).

Kontext

Dieser Fehler tritt auf, wenn ein für Registrierungen verwendeter Schlüssel gelöscht wird.

In den meisten Fällen kann ein Schlüssel mit Registrierungen über die --force Option an.

Wenn für die registrierte Ressource der Parameter preventKeyDeletion auf true gesetzt ist, schlägt das Löschen mit der Option 'force' fehl und diese Fehlernachricht wird angezeigt.

Mit anderen Worten: Für alle Registrierungen muss der Parameter preventKeyDeletion auf false gesetzt sein.

Registrierungen sind Zuordnungen zwischen Rootschlüsseln und anderen Cloudressourcen (z. B. Cloud Object Storage-Buckets oder Bereitstellungen von Clouddatenbanken).

Weitere Informationen zu Registrierungen finden Sie im Abschnitt zum Anzeigen von Zuordnungen zwischen Rootschlüsseln und verschlüsselten IBM Cloud-Ressourcen.

25 - Der Schlüssel ist nicht doppelt autorisiert und...

Nachricht

Der Schlüssel ist nicht für die doppelte Authentifizierung aktiviert und seine Löschung kann nicht festgelegt werden

Ursachencode: NOT_DUAL_AUTH_ERR

HTTP-Statuscode

409 - Conflict

Der HTTP-Antwortstatuscode 409 Conflict weist auf einen Konflikt zwischen der Anforderung und dem aktuellen Status des Servers hin.

Konflikte treten meist als Folge einer Anforderung PUT auf. Beispielsweise kann eine Antwort mit dem Code 409 beim Hochladen einer Datei ausgegeben werden, die älter ist als die bereits auf dem Server vorhandene Datei (dies führt zu einem Konflikt bei der Versionssteuerung).

Kontext

Dieser Fehler tritt auf, wenn Sie versuchen, einen Löschvorgang zu autorisieren oder eine Autorisierung zu entfernen und der Schlüssel nicht über eine Richtlinie für doppelte Autorisierung (dual authorization) verfügt.

In diesen Beispielen wird das Auslösen des Fehlers über die API und die CLI veranschaulicht.

Beispiel 1

In diesem Beispiel wird versucht, über die API einen Löschvorgang zu autorisieren und eine Autorisierung zu entfernen.

# create a root key
$ curl -X POST \
    "https://us-south.kms.cloud.ibm.com/api/v2/keys" \
    -H "authorization: Bearer $ACCESS_TOKEN" \
    -H "bluemix-instance: $KP_INSTANCE_ID" \
    -H "content-type: application/vnd.ibm.kms.key+json" \
    -d '{
            "metadata": {
                "collectionType": "application/vnd.ibm.kms.key+json",
                "collectionTotal": 1
            },
            "resources": [
                {
                    "type": "application/vnd.ibm.kms.key+json",
                    "name": "root-example-key",
                    "description": "root-example-key",
                    "extractable": false
                }
            ]
        }'
JSON-Antwort
{
    "metadata": {
        "collectionType": "application/vnd.ibm.kms.key+json",
        "collectionTotal": 1
    },
    "resources": [
        {
            "type": "application/vnd.ibm.kms.key+json",
            "id": "eb086d96-3b2c-48b5-bf31-c8f0305eea77",
            "name": "root-example-key",
            "description": "root-example-key",
            "state": 1,
            "extractable": false,
            "crn":"crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:a192d603-0b8d-452f-aac3-f9e1f95e7411:key:eb086d96-3b2c-48b5-bf31-c8f0305eea77",
            "imported": false,
            "deleted": false
        }
    ]
}

Autorisieren der Löschung für einen Schlüssel mit einer Richtlinie für doppelte Autorisierung.

# set the KEY_ID
$ KEY_ID=eb086d96-3b2c-48b5-bf31-c8f0305eea77

# this request fails because the key DOES NOT have a dual authorization policy
$ curl -X POST \
    "https://us-south.kms.cloud.ibm.com/api/v2/keys/$KEY_ID/actions/setKeyForDeletion" \
    -H "authorization: Bearer $ACCESS_TOKEN" \
    -H "bluemix-instance: $KP_INSTANCE_ID" \
    -H "content-type: application/vnd.ibm.kms.key_action+json"
JSON-Antwort
{
    "metadata": {
        "collectionType": "application/vnd.ibm.kms.error+json",
        "collectionTotal": 1
    },
    "resources": [
        {
            "errorMsg": "Conflict: Action could not be performed on key. Please see `reasons` for more details.",
            "reasons": [
                {
                    "code": "NOT_DUAL_AUTH_ERR",
                    "message":"The key is not dual auth enabled and cannot be set for deletion",
                    "status": 409,
                    "moreInfo": "https://cloud.ibm.com/apidocs/key-protect"
                }
            ]
        }
    ]
}

Entfernen einer Autorisierung für einen Schlüssel mit einer Richtlinie für doppelte Autorisierung.

# this request fails because the key DOES NOT have a dual authorization policy
$ curl -X POST \
    "https://us-south.kms.cloud.ibm.com/api/v2/keys/$KEY_ID/actions/unsetKeyForDeletion" \
    -H "authorization: Bearer $ACCESS_TOKEN" \
    -H "bluemix-instance: $KP_INSTANCE_ID" \
    -H "content-type: application/vnd.ibm.kms.key_action+json"
JSON-Antwort
{
    "metadata": {
        "collectionType": "application/vnd.ibm.kms.error+json",
        "collectionTotal": 1
    },
    "resources": [
        {
            "errorMsg": "Conflict: Action could not be performed on key. Please see `reasons` for more details.",
            "reasons": [
                {
                    "code": "NOT_DUAL_AUTH_ERR",
                    "message": "The key is not dual auth enabled and cannot be set for deletion",
                    "status": 409,
                    "moreInfo": "https://cloud.ibm.com/apidocs/key-protect"
                }
            ]
        }
    ]
}

Beispiel 2

In diesem Beispiel wird versucht, über die CLI einen Löschvorgang zu autorisieren und eine Autorisierung zu entfernen.

Hinweis: Die Schlüssel-ID ($KEY_ID) wurde bereits in einem vorherigen Beispiel festgelegt.

# this request fails because the key DOES NOT have a dual authorization policy
$ ibmcloud kp key schedule-delete $KEY_ID

Scheduling key for deletion...
FAILED
kp.Error:
    correlation_id='3d941968-c599-43b3-b681-306422079412',
    msg='Conflict:
        Action could not be performed on key.
        Please see `reasons` for more details.',
    reasons='[NOT_DUAL_AUTH_ERR:
        The key is not dual auth enabled and cannot be set for deletion -
        FOR_MORE_INFO_REFER: https://cloud.ibm.com/apidocs/key-protect]'

# this request fails because the key DOES NOT have a dual authorization policy
$ ibmcloud kp key cancel-delete $KEY_ID

Cancelling key for deletion...
FAILED
kp.Error:
    correlation_id='5b04a667-573c-44d1-82d5-39730af56a75',
    msg='Conflict:
        Action could not be performed on key.
        Please see `reasons` for more details.',
    reasons='[NOT_DUAL_AUTH_ERR:
        The key is not dual auth enabled and cannot be set for deletion -
        FOR_MORE_INFO_REFER: https://cloud.ibm.com/apidocs/key-protect]'

26 - Der Schlüssel wurde kürzlich aktualisiert

Nachricht

Der Schlüssel wurde kürzlich aktualisiert: Warten Sie und wiederholen Sie den Vorgang

Ursachencode: REQ_TOO_EARLY_ERR

HTTP-Statuscode

409 - Conflict

Der HTTP-Antwortstatuscode 409 Conflict weist auf einen Konflikt zwischen der Anforderung und dem aktuellen Status des Servers hin.

Konflikte treten meist als Folge einer Anforderung PUT auf. Beispielsweise kann eine Antwort mit dem Code 409 beim Hochladen einer Datei ausgegeben werden, die älter ist als die bereits auf dem Server vorhandene Datei (dies führt zu einem Konflikt bei der Versionssteuerung).

Kontext

Dieser Fehler tritt auf, wenn die Aktion enable (aktivieren) oder restore (wiederherstellen) innerhalb von 30 Sekunden nach der vorherigen Aktion ausgeführt wird.

Seit der vorherigen Aktion für einen Schlüssel müssen mindestens 30 Sekunden vergangen sein, bevor der Schlüssel aktiviert oder wiederhergestellt wird.

Der Vorgang in diesem Beispiel schlägt fehl, da das Aktivieren des Schlüssels kurz nach dem Inaktivieren des Schlüssels eingeleitet wurde.

# create a root key
$ KEY_ID=$(ibmcloud kp key create example-key -i $KP_INSTANCE_ID --output json | jq -r '.["id"]')

$ echo $KEY_ID

54f53384-b563-4466-860a-c42ce42f7ac9

# disable the key
$ ibmcloud kp key disable $KEY_ID -i $KP_INSTANCE_ID

Disabling key: '54f53384-b563-4466-860a-c42ce42f7ac9', in instance: 'a192d603-0b8d-452f-aac3-f9e1f95e7411'...
OK

# this request fails because the key was enabled too soon
$ ibmcloud kp key enable $KEY_ID -i $KP_INSTANCE_ID

Enabling key: '54f53384-b563-4466-860a-c42ce42f7ac9', in instance: 'a192d603-0b8d-452f-aac3-f9e1f95e7411'...
FAILED
kp.Error:
    correlation_id='59c343a7-c20f-43ea-9e50-da45cecbc8a6',
    msg='Conflict:
        Key could not be enabled.
        Please see `reasons` for more details.',
    reasons='[REQ_TOO_EARLY_ERR:
        The key was updated recently.
        Please wait and try again. -
        FOR_MORE_INFO_REFER: https://cloud.ibm.com/apidocs/key-protect]'

# this request succeeds because the key was disabled at least 30 seconds ago
$ ibmcloud kp key enable $KEY_ID -i $KP_INSTANCE_ID

Enabling key: '54f53384-b563-4466-860a-c42ce42f7ac9', in instance: 'a192d603-0b8d-452f-aac3-f9e1f95e7411'...
OK

27 - Der angegebene verschlüsselte Text ist ungültig oder...

Nachricht

Der angegebene verschlüsselte Text ist ungültig oder beschädigt

Ursachencode: UNPROCESSABLE_CIPHERTEXT_ERR

HTTP-Statuscode

422 - Unprocessable Entity

Der HTTP-Antwortstatuscode 422 Unprocessable Entity gibt an, dass der Inhaltstyp der Anforderungsentität vom Server erkannt wird und die Syntax der Anforderungsentität korrekt ist, die darin enthaltenen Anweisungen jedoch nicht verarbeitet werden können.

Der Client sollte diese Anforderung nicht ohne Änderung wiederholen.

Kontext

Dies bedeutet in der Regel, dass das Hardwaresicherheitsmodul (HSM) die Daten nicht verarbeiten konnte, da die Eingabe ungültig war.

Dieser Fehler wird zurückgegeben, wenn ein interner Fehler aufgetreten ist.

Wenn Sie diese Fehlermeldung erhalten, wenden Sie sich bitte an IBM

28 - Die bereitgestellte verschlüsselte Nonce war nicht ...

Nachricht

Die angegebene verschlüsselte Nonce wurde nicht mit den angegebenen Schlüsselinformationen verschlüsselt oder der angegebene ursprüngliche Wert stimmt nicht mit der verschlüsselten Nonce überein

Ursachencode: INCORRECT_NONCE_IV_ERR

HTTP-Statuscode

400 - Bad Request

Der HTTP-Antwortstatuscode 400 Bad Request gibt an, dass der Server die Anforderung nicht verarbeiten kann oder wird, da ein Clientfehler erkannt wurde (z. B. fehlerhafte Anforderungssyntax, ungültiges Framing der Anforderungsnachricht oder irreführendes Routing der Anforderung).

Der Client sollte diese Anforderung nicht ohne Änderung wiederholen.

Kontext

Dies bedeutet in der Regel, dass das Hardwaresicherheitsmodul (HSM) die Daten nicht verarbeiten konnte, da die Eingabe ungültig war.

Dieser Fehler wird zurückgegeben, wenn ein interner Fehler aufgetreten ist.

Wenn Sie diese Fehlermeldung erhalten, wenden Sie sich bitte an IBM

29 - Die abgefragte Ressource (n) gehört nicht zum Service

Nachricht

Die angeforderten Ressourcen gehören nicht zum Service.

Ursachencode: RESOURCE_OWNER_ERR

HTTP-Statuscode

403 - Forbidden

Der HTTP-Statusantwortcode 403 Forbidden für Clientfehler gibt an, dass die Anforderung vom Server zwar verstanden wurde, jedoch nicht autorisiert wird.

Dieser Status ähnelt dem Statuscode 401; im vorliegenden Fall bleibt die erneute Authentifizierung jedoch wirkungslos. Der Zugriff wird dauerhaft verweigert und an die Anwendungslogik gebunden (z. B. unzureichende Berechtigungen für eine Ressource).

Kontext

Diese Fehlernachricht tritt in einer Service-zu-Service-Anforderung auf. Der Service versucht, einen Schlüssel zu löschen, obwohl dies nicht zulässig ist. Das heißt, ein anderer Service kann einen Key Protect-Schlüssel zugeordnet sind.

Ein Beispiel für die Verwendung des Service-zu-Service-Zugriffs ist ein Benutzer, der ein Cloud Object Storage-Bucket (COS) konfiguriert, um dessen Daten mit einem Key Protect-Schlüssel zugeordnet sind.

In diesem COS-Beispiel kann der verwendete Verschlüsselungsschlüssel von COS nicht gelöscht werden.

30 - Diese Aktion kann nur durch einen Service durchgeführt werden ...

Nachricht

Diese Aktion kann nur von einem Service durchgeführt werden (Service zu Service)

Ursachencode: SERVICE_ONLY_ERR

HTTP-Statuscode

403 - Forbidden

Der HTTP-Statusantwortcode 403 Forbidden für Clientfehler gibt an, dass die Anforderung vom Server zwar verstanden wurde, jedoch nicht autorisiert wird.

Dieser Status ähnelt dem Statuscode 401; im vorliegenden Fall bleibt die erneute Authentifizierung jedoch wirkungslos. Der Zugriff wird dauerhaft verweigert und an die Anwendungslogik gebunden (z. B. unzureichende Berechtigungen für eine Ressource).

Kontext

Manche Aktionen (z. B. das Erstellen einer Registrierung) können nur von einem anderen Service mithilfe einer sogenannten Service-zu-Service-Anforderung ausgeführt werden.

Wenn Sie zum Beispiel ein Cloud Object Storage-Bucket (COS-Bucket) konfigurieren, um Daten mit einem Key Protect-Schlüssel zu verschlüsseln, muss die Registrierung vom COS-Service erstellt werden.

Eine Service-zu-Service-Anforderung ist erforderlich, um eine Registrierung zu erstellen, zu löschen, zu ersetzen oder zu aktualisieren.

Weitere Informationen zu Registrierungen finden Sie in den folgenden Ressourcen.

31 - Diese Aktion ist nicht erlaubt auf dieser...

Nachricht

Diese Aktion ist für diese Ressource nicht zulässig: Wenden Sie sich an IBM Key Protect oder öffnen Sie ein Service-Ticket, um diese Funktion zu aktivieren

Ursachencode: FEATURE_RESTRICTED_ERR

HTTP-Statuscode

403 - Forbidden

Der HTTP-Statusantwortcode 403 Forbidden für Clientfehler gibt an, dass die Anforderung vom Server zwar verstanden wurde, jedoch nicht autorisiert wird.

Dieser Status ähnelt dem Statuscode 401; im vorliegenden Fall bleibt die erneute Authentifizierung jedoch wirkungslos. Der Zugriff wird dauerhaft verweigert und an die Anwendungslogik gebunden (z. B. unzureichende Berechtigungen für eine Ressource).

Kontext

Sie versuchen, eine Instanzrichtlinie mit einer nicht unterstützten Funktion zu erstellen, zu aktualisieren oder zu verwenden.

Beispiel: Die Instanzrichtlinie wurde für einen Adressbereich allowedIp erstellt, der nur IPv4-Adressen unterstützt. Sie haben eine Anforderung mit einer IPv6-Adresse an die Instanz abgesetzt und dieser Fehler wurde zurückgegeben.

32 - Diese Anforderung erfordert, dass die Schlüsselversion ...

Nachricht

Für diese Anforderung muss die Version dieses Schlüssels neuer als die aktuelle Version des Registrierungsschlüssels sein

Ursachencode: KEY_VERSION_INVALID

HTTP-Statuscode

422 - Unprocessable Entity

Der HTTP-Antwortstatuscode 422 Unprocessable Entity gibt an, dass der Inhaltstyp der Anforderungsentität vom Server erkannt wird und die Syntax der Anforderungsentität korrekt ist, die darin enthaltenen Anweisungen jedoch nicht verarbeitet werden können.

Der Client sollte diese Anforderung nicht ohne Änderung wiederholen.

Kontext

Dieser Fehler kommt bei Schlüsseln vor, die für 'Registrierungen' verwendet werden.

Wenn ein Service wie Cloud Object Storage (COS) versucht, einen Schlüssel zu ersetzen oder wiederherzustellen, wird die Zeitmarke des Schlüssels überprüft.

Wenn die Zeitmarke des Schlüssels älter ist als die Zeitmarke des in der Registrierung verwendeten Schlüssels, tritt dieser Fehler auf.

Die Zeitmarke des vom Service verwendeten Schlüssels muss größer-gleich der Zeitmarke des Schlüssels in der Registrierung sein.

Registrierungen sind Zuordnungen zwischen Rootschlüsseln und anderen Cloudressourcen (z. B. Cloud Object Storage-Buckets oder Bereitstellungen von Clouddatenbanken).

Weitere Informationen zu Registrierungen finden Sie im Abschnitt zum Anzeigen von Zuordnungen zwischen Rootschlüsseln und verschlüsselten IBM Cloud-Ressourcen.

33 - Dieser Rootschlüssel wurde innerhalb von ...

Nachricht

Dieser Rootschlüssel wurde innerhalb der letzten Stunde rotiert: Nur eine 'rotate'- Aktion pro Stunde ist zulässig

Ursachencode: KEY_ROTATION_NOT_PERMITTED

HTTP-Statuscode

409 - Conflict

Der HTTP-Antwortstatuscode 409 Conflict weist auf einen Konflikt zwischen der Anforderung und dem aktuellen Status des Servers hin.

Konflikte treten meist als Folge einer Anforderung PUT auf. Beispielsweise kann eine Antwort mit dem Code 409 beim Hochladen einer Datei ausgegeben werden, die älter ist als die bereits auf dem Server vorhandene Datei (dies führt zu einem Konflikt bei der Versionssteuerung).

Kontext

Für einen Rootschlüssel kann nur eine Rotation pro Stunde durchgeführt werden. Der Versuch, einen Rootschlüssel vor Ablauf einer Stunde zu rotieren, führt zu dieser Fehlernachricht.

# step 1 - create a root key and provide a key material
$ KEY_MATERIAL=$(openssl rand -base64 32)

$ echo $KEY_MATERIAL

dlYulSKD5cEG/XoAV8vv4QiQe/s3SlBzPY+PKgq92/0=

$ KEY_ID=$(ibmcloud kp key create rotate-example-key -i $KP_INSTANCE_ID --key-material $KEY_MATERIAL --output json | jq -r '.["id"]')

$ echo $KEY_ID

1604b4f3-6ba0-459c-8f65-400ed981a5eb

# step 2 - this request succeeds because there is no time
#          restriction when rotating the key the first time
$ KEY_MATERIAL_NEW_1=$(openssl rand -base64 32)

$ echo $KEY_MATERIAL_NEW_1

rK9CCRHxr8RpVvKQSEvud1zHAPnXl3PvhaPwx2aRxGE=

$ curl -X POST \
    "https://us-south.kms.cloud.ibm.com/api/v2/keys/$KEY_ID/actions/rotate" \
    -H "authorization: Bearer $ACCESS_TOKEN" \
    -H "bluemix-instance: $KP_INSTANCE_ID" \
    -H "content-type: application/vnd.ibm.kms.key_action+json" \
    -d '{
            "payload": "'$KEY_MATERIAL_NEW_1'"
        }'

# step 3 - this request fails because the key was
#          last rotated less than one hour ago
$ KEY_MATERIAL_NEW_2=$(openssl rand -base64 32)

$ echo $KEY_MATERIAL_NEW_2

pQX+ghaaH/r/s54ICWuwq3jQDPWlHQMDhAV0mwpBf2w=

$ curl -X POST \
    "https://us-south.kms.cloud.ibm.com/api/v2/keys/$KEY_ID/actions/rotate" \
    -H "authorization: Bearer $ACCESS_TOKEN" \
    -H "bluemix-instance: $KP_INSTANCE_ID" \
    -H "content-type: application/vnd.ibm.kms.key_action+json" \
    -d '{
            "payload": "'$KEY_MATERIAL_NEW_2'"
        }'

JSON-Antwort

{
    "metadata": {
        "collectionType": "application/vnd.ibm.kms.error+json",
        "collectionTotal": 1
    },
    "resources": [
        {
            "errorMsg": "Conflict: Action could not be performed on key: Please see `reasons` for more details (KEY_ROTATION_NOT_PERMITTED)",
            "reasons": [
                {
                    "code": "KEY_ROTATION_NOT_PERMITTED",
                    "message": "This root key has been rotated within the last hour: Only one 'rotate' action per hour is permitted",
                    "status": 409,
                    "moreInfo": "https://cloud.ibm.com/apidocs/key-protect"
                }
            ]
        }
    ]
}

34 - Dieser Rootschlüssel wurde mit vom Benutzer bereitgestellten...

Nachricht

Dieser Rootschlüssel wurde mit vom Benutzer bereitgestellten Schlüsselinformationen erstellt: Zum Durchführen der Aktion 'rotate' sind Schlüsselinformationen erforderlich

Ursachencode: KEY_PAYLOAD_REQ_ERR

HTTP-Statuscode

400 - Bad Request

Der HTTP-Antwortstatuscode 400 Bad Request gibt an, dass der Server die Anforderung nicht verarbeiten kann oder wird, da ein Clientfehler erkannt wurde (z. B. fehlerhafte Anforderungssyntax, ungültiges Framing der Anforderungsnachricht oder irreführendes Routing der Anforderung).

Der Client sollte diese Anforderung nicht ohne Änderung wiederholen.

Kontext

Wenn ein Rootschlüssel mithilfe von Schlüsselinformationen (Nutzdaten) erstellt wurde, müssen bei der Schlüsselrotation Schlüsselinformationen angegeben werden.

# step 1 - create a root key and provide a key material
$ KEY_MATERIAL=$(openssl rand -base64 32)

$ echo $KEY_MATERIAL

HpHM2YG9PMLBo4fZmV2WODZTTWlwaKmy496MoCE7w7U=

$ KEY_ID=$(ibmcloud kp key create rotate-example-key -i $KP_INSTANCE_ID --key-material $KEY_MATERIAL --output json | jq -r '.["id"]')

$ echo $KEY_ID

e52ee578-af71-4cd7-ba19-f1a8020d6a10

# step 2 - rotate the key without a new key material
$ curl -X POST \
    "https://us-south.kms.cloud.ibm.com/api/v2/keys/$KEY_ID/actions/rotate" \
    -H "authorization: Bearer $ACCESS_TOKEN" \
    -H "bluemix-instance: $KP_INSTANCE_ID" \
    -H "content-type: application/vnd.ibm.kms.key_action+json"

JSON-Antwort

{
    "metadata": {
        "collectionType": "application/vnd.ibm.kms.error+json",
        "collectionTotal": 1
    },
    "resources": [
        {
            "errorMsg": "Bad Request: Action could not be performed on key: Please see `reasons` for more details (KEY_PAYLOAD_REQ_ERR)",
            "reasons": [
                {
                    "code": "KEY_PAYLOAD_REQ_ERR",
                    "message": "This root key was created with user-supplied key material: Key material is required to perform a 'rotate' action",
                    "status": 400,
                    "moreInfo": "https://cloud.ibm.com/apidocs/key-protect",
                    "target": {
                        "type": "field",
                        "name": "payload"
                    }
                }
            ]
        }
    ]
}

35 - Nicht berechtigt: Der Benutzer hat keine ...

Nachricht

Keine Berechtigung: Der Benutzer besitzt keinen Zugriff auf die angegebene Ressource

Ursachencode: UNAUTHORIZED_ERR

HTTP-Statuscode

401 - Unauthorized

Der HTTP-Statusantwortscode 401 Unauthorized für Clientfehler gibt an, dass die Anforderung nicht angewendet wurde, da keine gültigen Berechtigungsnachweise für die Zielressource vorliegen.

Dieser Status wird mit einem Header WWW-Authenticate übermittelt, der Informationen zur korrekten Autorisierung enthält.

Dieser Status ähnelt dem Statuscode 403; im vorliegenden Fall ist die Authentifizierung jedoch möglich.

Kontext

Diese Fehlernachricht wird zurückgegeben, wenn der Benutzer keinen Zugriff auf eine Ressource hat.

In diesem Beispiel wird eine Instanzrichtlinie angewendet, die den Zugriff auf einen IP-Adressbereich begrenzt. Wenn eine Anforderung nicht aus dem zulässigen Adressbereich stammt, wird ein Fehler zurückgegeben.

# limit  access to a range of IP addresses
$ curl -X PUT \
    "https://us-south.kms.cloud.ibm.com/api/v2/instance/policies?policy=allowedIP" \
    -H "authorization: Bearer $ACCESS_TOKEN" \
    -H "bluemix-instance: $KP_INSTANCE_ID" \
    -H "content-type: application/vnd.ibm.kms.policy+json" \
    -d '{
            "metadata": {
                "collectionType": "application/vnd.ibm.kms.policy+json",
                "collectionTotal": 1
            },
            "resources": [
                {
                    "policy_type": "allowedIP",
                    "policy_data": {
                        "enabled": true,
                        "attributes": {
                            "allowed_ip": [
"65.128.226.252/24"
                            ]
                        }
                    }
                }
            ]
        }'

Das Abrufen von Schlüsseln schlägt fehl, da die Anforderung nicht aus dem zulässigen IP-Adressbereich stammt.

# this fails because the request is outside the allowed range of IP addresses
$ curl -X GET \
    "https://us-south.kms.cloud.ibm.com/api/v2/keys" \
    -H "authorization: Bearer $ACCESS_TOKEN"
    -H "bluemix-instance: $KP_INSTANCE_ID"

JSON-Antwort

{
    "metadata": {
        "collectionType": "application/vnd.ibm.kms.error+json",
        "collectionTotal": 1
    },
    "resources": [
        {
            "errorMsg": "Unauthorized: The user does not have access to the specified resource"
        }
    ]
}

Geordnet nach HTTP-Statuscode

In der folgenden Auflistung sind die Fehlernachrichten nach dem HTTP-Statuscode geordnet.

HTTP 400 - Bad Request

  • Summe der Erfassung entspricht nicht der Anzahl der Ressourcen - Details

  • Daten im Hauptteil stimmen nicht mit Daten überein, die für den Abfrageparameter erforderlich sind - Details

  • Extrahieren des Subjekts aus Trägertoken fehlgeschlagen: Stellen Sie sicher, dass das übergebene Trägertoken das richtige (und korrekt formatierte) ist und zum Ausführen der angeforderten Aktionen berechtigt ist - Details

  • Ungültige Hauptteildaten wurden übergeben: Bitte stellen Sie sicher, dass die übergebenen Daten eine gültige Formatierung mit keinen ungültigen Zeichen haben - Details

  • Ungültiger Feldfehler: für wrap The field 'plaintext' must be: a base64 encoded key material, wenn ungültiger Klartext in der Anfrage übergeben wird; und The field 'ciphertext' must be: the original base64 encoded ciphertext from the wrap operation für unwrap, wenn ungültiger Chiffriertext übergeben wird. - Details

  • Schlüsselwiederherstellung ist abgelaufen - Details

  • Fehlender Hauptteil in Anforderung - Details

  • Pro Abfrageparameter kann nur eine einzelne Instanzrichtlinie erstellt werden: Übergeben Sie ein einzelnes Ressourcenobjekt - Details

  • Nur importierte Schlüssel können wiederhergestellt werden - Details

  • Die angeforderte Aktion kann nur mit einem Rootschlüssel ausgeführt werden - Details

  • Die Aktion konnte für den Schlüssel nicht ausgeführt werden, da der Schlüssel abgelaufen ist - Details

  • Die angegebene verschlüsselte Nonce stimmt nicht mit dem vorhandenen Datensatz überein: Stellen Sie sicher, dass die richtige Nonce in der Anforderung angegeben wurde - Details

  • Die angegebene verschlüsselte Nonce wurde nicht mit dem angegebenen Schlüsselmaterial verschlüsselt ODER der angegebene IV stimmt nicht mit der verschlüsselten Nonce überein - Details

  • Dieser Rootschlüssel wurde mit vom Benutzer bereitgestellten Schlüsselinformationen erstellt: Zum Durchführen der Aktion 'rotate' sind Schlüsselinformationen erforderlich - Details

HTTP 401 - Unauthorized

  • Nicht berechtigt: Der Benutzer verfügt über keinen Zugriff auf die angegebene Ressource - Details

HTTP 403 - Forbidden

  • Die angeforderte Änderung ist nicht mit den Konfigurationsregeln konform - Details

  • Die abgefragte(n) Ressource(n) gehört/gehören nicht zum Service - Details

  • Diese Aktion kann nur von einem Service durchgeführt werden (Service-zu-Service) - Details

  • Diese Aktion ist nicht zulässig auf dieser Ressource: Wenden Sie sich bitte an IBM Key Protect oder öffnen Sie ein Service-Ticket, um diese Funktion zu aktivieren - Details

HTTP 409 - Conflict

  • Der Schlüssel besitzt keinen gültigen Status - Details

  • Der Schlüssel schützt eine oder mehrere Cloud-Ressourcen - Details

  • KeyCreateImportAccess-Instanzrichtlinie lässt diese Aktion nicht zu - Details

  • Anzahl der erforderlichen Autorisierungen zum Löschen ist nicht erfüllt - Details

  • Das Importtoken ist abgelaufen - Details

  • Der Schlüssel kann nicht gelöscht werden, da er eine Cloudressource mit einer Aufbewahrungsrichtlinie schützt: Bevor Sie diesen Schlüssel löschen, wenden Sie sich an einen Kontoeigner, damit dieser die Aufbewahrungsrichtlinie für jede diesem Schlüssel zugeordnete Ressource entfernt - Details

  • Der Schlüssel ist nicht für die doppelte Authentifizierung aktiviert und dessen Löschung kann nicht festgelegt werden - Details

  • Der Schlüssel wurde kürzlich aktualisiert: Bitte warten Sie und versuchen Sie es erneut - Details

  • Dieser Rootschlüssel wurde innerhalb der letzten Stunde rotiert: Die Aktion 'rotate' ist nur einmal pro Stunde zulässig - Details

HTTP 410 - Gone

  • Schlüssel wurde bereits gelöscht: Löschen Sie Verweise auf diesen Schlüssel - Details

HTTP 422 - Unprocessable Entity

  • Der Schlüssel besitzt keinen gültigen Status - Details

  • Die angeforderte Aktion kann nur mit einem Rootschlüssel ausgeführt werden - Details

  • Signatur ist ungültig ... Details

  • Der angegebene verschlüsselte Text ist ungültig oder beschädigt - Details

  • Für diese Anforderung muss die Version dieses Schlüssels neuer als die aktuelle Version des Registrierungsschlüssels sein - Details

HTTP 500 - Internal Server Error

  • Schlüsselmetadaten wurden beschädigt: Bitte löschen Sie diesen Schlüssel - Details

Sortiert nach Ursachencode

In diesem Abschnitt werden Fehlermeldungen nach dem Grundcode sortiert.