Mensajes de error
Estos mensajes de error los crea Key Protect y se muestra en la interfaz de usuario (IU).
La mayoría de los mensajes de error tienen uno o más ejemplos, normalmente curl
, que muestran la solicitud y la respuesta.
Esta no es una lista completa de mensajes de error. Algunos mensajes los crean otros sistemas, como por ejemplo IAM (Identity and Access Management), donde el mensaje de error se pasa desde otro sistema, como por ejemplo IAM, a Key Protect al usuario.
Tabla de contenido
La tabla de contenido está ordenada por mensaje de error.
-
La primera lista clasifica los mensajes de error por código de estado HTTP
-
Otra lista clasifica los mensajes de error por código de razón
Algunos mensajes de error aparecen más de una vez; en estos casos se incluye el código de estado de HTTP al final del mensaje de error.
- El total de recopilación no coincide con el número... detalles
- Los datos del cuerpo no coinciden con los datos que necesita... detalles
- No se ha podido extraer el asunto de la señal portadora... detalles
- Se han pasado datos de cuerpo no válidos... detalles
- Error de campo no válido... detalles
- No se ha podido suprimir la clave... detalles
- La clave ya se ha suprimido... detalles
- La clave no está en un estado válido (409) detalles
- La clave no está en un estado válido (422) detalles
- La clave está protegiendo uno o más recursos... detalles
- Los metadatos de clave han quedado dañados... detalles
- La restauración de la clave ha caducado detalles
- Política de instancia KeyCreateImportAccess... detalles
- Falta el cuerpo en la solicitud detalles
- Número de autorizaciones necesarias para... detalles
- Sólo se puede crear una política de una sola instancia... detalles
- Only imported keys may be restored detalles
- La acción solicitada solo se puede completar con una clave raíz (400) detalles
- La acción solicitada solo se puede completar con una clave raíz (422) detalles
- El cambio solicitado no es compatible con las reglas de configuración detalles
- La firma no es válida detalles
- No se ha podido llevar a cabo la acción en... detalles
- El nonce cifrado proporcionado no coincide... detalles
- La señal de importación ha caducado detalles
- La clave no se puede suprimir porque está... detalles
- La clave no tiene autorización dual habilitada y... detalles
- La clave se ha actualizado recientemente details
- El texto cifrado proporcionado no es válido o... detalles
- El nonce de cifrado proporcionado no estaba... detalles
- El o los recursos consultados no pertenecen al servicio. detalles
- Esta acción solo la puede realizar un servicio... detalles
- Esta acción no está permitida en este... detalles
- Esta solicitud requiere que la versión de clave... detalles
- Esta clave raíz se ha rotado dentro de... detalles
- Esta clave raíz se ha creado con material de clave... detalles
- No autorizado: El usuario no tiene... detalles
1 - La recopilación total no coincide con el número de...
Mensaje
El total de la recopilación no coincide con el número de recursos
Código de razón: COLLECTION_TOTAL_MISMATCH_ERR
Código de estado HTTP
400 - Solicitud incorrecta
El código de estado de la respuesta HTTP 400 Bad Request
indica que el servidor no puede procesar o no procesará la solicitud debido a que algo se interpreta como un error del cliente (por ejemplo, sintaxis de solicitud con formato
erróneo, trama de mensajes de solicitud no válida o direccionamiento de solicitud defectuoso).
El cliente no debe repetir esta solicitud sin modificarla.
Contexto
Este error se produce cuando una política de instancia se crea.
El valor del campo metadata.collectionTotal
no coincide con el número de recursos de la matriz resources
.
La solicitud create instance policy
falla porque el
metadata.collectionTotal
es 2, mientras que se ha proporcionado 1 (uno) recurso en el Matriz resources
.
# 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
}
}
]
}'
Respuesta JSON
{
"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 - Los datos del cuerpo no coinciden con los datos necesarios...
Mensaje
Los datos del cuerpo no coinciden con los datos que necesita el parámetro de consulta
Código de razón: BODY_QUERY_PARAM_MISMATCH_ERR
Código de estado HTTP
400 - Solicitud incorrecta
El código de estado de la respuesta HTTP 400 Bad Request
indica que el servidor no puede procesar o no procesará la solicitud debido a que algo se interpreta como un error del cliente (por ejemplo, sintaxis de solicitud con formato
erróneo, trama de mensajes de solicitud no válida o direccionamiento de solicitud defectuoso).
El cliente no debe repetir esta solicitud sin modificarla.
Contexto
Este error se produce cuando una política de instancia se crea.
El parámetro de consulta, que especifica la política dualAuthDelete, allowedNetwork, o allowedIP ), no coincide con el primer policy_type
en el campo resources
matriz.
La solicitud create instance policy
falla porque el parámetro de consulta policy
(dualAuthDelete) no coincide con resources.policy_type
(badName).
# 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
}
}
]
}'
Respuesta JSON
{
"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 - Extracción del asunto desde la señal de portadora...
Mensaje
No se ha podido extraer el asunto desde la señal de portadora: Asegúrese de que la señal de portadora que se ha pasado sea la correcta (y tenga el formato correcto) y que pueda realizar las acciones solicitadas
Código de razón: BEARER_SUB_EXTRACTION_ERR
Código de estado HTTP
400 - Solicitud incorrecta
El código de estado de la respuesta HTTP 400 Bad Request
indica que el servidor no puede procesar o no procesará la solicitud debido a que algo se interpreta como un error del cliente (por ejemplo, sintaxis de solicitud con formato
erróneo, trama de mensajes de solicitud no válida o direccionamiento de solicitud defectuoso).
El cliente no debe repetir esta solicitud sin modificarla.
Contexto
La señal de acceso de Identity and Access Management (IAM) o su formato no son válidos. Si se trata de una solicitud curl, por lo que la cabecera authorization se debe establecer con este formato:
-H "authorization: Bearer $ACCESS_TOKEN"
En función de la plataforma (Linux, Mac, Windows) o del shell (bash, sh, zsh) que utilice, debe tener en cuenta el uso de comillas simples o dobles. Algunos sistemas no interpretarán las variables especificadas entre comillas
simples, Por ejemplo, ('Bearer $ACCESS_TOKEN
') no puede sustituir $ACCESS_TOKEN
por el valor.
Asegúrese de que especifica una señal de IAM válida. Es posible que tenga que iniciar una sesión (de nuevo) si la señal ha caducado. Estas son algunas líneas del código de la interfaz de línea de mandatos (CLI) para iniciar sesión y establecer la señal de acceso.
# 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 - Se han pasado datos del cuerpo no válidos...
Mensaje
Se han pasado datos del cuerpo no válidos: Asegúrese de que los datos que se han pasado tengan el formato válido sin caracteres no válidos
Código de razón: BAD_BODY_ERR
Código de estado HTTP
400 - Solicitud incorrecta
El código de estado de la respuesta HTTP 400 Bad Request
indica que el servidor no puede procesar o no procesará la solicitud debido a que algo se interpreta como un error del cliente (por ejemplo, sintaxis de solicitud con formato
erróneo, trama de mensajes de solicitud no válida o direccionamiento de solicitud defectuoso).
El cliente no debe repetir esta solicitud sin modificarla.
Contexto
Estos son algunos ejemplos de este error:
-
Cree una política de la instancia
- Solo se puede crear una de cada política
- No se ha proporcionado ninguna sección
resources
- Campos superfluos en la sección
resources
(consulte el ejemplo 1)
-
Crear una clave
- Se requiere un recurso (consulte el ejemplo 2)
- Los metadatos están vacíos (consulte el ejemplo 3)
- La clave tiene un valor de cero o está vacía
Ejemplo 1
La solicitud create instance policy
falla debido a que el recurso contiene un campo adicional (extra_field
).
# 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"
}
]
}'
Respuesta JSON
{
"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"
}
]
}
]
}
Ejemplo 2
La solicitud create key
falla porque hay más de 1 (un) recurso.
# 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
}
]
}'
Respuesta JSON
{
"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"
}
]
}
]
}
Ejemplo 3
Esta solicitud de creación de clave falla debido a que la sección metadata
está vacía.
# 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
}
]
}'
Respuesta JSON
{
"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- Error de clave no válida...
Mensaje
Al envolver una clave, el mensaje The field 'plaintext' must be: a base64 encoded key material
se mostrará si se pasa un texto sin formato no válido en la solicitud.
Al desenvolver una clave, el mensaje The field 'ciphertext' must be: the original base64 encoded ciphertext from the wrap operation
si se pasa un texto cifrado no válido.
Código de estado HTTP
400
Contexto
Una solicitud de ejemplo para envolver una clave que falla:
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;",
}'
La respuesta:
{
"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"
}
}
]
}
]
}
Una solicitud de ejemplo para desenvolver una clave que falla:
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"
}'
La respuesta:
{
"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 - No se ha podido suprimir la clave...
Código de estado HTTP
409 - Conflicto
El código de respuesta de error del cliente HTTP 409 Conflict
indica que se puede resolver un error en la solicitud de cliente según el código de razón especificado devuelto.
Contexto
El mensaje devuelve una razón en el mensaje que proporciona el contexto específico.
Mensaje
Código de razón: AUTHORIZATIONS_NOT_MET
La clave no se puede suprimir porque ha fallado la solicitud de autorización dual. Antes de suprimir esta clave, asegúrese de que se siguen los procedimientos de autorización dual. Consulte el tema Supresión de claves utilizando la autorización dual.
Código de razón: PROTECTED_RESOURCE_ERR
La clave no se puede suprimir porque la clave tiene uno o varios recursos asociados. Consulte el tema Consideraciones antes de suprimir y depurar una clave.
Código de razón: PREV_KEY_DEL_ERR
La clave no se puede suprimir porque protege un recurso en la nube que tiene una política de retención. Antes de suprimir esta clave, póngase en contacto con el propietario de una cuenta para eliminar la política de retención de cada recurso asociado a la clave. Consulte el tema Consideraciones antes de suprimir y depurar una clave.
Respuesta de ejemplo 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"
}
]
}
]
}
Respuesta de ejemplo 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"
}
]
}
]
}
Respuesta de ejemplo 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 - La clave ya se ha suprimido...
Mensaje
La clave ya se ha suprimido, Suprima las referencias a esta clave
Código de razón: KEY_DELETED_ERR
Código de estado HTTP
410 - Ausente
El código de respuesta de error del cliente HTTP 410 Gone
indica que el acceso al recurso de destino ya no está disponible en el servidor de origen y que es probable que esta condición sea permanente.
Si no sabe si esta condición es temporal o permanente, se debe utilizar un código de estado 404 en su lugar.
De forma predeterminada, una respuesta 410
se puede guardar en la memoria caché.
Contexto
La solicitud delete key
falla debido a que la clave se ha suprimido anteriormente. No puede suprimir una clave más de una vez.
Ejemplo
# 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"
Respuesta JSON
{
"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 - La clave no está en un estado válido
Mensaje
La clave no está en un estado válido
Código de razón: KEY_ACTION_INVALID_STATE_ERR
Código de estado HTTP
409 - Conflicto
El código de estado de la respuesta HTTP 409 Conflict
indica que existe un conflicto de solicitud con el estado actual del servidor.
Lo más probable es que los conflictos sean debidos a la respuesta a una solicitud PUT
. Por ejemplo, puede recibir una respuesta 409
al cargar un archivo que es más antiguo que el que ya está en el servidor, lo que
da lugar a un conflicto de control de la versión.
Contexto
Este error se genera cuando se realiza una "acción" en una clave y el estado de la clave no es válido.
Algunas acciones a tener en cuenta:
-
El estado de la clave debe ser activo (el valor de estado es 1) para poder envolver, desenvolver, rotar, establecer la clave para supresión (autorización dual), anular el establecimiento de una clave para supresión (autorización dual) o para inhabilitar la clave
-
Este error se genera cuando intenta habilitar una clave caducada (el valor de estado es 3) o restaurar una clave que se ha destruido (el valor de estado es 5)
Ejemplo 1
La solicitud key disable
falla debido a que no puede inhabilitar una clave que se ha inhabilitado anteriormente.
# 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"
Respuesta JSON
{
"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"
}
]
}
]
}
Ejemplo 2
La solicitud key disable
falla debido a que la clave ha caducado y está intentando cambiar el estado de la clave de inhabilitado (el valor del estado es 3) a habilitado (el valor del estado es 1).
Los pasos siguientes devuelven un error de key has been disabled
.
-
Cree una clave con una fecha de caducidad
-
Dejar que transcurra la fecha de caducidad
-
Habilite la clave
# 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
}
]
}'
Respuesta JSON
{
"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"
Respuesta JSON
{
"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 - La clave no está en un estado válido
Mensaje
La clave no está en un estado válido
Código de razón: KEY_ACTION_INVALID_STATE_ERR
Código de estado HTTP
422 - Entidad no procesable
El código de estado HTTP de respuesta 422 Unprocessable Entity
indica que el servidor comprende el tipo de contenido de la entidad de la solicitud, y la sintaxis de la entidad de la solicitud es correcta, pero no ha podido procesar
las instrucciones que contiene.
El cliente no debe repetir esta solicitud sin modificarla.
Contexto
Este error se aplica a las claves utilizadas para los "Registros."
El estado la clave debe ser activo (el valor de estado es 1) cuando se registra la clave con un recurso de nube.
Los registros son asociaciones entre las claves raíz y otros recursos de nube, tales como los grupos de COS (Cloud Object Storage) o los despliegues de bases de datos de la nube.
Para obtener más información sobre los registros, consulte visualización de asociaciones entre claves raíz y recursos cifrados de IBM Cloud.
9 - La clave está protegiendo una o varias nubes...
Mensaje
La clave está protegiendo uno o varios recursos de nube
Código de razón: PROTECTED_RESOURCE_ERR
Código de estado HTTP
409 - Conflicto
El código de estado de la respuesta HTTP 409 Conflict
indica que existe un conflicto de solicitud con el estado actual del servidor.
Lo más probable es que los conflictos sean debidos a la respuesta a una solicitud PUT
. Por ejemplo, puede recibir una respuesta 409
al cargar un archivo que es más antiguo que el que ya está en el servidor, lo que
da lugar a un conflicto de control de la versión.
Contexto
Este error se aplica a las claves utilizadas para los "Registros."
Una clave registrada para un recurso en la nube no puede eliminarse a menos que la clave
force
está especificada.
Debe utilizar la opción force
para suprimir una clave raíz que esté registrada con otro recurso de nube.
Los registros son asociaciones entre las claves raíz y otros recursos de nube, tales como los grupos de COS (Cloud Object Storage) o los despliegues de bases de datos de la nube.
Para obtener más información sobre los registros, consulte visualización de asociaciones entre claves raíz y recursos cifrados de IBM Cloud.
Véase esta explicación sobre la eliminación de claves que están registradas en otro recurso de la nube (consulte la sección
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 - Los metadatos de la clave se han dañado...
Mensaje
Los metadatos de la clave se han dañado: Suprima esta clave
Código de razón: INCOMPLETE_METADATA_ERR
Código de estado HTTP
500 Error de servidor interno
El código de respuesta HTTP de error del servidor 500 Internal Server
indica que el servidor ha encontrado una condición inesperada que le ha impedido cumplir la solicitud.
Esta respuesta de error es una respuesta genérica de tipo "catch-all". Normalmente, esto indica que el servidor no puede encontrar un código de error 5xx mejor como respuesta. Algunas veces, los administradores del servidor registran respuestas de error como el código de estado 500 con más detalles sobre la solicitud para impedir que se repita el error en el futuro.
Contexto
Este error se devuelve cuando hay un error interno.
Si obtiene este error, póngase en contacto con Soporte IBM
11 - La restauración de claves ha caducado
Mensaje
La restauración de claves ha caducado
Código de razón: KEY_RESTORE_EXPIRED
Código de estado HTTP
400 - Solicitud incorrecta
El código de estado de la respuesta HTTP 400 Bad Request
indica que el servidor no puede procesar o no procesará la solicitud debido a que algo se interpreta como un error del cliente (por ejemplo, sintaxis de solicitud con formato
erróneo, trama de mensajes de solicitud no válida o direccionamiento de solicitud defectuoso).
El cliente no debe repetir esta solicitud sin modificarla.
Contexto
Este error se genera cuando intenta restaurar una clave que se ha suprimido hace más de 30 días.
12 - Política de instancia de KeyCreateImportAccess...
Mensaje
La política de la instancia de KeyCreateImportAccess no permite esta acción
Código de razón: KEY_CREATE_IMPORT_ACCESS_ERR
Código de estado HTTP
409 - Conflicto
El código de estado de la respuesta HTTP 409 Conflict
indica que existe un conflicto de solicitud con el estado actual del servidor.
Lo más probable es que los conflictos sean debidos a la respuesta a una solicitud PUT
. Por ejemplo, puede recibir una respuesta 409
al cargar un archivo que es más antiguo que el que ya está en el servidor, lo que
da lugar a un conflicto de control de la versión.
Contexto
La política de instancia de KeyCreateImportAccess
se ha habilitado y no se ha permitido una solicitud para crear o importar una clave.
Por ejemplo, la política de la instancia no permite crear una clave estándar y se ha rechazado una solicitud para crear una clave estándar.
Ejemplo
Los pasos siguientes devuelven este error.
-
Habilitar la política de instancia y evitar la creación de claves estándar
-
Intento de crear una clave estándar, que falla
-
Eliminar (inhabilitar) la política de instancia, que permite crear claves estándar
-
Crear una clave estándar, que tiene éxito
# 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
}
]
}'
Respuesta JSON de la API de ibmcloud
{
"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"
}
]
}
]
}
Los pasos 3-4 inhabilitan la política keyCreateImportAccess
y crean correctamente una clave estándar.
# 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
}
]
}'
Respuesta JSON de la API de ibmcloud
{
"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 - Falta el cuerpo en la solicitud
Mensaje
Falta el cuerpo de la solicitud
Código de razón: BAD_BODY_ERR
Código de estado HTTP
400 - Solicitud incorrecta
El código de estado de la respuesta HTTP 400 Bad Request
indica que el servidor no puede procesar o no procesará la solicitud debido a que algo se interpreta como un error del cliente (por ejemplo, sintaxis de solicitud con formato
erróneo, trama de mensajes de solicitud no válida o direccionamiento de solicitud defectuoso).
El cliente no debe repetir esta solicitud sin modificarla.
Contexto
Este error se produce cuando se "vuelve a envolver" o se "desenvuelve" una clave y no hay ningún cuerpo.
Ejemplo
Los pasos siguientes devuelven un error de missing body in request
.
-
Cree una clave raíz
-
Cree una clave de cifrado de datos (DEK), es decir el
plaintext
-
Envuelva la DEK con la clave raíz, lo que crea un texto cifrado (
ciphertext
) -
La solicitud falla cuando intenta desenvolver el nuevo texto cifrado para revelar la DEK (texto sin formato) original debido a que falta el cuerpo
-
La solicitud desenvuelve correctamente el nuevo texto cifrado para revelar la DEK original (texto sin formato) debido a que se ha especificado el cuerpo
# 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"
Respuesta JSON
{
"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'"
}'
Respuesta JSON
{
"plaintext": "2eLAD3LyD3H2bq8dIDAy0A/lN9DSE/Ne3bwu40CdErs=",
"keyVersion": {
"id": "66ffaf5b-86c8-4a50-8a2a-920ae71f86dc"
}
}
15 - Sólo una única política puede ser...
Mensaje
Only a single instance policy may be created per query parameter: Please pass single resource object (Solo se puede crear una sola política de instancia por parámetro query: pase un solo objeto resource)
Código de razón: NUM_COLLECTION_RESOURCE_ERR
Código de estado HTTP
400 - Solicitud incorrecta
El código de estado de la respuesta HTTP 400 Bad Request
indica que el servidor no puede procesar o no procesará la solicitud debido a que algo se interpreta como un error del cliente (por ejemplo, sintaxis de solicitud con formato
erróneo, trama de mensajes de solicitud no válida o direccionamiento de solicitud defectuoso).
El cliente no debe repetir esta solicitud sin modificarla.
Contexto
La solicitud create instance policy
falla debido a que se ha especificado la misma política más de una vez.
Puede especificar varias políticas en la solicitud siempre que cada política sea exclusiva. Por ejemplo, puede crear políticas de instancia para dualAuthDelete
y
allowedIP
en la misma solicitud.
Ejemplo
Esta solicitud falla debido a que se ha especificado más de una política de instancia.
# 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
}
}
]
}'
Respuesta JSON
{
"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 - Sólo se pueden restaurar las claves importadas
Mensaje
Only imported keys may be restored (Solo se pueden restaurar claves importadas)
Código de razón: KEY_IMPT_REQ_ERR
Código de estado HTTP
400 - Solicitud incorrecta
El código de estado de la respuesta HTTP 400 Bad Request
indica que el servidor no puede procesar o no procesará la solicitud debido a que algo se interpreta como un error del cliente (por ejemplo, sintaxis de solicitud con formato
erróneo, trama de mensajes de solicitud no válida o direccionamiento de solicitud defectuoso).
El cliente no debe repetir esta solicitud sin modificarla.
Contexto
Key Protect puede restaurar una clave raíz suprimida anteriormente, lo cual restaura el acceso a sus datos asociados en la nube.
Como administrador, es posible que tenga que restaurar una clave raíz que se haya importado en Key Protect para acceder a los datos que la clave protegía anteriormente.
Cuando se restaura una clave, la clave pasa del estado Destruido (valor de estado 5) al estado Activo (valor de estado 1) y se restaura el acceso a cualquier dato que se hubiera cifrado anteriormente con la clave.
Puede restaurar una clave suprimida en un plazo de 30 días a partir de su supresión. Esta función solo está disponible para las claves raíz que se han creado con el key material
, conocido también como "carga útil".
Solo puede restaurar las claves raíz que se han creado con el key material
mediante el mandato kp key create
con la opción -k, --key-material
. No se puede restaurar una clave raíz si no se ha especificado la opción --key-material
.
Si desea restaurar una clave raíz suprimida, debe guardar la
key material
que se ha utilizado para crear la clave raíz. No se puede restaurar una clave suprimida sin proporcionar el key material
original.
Ejemplo
Siga estos pasos para crear el error que indica que only imported keys may be restored
.
-
Cree una clave raíz sin material de clave (carga útil)
-
Suprimir la clave
-
Espere 30 segundos
-
Crear un material clave
-
Restaure la clave y proporcione un material de clave (carga útil)
# 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'"
}
]
}'
Respuesta JSON
{
"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 - La acción solicitada solo se puede completar...
Mensaje
La acción solicitada solo se puede completar con una clave raíz
Código de razón: KEY_ROOT_REQ_ERR
Código de estado HTTP
400 - Solicitud incorrecta
El código de estado de la respuesta HTTP 400 Bad Request
indica que el servidor no puede procesar o no procesará la solicitud debido a que algo se interpreta como un error del cliente (por ejemplo, sintaxis de solicitud con formato
erróneo, trama de mensajes de solicitud no válida o direccionamiento de solicitud defectuoso).
El cliente no debe repetir esta solicitud sin modificarla.
Contexto
Muchas "acciones" de clave solo se pueden realizar en las claves "raíz". Esta es la lista de mandatos que solo se pueden realizar en las claves raíz.
- inhabilitar clave
- habilitar clave
- restaurar clave
- rotar clave
- desenvolver clave
- envolver clave
Ejemplo
Este ejemplo crea una clave "estándar" y luego intenta inhabilitarla. Esta acción falla porque solo se pueden inhabilitar las claves "raíz".
# 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"
Respuesta JSON
{
"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 - La acción solicitada sólo se puede completar...
Mensaje
La acción solicitada solo se puede completar con una clave raíz
Código de razón: KEY_ROOT_REQ_REG_ERR
Código de estado HTTP
422 - Entidad no procesable
El código de estado HTTP de respuesta 422 Unprocessable Entity
indica que el servidor comprende el tipo de contenido de la entidad de la solicitud, y la sintaxis de la entidad de la solicitud es correcta, pero no ha podido procesar
las instrucciones que contiene.
El cliente no debe repetir esta solicitud sin modificarla.
Contexto
Este error se aplica a las claves utilizadas para los "Registros." Se necesita una clave "raíz" para crear un registro. Este error se devuelve cuando se realiza una solicitud API de creación de registro se realiza.
Los registros son asociaciones entre las claves raíz y otros recursos de nube, tales como los grupos de COS (Cloud Object Storage) o los despliegues de bases de datos de la nube.
Para obtener más información sobre los registros, consulte visualización de asociaciones entre claves raíz y recursos cifrados de IBM Cloud.
19 - El cambio solicitado no es compatible...
Mensaje
El cambio solicitado no cumple con las reglas de configuración
Código de razón: CONFIG_RULE_CONFLICT_ERR
Código de estado HTTP
403 - Prohibido
El código de respuesta HTTP 403 Forbidden
de estado de error del cliente indica que el servidor ha comprendido la solicitud pero se ha negado a autorizarla.
Este estado es similar al 401
, pero en este caso, volver a autenticar no tendrá diferencia alguna. El acceso está permanentemente prohibido y está vinculado a la lógica de la aplicación, por ejemplo a derechos insuficientes para
un recurso.
Contexto
Este mensaje de error se genera cuando una política de instancia impide el acceso a un recurso. Por ejemplo, si la solicitud se ha originado desde una dirección IP pública y la política de la instancia prohíbe el acceso desde una dirección IP pública, recibirá este mensaje de error.
20 - La firma no es válida
Mensaje
La firma no es válida
Código de razón: INVALID_SIG_EXP_ERR
Código de estado HTTP
422 - Entidad no procesable
El código de estado HTTP de respuesta 422 Unprocessable Entity
indica que el servidor comprende el tipo de contenido de la entidad de la solicitud, y la sintaxis de la entidad de la solicitud es correcta, pero no ha podido procesar
las instrucciones que contiene.
El cliente no debe repetir esta solicitud sin modificarla.
Contexto
Se ha producido un error cuando se ha envuelto de nuevo una clave.
Si obtiene este error, póngase en contacto con Soporte IBM
21 - La acción no se ha podido realizar en...
Mensaje
No se ha podido realizar la acción en la clave debido a que la clave ha caducado
Código de razón: KEY_EXPIRED_ERR
Código de estado HTTP
400 - Solicitud incorrecta
El código de estado de la respuesta HTTP 400 Bad Request
indica que el servidor no puede procesar o no procesará la solicitud debido a que algo se interpreta como un error del cliente (por ejemplo, sintaxis de solicitud con formato
erróneo, trama de mensajes de solicitud no válida o direccionamiento de solicitud defectuoso).
El cliente no debe repetir esta solicitud sin modificarla.
Contexto
Este error se genera cuando se restaura una clave suprimida después de que haya caducado la clave.
Ejemplo
Una solicitud key restore
falla debido a que se ha suprimido la clave y la clave ha caducado.
Los siguientes pasos crearán este error.
-
Crear un material de clave (carga útil) y una fecha de caducidad
-
Crear una clave raíz utilizando el material de clave y la fecha de caducidad
-
Capturar el ID de clave
-
Dejar que transcurra la fecha de caducidad
-
Suprimir la clave
-
Restaure la clave, lo cual falla debido a que no puede restaurar una clave suprimida después de la fecha de caducidad
# 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
}
]
}'
Respuesta JSON
{
"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'"
}
]
}'
Respuesta JSON
{
"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 - El nonce cifrado dado no coincide...
Mensaje
El valor de nonce cifrado proporcionado no coincide con ningún registro existente: Asegúrese de que se suministra el valor de nonce correcto en la solicitud
Código de razón: INCORRECT_NONCE_ERR
Código de estado HTTP
400 - Solicitud incorrecta
El código de estado de la respuesta HTTP 400 Bad Request
indica que el servidor no puede procesar o no procesará la solicitud debido a que algo se interpreta como un error del cliente (por ejemplo, sintaxis de solicitud con formato
erróneo, trama de mensajes de solicitud no válida o direccionamiento de solicitud defectuoso).
El cliente no debe repetir esta solicitud sin modificarla.
Contexto
Este mensaje de error se aplica a las interfaces de claves restore
y rotate
.
Este ejemplo se basa en el comando restore
key y utiliza el comando
CLI porque la salida es más fácil de seguir que la
API.
Paso 1: configure el problema creando una clave raíz mediante una señal de importación y luego suprima la clave
# 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
Paso 2 - active el error creando una señal de importación, que es necesaria para restaurar la clave, y luego restaure la clave
# 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 - La señal de importación ha caducado
Mensaje
La señal de importación ha caducado
Código de razón: IMPORT_TOKEN_EXPIRED_ERR
Código de estado HTTP
409 - Conflicto
El código de estado de la respuesta HTTP 409 Conflict
indica que existe un conflicto de solicitud con el estado actual del servidor.
Lo más probable es que los conflictos sean debidos a la respuesta a una solicitud PUT
. Por ejemplo, puede recibir una respuesta 409
al cargar un archivo que es más antiguo que el que ya está en el servidor, lo que
da lugar a un conflicto de control de la versión.
Contexto
Ejemplo 1
Mediante la API, cree una señal de importación, permita que caduque y luego intente recuperarla.
# 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
}'
Respuesta JSON
{
"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"
Respuesta JSON
{
"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"
}
]
}
]
}
Ejemplo 2
Mediante la CLI, cree una señal de importación, permita que caduque y luego intente recuperarla.
# 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 - La clave no se puede suprimir porque es...
Mensaje
No se puede suprimir la clave debido a que protege un recurso de nube que tiene una política de retención: Antes de suprimir esta clave, póngase en contacto con el propietario de una cuenta para eliminar la política de retención en cada recurso asociado a la clave
Código de razón: PREV_KEY_DEL_ERR
Código de estado HTTP
409 - Conflicto
El código de estado de la respuesta HTTP 409 Conflict
indica que existe un conflicto de solicitud con el estado actual del servidor.
Lo más probable es que los conflictos sean debidos a la respuesta a una solicitud PUT
. Por ejemplo, puede recibir una respuesta 409
al cargar un archivo que es más antiguo que el que ya está en el servidor, lo que
da lugar a un conflicto de control de la versión.
Contexto
Este error se genera cuando se suprime una clave, utilizada para "Registros".
En la mayoría de los casos, se puede suprimir una clave con registros utilizando la --force
.
Si el recurso registrado tiene establecido preventKeyDeletion
en true
, fallará una supresión forzada y se mostrará este mensaje de error.
En otras palabras, todos los registros deben tener preventKeyDeletion
establecido en false
.
Los registros son asociaciones entre las claves raíz y otros recursos de nube, tales como los grupos de COS (Cloud Object Storage) o los despliegues de bases de datos de la nube.
Para obtener más información sobre los registros, consulte visualización de asociaciones entre claves raíz y recursos cifrados de IBM Cloud.
25 - La clave no está habilitada para la autorización dual y...
Mensaje
La clave no está habilitada para la autenticación dual y no se puede establecer para la supresión
Código de razón: NOT_DUAL_AUTH_ERR
Código de estado HTTP
409 - Conflicto
El código de estado de la respuesta HTTP 409 Conflict
indica que existe un conflicto de solicitud con el estado actual del servidor.
Lo más probable es que los conflictos sean debidos a la respuesta a una solicitud PUT
. Por ejemplo, puede recibir una respuesta 409
al cargar un archivo que es más antiguo que el que ya está en el servidor, lo que
da lugar a un conflicto de control de la versión.
Contexto
Este error se produce cuando intenta autorizar una supresión o eliminar una autorización y la clave no tiene una política de dual authorization
.
En estos ejemplos se muestra el error utilizando la API y la CLI.
Ejemplo 1
Este ejemplo intenta autorizar una supresión y eliminar una autorización utilizando la API.
# 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
}
]
}'
Respuesta JSON
{
"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
}
]
}
Autorice la supresión de una clave con la política de autorización dual.
# 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"
Respuesta JSON
{
"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"
}
]
}
]
}
Elimine una autorización de una clave con una política de autorización dual.
# 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"
Respuesta JSON
{
"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"
}
]
}
]
}
Ejemplo 2
Este ejemplo intenta autorizar una supresión y eliminar una autorización mediante la CLI.
Nota: $KEY_ID
se ha establecido en el ejemplo anterior.
# 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 - La clave se ha actualizado recientemente
Mensaje
La clave se ha actualizado recientemente: Espere y vuelva a intentarlo
Código de razón: REQ_TOO_EARLY_ERR
Código de estado HTTP
409 - Conflicto
El código de estado de la respuesta HTTP 409 Conflict
indica que existe un conflicto de solicitud con el estado actual del servidor.
Lo más probable es que los conflictos sean debidos a la respuesta a una solicitud PUT
. Por ejemplo, puede recibir una respuesta 409
al cargar un archivo que es más antiguo que el que ya está en el servidor, lo que
da lugar a un conflicto de control de la versión.
Contexto
Este error se produce cuando se enable
o se restore
una clave durante los 30 segundos posteriores a la última acción.
Debe esperar al menos 30 segundos entre la última "acción" y la habilitación o restauración de una clave.
Este ejemplo falla debido a que la clave se ha habilitado demasiado pronto después de inhabilitar una clave.
# 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 - El texto cifrado proporcionado no es válido o...
Mensaje
El texto cifrado suministrado no es válido o está dañado
Código de razón: UNPROCESSABLE_CIPHERTEXT_ERR
Código de estado HTTP
422 - Entidad no procesable
El código de estado HTTP de respuesta 422 Unprocessable Entity
indica que el servidor comprende el tipo de contenido de la entidad de la solicitud, y la sintaxis de la entidad de la solicitud es correcta, pero no ha podido procesar
las instrucciones que contiene.
El cliente no debe repetir esta solicitud sin modificarla.
Contexto
Normalmente, esto significa que el módulo de seguridad de hardware (HSM) no ha podido procesar los datos debido a que la entrada no era válida.
Este error se devuelve cuando hay un error interno.
Si obtiene este error, póngase en contacto con Soporte IBM
28 - El nonce cifrado proporcionado no era...
Mensaje
El valor de nonce cifrado suministrado no estaba cifrado con el material de clave proporcionado O el IV proporcionado no coincide con el valor de nonce cifrado
Código de razón: INCORRECT_NONCE_IV_ERR
Código de estado HTTP
400 - Solicitud incorrecta
El código de estado de la respuesta HTTP 400 Bad Request
indica que el servidor no puede procesar o no procesará la solicitud debido a que algo se interpreta como un error del cliente (por ejemplo, sintaxis de solicitud con formato
erróneo, trama de mensajes de solicitud no válida o direccionamiento de solicitud defectuoso).
El cliente no debe repetir esta solicitud sin modificarla.
Contexto
Normalmente, esto significa que el módulo de seguridad de hardware (HSM) no ha podido procesar los datos debido a que la entrada no era válida.
Este error se devuelve cuando hay un error interno.
Si obtiene este error, póngase en contacto con Soporte IBM
29 - El recurso o recursos consultados no pertenecen al servicio
Mensaje
El o los recursos consultados no pertenecen al servicio
Código de razón: RESOURCE_OWNER_ERR
Código de estado HTTP
403 - Prohibido
El código de respuesta HTTP 403 Forbidden
de estado de error del cliente indica que el servidor ha comprendido la solicitud pero se ha negado a autorizarla.
Este estado es similar al 401
, pero en este caso, volver a autenticar no tendrá diferencia alguna. El acceso está permanentemente prohibido y está vinculado a la lógica de la aplicación, por ejemplo a derechos insuficientes para
un recurso.
Contexto
Este mensaje de error se genera en una solicitud de servicio a servicio. El servicio intenta suprimir una clave, lo cual no está permitido. Es decir, otro servicio no puede suprimir una clave de Key Protect.
Un ejemplo del uso del acceso de servicio a servicio es un usuario que configura un grupo de COS (CloudObject Storage) para cifrar sus datos utilizando una clave de Key Protect.
Utilizando el ejemplo de COS, COS no puede suprimir la clave utilizada para cifrar datos.
30 - Esta acción sólo puede ser realizada por un servicio...
Mensaje
Esta acción solo la puede realizar un servicio (servicio a servicio)
Código de razón: SERVICE_ONLY_ERR
Código de estado HTTP
403 - Prohibido
El código de respuesta HTTP 403 Forbidden
de estado de error del cliente indica que el servidor ha comprendido la solicitud pero se ha negado a autorizarla.
Este estado es similar al 401
, pero en este caso, volver a autenticar no tendrá diferencia alguna. El acceso está permanentemente prohibido y está vinculado a la lógica de la aplicación, por ejemplo a derechos insuficientes para
un recurso.
Contexto
Algunas acciones, como por ejemplo la creación de un "registro", solo las puede realizar otro servicio, en lo que se denomina una solicitud de servicio a servicio.
Por ejemplo, si configura un grupo de Cloud Object Storage (COS) para cifrar datos utilizando una clave de Key Protect, el servicio COS debe crear el registro.
Se necesita una solicitud de servicio a servicio para crear, suprimir, sustituir o actualizar un registro.
Consulte estos recursos para obtener más información sobre los registros.
31 - Esta acción no está permitida en este...
Mensaje
Esta acción no está permitida en este recurso: Póngase en contacto con IBM Key Protect o abra un ticket de servicio para habilitar esta característica
Código de razón: FEATURE_RESTRICTED_ERR
Código de estado HTTP
403 - Prohibido
El código de respuesta HTTP 403 Forbidden
de estado de error del cliente indica que el servidor ha comprendido la solicitud pero se ha negado a autorizarla.
Este estado es similar al 401
, pero en este caso, volver a autenticar no tendrá diferencia alguna. El acceso está permanentemente prohibido y está vinculado a la lógica de la aplicación, por ejemplo a derechos insuficientes para
un recurso.
Contexto
Está intentando crear, actualizar o utilizar una política de instancia con una característica que no recibe soporte.
Por ejemplo, se ha creado la política de instancia para un rango de direcciones allowedIp
, que solo da soporte a direcciones IPv4. A continuación, ha realizado una solicitud para la instancia con una dirección IPv6, lo cual devuelve
este error.
32 - Esta solicitud requiere que la versión de clave...
Mensaje
Esta solicitud requiere que la versión de la clave sea posterior a la versión de la clave de registro actual
Código de razón: KEY_VERSION_INVALID
Código de estado HTTP
422 - Entidad no procesable
El código de estado HTTP de respuesta 422 Unprocessable Entity
indica que el servidor comprende el tipo de contenido de la entidad de la solicitud, y la sintaxis de la entidad de la solicitud es correcta, pero no ha podido procesar
las instrucciones que contiene.
El cliente no debe repetir esta solicitud sin modificarla.
Contexto
Este error se aplica a las claves utilizadas para los "Registros."
Cuando un servicio, como por ejemplo COS (Cloud Object Storage), intenta sustituir o restaurar una clave, comprueba la indicación de fecha y hora de la clave.
Si la indicación de fecha y hora de la clave es anterior a la indicación de fecha y hora de la clave utilizada por el registro, se genera este error.
La clave utilizada para comprar el servicio debe tener una indicación de fecha y hora igual o posterior a la de la clave de registro.
Los registros son asociaciones entre las claves raíz y otros recursos de nube, tales como los grupos de COS (Cloud Object Storage) o los despliegues de bases de datos de la nube.
Para obtener más información sobre los registros, consulte visualización de asociaciones entre claves raíz y recursos cifrados de IBM Cloud.
33 - Esta clave raíz se ha rotado en...
Mensaje
Esta clave de raíz se ha rotado dentro de la última hora: Sólo se permite una acción 'rotate' por hora
Código de razón: KEY_ROTATION_NOT_PERMITTED
Código de estado HTTP
409 - Conflicto
El código de estado de la respuesta HTTP 409 Conflict
indica que existe un conflicto de solicitud con el estado actual del servidor.
Lo más probable es que los conflictos sean debidos a la respuesta a una solicitud PUT
. Por ejemplo, puede recibir una respuesta 409
al cargar un archivo que es más antiguo que el que ya está en el servidor, lo que
da lugar a un conflicto de control de la versión.
Contexto
Una clave raíz se puede rotar una vez por hora como máximo. El intento de rotar una clave raíz antes de una hora devuelve este mensaje de error.
# 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'"
}'
Respuesta JSON
{
"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 - Esta clave raíz se ha creado con el valor proporcionado por el usuario...
Mensaje
Esta clave raíz se ha creado con el material de clave suministrado por el usuario: El material de clave es necesario para realizar una acción 'rotar'
Código de razón: KEY_PAYLOAD_REQ_ERR
Código de estado HTTP
400 - Solicitud incorrecta
El código de estado de la respuesta HTTP 400 Bad Request
indica que el servidor no puede procesar o no procesará la solicitud debido a que algo se interpreta como un error del cliente (por ejemplo, sintaxis de solicitud con formato
erróneo, trama de mensajes de solicitud no válida o direccionamiento de solicitud defectuoso).
El cliente no debe repetir esta solicitud sin modificarla.
Contexto
Si se ha creado una clave raíz con un material de clave (carga útil), se debe especificar un material de clave para rotar la clave.
# 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"
Respuesta JSON
{
"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"
}
}
]
}
]
}
Clasificados por orden de código de estado de HTTP
Estos son los mensajes de error, ordenados por código de estado de HTTP.
HTTP 400 - Solicitud incorrecta
-
El total de recopilación no coincide con el número de recursos - detalles
-
Los datos del cuerpo no coinciden con los datos que requiere el parámetro de consulta - detalles
-
Ha fallado la extracción del asunto de la señal portadora: Asegúrese de que la señal portadora que se ha pasado sea la correcta (y tenga el formato correcto) y de que tiene los permisos necesarios para realizar las acciones solicitadas - detalles
-
Se han pasado datos de cuerpo no válidos: Asegúrese de que los datos que se han pasado tengan el formato válido y no contengan caracteres no válidos - detalles
-
Error de campo no válido: para la envoltura
The field 'plaintext' must be: a base64 encoded key material
si se pasa texto sin formato no válido en la solicitud; yThe field 'ciphertext' must be: the original base64 encoded ciphertext from the wrap operation
para desenvolver si se pasa un texto cifrado no válido. - detalles -
La restauración de claves ha caducado - detalles
-
Falta de cuerpo en la solicitud - detalles
-
Solo se puede crear una única política de instancia por parámetro de consulta: Pase un solo objeto de recurso - detalles
-
Sólo se pueden restaurar las claves importadas - detalles
-
La acción solicitada sólo se puede completar con una clave raíz - detalles
-
No se ha podido realizar la acción en la clave debido a que la clave ha caducado - detalles
-
El valor de nonce cifrado proporcionado no coincide con ningún registro existente: Asegúrese de que se ha suministrado el valor de nonce correcto en la solicitud - detalles
-
El valor de nonce cifrado suministrado no estaba cifrado con el material de clave proporcionado O el IV proporcionado no coincide con el valor del nonce cifrado - detalles
-
Esta clave raíz se ha creado con el material de clave suministrado por el usuario: El material de clave es necesario para realizar una acción 'rotate' - detalles
HTTP 401 - No autorizado
- No autorizado: El usuario no tiene acceso al recurso especificado - detalles
HTTP 403 - Prohibido
-
El cambio solicitado no es compatible con las reglas de configuración - detalles
-
El o los recursos consultados no pertenecen al servicio - detalles
-
Esta acción solo la puede realizar un servicio (de servicio a servicio) - detalles
-
Esta acción no está permitida en este recurso: Póngase en contacto con IBM Key Protect o abra un tíquet de servicio para habilitar esta característica - detalles
HTTP 409 - Conflicto
-
La clave no está en un estado válido - detalles
-
La clave está protegiendo uno o más recursos de nube - detalles
-
La política de instancia KeyCreateImportAccess no permite esta acción - detalles
-
No se cumple el número de autorizaciones necesarias para suprimir - detalles
-
La señal de importación ha caducado - detalles
-
No se puede suprimir la clave debido a que protege un recurso de nube que tiene una política de retención: Antes de suprimir esta clave, póngase en contacto con el propietario de una cuenta para eliminar la política de retención en cada recurso asociado a la clave - detalles
-
La clave no está habilitada para la autenticación dual y no se puede establecer para suprimir - detalles
-
La clave se ha actualizado recientemente: Espere y vuelva a intentarlo - detalles
-
Esta clave raíz se ha rotado durante la última hora: Solo se permite una acción 'rotate' por hora - detalles
HTTP 410 - Ausente
- Esta clave ya se ha suprimido, Suprima las referencias a esta clave - detalles
HTTP 422 - Entidad no procesable
-
La clave no está en un estado válido - detalles
-
La acción solicitada sólo se puede completar con una clave raíz - detalles
-
La firma no es válida detalles
-
El texto cifrado suministrado no es válido o está dañado - detalles
-
Esta solicitud requiere que la versión de clave sea posterior a la versión de la clave de registro actual - detalles
HTTP 500 - Error interno del servidor
- Los metadatos de la clave están dañados: Suprima esta clave - detalles
Ordenados por código de razón
Esta sección ordena los mensajes de error por el código de razón.
- AUTHORIZATIONS_NOT_MET - detalles
- BAD_BODY_ERR - detalles
- BEARER_SUB_EXTRACTION_ERR - detalles
- BODY_QUERY_PARAM_MISMATCH_ERR - detalles
- COLLECTION_TOTAL_MISMATCH_ERR - detalles
- CONFIG_RULE_CONFLICT_ERR detalles
- FEATURE_RESTRICTED_ERR - detalles
- IMPORT_TOKEN_EXPIRED_ERR - detalles
- INCOMPLETE_METADATA_ERR - detalles
- INCORRECT_NONCE_ERR - detalles
- INCORRECT_NONCE_IV_ERR - detalles
- INVALID_FIELD_ERR - detalles
- INVALID_SIG_EXP_ERR detalles
- KEY_ACTION_INVALID_STATE_ERR - detalles
- KEY_CREATE_IMPORT_ACCESS_ERR - detalles
- KEY_DELETED_ERR - detalles
- KEY_EXPIRED_ERR - detalles
- KEY_IMPT_REQ_ERR - detalles
- KEY_INVALID_STATE_ERR - detalles
- KEY_PAYLOAD_REQ_ERR - detalles
- KEY_RESTORE_EXPIRED - detalles
- KEY_ROOT_REQ_ERR - detalles
- KEY_ROOT_REQ_REG_ERR - detalles
- KEY_ROTATION_NOT_PERMITTED - detalles
- KEY_VERSION_INVALID - detalles
- NO_BODY_ERR - detalles
- NOT_DUAL_AUTH_ERR - detalles
- NUM_COLLECTION_RESOURCE_ERR - detalles
- PREV_KEY_DEL_ERR - detalles
- PROTECTED_RESOURCE_ERR - detalles
- REQ_TOO_EARLY_ERR - detalles
- RESOURCE_OWNER_ERR - detalles
- SERVICE_ONLY_ERR - detalles
- UNAUTHORIZED_ERR - detalles
- UNPROCESSABLE_CIPHERTEXT_ERR - detalles