エラー・メッセージ
これらのエラー・メッセージは Key Protect によって作成され、ユーザー・インターフェース (UI) に表示されます。
ほとんどのエラー・メッセージには、要求と応答が表示される 1 つ以上の例があります (通常は curl
)。
これはエラー・メッセージの全リストではありません。 一部のメッセージは、ID およびアクセス管理 (IAM) などの他のシステムによって作成され、エラー・メッセージは IAM などの別のシステムから Key Protect にユーザーに渡されます。
目次
目次は、エラー・メッセージによってソートされます。
-
最初のリストは、エラー・メッセージを HTTP 状況コードでソートします。
-
別のリストは、エラー・メッセージを理由コードでソートします。
エラー・メッセージの中には、エラー・メッセージの末尾に HTTP 状況コードが含まれている場合に、複数回発生するエラー・メッセージがあります。
- コレクションの合計が数値と一致しません... 詳細
- 本体のデータが必要なデータと一致しません... 詳細
- ベアラーからサブジェクトを抽出しています... 詳細
- 無効な本文データが渡されました... 詳細
- 無効なフィールド・エラー... 詳細
- 鍵を削除できませんでした... 詳細
- 鍵は既に削除されています... 詳細
- 鍵が有効な状態ではありません (409) 詳細
- 鍵が有効な状態ではありません (422) 詳細
- 鍵は 1 つ以上のクラウドを保護しています... 詳細
- 鍵メタデータが破損しました... 詳細
- 鍵回復の有効期限が切れました 詳細
- KeyCreateImportAccess インスタンス・ポリシー... 詳細
- 要求に本体がありません 詳細
- 必要な権限の数... 詳細
- 単一のインスタンス・ポリシーは 1 つのみが... 詳細
- インポートされた鍵のみを復元できます 詳細
- 要求されたアクションは、ルート鍵を使用してのみ完了できます (400) 詳細
- 要求されたアクションは、ルート鍵を使用してのみ完了できます (422) 詳細
- 要求された変更は構成ルールに従っていません 詳細
- 署名が無効です 詳細
- アクションを実行できませんでした... 詳細
- 指定された暗号化された nonce が一致しません... 詳細
- インポート・トークンの有効期限が切れました 詳細
- 鍵は削除できません... 詳細
- 鍵の二重認証が有効になっていません... 詳細
- 鍵は更新されたばかりでした 詳細
- 指定された暗号文が無効であるか、または... 詳細
- 指定された暗号化された nonce が... 詳細
- 照会されたリソースはサービスに属していません。 詳細
- このアクションはサービスによってのみ実行できます... 詳細
- このアクションはこれでは許可されていません... 詳細
- この要求には鍵のバージョンが必要です... 詳細
- このルート鍵は内でローテートされています... 詳細
- このルート鍵はユーザー指定で作成されました... 詳細
- 無許可: ユーザーには... 詳細
1 - コレクションの合計が...
メッセージ
コレクションの合計がリソースの数と一致しません
理由コード: COLLECTION_TOTAL_MISMATCH_ERR
HTTP 状況コード
400 - 不正な要求
HTTP 応答状況コード 400 Bad Request
は、クライアント・エラー (誤った形式の要求構文、無効な要求メッセージ・フレーム、偽りの要求ルーティングなど) が原因で、サーバーが要求を処理できない、または処理しないことを示しています。
お客様は、変更を行うことなくこの要求を繰り返さないでください。
context
このエラーは、 インスタンスポリシー が作成された際に発生します。
metadata.collectionTotal
フィールドの値が、resources
配列内のリソースの数と一致していません。
create instance policy
要求は、以下の理由で失敗します。
metadata.collectionTotal
は 2 ですが、1 つのリソースが提供されました。
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
}
}
]
}'
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 - 本体のデータが...
メッセージ
本体のデータが照会パラメーターに必要なデータと一致しません
理由コード: BODY_QUERY_PARAM_MISMATCH_ERR
HTTP 状況コード
400 - 不正な要求
HTTP 応答状況コード 400 Bad Request
は、クライアント・エラー (誤った形式の要求構文、無効な要求メッセージ・フレーム、偽りの要求ルーティングなど) が原因で、サーバーが要求を処理できない、または処理しないことを示しています。
お客様は、変更を行うことなくこの要求を繰り返さないでください。
context
このエラーは、 インスタンスポリシー が作成された際に発生します。
ポリシー dualAuthDelete, allowedNetwork,、または allowedIP )を指定するクエリパラメータが、最初の policy_type
に一致しない。 resources
アレイ。
create instance policy
照会パラメーター (dualAuthDelete) が policy
(badName) と一致しないため、resources.policy_type
要求は失敗します。
# 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 応答
{
"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 - ベアラー・トークンからのサブジェクトの抽出に...
メッセージ
ベアラー・トークンからのサブジェクトの抽出に失敗しました。渡されたベアラー・トークンが正しいものであり (形式も問題ないものであり)、要求されたアクションの実行を許可されていることを確認してください
理由コード: BEARER_SUB_EXTRACTION_ERR
HTTP 状況コード
400 - 不正な要求
HTTP 応答状況コード 400 Bad Request
は、クライアント・エラー (誤った形式の要求構文、無効な要求メッセージ・フレーム、偽りの要求ルーティングなど) が原因で、サーバーが要求を処理できない、または処理しないことを示しています。
お客様は、変更を行うことなくこの要求を繰り返さないでください。
context
ID およびアクセス管理 (IAM) アクセス・トークンまたは形式が無効でした。 これが curl 要求の場合は、以下の形式を使用して authorization ヘッダーを設定する必要があります。
-H "authorization: Bearer $ACCESS_TOKEN"
使用しているプラットフォーム (Linux、Mac、Windows) またはシェル (bash、sh、zsh) によっては、単一引用符と二重引用符の使用を認識する必要があります。 一部のシステムでは、単一引用符で囲まれた変数が解釈されません。 例えば、('Bearer $ACCESS_TOKEN
') では、$ACCESS_TOKEN
を値に置き換えることができません。
有効な IAM トークンを指定していることを確認してください。 トークンの有効期限が切れている場合は、(再) ログインが必要になることがあります。 ここでは、ログインしてアクセス・トークンを設定するためのコマンド・ライン・インターフェース (CLI) コードの数行を示します。
# 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 - 無効な本体データが渡されました...
メッセージ
無効な本体データが渡されました。渡されたデータが無効文字を含まない、正しい形式のものであることを確認してください
理由コード: BAD_BODY_ERR
HTTP 状況コード
400 - 不正な要求
HTTP 応答状況コード 400 Bad Request
は、クライアント・エラー (誤った形式の要求構文、無効な要求メッセージ・フレーム、偽りの要求ルーティングなど) が原因で、サーバーが要求を処理できない、または処理しないことを示しています。
お客様は、変更を行うことなくこの要求を繰り返さないでください。
context
このエラーの例を以下に示します。
-
インスタンス・ポリシーを作成します
- 各ポリシーを 1 つのみ作成できます
resources
セクションが指定されていませんresources
セクション内の関係のないフィールド (例 1 を参照)
-
鍵の作成
- 1 つのリソースが必要です (例 2 を参照)
- メタデータが空です (例 3 を参照)
- 鍵の値がゼロであるか、鍵が空です
例 1
リソースに余分なフィールド (create instance policy
) が含まれているため、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"
}
]
}'
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"
}
]
}
]
}
例 2
複数のリソースが存在するため、この create key
要求は失敗します。
# 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 応答
{
"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"
}
]
}
]
}
例 3
metadata
が空であるため、この create key 要求は失敗します。
# 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 応答
{
"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 - 無効な鍵のエラー...
メッセージ
鍵をラップするときに、無効なプレーン・テキストを要求で渡すと、メッセージ The field 'plaintext' must be: a base64 encoded key material
が表示されます。
鍵をアンラップするときに、無効な暗号文を渡すと、メッセージ The field 'ciphertext' must be: the original base64 encoded ciphertext from the wrap operation
が表示されます。
HTTP 状況コード
400
context
鍵をラップする要求の失敗例:
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;",
}'
応答:
{
"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"
}
}
]
}
]
}
鍵をアンラップする要求の失敗例:
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"
}'
応答:
{
"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 - 鍵を削除できませんでした...
HTTP 状況コード
409 - 競合
HTTP 409 Conflict
クライアント・エラー応答コードは、クライアント要求に含まれるエラーを、示されている戻り理由コードに従って解決できることを示しています。
context
具体的な状況を示す理由がメッセージに含まれて返されます。
メッセージ
理由コード: AUTHORIZATIONS_NOT_MET
二重許可要求に失敗したので、鍵を削除できません。 この鍵を削除する前に、二重許可手順に従っていることを確認してください。 二重許可を使用した鍵の削除のトピックを参照してください。
理由コード: PROTECTED_RESOURCE_ERR
鍵に関連付けられているリソースが 1 つ以上存在するので、鍵を削除できません。 鍵を削除およびパージする前の考慮事項のトピックを参照してください。
理由コード: PREV_KEY_DEL_ERR
鍵で保護されているクラウド・リソースに保存ポリシーがあるので、鍵を削除できません。 この鍵を削除する前に、アカウント所有者に連絡して、鍵に関連付けられている各リソースの保存ポリシーを削除してください。 鍵を削除およびパージする前の考慮事項のトピックを参照してください。
応答例 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"
}
]
}
]
}
応答例 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"
}
]
}
]
}
応答例 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 - 鍵は、既に削除されています...
メッセージ
鍵は、既に削除されています。この鍵への参照を削除してください
理由コード: KEY_DELETED_ERR
HTTP 状況コード
410 - 削除済み
HTTP クライアント・エラー応答コード 410 Gone
は、起点サーバーでターゲット・リソースにアクセスできなくなっていること、およびこの状態が永続的なものである可能性が高いことを示しています。
この状態が一時的なのか、永続的なのかが分からない場合は、代わりに 404 状況コードが使用されます。
410
応答は、デフォルトではキャッシュ可能です。
context
鍵が以前に削除されているため、delete key
要求は失敗します。 鍵を複数回削除することはできません。
例
# 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 応答
{
"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 - 鍵が有効な状態ではありません
メッセージ
鍵が有効な状態ではありません
理由コード: KEY_ACTION_INVALID_STATE_ERR
HTTP 状況コード
409 - 競合
HTTP 応答状況コード 409 Conflict
は、要求がサーバーの現在の状態と競合することを示しています。
競合は、PUT
要求への応答として発生する可能性が高いです。 例えば、サーバー上に既に存在しているファイルより古いファイルをアップロードすると、バージョン管理の競合が発生して、409
応答を受け取ることがあります。
context
このエラーは、鍵に対して「アクション」が実行され、鍵の状態が有効でない場合に発生します。
次のアクションが考えられます。
-
ラップ、アンラップ、ローテート、削除する鍵の設定 (二重許可)、削除する鍵の設定解除 (二重許可)、または鍵の無効化を行うには、鍵の状態がアクティブ (状態値は 1) である必要があります
-
このエラーは、有効期限が切れた鍵 (状態値は 3) を有効にしようとしたり、破棄された鍵 (状態値は 5) を復元しようとしたりすると発生します
例 1
以前に無効にした鍵を無効にすることはできないため、key disable
要求は失敗します。
# 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 応答
{
"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"
}
]
}
]
}
例 2
鍵の有効期限が切れており、鍵の状態を無効 (状態値は 3) から有効 (状態値は 1) に変更しようとしているため、key disable
要求は失敗します。
以下のステップでは、key has been disabled
エラーが返されます。
-
有効期限を指定して鍵を作成します
-
有効期限が過ぎることを許可します
-
鍵を有効にします
# 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 応答
{
"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 応答
{
"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 - 鍵が有効な状態ではありません
メッセージ
鍵が有効な状態ではありません
理由コード: KEY_INVALID_STATE_ERR
HTTP 状況コード
422 - 処理できないエンティティー
HTTP 応答状況コード 422 Unprocessable Entity
は、サーバーが要求エンティティーのコンテンツ・タイプを認識しており、要求エンティティーの構文が正しいのに含まれている命令を処理できなかったことを示しています。
お客様は、変更を行うことなくこの要求を繰り返さないでください。
context
このエラーは、「登録」に使用される鍵に適用されます。
鍵をクラウド・リソースに登録する場合は、鍵の状態がアクティブ (状態値は 1) である必要があります。
登録は、ルート鍵とその他のクラウド・リソース (Cloud Object Storage (COS) バケットや Cloud Databases デプロイメントなど) との間の関連付けです。
登録について詳しくは、ルート鍵と暗号化された IBM Cloud リソースとの間の関連の表示を参照してください。
9 - 鍵は 1 つ以上の...
メッセージ
鍵は 1 つ以上のクラウド・リソースを保護しています
理由コード: PROTECTED_RESOURCE_ERR
HTTP 状況コード
409 - 競合
HTTP 応答状況コード 409 Conflict
は、要求がサーバーの現在の状態と競合することを示しています。
競合は、PUT
要求への応答として発生する可能性が高いです。 例えば、サーバー上に既に存在しているファイルより古いファイルをアップロードすると、バージョン管理の競合が発生して、409
応答を受け取ることがあります。
context
このエラーは、「登録」に使用される鍵に適用されます。
クラウドリソースに登録されているキーは、それを削除しない限り削除できません
force
オプションが指定されている。
別のクラウド・リソースに登録されているルート鍵を削除するには、force
オプションを使用する必要があります。
登録は、ルート鍵とその他のクラウド・リソース (Cloud Object Storage (COS) バケットや Cloud Databases デプロイメントなど) との間の関連付けです。
登録について詳しくは、ルート鍵と暗号化された IBM Cloud リソースとの間の関連の表示を参照してください。
他のクラウドリソースに登録されているキーを削除する 説明を参照してください(
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 - 鍵のメタデータが壊れました...
メッセージ
鍵のメタデータが壊れました。この鍵を削除してください
理由コード: INCOMPLETE_METADATA_ERR
HTTP 状況コード
500 - 内部サーバー・エラー
HTTP サーバー・エラー応答コード 500 Internal Server
は、サーバーが要求を満たすことができない予期しない状態を検出したことを示しています。
このエラー応答は、汎用の「catch-all」応答です。 通常、これはサーバーがより良い 5xx エラー・コードを検出して応答できないことを示します。 サーバー管理者は、エラーが今後発生しないようにするため、500 状況コードなどのエラー応答を要求についての詳細とともにログに記録することがあります。
context
このエラーは、内部エラーが発生すると返されます。
このエラーが発生した場合は、 IBM
11 - 鍵回復の有効期限が切れました
メッセージ
鍵回復の有効期限が切れました
理由コード: KEY_RESTORE_EXPIRED
HTTP 状況コード
400 - 不正な要求
HTTP 応答状況コード 400 Bad Request
は、クライアント・エラー (誤った形式の要求構文、無効な要求メッセージ・フレーム、偽りの要求ルーティングなど) が原因で、サーバーが要求を処理できない、または処理しないことを示しています。
お客様は、変更を行うことなくこの要求を繰り返さないでください。
context
このエラーは、30 日より前に削除された鍵を復元しようとすると発生します。
12 - KeyCreateImportAccess インスタンス・ポリシー...
メッセージ
KeyCreateImportAccess インスタンス・ポリシーではこのアクションは許可されていません
理由コード: KEY_CREATE_IMPORT_ACCESS_ERR
HTTP 状況コード
409 - 競合
HTTP 応答状況コード 409 Conflict
は、要求がサーバーの現在の状態と競合することを示しています。
競合は、PUT
要求への応答として発生する可能性が高いです。 例えば、サーバー上に既に存在しているファイルより古いファイルをアップロードすると、バージョン管理の競合が発生して、409
応答を受け取ることがあります。
context
KeyCreateImportAccess
インスタンス・ポリシーが有効化されていたため、鍵を作成 またはインポートする要求は許可されませんでした。
例えば、このインスタンス・ポリシーでは標準鍵の作成が許可されていないため、 標準鍵を作成する要求は拒否されました。
例
以下のステップを実行すると、このエラーが返されます。
-
インスタンス・ポリシーを有効にして、標準鍵を作成できないようにする
-
標準鍵を作成しようとするが、作成できない
-
インスタンス・ポリシーを削除 (無効化) することで、標準鍵を作成できるようにする
-
標準鍵を正常に作成する
# 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
}
]
}'
ibmcloud API からの JSON 応答
{
"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"
}
]
}
]
}
ステップ 3 と 4 を実行すると、keyCreateImportAccess
ポリシーが無効化されて、 標準鍵が正常に作成されます。
# 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
}
]
}'
ibmcloud API からの JSON 応答
{
"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 - 要求に本体がありません
メッセージ
要求に本体がありません
理由コード: NO_BODY_ERR
HTTP 状況コード
400 - 不正な要求
HTTP 応答状況コード 400 Bad Request
は、クライアント・エラー (誤った形式の要求構文、無効な要求メッセージ・フレーム、偽りの要求ルーティングなど) が原因で、サーバーが要求を処理できない、または処理しないことを示しています。
お客様は、変更を行うことなくこの要求を繰り返さないでください。
context
このエラーは、鍵を「再ラップ」または「アンラップ」し、本体がない場合に発生します。
例
以下のステップでは、missing body in request
エラーが返されます。
-
ルート・キーの作成
-
データ暗号鍵 (DEK) を作成します。これは
plaintext
です -
DEK をルート鍵でラップします。これにより、
ciphertext
が作成されます -
本体がないため、元の DEK (プレーン・テキスト) を表示するために新しい暗号文をアンラップする要求が失敗します
-
本体が指定されているため、元の DEK (プレーン・テキスト) を表示するために新しい暗号文をアンラップする要求が成功します
# 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 応答
{
"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 応答
{
"plaintext": "2eLAD3LyD3H2bq8dIDAy0A/lN9DSE/Ne3bwu40CdErs=",
"keyVersion": {
"id": "66ffaf5b-86c8-4a50-8a2a-920ae71f86dc"
}
}
15 - インスタンス・ポリシーを 1 つだけ...
メッセージ
照会パラメーターごとにインスタンス・ポリシーを 1 つだけ作成できます。単一のリソース・オブジェクトを渡してください
理由コード: NUM_COLLECTION_RESOURCE_ERR
HTTP 状況コード
400 - 不正な要求
HTTP 応答状況コード 400 Bad Request
は、クライアント・エラー (誤った形式の要求構文、無効な要求メッセージ・フレーム、偽りの要求ルーティングなど) が原因で、サーバーが要求を処理できない、または処理しないことを示しています。
お客様は、変更を行うことなくこの要求を繰り返さないでください。
context
同じポリシーが複数回指定されたため、create instance policy
要求は失敗します。
各ポリシーが固有になる限り、要求に複数のポリシーを指定できます。 例えば、 dualAuthDelete
のインスタンス・ポリシーを作成し、 同じ要求内の allowedIP
。
例
複数のインスタンス・ポリシーが指定されたため、この要求は失敗しました。
# 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 応答
{
"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 - インポートされた鍵のみを復元できます
メッセージ
インポートされた鍵のみを復元できます
理由コード: KEY_IMPT_REQ_ERR
HTTP 状況コード
400 - 不正な要求
HTTP 応答状況コード 400 Bad Request
は、クライアント・エラー (誤った形式の要求構文、無効な要求メッセージ・フレーム、偽りの要求ルーティングなど) が原因で、サーバーが要求を処理できない、または処理しないことを示しています。
お客様は、変更を行うことなくこの要求を繰り返さないでください。
context
Key Protect は、以前に削除されたルート鍵を復元できます。これにより、クラウド内のルート鍵の関連データへのアクセス権限が復元されます。
管理者として、以前に保護されていた鍵のデータにアクセスするために、 Key Protect にインポートされたルート鍵を復元する必要がある場合があります。
鍵を復元するときに、鍵を_破棄_ (状態値は 5) から アクティブ (状態値は 1) の鍵の状態に移動し、その鍵を使用して以前に暗号化されたすべてのデータへのアクセスを復元します。
削除された鍵は、削除から 30 日以内は復元できます。 この機能は、key material
(「ペイロード」とも呼ばれる) を使用して作成されたルート鍵に対してのみ使用可能です。
key material
を使用して作成されたルート鍵は、kp key create
オプションを指定した -k, --key-material
コマンドを使用して復元できます。 --key-material
オプションが指定されていない場合、ルート鍵を復元することは_できません_。
削除されたルート鍵を復元する場合は、以下を保存する 必要があります。 ルート鍵の作成に使用された key material
。 元のkey material
を提供せずに削除された鍵を復元することは_できません_。
例
only imported keys may be restored
エラーを作成するには、以下のステップを実行します。
-
鍵素材 (ペイロード) を使用せずにルート鍵を作成します
-
キーの削除
-
30 秒間スリープ状態にします
-
鍵素材を作成します
-
鍵を復元し、鍵素材 (ペイロード) を指定します
# 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 応答
{
"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 - 要求されたアクションは、...
メッセージ
要求されたアクションは、ルート鍵を使用してのみ完了できます
理由コード: KEY_ROOT_REQ_ERR
HTTP 状況コード
400 - 不正な要求
HTTP 応答状況コード 400 Bad Request
は、クライアント・エラー (誤った形式の要求構文、無効な要求メッセージ・フレーム、偽りの要求ルーティングなど) が原因で、サーバーが要求を処理できない、または処理しないことを示しています。
お客様は、変更を行うことなくこの要求を繰り返さないでください。
context
多くの鍵の「アクション」は、「ルート」鍵に対してのみ実行できます。 以下に、ルート鍵に対してのみ実行できるコマンドを示します。
- 鍵の無効化
- 鍵の有効化
- 鍵の復元
- 鍵のローテート
- 鍵のアンラップ
- 鍵のラップ
例
この例では、「標準」鍵を作成し、それを無効にします。 無効にできるのはルート鍵のみであるため、これは失敗します。
# 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 応答
{
"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 - 要求されたアクションは、...
メッセージ
要求されたアクションは、ルート鍵を使用してのみ完了できます
理由コード: KEY_ROOT_REQ_REG_ERR
HTTP 状況コード
422 - 処理できないエンティティー
HTTP 応答状況コード 422 Unprocessable Entity
は、サーバーが要求エンティティーのコンテンツ・タイプを認識しており、要求エンティティーの構文が正しいのに含まれている命令を処理できなかったことを示しています。
お客様は、変更を行うことなくこの要求を繰り返さないでください。
context
このエラーは、「登録」に使用される鍵に適用されます。 登録を作成するには、「ルート」鍵が必要です。 このエラーは、 登録作成APIリクエストが 行われた際に返されます。
登録は、ルート鍵とその他のクラウド・リソース (Cloud Object Storage (COS) バケットや Cloud Databases デプロイメントなど) との間の関連付けです。
登録について詳しくは、ルート鍵と暗号化された IBM Cloud リソースとの間の関連の表示を参照してください。
19 - 要求された変更は準拠していません...
メッセージ
要求された変更は構成ルールに従っていません
理由コード: CONFIG_RULE_CONFLICT_ERR
HTTP 状況コード
403 - 禁止
HTTP クライアント・エラー状況応答コード 403 Forbidden
は、サーバーが要求を認識したが、その要求の許可を拒否することを示します。
この状況は 401
に似ていますが、この場合は再許可によって違いが発生しません。 アクセスは永続的に禁止され、リソースに対する十分な権限がないなどのアプリケーション・ロジックに結合されます。
context
このエラー・メッセージが表示されるのは、インスタンス・ポリシーによってリソースへのアクセスがブロックされたときです。 例えば、要求がパブリック IP アドレスから発行されて、 インスタンス・ポリシーによってパブリック IP アドレスからのアクセスが禁止されている場合は、 このエラー・メッセージが表示されます。
20 - 署名が無効です
メッセージ
署名が無効です
理由コード: INVALID_SIG_EXP_ERR
HTTP 状況コード
422 - 処理できないエンティティー
HTTP 応答状況コード 422 Unprocessable Entity
は、サーバーが要求エンティティーのコンテンツ・タイプを認識しており、要求エンティティーの構文が正しいのに含まれている命令を処理できなかったことを示しています。
お客様は、変更を行うことなくこの要求を繰り返さないでください。
context
鍵が再ラップされたときにエラーが発生しました。
このエラーが発生した場合は、 IBM
21 - 鍵の有効期限が切れているため、...
メッセージ
鍵の有効期限が切れているため、その鍵でのアクションを実行できませんでした
理由コード: KEY_EXPIRED_ERR
HTTP 状況コード
400 - 不正な要求
HTTP 応答状況コード 400 Bad Request
は、クライアント・エラー (誤った形式の要求構文、無効な要求メッセージ・フレーム、偽りの要求ルーティングなど) が原因で、サーバーが要求を処理できない、または処理しないことを示しています。
お客様は、変更を行うことなくこの要求を繰り返さないでください。
context
このエラーは、削除された鍵をその有効期限が切れた後に復元すると、発生します。
例
鍵が削除されており、有効期限が切れているため、key restore
要求は失敗します。
以下のステップでは、このエラーを作成します。
-
鍵素材 (ペイロード) と有効期限を作成します
-
鍵素材と有効期限を使用してルート鍵を作成します
-
鍵 ID を取得します
-
有効期限が過ぎることを許可します
-
キーの削除
-
鍵を復元します。これは、削除された鍵を有効期限後に復元することはできないため、失敗します
# 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 応答
{
"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 応答
{
"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 - 指定された暗号化済み nonce が、...
メッセージ
指定された暗号化済み nonce が、既存のレコードと一致しません。要求の中で正しい nonce が指定されていることを確認してください
理由コード: INCORRECT_NONCE_ERR
HTTP 状況コード
400 - 不正な要求
HTTP 応答状況コード 400 Bad Request
は、クライアント・エラー (誤った形式の要求構文、無効な要求メッセージ・フレーム、偽りの要求ルーティングなど) が原因で、サーバーが要求を処理できない、または処理しないことを示しています。
お客様は、変更を行うことなくこの要求を繰り返さないでください。
context
このエラー・メッセージは、restore
および rotate
鍵インターフェースに適用されます。
この例は restore
のキーコマンドに基づいており、
CLI
を使用しています。これは、
API よりも出力がわかりやすいからです。
ステップ 1 - インポート・トークンを使用してルート鍵を作成して問題をセットアップして、この鍵を削除します
# 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
ステップ 2 - 鍵の復元に必要なインポート・トークンを作成して、エラーをトリガーし、鍵を復元します
# 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 - インポート・トークンの有効期限が切れました
メッセージ
インポート・トークンの有効期限が切れました
理由コード: IMPORT_TOKEN_EXPIRED_ERR
HTTP 状況コード
409 - 競合
HTTP 応答状況コード 409 Conflict
は、要求がサーバーの現在の状態と競合することを示しています。
競合は、PUT
要求への応答として発生する可能性が高いです。 例えば、サーバー上に既に存在しているファイルより古いファイルをアップロードすると、バージョン管理の競合が発生して、409
応答を受け取ることがあります。
context
例 1
API を使用してインポート・トークンを作成し、有効期限が切れるようにしてから、そのインポート・トークンを取得しようとします。
# 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 応答
{
"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 応答
{
"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"
}
]
}
]
}
例 2
CLI を使用してインポート・トークンを作成し、有効期限が切れるようにしてから、そのインポート・トークンを取得しようとします。
# 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 - 鍵が保存ポリシーのあるクラウド・リソースを...
メッセージ
鍵が保存ポリシーのあるクラウド・リソースを保護しているため、その鍵を削除できません。鍵を削除する前にアカウント所有者に連絡して、この鍵と関連付けられている各リソースの保存ポリシーを削除してください
理由コード: PREV_KEY_DEL_ERR
HTTP 状況コード
409 - 競合
HTTP 応答状況コード 409 Conflict
は、要求がサーバーの現在の状態と競合することを示しています。
競合は、PUT
要求への応答として発生する可能性が高いです。 例えば、サーバー上に既に存在しているファイルより古いファイルをアップロードすると、バージョン管理の競合が発生して、409
応答を受け取ることがあります。
context
このエラーは、「登録」に使用された鍵が削除されたときに発生します。
ほとんどの場合、登録のある鍵は、以下を使用して削除できます。 --force
オプション。
登録されたリソースで preventKeyDeletion
が true
に設定されている場合は、強制削除が失敗し、このエラー・メッセージが表示されます。
つまり、すべての登録で preventKeyDeletion
が false
に設定されている必要があります。
登録は、ルート鍵とその他のクラウド・リソース (Cloud Object Storage (COS) バケットや Cloud Databases デプロイメントなど) との間の関連付けです。
登録について詳しくは、ルート鍵と暗号化された IBM Cloud リソースとの間の関連の表示を参照してください。
25 - 鍵の二重許可が有効になっておらず、...
メッセージ
鍵の二重許可が有効になっておらず、削除のための設定を行えません
理由コード: NOT_DUAL_AUTH_ERR
HTTP 状況コード
409 - 競合
HTTP 応答状況コード 409 Conflict
は、要求がサーバーの現在の状態と競合することを示しています。
競合は、PUT
要求への応答として発生する可能性が高いです。 例えば、サーバー上に既に存在しているファイルより古いファイルをアップロードすると、バージョン管理の競合が発生して、409
応答を受け取ることがあります。
context
このエラーは、削除の許可または許可の削除を試行し、鍵にポリシーが設定されていないdual authorization
場合に発生します。
以下の例は、API および CLI を使用したエラーを示しています。
例 1
この例では、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
}
]
}'
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
}
]
}
二重許可ポリシーが設定された鍵の削除を許可します。
# 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 応答
{
"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"
}
]
}
]
}
二重許可ポリシーが設定された鍵の許可を削除します。
# 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 応答
{
"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"
}
]
}
]
}
例 2
この例では、CLI を使用して削除を許可し、許可を削除します。
注: 前の例では、$KEY_ID
が設定されています。
# 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 - 鍵は更新されたばかりでした
メッセージ
鍵は更新されたばかりでした。しばらくしてから再度お試しください
理由コード: REQ_TOO_EARLY_ERR
HTTP 状況コード
409 - 競合
HTTP 応答状況コード 409 Conflict
は、要求がサーバーの現在の状態と競合することを示しています。
競合は、PUT
要求への応答として発生する可能性が高いです。 例えば、サーバー上に既に存在しているファイルより古いファイルをアップロードすると、バージョン管理の競合が発生して、409
応答を受け取ることがあります。
context
このエラーは、最後のアクションから 30 秒以内に鍵をenable
またはrestore
すると発生します。
最後の「アクション」から少なくとも 30 秒待って、鍵の有効化または復元を行う必要があります。
この例は、鍵が無効になってからすぐに鍵を有効化したため、失敗します。
# 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 - 提供された暗号文が無効であるか、...
メッセージ
提供された暗号文が無効であるか、または壊れています
理由コード: UNPROCESSABLE_CIPHERTEXT_ERR
HTTP 状況コード
422 - 処理できないエンティティー
HTTP 応答状況コード 422 Unprocessable Entity
は、サーバーが要求エンティティーのコンテンツ・タイプを認識しており、要求エンティティーの構文が正しいのに含まれている命令を処理できなかったことを示しています。
お客様は、変更を行うことなくこの要求を繰り返さないでください。
context
これは通常、入力が無効であったために、ハードウェア・セキュリティー・モジュール (HSM) がデータを処理できなかったことを意味します。
このエラーは、内部エラーが発生すると返されます。
このエラーが発生した場合は、 IBM
28 - 提供された暗号化済み nonce が...
メッセージ
提供された暗号化済み nonce が指定された鍵素材を使用して暗号化されていなかったか、または提供された IV が暗号化済み nonce と一致しません
理由コード: INCORRECT_NONCE_IV_ERR
HTTP 状況コード
400 - 不正な要求
HTTP 応答状況コード 400 Bad Request
は、クライアント・エラー (誤った形式の要求構文、無効な要求メッセージ・フレーム、偽りの要求ルーティングなど) が原因で、サーバーが要求を処理できない、または処理しないことを示しています。
お客様は、変更を行うことなくこの要求を繰り返さないでください。
context
これは通常、入力が無効であったために、ハードウェア・セキュリティー・モジュール (HSM) がデータを処理できなかったことを意味します。
このエラーは、内部エラーが発生すると返されます。
このエラーが発生した場合は、 IBM
29 - 照会されたリソースはサービスに属していません
メッセージ
照会されたリソースはサービスに属していません
理由コード: RESOURCE_OWNER_ERR
HTTP 状況コード
403 - 禁止
HTTP クライアント・エラー状況応答コード 403 Forbidden
は、サーバーが要求を認識したが、その要求の許可を拒否することを示します。
この状況は 401
に似ていますが、この場合は再許可によって違いが発生しません。 アクセスは永続的に禁止され、リソースに対する十分な権限がないなどのアプリケーション・ロジックに結合されます。
context
このエラー・メッセージは、サービス間要求で発生します。 サービスは鍵を削除しようとしますが、これは許可されません。 つまり、別のサービスは以下を削除できません。 Key Protect 鍵。
サービス間アクセスを使用する 1 つの例は、ユーザーが CloudObject Storage (COS) バケットを構成し、以下を使用してデータを暗号化することです。 Key Protect 鍵。
COS の例を使用すると、COS は、データの暗号化に使用された鍵を削除できません。
30 - このアクションは、サービス...
メッセージ
このアクションは、サービス (サービス同士の間) においてのみ実行できます
理由コード: SERVICE_ONLY_ERR
HTTP 状況コード
403 - 禁止
HTTP クライアント・エラー状況応答コード 403 Forbidden
は、サーバーが要求を認識したが、その要求の許可を拒否することを示します。
この状況は 401
に似ていますが、この場合は再許可によって違いが発生しません。 アクセスは永続的に禁止され、リソースに対する十分な権限がないなどのアプリケーション・ロジックに結合されます。
context
「登録」の作成などのいくつかのアクションは、サービス間要求と呼ばれる別のサービスによってのみ実行できます。
例えば、Key Protect 鍵を使用してデータを暗号化するように Cloud Object Storage (COS) バケットを構成する場合は、COS サービスが登録を作成する必要があります。
登録を作成、削除、置換、または更新するには、サービス間要求が必要です。
登録について詳しくは、以下のリソースを参照してください。
31 - このリソースでこのアクションは実行できません...
メッセージ
このリソースでこのアクションは実行できません。この機能を有効にするには、IBM Key Protect に連絡するか、またはサービス・チケットをオープンしてください
理由コード: FEATURE_RESTRICTED_ERR
HTTP 状況コード
403 - 禁止
HTTP クライアント・エラー状況応答コード 403 Forbidden
は、サーバーが要求を認識したが、その要求の許可を拒否することを示します。
この状況は 401
に似ていますが、この場合は再許可によって違いが発生しません。 アクセスは永続的に禁止され、リソースに対する十分な権限がないなどのアプリケーション・ロジックに結合されます。
context
サポートされていないフィーチャーを使用して、インスタンス・ポリシーを作成、更新、または使用しようとしています。
例えば、IPv4 アドレスのみをサポートする allowedIp
アドレス範囲に対してインスタンス・ポリシーが作成されたとします。 その後、IPv6 アドレスを使用してインスタンスに要求を行うと、このエラーが返されます。
32 - この要求では、鍵のバージョンが...
メッセージ
この要求では、鍵のバージョンが現行の登録鍵のバージョンよりも新しい必要があります
理由コード: KEY_VERSION_INVALID
HTTP 状況コード
422 - 処理できないエンティティー
HTTP 応答状況コード 422 Unprocessable Entity
は、サーバーが要求エンティティーのコンテンツ・タイプを認識しており、要求エンティティーの構文が正しいのに含まれている命令を処理できなかったことを示しています。
お客様は、変更を行うことなくこの要求を繰り返さないでください。
context
このエラーは、「登録」に使用される鍵に適用されます。
Cloud Object Storage (COS) などのサービスが鍵の置換または復元を試行する場合、鍵のタイム・スタンプがチェックされます。
鍵のタイム・スタンプが、登録によって使用される鍵のタイム・スタンプよりも古い場合、このエラーが発生します。
サービスによって使用される鍵のタイム・スタンプは、登録の鍵と等しいか、それより新しい必要があります。
登録は、ルート鍵とその他のクラウド・リソース (Cloud Object Storage (COS) バケットや Cloud Databases デプロイメントなど) との間の関連付けです。
登録について詳しくは、ルート鍵と暗号化された IBM Cloud リソースとの間の関連の表示を参照してください。
33 - このルート鍵は...
メッセージ
このルート鍵は過去 1 時間以内にローテートされました: 1 つの「ローテート」のみ 1 時間当たりのアクションが許可される
理由コード: KEY_ROTATION_NOT_PERMITTED
HTTP 状況コード
409 - 競合
HTTP 応答状況コード 409 Conflict
は、要求がサーバーの現在の状態と競合することを示しています。
競合は、PUT
要求への応答として発生する可能性が高いです。 例えば、サーバー上に既に存在しているファイルより古いファイルをアップロードすると、バージョン管理の競合が発生して、409
応答を受け取ることがあります。
context
ルート鍵は、1 時間に 1 回、ローテートできます。 1 時間以内にルート鍵をローテートしようとすると、このエラー・メッセージが返されます。
# 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 応答
{
"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 - このルート鍵は、ユーザー指定の...
メッセージ
このルート鍵は、ユーザー指定の鍵素材を使用して作成されました。「ローテート」アクションを実行するには、鍵素材が必要です
理由コード: KEY_PAYLOAD_REQ_ERR
HTTP 状況コード
400 - 不正な要求
HTTP 応答状況コード 400 Bad Request
は、クライアント・エラー (誤った形式の要求構文、無効な要求メッセージ・フレーム、偽りの要求ルーティングなど) が原因で、サーバーが要求を処理できない、または処理しないことを示しています。
お客様は、変更を行うことなくこの要求を繰り返さないでください。
context
鍵素材 (ペイロード) を使用してルート鍵が作成された場合は、鍵をローテートするために鍵素材を指定する必要があります。
# 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 応答
{
"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"
}
}
]
}
]
}
HTTP 状況コード順のソート
これらは、HTTP 状況コードでソートされたエラー・メッセージです。
HTTP 400 - 不正な要求
-
コレクションの合計がリソースの数と一致しません - 詳細
-
本体のデータが照会パラメーターに必要なデータと一致しません - 詳細
-
ベアラー・トークンからのサブジェクトの抽出が失敗しました。渡されたベアラー・トークンが正しいもの (および正しいフォーマット) であり、要求されたアクションの実行が許可されていることを確認してください - 詳細
-
無効な本文データが渡されました: 渡されたデータに無効な文字がない有効な形式が含まれていることを確認してください - 詳細
-
無効なフィールドのエラー: ラップでは、無効なプレーン・テキストが要求で渡されると、
The field 'plaintext' must be: a base64 encoded key material
が表示されます。アンラップでは、無効な暗号文が要求で渡されると、The field 'ciphertext' must be: the original base64 encoded ciphertext from the wrap operation
が表示されます。 詳細 -
鍵の復元の有効期限が切れました - 詳細
-
要求で本文がありません - 詳細
-
照会パラメーターごとに作成できるインスタンス・ポリシーは 1 つのみです。単一のリソース・オブジェクトを渡してください - 詳細
-
インポートされた鍵のみを復元できます - 詳細
-
要求されたアクションは、ルート鍵を使用してのみ完了できます - 詳細
-
鍵の有効期限が切れているため、鍵に対してアクションを実行できませんでした - 詳細
-
指定された暗号化された nonce が既存のレコードと一致しません: 要求で正しい nonce が指定されていることを確認してください - 詳細
-
指定された暗号化された nonce は、指定された鍵素材で暗号化されていません。または、指定された IV が暗号化された nonce と一致しません - 詳細
-
このルート鍵は、ユーザーが指定した鍵素材を使用して作成されました。「ローテート」アクションを実行するには、鍵素材が必要です - 詳細
HTTP 401 - 無許可
- 無許可: ユーザーは指定されたリソースにアクセスできません - 詳細
HTTP 403 - 禁止
HTTP 409 - 競合
-
鍵が有効な状態ではありません - 詳細
-
鍵は 1 つ以上のクラウド・リソースを保護しています - 詳細
-
KeyCreateImportAccess インスタンス・ポリシーはこのアクションを許可しません - 詳細
-
削除に必要な許可の数が満たされていません - 詳細
-
インポート・トークンの有効期限が切れています - 詳細
-
保存ポリシーを持つクラウド・リソースを保護しているため、鍵を削除できません。この鍵を削除する前に、アカウント所有者に連絡して、鍵に関連付けられている各リソースの保存ポリシーを削除してください - 詳細
-
鍵は二重認証が有効になっていないため、削除用に設定できません - 詳細
-
鍵は最近更新されました: しばらく待ってから再試行してください - 詳細
-
このルート鍵は過去 1 時間以内にローテートされています。1 時間あたり 1 つの「ローテート」アクションのみが許可されます - 詳細
HTTP 410 - 削除済み
- 鍵は既に削除されています: この鍵への参照を削除してください - 詳細
HTTP 422 - 処理できないエンティティー
HTTP 500 - 内部サーバー・エラー
- 鍵メタデータが破損しました: この鍵を削除してください - 詳細
理由コードによるソート
このセクションには、エラー・メッセージを理由コード順に記載しています。
- AUTHORIZATIONS_NOT_MET - 詳細
- BAD_BODY_ERR - 詳細
- BEARER_SUB_EXTRACTION_ERR - 詳細
- BODY_QUERY_PARAM_MISMATCH_ERR - 詳細
- COLLECTION_TOTAL_MISMATCH_ERR - 詳細
- CONFIG_RULE_CONFLICT_ERR - 詳細
- FEATURE_RESTRICTED_ERR - 詳細
- IMPORT_TOKEN_EXPIRED_ERR - 詳細
- INCOMPLETE_METADATA_ERR - 詳細
- INCORRECT_NONCE_ERR - 詳細
- INCORRECT_NONCE_IV_ERR - 詳細
- INVALID_FIELD_ERR - 詳細
- INVALID_SIG_EXP_ERR - 詳細
- KEY_ACTION_INVALID_STATE_ERR - 詳細
- KEY_CREATE_IMPORT_ACCESS_ERR - 詳細
- KEY_DELETED_ERR - 詳細
- KEY_EXPIRED_ERR - 詳細
- KEY_IMPT_REQ_ERR - 詳細
- KEY_INVALID_STATE_ERR - 詳細
- KEY_PAYLOAD_REQ_ERR - 詳細
- KEY_RESTORE_EXPIRED - 詳細
- KEY_ROOT_REQ_ERR - 詳細
- KEY_ROOT_REQ_REG_ERR - 詳細
- KEY_ROTATION_NOT_PERMITTED - 詳細
- KEY_VERSION_INVALID - 詳細
- NO_BODY_ERR - 詳細
- NOT_DUAL_AUTH_ERR - 詳細
- NUM_COLLECTION_RESOURCE_ERR - 詳細
- PREV_KEY_DEL_ERR - 詳細
- PROTECTED_RESOURCE_ERR - 詳細
- REQ_TOO_EARLY_ERR - 詳細
- RESOURCE_OWNER_ERR - 詳細
- SERVICE_ONLY_ERR - 詳細
- UNAUTHORIZED_ERR - 詳細
- UNPROCESSABLE_CIPHERTEXT_ERR - 詳細