Key Protect CLI リファレンス
最新バージョンの IBM® Key Protect for IBM Cloud® CLI プラグインは、Key Protect のインスタンスの鍵を管理するための安全かつ効率的な方法を提供します。
IBM Cloud CLI にログインすると、更新プログラムが利用可能になった際に通知が表示されます。 Key Protect CLI プラグインで使用可能なコマンドおよびフラグを使用できるように、CLI は必ず最新状態に保ってください。
注記
Key Protect CLI プラグインをインストールして構成するには、 CLI のセットアップ に関するトピックを参照してください。
region-set の使用方法を説明する例で、構成時の重要なステップを概説しています。
前のバージョン
バージョン 0.8 に関するこのドキュメントには、非推奨となったコマンドは含まれていません。
非推奨になったすべてのコマンドは、バージョン 0.4.0 および 0.5.2 で動作します。 つまり、バージョン 0.5.2 にはバージョン 0.3.9 および 0.4.0 との後方互換性があります。
例
すべてのコマンドに『Example』セクションがあります。ここには、ワークフローのコンテキスト内でのコマンドの使用方法が示されています。
これらの例では、 openssl および jq がインストールされました。
多くの例では、-iパラメーターの代わりに Key Protect インスタンス ID に関するセッション用に設定された環境変数を利用しています。 この方法で設定された変数は、必要に応じて、プラグインによって自動的に使用されます。
# export the Key Protect instance id in the command line
$ export KP_INSTANCE_ID=<INSTANCE_ID>
Key Protect インスタンスのエンドポイントを設定してください:
export KP_TARGET_ADDR=<KEY_PROTECT_INSTANCE_ENDPOINT>
<KEY_PROTECT_INSTANCE_ENDPOINT> を、ご自身のインスタンス ID のエンドポイントに置き換えてください。 以下に例を示します。
export KP_TARGET_ADDR=https://fadedbee-0000-0000-0000-1234567890ab.api.us-south.kms.appdomain.cloud
Key Protect のインスタンスエンドポイントは、特定のインスタンスの IBM Cloud UI コンソールで見つけることができます。
ibmcloud kp コマンドのまとめ
ibmcloud kp では、以下にリストするコマンドがサポートされます。
kp import-token コマンド
kp import-token コマンドは、セキュアなインポートのためにルート鍵を準備します。
| サブコマンド | 状況 v0.8 | 説明 |
|---|---|---|
| 作成 | インポート・トークンを作成します。 | |
| key-encrypt | サービスにインポートする鍵を暗号化します | |
| nonce-encrypt | kp import-token create によって生成される nonce を暗号化します |
|
| show | インポート・トークンをリトリーブします。 |
kp instance コマンド
kp instance コマンドは、以下のポリシーを管理します。 Key Protect インスタンス。
| サブコマンド | 状況 v0.8 | 説明 |
|---|---|---|
| ポリシー | インスタンスに関連付けられているポリシーをリストします | |
| policy-update allowed-network | のインスタンスポリシーを更新します allowed network |
|
| policy-update dual-auth-delete | のインスタンスポリシーを更新します dual auth delete |
|
| policy-update rotation | のインスタンスポリシーを更新します rotation |
kp key コマンド
kp key コマンドは、個別の鍵を管理します。
| サブコマンド | 状況 v0.8 | 説明 |
|---|---|---|
| alias-create | 固有で便利な鍵への参照用の別名を作成します | |
| cancel-delete | 以前にスケジュールされた鍵の削除要求を取り消します | |
| 作成 | 鍵を作成するか、独自の鍵をインポートします | |
| 削除 | 鍵の削除 | |
| 無効 | 鍵を無効にします | |
| 有効 | 鍵を有効にします | |
| ポリシー | ポリシーのリストを取得します | |
| policy-update dual-auth-delete | のキーポリシーを更新する dual auth delete |
|
| policy-update rotation | のキーポリシーを更新する rotation |
|
| 復元 | 以前に削除されたルート鍵を復元します | |
| ローテート | ルート鍵のローテート | |
| schedule-delete | dual-auth-delete ポリシーを使用して、鍵の削除を許可します | |
| show | 鍵の取得 | |
| 同期 | 鍵の関連リソースの同期化 | |
| アンラップ | データ暗号鍵をアンラップします | |
| 更新 | 鍵を更新して、その鍵を新しい鍵リングに移動します | |
| バージョン | すべての鍵バージョンをリストします | |
| ラップ | データ暗号鍵をラップします |
kp key-ring コマンド
鍵リングのサポートにより、kp key-ring を使用して、ベスト・プラクティスである鍵のグループの管理を行うことができます。
| サブコマンド | 状況 v0.8 | 説明 |
|---|---|---|
| 作成 | kp インスタンス内に鍵リングを作成します | |
| 削除 | kp インスタンス内の鍵リングを削除します |
その他の kp コマンド
管理用のその他のコマンド Key Protect リソースを管理するためのその他のコマンドは、ベスト・プラクティスをサポートすることができます。
| コマンド | 状況 v0.8 | 説明 |
|---|---|---|
| kp keys | Key Protect インスタンスで使用可能な鍵をリストします | |
| kp key-rings | kp インスタンスに関連付けられている鍵リングをリストします | |
| kp region-set | 異なるリージョンのエンドポイントをターゲットにします | |
| kp registrations | ルート鍵とその他のクラウド・リソースとの間の関連をリストします | |
| kp kmip(kp kmip) | KMIP アダプターおよび関連リソースを作成および管理します。 | |
| kp暗号単位 | 暗号ユニットの管理 | |
| kp暗号ユニット | インスタンスに割り当てられている暗号ユニットをリストする |
鍵別名 は、 key create、 key disable、およびここでサポートされている「鍵 ID または別名」の例に示されているように、メソッドの ID として使用できます。
ヘルプの表示
kp ヘルプ情報の例を以下に示します。
ibmcloud kp -hibmcloud kp import-token -hibmcloud kp key -hibmcloud kp keys -h
kp import-token コマンドと kp key コマンドには、サブコマンドがあります。 以下に、 サブコマンドのヘルプの例を示します。
ibmcloud kp import-token create -hibmcloud kp key delete -h
kp import-token create
ルート鍵を暗号化して以下にインポートするために使用できるインポート・トークンを作成します。 Key Protect インスタンス。 デフォルトでは、 インポート・トークンは 10 分 (600 秒) 後に期限切れになります。
ibmcloud kp import-token create
-i, --instance-id INSTANCE_ID
[-e, --expiration EXPIRATION_TIME_SECONDS]
[-m, --max-retrievals MAX_RETRIEVALS]
例
この例では、インポート・トークンを作成します。 インポート・トークンは、nonce とpublic keyで構成されています。
nonce は、暗号通信で 1 回だけ使用できる任意の数値です。
# create an import token that expires in 5 minutes and allows 3 retrievals
$ ibmcloud kp import-token create --expiration 300 --max-retrievals 3
Created Expires Max Retrievals Remaining Retrievals
2020-05-04 19:12:07 +0000 UTC 2020-05-04 19:17:07 +0000 UTC 3 3
# show the created token
$ ibmcloud kp import-token show
{
"nonce": "8rf2ldP/zWm1Tjrb",
"payload":
"LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0t ...<redacted>... QyBLRVktLS0tLQo="
}
必須パラメーター
-
-i, --instance-idIBM Cloud インスタンスを識別する Key Protect インスタンス ID。
次のコマンド**
$ export KP_INSTANCE_ID=<INSTANCE_ID>**で-iを指定する代わりに、環境変数を設定できます。
オプション・パラメーター
-
-e, --expirationインポート・トークンの有効期限 (秒) を指定します。 この値により、インポート・トークンおよびそれに関連付けられた公開鍵の有効期間が決定されます。
最小値は
300秒 (5 分) で、 最大値は86400秒 (24 時間) です。 デフォルト値は600秒 (10 分) です。 -
-m, --max-retrievalsインポート・トークンの使用回数を設定します。 この値により、インポート・トークンを有効期間内に取得できる回数が決定され、これを超えるとインポート・トークンにアクセスできなくなります。 デフォルト値は
1です。
kp import-token key-encrypt
インポート先の鍵素材を暗号化する Key Protect インスタンスに関連付けられている公開鍵を使用して、Key Protect にインポートするの鍵素材を暗号化します。
次に、 ibmcloud kp key create キーをサービスにインポートするには。
ibmcloud kp import-token key-encrypt
-i, --instance-id INSTANCE_ID
-k, --key KEY_MATERIAL
-p, --pubkey PUBLIC_KEY
[-a, --hash HASH_ALGORITHM]
例
この例では、 key material を、以下で生成された公開鍵を使用して暗号化します
kp import-token create.
# create an import token that expires in 5 minutes and allows 10 retrievals
$ ibmcloud kp import-token create -e 300 -m 10
# create a random, base64-encoded, 32-byte key material
$ KEY_MATERIAL=$(openssl rand -base64 32)
# extract the public key that was created by the "kp import-token create" command
$ PUBLIC_KEY=$(ibmcloud kp import-token show | jq -r '.["payload"]')
# encrypt the key material using the public key
$ ibmcloud kp import-token key-encrypt -k $KEY_MATERIAL -p $PUBLIC_KEY
Encrypted Key
Ela33aTdDiKVUNryLeM/xwUEaKWvzY+u ...<redacted>... Asv7bZxvyZn9KNU=
必須パラメーター
-
-i, --instance-idIBM Cloud インスタンスを識別する Key Protect インスタンス ID。
次のコマンド**
$ export KP_INSTANCE_ID=<INSTANCE_ID>**で-iを指定する代わりに、環境変数を設定できます。 -
-k, --keyサービスで保管および管理する base64 エンコードの鍵素材。
-p, --pubkeyKey Protect によって配布された、base64 エンコードの 公開暗号鍵。 新しい公開鍵を作成するには、
ibmcloud kp import-token createを使用します。 公開鍵を取得するには、ibmcloud kp import-token showを使用します。
オプション・パラメーター
-
-a, --hash鍵をラップするために使用されるハッシュ・アルゴリズム。 SHA1 および SHA256 がサポートされています。 デフォルトは SHA256 です。 SHA1 は HPCS によってのみサポートされています。
このオプションは、HPCS API での要求でのみ使用できる暗号化された鍵を生成するために使用されます。 このオプションを使用して Key Protect ルート鍵を作成しないでください。
Hyper Protect Crypto Services (HPCS) は、専用の鍵管理サービスおよびハードウェア・セキュリティー・モジュール (HSM) です。 HPCS は、 Key Protect と統合して鍵の生成と暗号化を行います。 Keep Your Own Key (KYOK) 機能も HPCS によって有効になります。
注記
HPCS について詳しくは、以下を参照してください。 IBM Cloud Hyper Protect Crypto Servicesの概要。
kp import-token nonce-encrypt
サービスにインポートする鍵素材で Key Protect によって配布される nonce を暗号化します。
次に、実行時に、取得された暗号化された nonce および IV 値を指定します。
ibmcloud kp key create: 鍵をインポートします。
ibmcloud kp import-token nonce-encrypt
-i, --instance-id INSTANCE_ID
-k, --key KEY_MATERIAL
-n, --nonce NONCE
[-c, --cbc]
例
この例では、nonce を使用して key material を暗号化します。
nonce は、暗号通信で 1 回だけ使用できる任意の数値です。
# create an import token that expires in 5 minutes and allows 10 retrievals
$ ibmcloud kp import-token create -e 300 -m 10
# create a random, base64-encoded, 32-byte key material
$ KEY_MATERIAL=$(openssl rand -base64 32)
# extract the nonce that was created by the "kp import-token create" command
$ NONCE=$(ibmcloud kp import-token show | jq -r '.["nonce"]')
# encrypt the nonce
$ ibmcloud kp import-token nonce-encrypt -k $KEY_MATERIAL -n $NONCE
Encrypted Nonce IV
mWQad1RHdWoFXFw/D9h8z43t/+0vIZc55VBBQg== 6nvOwUvQdowoD+3v
必須パラメーター
-
-i, --instance-idIBM Cloud インスタンスを識別する Key Protect インスタンス ID。
次のコマンド**
$ export KP_INSTANCE_ID=<INSTANCE_ID>**で-iを指定する代わりに、環境変数を設定できます。 -
-k, --keyサービスで保管および管理する base64 エンコードの鍵素材。
-n, --nonce鍵のインポート要求を検証するために使用される nonce。 この値は base64 でエンコードされています。 nonce を取得するには、
ibmcloud kp import-token showを使用します。
オプション・パラメーター
-
-c, --cbcAES-CBC 暗号化アルゴリズムを使用して nonce を暗号化します。 このアルゴリズム方式は、HPCS でのみサポートされます。 デフォルトの暗号化アルゴリズムは AES-GCM です。
このオプションは、HPCS API での要求でのみ使用できる暗号化された nonce を生成するために使用されます。 このオプションを使用して Key Protect ルート鍵を作成しないでください。
Hyper Protect Crypto Services (HPCS) は、専用の鍵管理サービスおよびハードウェア・セキュリティー・モジュール (HSM) です。 HPCS は、 Key Protect と統合して鍵の生成と暗号化を行います。 Keep Your Own Key (KYOK) 機能も HPCS によって有効になります。
注記
HPCS について詳しくは、以下を参照してください。 IBM Cloud Hyper Protect Crypto Servicesの概要。
kp import-token show
Key Protect インスタンスに関連付けられているインポート・トークンを取得します。 インスタンス。
インポート・トークンには公開暗号鍵と nonce が含まれています。 取得した公開鍵と nonce を引数として指定してください
ibmcloud kp import-token nonce-encryptおよび
ibmcloud kp import-token key-encrypt.
ibmcloud kp import-token show
-i, --instance-id INSTANCE_ID
例
この例では、インポート・トークンを作成し、その結果を表示します。
# create an import token that expires in 5 minutes and allows 10 retrievals
$ ibmcloud kp import-token create -e 300 -m 10
# show the created token
$ ibmcloud kp import-token show
{
"nonce": "8rf2ldP/zWm1Tjrb",
"payload":
"LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0t ...<redacted>... QyBLRVktLS0tLQo="
}
# extract the nonce that was created by the "kp import-token create" command
$ ibmcloud kp import-token show | jq -r '.["nonce"]'
8rf2ldP/zWm1Tjrb
# extract the public key that was created by the "kp import-token create" command
$ ibmcloud kp import-token show | jq -r '.["payload"]'
LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0t ...<redacted>... QyBLRVktLS0tLQo=
必須パラメーター
-
-i, --instance-idIBM Cloud インスタンスを識別する Key Protect インスタンス ID。
次のコマンド**
$ export KP_INSTANCE_ID=<INSTANCE_ID>**で-iを指定する代わりに、環境変数を設定できます。
kp instance policies
インスタンス・ポリシーに関する詳細 ( allowed networks (public-and-private または private-only)、 allowed IP ポリシー、 key create import アクセス、メトリック、および二重許可削除など) を取得します (鍵を削除するには、2 人のユーザーからの許可が必要です)。
ibmcloud kp instance policies
[-i, --instance-id INSTANCE_ID]
[-p, --allowed-ip]
[-a, --allowed-network]
[-d, --dual-auth-delete]
[-k, --key-create-import-access]
[-m, --metrics]
[-o, --output OUTPUT]
[-r, --rotation]
例
この例では、コマンドの使用方法とその結果を示しています。 サービスに照会に対する結果がない場合は、空の配列 ([]) が返されます。
# update the instance policy and set the allowed network to public-and-private
$ ibmcloud kp instance policy-update allowed-network --enable --network-type public-and-private
Updating instance policy...
OK
# list the instance policies
$ ibmcloud kp instance policies
Retrieving policy details for instance: a192d603-0b8d-452f-aac3-f9e1f95e7411...
OK
Created By user id ...<redacted>...
Creation Date 2020-06-22T16:17:52Z
Last Updated 2020-06-22T16:17:52Z
Updated By user id ...<redacted>...
Policy Type allowedNetwork
Enabled true
Network Allowed public-and-private
# disable the instance allowed-network policy
$ ibmcloud kp instance policy-update allowed-network --disable
Updating instance policy...
OK
# list the instance policies - the policy exists and it's disabled
$ ibmcloud kp instance policies
Retrieving policy details for instance: a192d603-0b8d-452f-aac3-f9e1f95e7411...
OK
Created By user id ...<redacted>...
Creation Date 2020-06-22T16:17:52Z
Last Updated 2020-06-22T16:20:08Z
Updated By user id ...<redacted>...
Policy Type allowedNetwork
Enabled false
Network Allowed public-and-private
# list the instance policies and show the output as JSON
$ ibmcloud kp instance policies --output json
[
{
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-06-22T16:17:52Z",
"lastUpdated": "2020-06-22T16:20:08Z",
"updatedBy": "user id ...<redacted>...",
"policy_type": "allowedNetwork",
"policy_data": { "enabled": false, "attributes": { "allowed_network": "public-and-private" }
}
}
]
必須パラメーター
-
-i, --instance-IDIBM Cloud インスタンスを識別する Key Protect インスタンス ID。
次のコマンド**
$ export KP_INSTANCE_ID=<INSTANCE_ID>**で-iを指定する代わりに、環境変数を設定できます。
オプション・パラメーター
-
-p, --allowed-ip「許可されたIP」のインスタンスポリシーを表示してください。
-
-a, --allowed-network「許可されるネットワーク」のインスタンス・ポリシーを表示します。
-
-d, --dual-auth-deletedual authorization deleteのインスタンスポリシーを表示してください。 -
-k, --key-create-import-accessインスタンスの鍵作成インポート・アクセス・ポリシーの詳細を取得します。
-
-m, --metricsインスタンスのメトリック・ポリシーの詳細を取得します。
-
-o, --outputCLI 出力形式を設定します。 すべてのコマンドで、デフォルトの出力形式は表形式です。 出力形式を JSON に変更するには
--output jsonを使用します。 -
-r, --rotationインスタンスのローテーション・ポリシーの詳細を取得します。
kp instance policy-update allowed-network
インスタンスのポリシーを更新し、許可されるネットワークを
public-and-privateまたはprivate-only。
allowed-network ポリシーは、インスタンスがパブリック・ネットワークおよび プライベート・ネットワークから要求を取得できないようにします。
既存インスタンスには、ネットワーク・アクセス・ポリシーは、設定された後に適用されます。
詳しくは、 ネットワーク・アクセス・ポリシーの管理を参照してください。
ibmcloud kp instance policy-update allowed-network
-i, --instance-id INSTANCE_ID
-d, --disable OR
-e, --enable
-t, --network-type NETWORK_TYPE
例
この例では、「許可されるネットワーク」ポリシーを「public-and-private」に設定します。
# update the instance policy and set the allowed network to public-and-private
$ ibmcloud kp instance policy-update allowed-network --enable --network-type public-and-private
Updating instance policy...
OK
# list the instance policies
$ ibmcloud kp instance policies
Retrieving policy details for instance: a192d603-0b8d-452f-aac3-f9e1f95e7411...
OK
Created By user id ...<redacted>...
Creation Date 2020-06-22T16:17:52Z
Last Updated 2020-06-22T18:17:32Z
Updated By user id ...<redacted>...
Policy Type allowedNetwork
Enabled true
Network Allowed public-and-private
必須パラメーター
-
-d, --disable -
-e, --enableネットワーク・アクセス・ポリシーを無効または有効にします。 オプションが 1 つ必要です。
-
-i, --instance-IDIBM Cloud インスタンスを識別する Key Protect インスタンス ID。
次のコマンド**
$ export KP_INSTANCE_ID=<INSTANCE_ID>**で-iを指定する代わりに、環境変数を設定できます。 -
-t, --network-type許可されるネットワーク・アクセスのタイプを指定します。 オプションは、
public-and-privateまたはprivate-onlyです。
kp instance policy-update dual-auth-delete
暗号鍵を安全に削除するには、dual-auth-delete ポリシーを使用します。 鍵を削除すると、その内容と関連データが廃棄されます。 当該の鍵によって暗号化されているすべてのデータはアクセス不能になります。
二重許可ポリシーが設定された鍵を削除するには、 2 人のユーザーからの許可が必要です。
詳細は以下を参照のこと。 鍵 の削除に二重認証ポリシーを使用する。
注記
インスタンスの二重許可削除は、鍵の二重許可削除とは 異なります。
鍵に対して dual-auth-delete を有効にした後は、このポリシーを無効にすることも、削除することもできません。 ポリシーが期限切れになるまで、7 日間待機する必要があります。
インスタンスの二重許可削除は、いつでも有効または無効にすることができます。
鍵に dual-auth-delete ポリシーが適用されている場合は、インスタンス・ポリシーを変更しても 既存の鍵のポリシーは変更されません。
インスタンス・ポリシーを変更すると、新しい鍵にはそのインスタンス・ポリシーが 適用されます。
ibmcloud kp instance policy-update dual-auth-delete
-i, --instance-id INSTANCE_ID
-d, --disable OR
-e, --enable
例
以下に、kp instance policy-update dual-auth-delete の例を示します。
例 1
この例では、二重許可削除ポリシーを有効にします。
# enable the instance dual authorization policy
$ ibmcloud kp instance policy-update dual-auth-delete --enable
Updating instance policy...
OK
# list the instance policies
$ ibmcloud kp instance policies --output json
[
{
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-06-22T18:45:14Z",
"lastUpdated": "2020-06-22T18:45:14Z",
"updatedBy": "user id ...<redacted>...",
"policy_type": "dualAuthDelete",
"policy_data": { "enabled": true
}
}
]
# disable the instance dual authorization policy
$ ibmcloud kp instance policy-update dual-auth-delete --disable
Updating instance policy...
OK
# list the instance policies
$ ibmcloud kp instance policies --output json
[
{
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-06-22T18:45:14Z",
"lastUpdated": "2020-06-22T18:51:33Z",
"updatedBy": "user id ...<redacted>...",
"policy_type": "dualAuthDelete",
"policy_data": { "enabled": false
}
}
]
例 2
この例では、二重許可削除ポリシーを有効にし、新しい鍵を作成して、 新しい鍵によってインスタンス・ポリシーがどのように継承されるかを示します。
インスタンスの二重許可ポリシーを無効にしても、既存の鍵の ポリシーは変更されません。 インスタンス・ポリシーの更新後に作成された新しい鍵には、 このポリシーが適用されます。
# enable the instance dual authorization policy
$ ibmcloud kp instance policy-update dual-auth-delete --enable
Updating instance policy...
OK
# create a new key
$ ibmcloud kp key create my-protected-key
Creating key: 'my-protected-key', in instance: 'a192d603-0b8d-452f-aac3-f9e1f95e7411'...
OK
Key ID Key Name
6a8a129b-0cd4-4667-ba57-b355a125a7ca my-protected-key
# list the policies for the key - dual-auth-delete is
# enabled because the key inherits the instance policy
$ ibmcloud kp key policies 6a8a129b-0cd4-4667-ba57-b355a125a7ca --output json
[
{
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-06-22T19:13:00Z",
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:a192d603-0b8d-452f-aac3-f9e1f95e7411:policy:2427dbde-6cff-41eb-8b5a-ff26b038cafc",
"lastUpdateDate": "2020-06-22T19:13:00Z",
"updatedBy": "user id ...<redacted>...",
"dualAuthDelete": { "enabled": true
}
}
]
# attempt to delete the key - this fails
$ ibmcloud kp key delete 6a8a129b-0cd4-4667-ba57-b355a125a7ca
Deleting key: 6a8a129b-0cd4-4667-ba57-b355a125a7ca, from instance: a192d603-0b8d-452f-aac3-f9e1f95e7411...
FAILED
kp.Error:
correlation_id='8ad33eb2-7bbf-4b7a-a02e-221959920342',
msg='Conflict: 1 prior authorization(s) are required for deletion: Key could not be deleted. Please see "reasons" for more details.',
reasons='[AUTHORIZATIONS_NOT_MET: Number of authorizations required to delete is not met -
FOR_MORE_INFO_REFER: https://cloud.ibm.com/apidocs/key-protect]'
# disable the instance dual authorization policy
$ ibmcloud kp instance policy-update dual-auth-delete --disable
Updating instance policy...
OK
# attempt to delete the key - this fails because the key policy
# does not change when the instance policy is updated
$ ibmcloud kp key delete 6a8a129b-0cd4-4667-ba57-b355a125a7ca
Deleting key: 6a8a129b-0cd4-4667-ba57-b355a125a7ca, from instance: a192d603-0b8d-452f-aac3-f9e1f95e7411...
FAILED
kp.Error:
correlation_id='cbc0d18b-a816-45ab-af6a-b8e18dc3e628',
msg='Conflict: 1 prior authorization(s) are required for deletion: Key could not be deleted. Please see "reasons" for more details.',
reasons='[AUTHORIZATIONS_NOT_MET: Number of authorizations required to delete is not met -
FOR_MORE_INFO_REFER: https://cloud.ibm.com/apidocs/key-protect]'
必須パラメーター
-
-d, --disable -
-e, --enable二重許可ポリシーを無効または有効にします。 オプションが 1 つ必要です。
-
-i, --instance-IDIBM Cloud インスタンスを識別する Key Protect インスタンス ID。
次のコマンド**
$ export KP_INSTANCE_ID=<INSTANCE_ID>**で-iを指定する代わりに、環境変数を設定できます。
kp key alias-create
キーのエイリアスを作成し、出力をJSON形式で表示します。 別名は、鍵 ID を受け入れるメソッドで参照として使用できます。 各エイリアスは、指定されたインスタンス内でのみ一意であり、 Key Protect サービス全体で予約されることはありません。 鍵ごとに最大 5 つの別名を指定できます。 インスタンスごとの別名の数に制限はありません。 別名の長さは、2 文字以上 90 文字以下でなければなりません。
別名は英数字でなければならず、スペースや「-」または「_」以外の特殊文字は使用できません。また、別名をバージョン 4 の UUID にすることと、Key Protect の予約名 (allowed_ip、key、keys、metadata、policy、policies、registration、registrations、ring、rings、rotate、wrap、unwrap、rewrap、version、versions)
にすることはできません。
ibmcloud kp key alias-create KEY_ID -a KEY_ALIAS
-i, --instance-id INSTANCE_ID
-a, --alias KEY_ALIAS
[-o, --output OUTPUT]
例
これは kp key alias-create の例です。
例
キーのエイリアスを作成します。
# create a key alias
$ ibmcloud kp key alias-create 24203f96-b134-440e-981a-a24f2d432256 my-alias
Creating key: 'my-root-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID Key Alias
24203f96-b134-440e-981a-a24f2d432256 my-alias
必須パラメーター
-
KEY_ID変更する鍵の ID。 使用可能な鍵のリストを 取得するには、 kp keys コマンドを実行します。
-
KEY_ALIAS変更する鍵の別名 (または代替 ID)。 ID は英数字でなければならず、スペースや「-」または「_」以外の特殊文字は使用できません。また、バージョン 4 の UUID にすることはできません。
-
-i, --instance-IDIBM Cloud インスタンスを識別する Key Protect インスタンス ID。
次のコマンド**
$ export KP_INSTANCE_ID=<INSTANCE_ID>**で-iを指定する代わりに、環境変数を設定できます。
オプション・パラメーター
-
-o, --outputCLI 出力形式を設定します。 すべてのコマンドで、デフォルトの出力形式は表形式です。 出力形式を JSON に変更するには
--output jsonを使用します。
kp key cancel-delete
dual-auth-delete ポリシーが適用された鍵を削除するには、2 人の管理ユーザーからの許可が必要です。
このコマンド (kp key cancel-delete) は、以前の許可を取り消すか、 削除します。
kp key schedule-delete コマンドは、鍵を削除するための「許可」です。
dual-auth-delete ポリシーが適用された鍵を削除するには、次のプロセスに従います。
-
鍵を作成し、
dual-auth-deleteポリシーを有効にします -
ユーザー 1 は、以下を使用して鍵の削除をスケジュール (許可) します。
kp key schedule-deleteコマンド -
ユーザー 2 が、鍵の削除をスケジュール (許可) します
-
鍵は、2 番目の
schedule-deleteの実行後に削除されます。これは、ユーザー・インターフェース、API、および CLI でサポートされています -
7 日以内に 2 番目の許可が行われなかった場合、鍵はデフォルトの状態に戻ります
dual-auth-delete ポリシーを有効にするには、以下の 2 つの方法があります。
kp key policy-update dual-auth-deleteを使用して単一の鍵のポリシーを設定します- 以下を使用して、インスタンスのポリシーを設定します。
kp instance policy-update dual-auth-delete。インスタンス・ポリシーが有効になった後に作成されたすべての鍵は、インスタンス・ポリシー設定を継承します。
ibmcloud kp key cancel-delete KEY_ID_OR_ALIAS
-i, --instance-id INSTANCE_ID
例
以前にスケジュールされた鍵の削除を取り消す例を以下に示します。
# this key has a dual-auth-delete policy
$ ibmcloud kp key policies $KEY_ID --output json
[
{
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-06-22T19:13:00Z",
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:a192d603-0b8d-452f-aac3-f9e1f95e7411:policy:2427dbde-6cff-41eb-8b5a-ff26b038cafc",
"lastUpdateDate": "2020-06-22T21:29:10Z",
"updatedBy": "user id ...<redacted>...",
"dualAuthDelete": { "enabled": true
}
}
]
# cancel a previously scheduled key delete
$ ibmcloud kp key cancel-delete $KEY_ID
Cancelling key for deletion...
OK
必須パラメーター
-
KEY_ID_OR_ALIAS削除したいキーの UUID またはエイリアス( v4 )。 使用可能な鍵のリストを 取得するには、 kp keys コマンドを実行します。
kp key create
指定した Key Protect インスタンスで ルート鍵を作成するか、 独自の鍵をインポートします。
ルート鍵は、16、24、または 32 バイト長である必要があります。それぞれ、128、192、または 256 ビットに対応します。
ibmcloud kp key create KEY_NAME
-i, --instance-id INSTANCE_ID
[--key-ring KEY_RING_ID]
[-k, --key-material KEY_MATERIAL]
[-n, --encrypted-nonce NONCE]
[-o, --output OUTPUT]
[-s, --standard-key]
[-v, --iv IV]
[-D, --description DESCRIPTION]
例
以下に、kp key create の例を示します。
例 1
ルート鍵を作成します。
# create a root key
$ ibmcloud kp key create my-root-key
Creating key: 'my-root-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID Key Name
24203f96-b134-440e-981a-a24f2d432256 my-root-key
例 2
ルート鍵を作成し、JSON 出力を表示します。
# create a root key
$ ibmcloud kp key create my-root-key --output json
{
"id": "24203f96-b134-440e-981a-a24f2d432256",
"name": "my-root-key",
"type": "application/vnd.ibm.kms.key+json",
"extractable": false,
"state": 1,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:24203f96-b134-440e-981a-a24f2d432256"
}
例 3
base64 エンコードの値からルート鍵を作成します。
# create a random, base64-encoded, 32-byte key material
$ KEY_MATERIAL=$(openssl rand -base64 32)
# create a root key from a base64-encoded value
$ ibmcloud kp key create my-base64-root-key -k $KEY_MATERIAL
Creating key: 'my-base64-root-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID Key Name
5f9eef2d-53b4-42e8-8b56-c2970255210a my-base64-root-key
例 4
インポート・トークンを使用してルート鍵を作成します。
# create an import token that expires in 5 minutes and allows 10 retrievals
$ ibmcloud kp import-token create -e 300 -m 10
# create a random, base64-encoded, 32-byte key material
$ KEY_MATERIAL=$(openssl rand -base64 32)
# extract the nonce that was created by the "kp import-token create" command
$ NONCE=$(ibmcloud kp import-token show | jq -r '.["nonce"]')
# extract the public key that was created by the "kp import-token create" command
$ PUBLIC_KEY=$(ibmcloud kp import-token show | jq -r '.["payload"]')
# encrypt the key material using the public key
$ ibmcloud kp import-token key-encrypt -k $KEY_MATERIAL -p $PUBLIC_KEY
Encrypted Key
qT1pyiS1Sivbmmt4doTtfZC4XuLazk7u ...<redacted>... +a/6EqeAamo/9vo=
# capture the encrypted key material
$ ENCRYPTED_KEY=qT1pyiS1Sivbmmt4doTtfZC4XuLazk7u ...<redacted>... +a/6EqeAamo/9vo=
# encrypt the nonce
$ ibmcloud kp import-token nonce-encrypt -k $KEY_MATERIAL -n $NONCE
Encrypted Nonce IV
fR8uRvbrKIm9y/LCq9p6pwFBXbF864q/bw5meQ== efQgA8xBeyuBy39D
# capture the encrypted nonce and the initialization vector (IV)
$ ENCRYPTED_NONCE=fR8uRvbrKIm9y/LCq9p6pwFBXbF864q/bw5meQ==
$ IV=efQgA8xBeyuBy39D
# create a root key using an import token, provide an encrypted key, nonce, and initialization vector (IV)
$ ibmcloud kp key create my-imported-root-key -k $ENCRYPTED_KEY -n $ENCRYPTED_NONCE -v $IV
Creating key: 'my-imported-root-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID Key Name
4241a9b3-0ee0-4cfd-b0f3-fd80505fb675 my-imported-root-key
例 5
標準鍵を作成します。
# create a standard key
$ ibmcloud kp key create my-standard-key -s
Creating key: 'my-standard-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID Key Name
12d3f3a4-aea5-4832-8339-fa14dbffd935 my-standard-key
例 6
資格情報のボールトとして使用される標準鍵を作成します。
任意の base64 エンコード・ストリングを標準鍵としてインポートできます。 この例は、暗号鍵だけでなく、資格情報を以下の場所に保管する方法を示しています。 Key Protect.
標準鍵の最大サイズは、base64 でエンコードされる前の状態で 7,500 バイトです。
# create a file with your credentials
$ cat credentials.json
{
"host": "localhost",
"database": "dev-backup",
"username": "my-username",
"password": "my-password"
}
# encode the credentials (or any string) to a base64 string
$ ENCODED=$(base64 -i credentials.json)
$ echo $ENCODED
ewoJImhvc3QiOiAibG9jYWxob3N0IiwK...<redacted>...cGFzc3dvcmQiCn0K
# create a new key that contains the base64-encoded credentials
$ ibmcloud kp key create credentials-key -i $KP_INSTANCE_ID --key-material $ENCODED --standard-key --output json
# OR... CAPTURE THE KEY_ID
$ KEY_ID=$(ibmcloud kp key create credentials-key -i $KP_INSTANCE_ID --key-material $ENCODED --standard-key --output json | jq -r '.["id"]')
{
"id": "8480e26f-3add-4fff-bca7-8cf908894b7c",
"name": "credentials-key",
"type": "application/vnd.ibm.kms.key+json",
"extractable": true,
"state": 1,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:a192d603-0b8d-452f-aac3-f9e1f95e7411:key:8480e26f-3add-4fff-bca7-8cf908894b7c",
"deleted": false
}
# retrieve the base64-encoded payload
$ ibmcloud kp key show $KEY_ID --output json
# OR... CAPTURE THE PAYLOAD
$ PAYLOAD=$(ibmcloud kp key show $KEY_ID --output json | jq -r '.["payload"]')
{
"id": "8480e26f-3add-4fff-bca7-8cf908894b7c",
"name": "credentials-key",
"type": "application/vnd.ibm.kms.key+json",
"algorithmType": "AES",
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-08-18T16:13:08Z",
"lastUpdateDate": "2020-08-18T16:13:08Z",
"extractable": true,
"payload": "ewoJImhvc3QiOiAibG9jYWxob3N0IiwKCSJkYXRhYmFzZSI6ICJkZXYtYmFja3VwIiwKCSJ1c2VybmFtZSI6ICJteS11c2VybmFtZSIsCgkicGFzc3dvcmQiOiAibXktcGFzc3dvcmQiCn0=",
"state": 1,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:a192d603-0b8d-452f-aac3-f9e1f95e7411:key:8480e26f-3add-4fff-bca7-8cf908894b7c",
"deleted": false,
"dualAuthDelete": {
"enabled": false
}
}
# decode the payload to get the original string (credentials)
$ echo $PAYLOAD | base64 -d
{
"host": "localhost",
"database": "dev-backup",
"username": "my-username",
"password": "my-password"
}
例 7
別名を持つルート鍵を作成し、その別名を使用して鍵を識別し、鍵の詳細を表示します。
# create a root key with an alias
$ ibmcloud kp key create root-key-with-alias -a example-alias --output json
{
"id": "b3660416-4186-4587-b528-484886a4731b",
"name": "root-key-with-alias",
"type": "application/vnd.ibm.kms.key+json",
"extractable": false,
"state": 1,
"aliases": [
"example-alias"
],
"keyRingID": "default",
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:b3660416-4186-4587-b528-484886a4731b",
"deleted": false
}
# show key details using the alias as identifier
$ ibmcloud kp key show example-alias --output json
{
"id": "b3660416-4186-4587-b528-484886a4731b",
"name": "root-key-with-alias",
"type": "application/vnd.ibm.kms.key+json",
"algorithmType": "AES",
"createdBy": "user id ...<redacted>...",
"creationDate": "2022-06-09T21:21:55Z",
"lastUpdateDate": "2022-06-09T21:21:55Z",
"keyVersion": {
"id": "264fadc3-7667-4b25-916e-5825fe70de0b",
"creationDate": "2022-06-09T21:21:55Z"
},
"aliases": [
"example-alias"
],
"keyRingID": "default",
"extractable": false,
"state": 1,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:b3660416-4186-4587-b528-484886a4731b",
"deleted": false,
"dualAuthDelete": {
"enabled": false
}
}
例 8
キーに説明を追加します。 例えば、キーの目的を説明するために使用される短い句などです。
ibmcloud kp key create KEY_NAME -i 40f2a13c-780e-4641-bea5-e166e5bb5a9f -D ""description of the key""
必須パラメーター
-
KEY_NAME鍵に割り当てる、人間が理解できる固有の ID。
-
-i, --instance-IDIBM Cloud インスタンスを識別する Key Protect インスタンス ID。
次のコマンド**
$ export KP_INSTANCE_ID=<INSTANCE_ID>**で-iを指定する代わりに、環境変数を設定できます。
オプション・パラメーター
-
-k, --key-material鍵を生成した場合、これはサービスで保管および管理する base64 エンコードの鍵素材です。
ルート鍵は、16、24、または 32 バイト長である必要があります。それぞれ、128、192、または 256 ビットに対応します。 鍵は base64 エンコードでなければなりません。
標準鍵の最大サイズは 7,500 バイトです。 鍵は base64 エンコードでなければなりません。
インポート・トークンを使用して鍵を作成する場合、これは
kp import-token key-encryptプロセスから取得される暗号化された鍵になります。新しい鍵を生成するには、
-k, --key-materialパラメーターを省略します。 -
-n, --encrypted-nonceインポート・トークンと共に使用されます。 Key Protect に鍵をインポートする要求を検証する、暗号化された nonce 値。 この値は、サービスにインポートする鍵素材を使用して暗号化する必要があります。
ibmcloud kp import-token --helpを参照してください。nonce を取得するには、
ibmcloud kp import-token showを使用します。 次に、 その値をibmcloud kp import-token nonce-encryptを実行して 暗号化します。 -
-o, --outputCLI 出力形式を設定します。 すべてのコマンドで、デフォルトの出力形式は表形式です。 出力形式を JSON に変更するには
--output jsonを使用します。 -
-s, --standard-keyこのパラメーターを設定するのは、標準鍵を作成する場合のみです。 ルート鍵を作成するには、
--standard-keyパラメーターを省略します。 -
-v, --ivインポート・トークンと共に使用されます。 nonce を暗号化するときに生成される初期設定ベクトル (IV)。 IV 値は、サービスへの鍵のインポート要求を行うときに指定する暗号化された nonce 値を復号するために必要です。
IV を生成するには、
ibmcloud kp import-token nonce-encryptを実行して nonce を暗号化します。 -
--key-ring人間が判読可能な固有の鍵リング名。 ユーザーにデフォルト鍵リングに対する権限がない場合は必須。
-
-D, --descriptionキーへの説明の追加を許可します。 例えば、キーの目的を説明するために使用される短い句などです。
kp key create-key-with-policy-overrides
適用可能なインスタンス・ポリシーをオーバーライドする、指定された鍵のみのポリシーを持つ鍵を作成します。
ibmcloud kp key create-key-with-policy-overrides KEY_NAME
-i, --instance-id INSTANCE_ID
[-a, --aliases ALIAS]
[-d, --dual-auth-delete-policy-enabled KEY_RING_ID]
[--key-ring KEY_RING_ID]
[-k, --key-material KEY_MATERIAL]
[-m, --rotation-interval-month VALUE]
[-n, --encrypted-nonce NONCE]
[-o, --output OUTPUT]
[-s, --standard-key]
[-v, --iv IV]
例
2 カ月の間隔でローテーション・ポリシーを有効にするルート鍵を作成します (「月」はそれぞれ 30 日に評価され、60 日のローテーション間隔になります)。
% ibmcloud kp key create-key-with-policy-overrides test-key -m 2 -r
Creating key with policy overrides: 'test-key', in instance: '47377f07-8721-2O47-f396-ef1982c1e96e'...
OK
Key ID Key Name
076df396-4c90-e008-bf20-f1bb672d465b test-key
# List policies
% ibmcloud kp key policies 076df396-4c90-e008-bf20-f1bb672d465b
Retrieving policy details for key ID: 076df396-4c90-e008-bf20-f1bb672d465b...
OK
Created By IBMid-xxxxnnnnnxxx
Creation Date 2022-10-27T17:48:20Z
Last Updated 2022-10-27T17:48:20Z
Updated By IBMid-xxxxnnnnnxxx
Policy Type Rotation
Interval 2
Enabled true
必須パラメーター
-
KEY_NAME鍵に割り当てる、人間が理解できる固有の ID。
-
-i, --instance-IDIBM Cloud インスタンスを識別する Key Protect インスタンス ID。
次のコマンド**
$ export KP_INSTANCE_ID=<INSTANCE_ID>**で-iを指定する代わりに、環境変数を設定できます。
オプション・パラメーター
-
-a, --aliases鍵に割り当てられた 2 から 90 文字の範囲の、人間が判読できる英数字の別名。 別名には、スペースや、下線やダッシュ以外の特殊文字を含めることはできません。 鍵ごとに最大 5 つの別名が許可されます。
-
-d, --dual-auth-delete-policy-enabled
鍵の二重認証削除ポリシーを有効にします。
-
-k, --key-material鍵を生成した場合、これはサービスで保管および管理する base64 エンコードの鍵素材です。
ルート鍵は、16、24、または 32 バイト長である必要があります。それぞれ、128、192、または 256 ビットに対応します。 鍵は base64 エンコードでなければなりません。
標準キーの長さは最大7,500バイトまで可能です。 鍵は base64 エンコードでなければなりません。
インポート・トークンを使用して鍵を作成する場合、これは
kp import-token key-encryptプロセスから取得される暗号化された鍵になります。新しい鍵を生成するには、
-k, --key-materialパラメーターを省略します。 -
-n, --encrypted-nonceインポート・トークンと共に使用されます。 Key Protect に鍵をインポートする要求を検証する、暗号化された nonce 値。 この値は、サービスにインポートする鍵素材を使用して暗号化する必要があります。
ibmcloud kp import-token --helpを参照してください。nonce を取得するには、
ibmcloud kp import-token showを使用します。 次に、 その値をibmcloud kp import-token nonce-encryptを実行して 暗号化します。 -
-o, --outputCLI 出力形式を設定します。 すべてのコマンドで、デフォルトの出力形式は表形式です。 出力形式を JSON に変更するには
--output jsonを使用します。 -
-m, --rotation-interval-month
鍵のローテーション時間間隔を月単位で指定します。 デフォルト値は -1です。
-
-s, --standard-keyこのパラメーターを設定するのは、標準鍵を作成する場合のみです。 ルート鍵を作成するには、
--standard-keyパラメーターを省略します。 -
-v, --ivインポート・トークンと共に使用されます。 nonce を暗号化するときに生成される初期設定ベクトル (IV)。 IV 値は、サービスへの鍵のインポート要求を行うときに指定する暗号化された nonce 値を復号するために必要です。
IV を生成するには、
ibmcloud kp import-token nonce-encryptを実行して nonce を暗号化します。 -
--key-ring人間が判読可能な固有の鍵リング名。 ユーザーにデフォルト鍵リングに対する権限がない場合は必須。
kp key delete
Key Protect サービスで保管されている鍵を削除します。
ibmcloud kp key delete KEY_ID_OR_ALIAS
-i, --instance-id INSTANCE_ID
[--key-ring KEY_RING_ID]
[-f, --force]
[-o, --output OUTPUT]
例
以下に、kp key delete の例を示します。
例 1
ルート鍵を削除します。
# create a root key
$ ibmcloud kp key create my-root-key
Creating key: 'my-root-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID Key Name
8635b804-9966-4918-a16b-d561fdbf181f my-root-key
# show key details
$ ibmcloud kp key show 8635b804-9966-4918-a16b-d561fdbf181f
Grabbing info for key id: 8635b804-9966-4918-a16b-d561fdbf181f...
OK
Key ID Key Name Description Creation Date Expiration Date
8635b804-9966-4918-a16b-d561fdbf181f my-root-key 2020-05-05 19:58:02 +0000 UTC Key does not expire
# delete the key
$ ibmcloud kp key delete 8635b804-9966-4918-a16b-d561fdbf181f
Deleting key: 8635b804-9966-4918-a16b-d561fdbf181f, from instance: 390086ac-76fa-4094-8cf3-c0829bd69526...
OK
Deleted Key
8635b804-9966-4918-a16b-d561fdbf181f
例 2
ルート鍵を削除し、JSON 出力を表示します。
# create a root key
$ ibmcloud kp key create my-root-key --output json
{
"id": "9cca88c9-019e-4f0a-9e76-8e657c6b9720",
"name": "my-root-key",
"type": "application/vnd.ibm.kms.key+json",
"extractable": false,
"state": 1,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb145:390086ac-76fa-4094-8cf3-c0829bd69526:key:9cca88c9-019e-4f0a-9e76-8e657c6b9720"
}
# show key details
$ ibmcloud kp key show 9cca88c9-019e-4f0a-9e76-8e657c6b9720 --output json
{
"id": "9cca88c9-019e-4f0a-9e76-8e657c6b9720",
"name": "my-root-key",
"type": "application/vnd.ibm.kms.key+json",
"algorithmType": "AES",
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-05-05T20:03:00Z",
"lastUpdateDate": "2020-05-05T20:03:00Z",
"extractable": false,
"state": 1,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb145:390086ac-76fa-4094-8cf3-c0829bd69526:key:9cca88c9-019e-4f0a-9e76-8e657c6b9720"
}
# delete the key
$ ibmcloud kp key delete 9cca88c9-019e-4f0a-9e76-8e657c6b9720 --output json
{
"id": "9cca88c9-019e-4f0a-9e76-8e657c6b9720"
}
例 3
別のクラウド・リソースに登録されているルート鍵を削除します。
# create a Cloud Object Storage (COS) instance
# "lite" is the pricing plan and "global" is the region
$ COS_NAME=my-cos-1
$ ibmcloud resource service-instance-create $COS_NAME cloud-object-storage lite global
# capture the COS instance id (GUID)
$ COS_INSTANCE_ID=9d4353d8-6b85-4689-90dd-1ccfb4a275ab
# create a Key Management Service (KMS) instance
# "tiered-pricing" is the pricing plan and "us-south" is the region
$ KMS_NAME=my-kms-1
$ ibmcloud resource service-instance-create $KMS_NAME kms tiered-pricing us-south
# capture the Key Protect (KP) instance id (GUID)
$ KP_INSTANCE_ID=b0d84b32-09d0-4314-8049-da78e3b9ab6f
# create a policy for COS to read KMS; source is COS, target is KMS (Key Protect)
$ ibmcloud iam authorization-policy-create cloud-object-storage kms Reader \
--source-service-instance-id $COS_INSTANCE_ID \
--target-service-instance-id $KP_INSTANCE_ID
# capture the COS-to-KMS authorization policy id
$ COS_KMS_AUTHORIZATION=79375168-2d74-49df-98aa-3e727410fa71
# create a KP root key that COS uses to encrypt data
$ ibmcloud kp key create my-cos-key --output json
{
"id": "52a9d772-8982-4620-bfb4-b070dd812a0c",
"name": "my-cos-key",
"type": "application/vnd.ibm.kms.key+json",
"extractable": false,
"state": 1,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:b0d84b32-09d0-4314-8049-da78e3b9ab6f:key:52a9d772-8982-4620-bfb4-b070dd812a0c"
}
# capture the KP root key id
$ MY_COS_KEY_ID=52a9d772-8982-4620-bfb4-b070dd812a0c
# create a COS bucket and set KP encryption
# must be done in the console user interface (UI) because
# there is no API or CLI support at this time
# capture the name of the COS bucket that was created
$ COS_BUCKET=my-cos-kms-bucket
# view the KP registration; it's a result of creating the COS bucket
$ ibmcloud kp registrations --output json
[
{
"keyId": "52a9d772-8982-4620-bfb4-b070dd812a0c",
"resourceCrn": "crn:v1:bluemix:public:cloud-object-storage:global:a/ea998d3389c3473aa0987652b46fb146:9d4353d8-6b85-4689-90dd-1ccfb4a275ab:bucket:my-cos-kms-bucket",
"createdBy": "crn-crn:v1:bluemix:public:cloud-object-storage:global:a/ea998d3389c3473aa0987652b46fb146:9d4353d8-6b85-4689-90dd-1ccfb4a275ab::",
"creationDate": "2020-06-15T20:41:23Z",
"lastUpdated": "2020-06-15T20:41:23Z",
"keyVersion": { "id": "52a9d772-8982-4620-bfb4-b070dd812a0c", "creationDate": "2020-06-15T20:36:46Z"
}
}
]
# delete the authorization policy between COS AND KMS - this breaks everything
$ ibmcloud iam authorization-policy-delete $COS_KMS_AUTHORIZATION --force
# delete the KP root key - this fails because the registration was not deleted
$ ibmcloud kp key delete $MY_COS_KEY_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]'
# delete the KP root key; use --force because the registration between COS and KMS still exists
$ ibmcloud kp key delete $MY_COS_KEY_ID --force --output json
{
"id": "52a9d772-8982-4620-bfb4-b070dd812a0c"
}
# delete the KMS instance
$ ibmcloud resource service-instance-delete $KMS_NAME --force
# delete the COS instance
$ ibmcloud resource service-instance-delete $COS_NAME --force
# view resources (COS and KMS should no longer exist)
$ ibmcloud resource service-instances
Retrieving instances with type service_instance in resource group Default in all locations under account <account name> as <email address>...
OK
No service instance found.
必須パラメーター
-
KEY_ID_OR_ALIAS削除したいキーの UUID またはエイリアス( v4 )。 使用可能な鍵のリストを 取得するには、 kp keys コマンドを実行します。
-
-i, --instance-idIBM Cloud インスタンスを識別する Key Protect インスタンス ID。
次のコマンド**
$ export KP_INSTANCE_ID=<INSTANCE_ID>**で-iを指定する代わりに、環境変数を設定できます。
オプション・パラメーター
-
-f, --force鍵を強制的に削除します。これは、「登録」を持つ鍵を削除するために使用されます。 登録は、ルート鍵とその他のクラウド・リソース (Cloud Object Storage (COS) バケットや Cloud Databases デプロイメントなど) との間の関連付けです。
詳しくは、 kp registrations を参照してください。
-
-o, --outputCLI 出力形式を設定します。 すべてのコマンドで、デフォルトの出力形式は表形式です。 出力形式を JSON に変更するには
--output jsonを使用します。 -
--key-ring人間が判読可能な固有の鍵リング名。 ユーザーにデフォルト鍵リングに対する権限がない場合は必須。
kp key disable
kp key disable コマンドは、ルート鍵を無効にし、クラウド内にある鍵の関連データへの アクセス権限を一時的に取り消します。
管理者は、機密漏れ、暗号漏えい、データ漏えいの発生が疑われる場合に、 一時的に ルート鍵を無効にする必要が ある場合があります。
ルート鍵を無効にすると、その暗号化操作と復号操作が一時停止されます。 セキュリティー・リスクが なくなったことを確認したら、無効にしたルート鍵を 有効化して、 データへのアクセスを復元できます。
以前に有効にしたルート鍵を無効にすると、鍵は_アクティブ_ (値は 1) から_中断状態_ (値は 2) 鍵の状態に移行します。
ルート・キーを無効にするには、インスタンスまたはキーに対する_「マネージャー」_サービス・アクセス権限ロールが割り当てられている必要があります。 IAM ロールがどのように Key Protect サービス・アクションにどのようにマップされるかについては、サービス・アクセス役割を確認してください。
無効化されたルート鍵へのアクセス権限の取り消しをサポートする統合されたクラウド・サービスを使用している場合は、サービスでルート鍵の関連データへのアクセス権限が取り消されるまでに最大で 4 時間かかることがあります。
関連するデータへのアクセスが取り消されると、対応する disable event IBM Cloud Logs のWeb UIに表示されます。 disable eventは、鍵が取り消された (そして現在無効である) ために、鍵を暗号化および復号の操作に使用できないことを示しています。
ibmcloud kp key disable KEY_ID_OR_ALIAS
-i, --instance-id INSTANCE_ID
[--key-ring KEY_RING_ID]
例
以下に、kp key disable の例を示します。
例 1
ルート鍵を作成し、その鍵を無効にして、鍵の状態 (中断) を確認し、ルート鍵を有効にして、 鍵の状態 (アクティブ) を確認します。
# create a root key
$ ibmcloud kp key create my-root-key --output json
{
"id": "264fadc3-7667-4b25-916e-5825fe70de0b",
"name": "my-root-key",
"type": "application/vnd.ibm.kms.key+json",
"extractable": false,
"state": 1,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:264fadc3-7667-4b25-916e-5825fe70de0b"
}
# show key details - a state of "1" is "active"
$ ibmcloud kp key show 264fadc3-7667-4b25-916e-5825fe70de0b --output json
{
"id": "264fadc3-7667-4b25-916e-5825fe70de0b",
"name": "my-root-key",
"type": "application/vnd.ibm.kms.key+json",
"algorithmType": "AES",
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-06-09T21:21:55Z",
"lastUpdateDate": "2020-06-09T21:21:55Z",
"keyVersion": {
"id": "264fadc3-7667-4b25-916e-5825fe70de0b",
"creationDate": "2020-06-09T21:21:55Z"
},
"extractable": false,
"state": 1,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:264fadc3-7667-4b25-916e-5825fe70de0b"
}
# disable the root key
$ ibmcloud kp key disable 264fadc3-7667-4b25-916e-5825fe70de0b
Disabling key: '264fadc3-7667-4b25-916e-5825fe70de0b', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
# show key details - a state of "2" is "suspended"
$ ibmcloud kp key show 264fadc3-7667-4b25-916e-5825fe70de0b --output json
{
"id": "264fadc3-7667-4b25-916e-5825fe70de0b",
"name": "my-root-key",
"type": "application/vnd.ibm.kms.key+json",
"algorithmType": "AES",
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-06-09T21:21:55Z",
"lastUpdateDate": "2020-06-09T21:23:26Z",
"keyVersion": {
"id": "264fadc3-7667-4b25-916e-5825fe70de0b",
"creationDate": "2020-06-09T21:21:55Z"
},
"extractable": false,
"state": 2,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:264fadc3-7667-4b25-916e-5825fe70de0b"
}
例 2
ルート鍵を作成して無効にし、そのルート鍵を使用して別の鍵のラップを 試みます。
# create a root key
$ KEY_ID=$(ibmcloud kp key create my-root-key --output json | jq -r '.["id"]')
$ echo $KEY_ID
63d044d9-b38b-4803-85ef-ed9a1e5087c2
# disable the root key
$ ibmcloud kp key disable $KEY_ID
Disabling key: '63d044d9-b38b-4803-85ef-ed9a1e5087c2', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
# create a random, base64-encoded, 32-byte data encryption key (DEK)
$ PLAINTEXT=$(openssl rand -base64 32)
$ echo $PLAINTEXT
BNxtU9B4kXOZA45Cnyz3wOh4J77TakTXI1n2rj0ZiMc=
# wrap the plaintext key with the root key, creating a DEK (this is the ciphertext)
# this should fail (the root key is disables)
$ ibmcloud kp key wrap $KEY_ID -p $PLAINTEXT --output json
FAILED
kp.Error:
correlation_id='c2edbdad-7e62-4690-8fcc-10515ade9913',
msg='Conflict: Action could not be performed on key. 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]'
例 3
別名を使用してルート鍵を作成し、その別名を使用して、使用不可にする鍵を識別し、鍵の状態 (中断状態) を確認してから、ルート鍵を使用可能にして、新しい鍵の状態 (アクティブ) を確認します。
# create a root key
$ ibmcloud kp key create root-key-with-alias -a example-alias-1 --output json
{
"id": "264fadc3-7667-4b25-916e-5825fe70de0b",
"name": "root-key-with-alias",
"type": "application/vnd.ibm.kms.key+json",
"extractable": false,
"state": 1,
"aliases": [
"example-alias"
],
"deleted": false,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:264fadc3-7667-4b25-916e-5825fe70de0b"
}
# show key details using the alias as identifier - a state of "1" is "active"
$ ibmcloud kp key show example-alias-1 --output json
{
"id": "264fadc3-7667-4b25-916e-5825fe70de0b",
"name": "root-key-with-alias",
"type": "application/vnd.ibm.kms.key+json",
"algorithmType": "AES",
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-06-09T21:21:55Z",
"lastUpdateDate": "2020-06-09T21:21:55Z",
"keyVersion": {
"id": "264fadc3-7667-4b25-916e-5825fe70de0b",
"creationDate": "2020-06-09T21:21:55Z"
},
"extractable": false,
"state": 1,
...
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:264fadc3-7667-4b25-916e-5825fe70de0b"
}
# disable the root key identified by alias
$ ibmcloud kp key disable example-alias-1
Disabling key: '264fadc3-7667-4b25-916e-5825fe70de0b', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
# show key details - a state of "2" is "suspended"
$ ibmcloud kp key show example-alias-1 --output json
{
"id": "264fadc3-7667-4b25-916e-5825fe70de0b",
"name": "root-key-with-alias",
"type": "application/vnd.ibm.kms.key+json",
"algorithmType": "AES",
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-06-09T21:21:55Z",
"lastUpdateDate": "2020-06-09T21:23:26Z",
"keyVersion": {
"id": "264fadc3-7667-4b25-916e-5825fe70de0b",
"creationDate": "2020-06-09T21:21:55Z"
},
"extractable": false,
"state": 2,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:264fadc3-7667-4b25-916e-5825fe70de0b"
}
必須パラメーター
-
KEY_ID_OR_ALIAS削除したいキーの UUID またはエイリアス( v4 )。 使用可能な鍵のリストを 取得するには、 kp keys コマンドを実行します。
-
-i, --instance-idIBM Cloud インスタンスを識別する Key Protect インスタンス ID。
次のコマンド**
$ export KP_INSTANCE_ID=<INSTANCE_ID>**で-iを指定する代わりに、環境変数を設定できます。
オプション・パラメーター
-
--key-ring人間が判読可能な固有の鍵リング名。 ユーザーにデフォルト鍵リングに対する権限がない場合は必須。
kp key enable
以前に無効にされたルート鍵を有効にすると、鍵は_中断状態_ (値は 2) から_アクティブ_ (値は 1) 鍵の状態に移行します。 このアクションによって、鍵の暗号化操作と復号操作が元に戻されます。
無効になったルート鍵へのアクセス権限の復元をサポートしている統合クラウド・サービスを使用している場合、ルート鍵の関連データへのアクセス権限が復元されるまでに、最大で 4 時間かかることがあります。
関連するデータへのアクセスが復元された後、対応する enable event IBM Cloud Logs のWeb UIに表示されます。 enable eventは、鍵が復元された (そして現在有効である) ために、鍵を暗号化および復号の操作 (ラップ、アンラップ、再ラップなど) に使用できることを示しています。
ibmcloud kp key enable <KEY_ID_OR_ALIAS> -i <INSTANCE_ID> [ --key-ring KEY_RING_ID]
例
これは kp key enable の例です。
# create a root key
$ ibmcloud kp key create my-root-key --output json
{
"id": "264fadc3-7667-4b25-916e-5825fe70de0b",
"name": "my-root-key",
"type": "application/vnd.ibm.kms.key+json",
"extractable": false,
"state": 1,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:264fadc3-7667-4b25-916e-5825fe70de0b"
}
# show key details - a state of "1" is "active"
$ ibmcloud kp key show 264fadc3-7667-4b25-916e-5825fe70de0b --output json
{
"id": "264fadc3-7667-4b25-916e-5825fe70de0b",
"name": "my-root-key",
"type": "application/vnd.ibm.kms.key+json",
"algorithmType": "AES",
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-06-09T21:21:55Z",
"lastUpdateDate": "2020-06-09T21:21:55Z",
"keyVersion": {
"id": "264fadc3-7667-4b25-916e-5825fe70de0b",
"creationDate": "2020-06-09T21:21:55Z"
},
"extractable": false,
"state": 1,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:264fadc3-7667-4b25-916e-5825fe70de0b"
}
# disable the root key
$ ibmcloud kp key disable 264fadc3-7667-4b25-916e-5825fe70de0b
Disabling key: '264fadc3-7667-4b25-916e-5825fe70de0b', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
# show key details - a state of "2" is "suspended"
$ ibmcloud kp key show 264fadc3-7667-4b25-916e-5825fe70de0b --output json
{
"id": "264fadc3-7667-4b25-916e-5825fe70de0b",
"name": "my-root-key",
"type": "application/vnd.ibm.kms.key+json",
"algorithmType": "AES",
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-06-09T21:21:55Z",
"lastUpdateDate": "2020-06-09T21:23:26Z",
"keyVersion": {
"id": "264fadc3-7667-4b25-916e-5825fe70de0b",
"creationDate": "2020-06-09T21:21:55Z"
},
"extractable": false,
"state": 2,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:264fadc3-7667-4b25-916e-5825fe70de0b"
}
# enable the key
$ ibmcloud kp key enable 264fadc3-7667-4b25-916e-5825fe70de0b
Enabling key: '264fadc3-7667-4b25-916e-5825fe70de0b', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
# show key details - a state of "1" is "active"
$ ibmcloud kp key show 264fadc3-7667-4b25-916e-5825fe70de0b --output json
{
"id": "264fadc3-7667-4b25-916e-5825fe70de0b",
"name": "my-root-key",
"type": "application/vnd.ibm.kms.key+json",
"algorithmType": "AES",
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-06-09T21:21:55Z",
"lastUpdateDate": "2020-06-09T21:31:44Z",
"keyVersion": {
"id": "264fadc3-7667-4b25-916e-5825fe70de0b",
"creationDate": "2020-06-09T21:21:55Z"
},
"extractable": false,
"state": 1,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:264fadc3-7667-4b25-916e-5825fe70de0b"
}
必須パラメーター
-
KEY_ID_OR_ALIAS削除したいキーの UUID またはエイリアス( v4 )。 使用可能な鍵のリストを 取得するには、 kp keys コマンドを実行します。
-
-i, --instance-idIBM Cloud インスタンスを識別する Key Protect インスタンス ID。
次のコマンド**
$ export KP_INSTANCE_ID=<INSTANCE_ID>**で-iを指定する代わりに、環境変数を設定できます。
オプション・パラメーター
-
--key-ring人間が判読可能な固有の鍵リング名。 ユーザーにデフォルト鍵リングに対する権限がない場合は必須。
kp key policies
鍵の自動ローテーション間隔など、鍵ポリシーに関する詳細を取得します。
ibmcloud kp key policies KEY_ID_OR_ALIAS
-i, --instance-id INSTANCE_ID
[--key-ring KEY_RING_ID]
[-d, --dual-auth]
[-o, --output OUTPUT]
[-r, --rotation]
例
この例は、ルート鍵のポリシーを示しています。
# create a root key
$ KEY_ID=$(ibmcloud kp key create my-root-key --output json | jq -r '.["id"]')
$ echo $KEY_ID
c024c2b3-2093-46e5-aabb-fdf8cbc14e44
# show key details
$ ibmcloud kp key show $KEY_ID --output json
{
"id": "c024c2b3-2093-46e5-aabb-fdf8cbc14e44",
"name": "my-root-key",
"type": "application/vnd.ibm.kms.key+json",
"algorithmType": "AES",
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-06-18T20:34:39Z",
"lastUpdateDate": "2020-06-18T20:34:39Z",
"keyVersion": {
"id": "c024c2b3-2093-46e5-aabb-fdf8cbc14e44",
"creationDate": "2020-06-18T20:34:39Z"
},
"extractable": false,
"state": 1,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:a192d603-0b8d-452f-aac3-f9e1f95e7411:key:c024c2b3-2093-46e5-aabb-fdf8cbc14e44"
}
# update the policy and rotate the key every 2 months
$ ibmcloud kp key policy-update rotation $KEY_ID -m 2 --output json
{
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-06-18T20:35:41Z",
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:a192d603-0b8d-452f-aac3-f9e1f95e7411:policy:06a40fd6-6fd7-460a-87d7-8388fc1be057",
"lastUpdateDate": "2020-06-18T20:35:41Z",
"updatedBy": "user id ...<redacted>...",
"rotation": {
"interval_month": 2
}
}
# list the policies
$ ibmcloud kp key policies $KEY_ID --output json
[
{
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-06-18T20:35:41Z",
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:a192d603-0b8d-452f-aac3-f9e1f95e7411:policy:06a40fd6-6fd7-460a-87d7-8388fc1be057",
"lastUpdateDate": "2020-06-18T20:35:41Z",
"updatedBy": "user id ...<redacted>...",
"rotation": { "interval_month": 2
}
}
]
必須パラメーター
-
KEY_ID_OR_ALIASクエリの対象となるキーの UUID またはエイリアス( v4 )。 使用可能な鍵のリストを 取得するには、 kp keys コマンドを実行します。
-
-i, --instance-idIBM Cloud インスタンスを識別する Key Protect インスタンス ID。
次のコマンド**
$ export KP_INSTANCE_ID=<INSTANCE_ID>**で-iを指定する代わりに、環境変数を設定できます。
オプション・パラメーター
-
-d, --dual-authdual-auth-deleteポリシーを含むポリシーを表示します。 -
-o, --outputCLI 出力形式を設定します。 すべてのコマンドで、デフォルトの出力形式は表形式です。 出力形式を JSON に変更するには
--output jsonを使用します。 -
-r, --rotationrotationポリシーを含むポリシーを表示します。 -
--key-ring人間が判読可能な固有の鍵リング名。 ユーザーにデフォルト鍵リングに対する権限がない場合は必須。
kp key policy-update dual-auth-delete
二重許可プロセスを使用することによって、Key Protect を使用して安全に暗号鍵を削除できます。 鍵を削除すると、その内容と関連データが廃棄されます。 当該の鍵によって暗号化されているすべてのデータはアクセス不能になります。
二重許可ポリシーが設定された鍵を削除するには、2 人のユーザーからの許可が必要です。 最初の許可を出すには、 Key Protect APIを使用すると、削除のための鍵設定することによって最初の許可を提供できます。 その後、別のユーザーが GUI または API を使用して、そのキーを削除するための2回目の承認を行います。
ibmcloud kp key policy-update dual-auth-delete KEY_ID_OR_ALIAS
-i, --instance-id INSTANCE_ID
-e, --enable
[--key-ring KEY_RING_ID]
[-o, --output OUTPUT]
例
この例では、二重許可削除ポリシーを有効にします。
# create a root key
$ KEY_ID=$(ibmcloud kp key create my-root-key --output json | jq -r '.["id"]')
$ echo $KEY_ID
d887bfe8-5166-4dad-af32-7e3055ca1873
# show key details
$ ibmcloud kp key show $KEY_ID --output json
{
"id": "d887bfe8-5166-4dad-af32-7e3055ca1873",
"name": "my-root-key",
"type": "application/vnd.ibm.kms.key+json",
"algorithmType": "AES",
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-06-19T16:07:50Z",
"lastUpdateDate": "2020-06-19T16:07:50Z",
"keyVersion": {
"id": "d887bfe8-5166-4dad-af32-7e3055ca1873",
"creationDate": "2020-06-19T16:07:50Z"
},
"extractable": false,
"state": 1,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:a192d603-0b8d-452f-aac3-f9e1f95e7411:key:d887bfe8-5166-4dad-af32-7e3055ca1873"
}
# enable the dual authorization policy
$ ibmcloud kp key policy-update dual-auth-delete $KEY_ID --enable --output json
{
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-06-19T16:08:59Z",
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:a192d603-0b8d-452f-aac3-f9e1f95e7411:policy:0aab763d-b650-43a2-86ad-bdfe2c35c94c",
"lastUpdateDate": "2020-06-19T16:08:59Z",
"updatedBy": "user id ...<redacted>...",
"dualAuthDelete": {
"enabled": true
}
}
# list the policies
$ ibmcloud kp key policies $KEY_ID --output json
[
{
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-06-19T16:08:59Z",
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:a192d603-0b8d-452f-aac3-f9e1f95e7411:policy:0aab763d-b650-43a2-86ad-bdfe2c35c94c",
"lastUpdateDate": "2020-06-19T16:08:59Z",
"updatedBy": "user id ...<redacted>...",
"dualAuthDelete": { "enabled": true
}
}
]
# this should fail (the key has a dual authorization policy)
$ ibmcloud kp key delete $KEY_ID_OR_ALIAS
Deleting key: d887bfe8-5166-4dad-af32-7e3055ca1873, from instance: a192d603-0b8d-452f-aac3-f9e1f95e7411...
FAILED
kp.Error:
correlation_id='fe0db627-1726-4827-a9d2-c21d728e1c92',
msg='Conflict: 1 prior authorization(s) are required for deletion: Key could not be deleted.
Please see "reasons" for more details.',
reasons='[AUTHORIZATIONS_NOT_MET: Number of authorizations required to delete is not met -
FOR_MORE_INFO_REFER: https://cloud.ibm.com/apidocs/key-protect]'
必須パラメーター
-
KEY_ID_OR_ALIASクエリの対象となるキーの UUID またはエイリアス( v4 )。 使用可能な鍵のリストを 取得するには、 kp keys コマンドを実行します。
-
-e, --enabledual-auth-delete ポリシーを有効にした後で、このポリシーを無効にすることはできません。 2 つの (二重) 許可なしで鍵を削除することはできません。 このプロセスは 7 日以内に完了する必要があります。完了しない場合、二重許可ポリシーは自動的に取り消されます。つまり、許可を持つすべてのユーザーが鍵を削除できるようになります (2 つの許可が不要になります)。
二重許可ポリシーを誤って有効にし、鍵を削除する必要がある場合は、鍵を
disableにして (kp key disableコマンドを使用)、二重許可ポリシーが期限切れになるまで 7 日間待ちます。 7 日後には、鍵を削除できるようになります。Key Protect インスタンスは、アクティブな鍵がある限り、削除できません。 二重許可ポリシーが適用されている鍵は、アクティブな鍵です。
オプション・パラメーター
-
-o, --outputCLI 出力形式を設定します。 すべてのコマンドで、デフォルトの出力形式は表形式です。 出力形式を JSON に変更するには
--output jsonを使用します。 -
--key-ring人間が判読可能な固有の鍵リング名。 ユーザーにデフォルト鍵リングに対する権限がない場合は必須。
kp key policy-update rotation
ルート鍵の自動ローテーション・ポリシーを設定すると、鍵の存続期間が定期的に短くなり、その鍵で保護される情報量が制限されます。 ユーザーは、鍵の鍵ローテーション・ポリシーを有効または無効にすることもできます。
ローテーション・ポリシーは、以下の場所で生成されたルート鍵に対してのみ作成できます。 Key Protect. ルート鍵を最初にインポートした場合、 鍵をローテートするには、 新しい Base64 エンコードの鍵素材を指定する必要があります。 詳しくは、 オンデマンドでのルート鍵のローテートを参照してください。
ibmcloud kp key policy-update rotation KEY_ID|KEY_ALIAS
[--enable | --disable] [-m MONTHLY_INTERVAL] [-o FORMAT]
[--key-ring KEY_RING_ID]
例
ローテーション・ポリシーは、鍵の作成時または鍵の作成後に適用できます。 最初の例では、ローテーション・ポリシーを使用せずに単に鍵を作成します。
# create a root key
ibmcloud kp key create rotateKeyEnableDisableDemo
Creating key: 'rotateKeyEnableDisableDemo', in instance: '5ecfe306-d4at-48c0-ab07-b5c5bc751534'...
OK
Key ID Key Name
4d5540bd-3235-4a46-a8af-974f7ed6558a rotateKeyEnableDisableDemo
---------------------------------------------------------------------------------------------------------------------------------------------------
# set a rotation policy of three months
ibmcloud kp key policy-update rotation 4d5540bd-3235-4a46-a8af-974f7ed6558a -m 3 -e --output json
{
"createdBy": "user id ...<redacted>...",
"creationDate": "2022-12-02T00:50:11Z",
"crn": "crn:v1:bluemix:public:kms:us-south:a/e3e8fd14a61a49cda102faad15b06c09:5ecfe306-d4af-48c0-ab07-b5c5bc751534:policy:0ec7ad62-982d-45bb-895f-986d95015f5b",
"lastUpdateDate": "2022-12-02T00:51:38Z",
"updatedBy": "user id ...<redacted>...",
"rotation": {
"enabled": true,
"interval_month": 3
}
}
---------------------------------------------------------------------------------------------------------------------------------------------------
# show the rotation policy for this key
ibmcloud kp key policies 4d5540bd-3235-4a46-a8af-974f7ed6558a -r --output json
{
"createdBy": "user id ...<redacted>...",
"creationDate": "2022-12-02T00:50:11Z",
"crn": "crn:v1:bluemix:public:kms:us-south:a/e3e8fd14a61a49cda102faad15b06c09:5ecfe306-d4af-48c0-ab07-b5c5bc751534:policy:0ec7ad62-982d-45bb-895f-986d95015f5b",
"lastUpdateDate": "2022-12-02T00:51:38Z",
"updatedBy": "user id ...<redacted>...",
"rotation": {
"enabled": true,
"interval_month": 2
}
}
---------------------------------------------------------------------------------------------------------------------------------------------------
# update the policy to three months
ibmcloud kp key policy-update rotation 4d5540bd-3235-4a46-a8af-974f7ed6558a -m 3 -e --output json
{
"createdBy": "user id ...<redacted>...",
"creationDate": "2022-12-02T00:50:11Z",
"crn": "crn:v1:bluemix:public:kms:us-south:a/e3e8fd14a61a49cda102faad15b06c09:5ecfe306-d4af-48c0-ab07-b5c5bc751534:policy:0ec7ad62-982d-45bb-895f-986d95015f5b",
"lastUpdateDate": "2022-12-02T00:51:38Z",
"updatedBy": "user id ...<redacted>...",
"rotation": {
"enabled": true,
"interval_month": 3
}
}
---------------------------------------------------------------------------------------------------------------------------------------------------
# disable the policy for this key
ibmcloud kp key policy-update rotation 4d5540bd-3235-4a46-a8af-974f7ed6558a -d --output json
{
"createdBy": "user id ...<redacted>...",
"creationDate": "2022-12-02T00:50:11Z",
"crn": "crn:v1:bluemix:public:kms:us-south:a/e3e8fd14a61a49cda102faad15b06c09:5ecfe306-d4af-48c0-ab07-b5c5bc751534:policy:0ec7ad62-982d-45bb-895f-986d95015f5b",
"lastUpdateDate": "2022-12-02T00:52:52Z",
"updatedBy": "user id ...<redacted>...",
"rotation": {
"enabled": false,
"interval_month": 3
}
}
---------------------------------------------------------------------------------------------------------------------------------------------------
# show that the policy has been disabled
ibmcloud kp key policies 4d5540bd-3235-4a46-a8af-974f7ed6558a -r --output json
{
"createdBy": "user id ...<redacted>...",
"creationDate": "2022-12-02T00:50:11Z",
"crn": "crn:v1:bluemix:public:kms:us-south:a/e3e8fd14a61a49cda102faad15b06c09:5ecfe306-d4af-48c0-ab07-b5c5bc751534:policy:0ec7ad62-982d-45bb-895f-986d95015f5b",
"lastUpdateDate": "2022-12-02T00:52:52Z",
"updatedBy": "user id ...<redacted>...",
"rotation": {
"enabled": false,
"interval_month": 3
}
}
---------------------------------------------------------------------------------------------------------------------------------------------------
必須パラメーター
-
KEY_ID_OR_ALIASクエリの対象となるキーの UUID またはエイリアス( v4 )。 使用可能な鍵のリストを 取得するには、 kp keys コマンドを実行します。
オプション・パラメーター
-
-m, --monthly-interval鍵のローテーション間隔を月単位で設定します。 ローテーション間隔は、1 カ月から 12 カ月である必要があります。
-
-e, --enableまたは-d, --disableデフォルトでは、鍵ローテーション・ポリシーは有効になっています。 ポリシーを無効にしたり有効にしたりしたい場合は、それぞれ -d(--disable) または -e(--enable) を使います。
-
-o, --outputCLI 出力形式を設定します。 すべてのコマンドで、デフォルトの出力形式は表形式です。 出力形式を JSON に変更するには
--output jsonを使用します。 -
--key-ring人間が判読可能な固有の鍵リング名。 ユーザーにデフォルト鍵リングに対する権限がない場合は必須。
kp key restore
Key Protect は、以前に削除されたルート鍵を復元できます。これにより、クラウド内のルート鍵の関連データへのアクセス権限が復元されます。
管理者として、以前に保護されていた鍵のデータにアクセスするために、 Key Protect にインポートされたルート鍵を復元する必要がある場合があります。
鍵を復元するときは、鍵を_破棄済み_ (値は 5) から_アクティブ_ (値は 1) 鍵の状態に移動し、その鍵を使用して以前に暗号化されたすべてのデータへのアクセスを復元します。
削除された鍵は、削除から 30 日以内は復元できます。 この機能は、key material を使用して作成されたルート鍵でのみ使用可能です。
以下を使用して、 key material で作成されたルート鍵のみをリストアできます。
-k, --key-material オプションを指定した kp key create。 --key-material オプションが指定されていない場合、ルート鍵を復元することは_できません_。
削除されたルート鍵を復元する場合は、そのルート鍵を保存する 必要があります。 ルート鍵の作成に使用された key material。 元のkey materialを提供せずに削除された鍵を復元することは_できません_。
ibmcloud kp key restore KEY_ID_OR_ALIAS
-i, --instance-id INSTANCE_ID
-k, --key-material KEY_MATERIAL
[--key-ring KEY_RING_ID]
[-n, --encrypted-nonce ENCRYPTED_NONCE]
[-v, --iv IV]
例
以下に、kp key restore の例を示します。
例 1
この例では、鍵素材を使用してルート鍵を作成し、鍵を削除してから、鍵を復元します。
# create a random, base64-encoded, 32-byte key material
$ KEY_MATERIAL=$(openssl rand -base64 32)
$ echo $KEY_MATERIAL
4EZBMBMkZ87z4nvYsQH21DC5+wslgWhHRiU8bmqJ4CY=
# create a root key from a base64-encoded value
$ KEY_ID=$(ibmcloud kp key create my-base64-root-key -k $KEY_MATERIAL --output json | jq -r '.["id"]')
$ echo $KEY_ID
62ad0cd5-70a4-4c4d-9d87-5f4db620b120
# delete the root key
$ ibmcloud kp key delete $KEY_ID
Deleting key: 62ad0cd5-70a4-4c4d-9d87-5f4db620b120, from instance: a192d603-0b8d-452f-aac3-f9e1f95e7411...
OK
Deleted Key
62ad0cd5-70a4-4c4d-9d87-5f4db620b120
# list keys - verify the key was deleted
$ ibmcloud kp keys
Retrieving keys...
OK
Key ID Key Name
# restore the deleted key
$ ibmcloud kp key restore $KEY_ID -k $KEY_MATERIAL --output json
{
"id": "62ad0cd5-70a4-4c4d-9d87-5f4db620b120",
"name": "my-base64-root-key",
"type": "application/vnd.ibm.kms.key+json",
"extractable": false,
"state": 1,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:a192d603-0b8d-452f-aac3-f9e1f95e7411:key:62ad0cd5-70a4-4c4d-9d87-5f4db620b120"
}
# list keys - verify the key was restored
$ ibmcloud kp keys
Retrieving keys...
OK
Key ID Key Name
62ad0cd5-70a4-4c4d-9d87-5f4db620b120 my-base64-root-key
例 2
このワークフローでは、インポート・トークンを使用してルート鍵を作成し、鍵を削除してから、その鍵を復元します。
これは 2 段階のプロセスです。
-
インポート・トークンを使用してルート鍵を作成してから、その鍵を削除する
-
鍵を復元するために必要なインポート・トークンを作成し、鍵を復元する
インポートトークンを使用してルートキーを作成するには、時間制限があります(
-e, --expiration オプション)。 鍵を復元する際には、インポート・トークンが必要です。 これが、鍵を復元するためにインポート・トークンのプロセスを実施する必要がある理由です。
ステップ 1 - インポート・トークンを使用してルート鍵を作成してから、鍵を削除する
# create an import token that expires in 5 minutes and allows 10 retrievals
$ ibmcloud kp import-token create -e 300 -m 10
Created Expires Max Retrievals Remaining Retrievals
2020-06-18 12:21:59 +0000 UTC 2020-06-18 12:26:59 +0000 UTC 10 10
# create a random, base64-encoded, 32-byte key material
$ KEY_MATERIAL=$(openssl rand -base64 32)
$ echo $KEY_MATERIAL
sADDNDE3pcJlbYXu2z5QFORvsxV1PosRiAPERrhYJdk=
# extract the nonce that was created by the "kp import-token create" command
$ NONCE=$(ibmcloud kp import-token show | jq -r '.["nonce"]')
$ echo $NONCE
/QhqOsqlVPC+ZPWz
# 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
C+/puHn1v5p7aohitM4r6N4ohiVkCecP ...<redacted>... eWmJRuvsSxDg/OY=
# capture the encrypted key material
$ ENCRYPTED_KEY=C+/puHn1v5p7aohitM4r6N4ohiVkCecP ...<redacted>... eWmJRuvsSxDg/OY=
# encrypt the nonce
$ ibmcloud kp import-token nonce-encrypt -k $KEY_MATERIAL -n $NONCE
Encrypted Nonce IV
TxrgdayWnM5OB3JoYuQR97oulxvREptk8TzciQ== 7BiIpcbGxXBzuXZP
# capture the encrypted nonce and the initialization vector (IV)
$ ENCRYPTED_NONCE=TxrgdayWnM5OB3JoYuQR97oulxvREptk8TzciQ==
$ IV=7BiIpcbGxXBzuXZP
# 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
c42c6f2c-8b67-4016-b2c3-99fba9490f5d
# list keys - verify the key was created
$ ibmcloud kp keys
Retrieving keys...
OK
Key ID Key Name
c42c6f2c-8b67-4016-b2c3-99fba9490f5d my-imported-root-key
# delete the root key
$ ibmcloud kp key delete $KEY_ID
Deleting key: c42c6f2c-8b67-4016-b2c3-99fba9490f5d, from instance: a192d603-0b8d-452f-aac3-f9e1f95e7411...
OK
Deleted Key
c42c6f2c-8b67-4016-b2c3-99fba9490f5d
# list keys - verify the key was deleted
$ ibmcloud kp keys
Retrieving keys...
OK
Key ID Key Name
ステップ 2 - 鍵を復元するために必要なインポート・トークンを作成し、鍵を復元する
# NOTE: "kp key restore" requires an import token to complete the process,
# if you follow this example, the previously created import token 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 5 minutes and allows 10 retrievals
$ ibmcloud kp import-token create -e 300 -m 10
Created Expires Max Retrievals Remaining Retrievals
2020-06-18 12:30:54 +0000 UTC 2020-06-18 12:35:54 +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
Ch7hcsT1EOfSdghjOHKAemBZuzDoqJoH ...<redacted>... F4p/mkGT/EQJS5o=
# capture the encrypted key material
$ ENCRYPTED_KEY=Ch7hcsT1EOfSdghjOHKAemBZuzDoqJoH ...<redacted>... F4p/mkGT/EQJS5o=
# encrypt the nonce
$ ibmcloud kp import-token nonce-encrypt -k $KEY_MATERIAL -n $NONCE
Encrypted Nonce IV
nrrCczvYXvc6T7J2G+EOLjHZO1cpPyu/nhsIlA== N6oLJnUqaKF3v5Sd
# capture the encrypted nonce and the initialization vector (IV)
$ ENCRYPTED_NONCE=nrrCczvYXvc6T7J2G+EOLjHZO1cpPyu/nhsIlA==
$ IV=N6oLJnUqaKF3v5Sd
# restore the deleted key
$ ibmcloud kp key restore $KEY_ID -k $ENCRYPTED_KEY -n $ENCRYPTED_NONCE -v $IV --output json
{
"id": "c42c6f2c-8b67-4016-b2c3-99fba9490f5d",
"name": "my-imported-root-key",
"type": "application/vnd.ibm.kms.key+json",
"extractable": false,
"state": 1,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:a192d603-0b8d-452f-aac3-f9e1f95e7411:key:c42c6f2c-8b67-4016-b2c3-99fba9490f5d"
}
# list keys - verify the key was restored
$ ibmcloud kp keys
Retrieving keys...
OK
Key ID Key Name
c42c6f2c-8b67-4016-b2c3-99fba9490f5d my-imported-root-key
必須パラメーター
-
KEY_ID_OR_ALIAS復元したいキーの「 v4 」UUID またはエイリアス。
-
-i, --instance-IDIBM Cloud インスタンスを識別する Key Protect インスタンス ID。
次のコマンド**
$ export KP_INSTANCE_ID=<INSTANCE_ID>**で-iを指定する代わりに、環境変数を設定できます。
オプション・パラメーター
-
-k, --key-materialDeprecated以前にインポートされた base64 エンコードの鍵からの鍵素材。import tokenを使用してルート鍵を作成した場合、-k, --key-materialオプションの値は暗号化された鍵素材です。 インポート・トークンを使用してルート鍵を作成し、インポート・トークンを使用してルート鍵を復元している、例 2 を参照してください。 -
-n, --encrypted-nonceDeprecated暗号化された nonce を提供して、鍵をインポートする要求を検証します。詳しくは、 kp import-token nonce-encrypt を参照してください。
-
-o, --outputCLI 出力形式を設定します。 すべてのコマンドで、デフォルトの出力形式は表形式です。 出力形式を JSON に変更するには
--output jsonを使用します。 -
-v, --ivDeprecatednonce を暗号化した後に生成される初期設定ベクトル (IV) を提供します。詳しくは、 kp import-token nonce-encrypt を参照してください。
-
--key-ring人間が判読可能な固有の鍵リング名。 ユーザーにデフォルト鍵リングに対する権限がない場合は必須。
kp key-rings
kp インスタンスに関連付けられた鍵リングをリストします。
例
この例では、CLI プラグインを使用して、指定したインスタンスに該当する鍵リングをリストします。
ibmcloud kp key-rings -i <INSTANCE_ID>
必須パラメーター
-
-i, --instance-IDIBM Cloud インスタンスを識別する Key Protect インスタンス ID。
次のコマンド**
$ export KP_INSTANCE_ID=<INSTANCE_ID>**で-iを指定する代わりに、環境変数を設定できます。
kp key-ring create
kp インスタンスに鍵リングを作成します。
例
この例では、CLI プラグインを使用して、指定したインスタンスに鍵リングを作成します。
ibmcloud kp key-ring create KEY_RING_ID -i <INSTANCE_ID>
必須パラメーター
-
KEY_RING_ID2 文字以上 100 文字以下の英数字による鍵リングの表記。
-
-i, --instance-IDIBM Cloud インスタンスを識別する Key Protect インスタンス ID。
次のコマンド**
$ export KP_INSTANCE_ID=<INSTANCE_ID>**で-iを指定する代わりに、環境変数を設定できます。
kp key-ring delete
kp インスタンス内の鍵リングを削除します。
例
この例では、CLI プラグインを使用して、指定したインスタンスの鍵リングを削除します。 強制 (-f) が追加されていることに注意してください。
ibmcloud kp key-ring delete KEY_RING_ID -i <INSTANCE_ID> -f
必須パラメーター
-
KEY_RING_ID2 文字以上 100 文字以下の英数字による鍵リングの表記。
-
-i, --instance-IDIBM Cloud インスタンスを識別する Key Protect インスタンス ID。
次のコマンド**
$ export KP_INSTANCE_ID=<INSTANCE_ID>**で-iを指定する代わりに、環境変数を設定できます。
オプション・パラメーター
-
-f, --force破棄 状態の鍵がまだ存在する鍵リングを強制的に削除します。 他の状態の鍵を持つ鍵リングを削除しません。 鍵リングに 破棄 状態の鍵が含まれていて、このフラグが追加されていない場合、鍵リングの削除は失敗します。
kp key rotate
Key Protect サービスで保管されているルート鍵をローテートします。
ルート鍵をローテートするときに、鍵を新しい鍵素材で置き換えます。
Key Protect が鍵を作成した場合 (鍵が -k パラメーターを使用して作成されていません)、 Key Protect は新しい鍵を作成します。 kp key rotate を 指定することはできません。 -k パラメーター。
鍵を作成し、鍵素材を指定した場合 (
kp key create key-name -k $KEY_MATERIAL)、鍵をローテーションする際には 新しい鍵素材を指定する必要があります (kp key rotate $KEY_ID_OR_ALIAS -k $NEW_KEY_MATERIAL)
standard キー、つまり
kp create key-name --standard-key コマンド。
ibmcloud kp key rotate KEY_ID_OR_ALIAS
-i, --instance-id INSTANCE_ID
[--key-ring KEY_RING_ID]
[-k, --key-material KEY_MATERIAL]
例
以下に、kp key rotate の例を示します。
例 1
ルート鍵をローテートします。
# create a root key
$ ibmcloud kp key create my-root-key
Creating key: 'my-root-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID Key Name
1a6d5be8-287c-4eb3-9c44-cf0c2b0d67ad my-root-key
# rotate the key
$ ibmcloud kp key rotate 1a6d5be8-287c-4eb3-9c44-cf0c2b0d67ad
Rotating root key...
OK
# show key details
$ ibmcloud kp key show 1a6d5be8-287c-4eb3-9c44-cf0c2b0d67ad
Grabbing info for key id: 1a6d5be8-287c-4eb3-9c44-cf0c2b0d67ad...
OK
Key ID Key Name Description Creation Date Expiration Date
1a6d5be8-287c-4eb3-9c44-cf0c2b0d67ad my-root-key 2020-05-06 17:25:22 +0000 UTC Key does not expire
# create a new key material
$ NEW_KEY_MATERIAL=$(openssl rand -base64 32)
# Key Protect created the root key, providing a new key material will fail
$ ibmcloud kp key rotate 1a6d5be8-287c-4eb3-9c44-cf0c2b0d67ad -k $NEW_KEY_MATERIAL
Rotating root key...
FAILED
例 2
base64 エンコードの鍵またはインポートされたトークンの鍵をローテートします。
まず、base64 値またはインポートされたトークンからルート鍵を作成します。
# create a random, base64-encoded, 32-byte key material
$ KEY_MATERIAL=$(openssl rand -base64 32)
# create a root key from a base64-encoded value
$ ibmcloud kp key create my-base64-root-key -k $KEY_MATERIAL
Creating key: 'my-base64-root-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID Key Name
e55f86ab-6984-4594-ad23-3024f6440a58 my-base64-root-key
# create a new key material
$ NEW_KEY_MATERIAL=$(openssl rand -base64 32)
# rotate the key
$ ibmcloud kp key rotate e55f86ab-6984-4594-ad23-3024f6440a58 -k $NEW_KEY_MATERIAL
Rotating root key...
OK
# the key was created from a key material, NOT providing a new key material will fail
$ ibmcloud kp key rotate e55f86ab-6984-4594-ad23-3024f6440a58
Rotating root key...
FAILED
例 3
この例では、次の方法を説明します。
-
ルート・キーの作成
-
データ暗号鍵 (DEK) を作成します。これは
plaintextです -
DEK をルート鍵でラップします。これにより、
ciphertextが作成されます -
ルート鍵をローテートします
-
暗号文をアンラップして元の DEK (プレーン・テキスト) と新しい暗号文を表示します (新しい暗号文は、ローテートされた新しいルート鍵でラップされたプレーン・テキストです)
-
新しい暗号文をアンラップして、元の DEK (プレーン・テキスト) を表示します
# create a root key
$ KEY_ID=$(ibmcloud kp key create my-root-key --output json | jq -r '.["id"]')
$ echo $KEY_ID
5b976173-7804-4f82-acfa-bb98098bc528
# create a random, base64-encoded, 32-byte data encryption key (DEK)
$ PLAINTEXT=$(openssl rand -base64 32)
$ echo $PLAINTEXT
UPJ4YDwbQMjQG/aqlHsPhHV1CBkpIXngLHFS5+i4UZ4=
# wrap the plaintext key with the root key, creating a DEK (this is the ciphertext)
$ CIPHERTEXT=$(ibmcloud kp key wrap $KEY_ID -p $PLAINTEXT --output json | jq -r '.["Ciphertext"]')
$ echo $CIPHERTEXT
eyJjaXBoZXJ0ZXh0IjoiQkFrTlJrS2Q0 ...<redacted>... ODA5OGJjNTI4In0=
# rotate the root key
$ ibmcloud kp key rotate $KEY_ID
Rotating root key...
OK
# show key details
$ ibmcloud kp key show $KEY_ID --output json
{
"id": "5b976173-7804-4f82-acfa-bb98098bc528",
"name": "my-root-key",
"type": "application/vnd.ibm.kms.key+json",
"algorithmType": "AES",
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-06-10T18:09:27Z",
"lastUpdateDate": "2020-06-10T18:13:31Z",
"lastRotateDate": "2020-06-10T18:13:31Z",
"keyVersion": {
"id": "4330715a-918b-4718-b5ca-9475a214067e",
"creationDate": "2020-06-10T18:13:31Z"
},
"extractable": false,
"state": 1,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:5b976173-7804-4f82-acfa-bb98098bc528"
}
# unwrap the ciphertext, reveal the original DEK (plaintext),
# and see the new ciphertext (the plaintext wrapped with the rotated root key)
$ ibmcloud kp key unwrap $KEY_ID $CIPHERTEXT --output json
{
"Plaintext": "UPJ4YDwbQMjQG/aqlHsPhHV1CBkpIXngLHFS5+i4UZ4=",
"Rewrapped Plaintext": "eyJjaXBoZXJ0ZXh0IjoiS0FITEFRWjdh ...<redacted>... NWEyMTQwNjdlIn0="
}
# capture the new (rewrapped) plaintext
$ NEWCIPHERTEXT=eyJjaXBoZXJ0ZXh0IjoiS0FITEFRWjdh ...<redacted>... NWEyMTQwNjdlIn0=
# unwrap the ciphertext and reveal the original DEK (plaintext)
$ ibmcloud kp key unwrap $KEY_ID $NEWCIPHERTEXT --output json
{
"Plaintext": "UPJ4YDwbQMjQG/aqlHsPhHV1CBkpIXngLHFS5+i4UZ4=",
"Rewrapped Plaintext": ""
}
必須パラメーター
-
KEY_ID_OR_ALIASローテーションを行うルートキーの UUID またはエイリアス( v4 )。
-
-i, --instance-idIBM Cloud インスタンスを識別する Key Protect インスタンス ID。
次のコマンド**
$ export KP_INSTANCE_ID=<INSTANCE_ID>**で-iを指定する代わりに、環境変数を設定できます。
オプション・パラメーター
-
-k, --key-material最初に
--key-materialパラメーターを指定せずに (つまり、kp key create my-keyによって) 生成された鍵をローテートするには、--key-materialパラメーターを省略します。--key-materialパラメーターを指定して鍵が作成された場合は、既存のルート鍵のローテーションに使用する新しい base64 エンコードの鍵素材を指定します。サービスに最初にインポートされた鍵をローテートするには、 新しい 32 バイト (256 ビット) の鍵を指定します。
-
--key-ring人間が判読可能な固有の鍵リング名。 ユーザーにデフォルト鍵リングに対する権限がない場合は必須。
kp key schedule-delete
dual-auth-delete ポリシーが適用された鍵を削除するには、2 人の管理ユーザーからの許可が必要です。
dual-auth-delete ポリシーが適用された鍵を削除するには、次のプロセスに従います。
-
鍵を作成し、
dual-auth-deleteポリシーを有効にします -
ユーザー 1 は、以下を使用して鍵の削除をスケジュール (許可) します。
kp key schedule-deleteコマンド -
ユーザー 2 が、鍵の削除をスケジュール (許可) します
-
鍵は、2 番目の
schedule-deleteの実行後に削除されます。これは、ユーザー・インターフェース、API、および CLI でサポートされています -
7 日以内に 2 番目の許可が行われなかった場合、鍵はデフォルトの状態に戻ります
dual-auth-delete ポリシーを有効にするには、以下の 2 つの方法があります。
kp key policy-update dual-auth-deleteを使用して単一の鍵のポリシーを設定します- 以下を使用して、インスタンスのポリシーを設定します。
kp instance policy-update dual-auth-delete。インスタンス・ポリシーが有効になった後に作成されたすべての鍵は、インスタンス・ポリシー設定を継承します。
kp key cancel-delete コマンドは、以前の許可を取り消すか、削除します。
ibmcloud kp key schedule-delete KEY_ID_OR_ALIAS
-i, --instance-id INSTANCE_ID
[--key-ring KEY_RING_ID]
例
これは、キーを削除するようにスケジュール設定する例です。
# schedule this key to be deleted
$ ibmcloud kp key schedule-delete $KEY_ID_OR_ALIAS
Scheduling key for deletion...
OK
# this key has a dual-auth-delete policy
$ ibmcloud kp key policies $KEY_ID_OR_ALIAS --output json
[
{
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-06-22T19:13:00Z",
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:a192d603-0b8d-452f-aac3-f9e1f95e7411:policy:2427dbde-6cff-41eb-8b5a-ff26b038cafc",
"lastUpdateDate": "2020-06-22T21:36:16Z",
"updatedBy": "user id ...<redacted>...",
"dualAuthDelete": { "enabled": true
}
}
]
必須パラメーター
-
KEY_ID_OR_ALIAS削除したいキーの UUID またはエイリアス( v4 )。 使用可能な鍵のリストを 取得するには、 kp keys コマンドを実行します。
オプション・パラメーター
-
--key-ring人間が判読可能な固有の鍵リング名。 ユーザーにデフォルト鍵リングに対する権限がない場合は必須。
kp key show
鍵メタデータや鍵素材など、鍵に関する詳細を取得します。
ルート鍵として指定された鍵の場合、システムはその鍵の鍵素材を返すことはできません。
ibmcloud kp key show KEY_ID_OR_ALIAS
-i, --instance-id INSTANCE_ID
[--key-ring KEY_RING_ID]
[-o, --output OUTPUT]
例
以下に、kp key show の例を示します。
例 1
ルート鍵を作成し、詳細を表示します。
# create a root key
$ ibmcloud kp key create my-root-key
Creating key: 'my-root-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID Key Name
8635b804-9966-4918-a16b-d561fdbf181f my-root-key
# show key details
$ ibmcloud kp key show 8635b804-9966-4918-a16b-d561fdbf181f
Grabbing info for key id: 8635b804-9966-4918-a16b-d561fdbf181f...
OK
Key ID Key Name Description Creation Date Expiration Date
8635b804-9966-4918-a16b-d561fdbf181f my-root-key 2020-05-05 19:58:02 +0000 UTC Key does not expire
例 2
これは、以下からの JSON 鍵と値の説明です。 kp key show コマンドで表示されます。 この例では、すべての JSON 鍵と値のペアが確実に表示されるようにするために、鍵がローテートされています。
$ ibmcloud kp key show 8635b804-9966-4918-a16b-d561fdbf181f --output json
{
"id": "8635b804-9966-4918-a16b-d561fdbf181f",
"name": "my-root-key",
"type": "application/vnd.ibm.kms.key+json",
"algorithmType": "AES",
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-05-05T19:58:02Z",
"lastUpdateDate": "2020-05-05T19:58:24Z",
"lastRotateDate": "2020-05-05T19:58:24Z",
"keyVersion": {
"id": "85b65b20-4165-4da3-8ba9-880e72390461",
"creationDate": "2020-05-05T19:58:24Z"
},
"extractable": false,
"state": 1,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:8635b804-9966-4918-a16b-d561fdbf181f"
}
| キー | 説明 |
|---|---|
| id | これは KEY_ID です。固有であり、CLI で KEY_ID が指定されるたびに使用されます |
| 名前 | 鍵が作成されたときに指定された名前 |
| タイプ | REST 呼び出しでコンテンツ・タイプを設定するために API によって使用されます |
| algorithmType | アルゴリズム・タイプは、拡張暗号化標準 (AES) または暗号化ブロック・チェーン (CBC) です |
| createdBy | 鍵を作成したユーザーの ID |
| creationDate | 鍵が作成された日付と時刻 |
| lastUpdateDate | 鍵が最後に更新された日付と時刻 |
| lastRotateDate | 鍵が最後にローテートされた日付と時刻。この項目は、鍵がローテートされている場合にのみ存在します |
| keyVersion / id | これは、ルート鍵の最新バージョンを識別します |
| keyVersion / creationDate | 鍵素材が最後に更新された日付と時刻 |
| 抽出物 | 鍵素材をサービスの外に出すことができるかどうかを決定するブール値。 false に設定された場合、Key Protect は、鍵をラップ・アクションおよびアンラップ・アクションで使用される抽出不可能なルート鍵として指定します。 true に設定された場合、Key Protect は、鍵をご使用のアプリおよびサービスに保管できる標準鍵として指定します。 一度 false に設定すると、true に変更することはできません。 |
| state | 1 - 鍵はアクティブ。2 - 鍵は中断状態。鍵の状態を参照してください |
| crn | クラウド・リソース名 (CRN) |
必須パラメーター
-
KEY_ID_OR_ALIAS表示するルート鍵の UUID または別名 ( v4 )。
-
-i, --instance-idIBM Cloud インスタンスを識別する Key Protect インスタンス ID。
次のコマンド**
$ export KP_INSTANCE_ID=<INSTANCE_ID>**で-iを指定する代わりに、環境変数を設定できます。
オプション・パラメーター
-
-o, --outputCLI 出力形式を設定します。 すべてのコマンドで、デフォルトの出力形式は表形式です。 出力形式を JSON に変更するには
--output jsonを使用します。 -
--key-ring人間が判読可能な固有の鍵リング名。 ユーザーにデフォルト鍵リングに対する権限がない場合は必須。
kp key 同期
このサブコマンドは、鍵の関連リソースを同期化します。
ibmcloud kp key sync KEY_ID
-i, --instance-id INSTANCE_ID
[--key-ring KEY_RING_ID]
[-o, --output FORMAT]
例
これは kp key sync の例です。
例
鍵を同期して結果を表示します。
# synchronize the associated resources for a given key
$ ibmcloud kp key sync 94c06f9c-a07a-4961-8548-553cf7431f18
Synchronizing key...
OK
Key's associated resources are synchronized successfully
必須パラメーター
-
KEY_ID同期させたい鍵の ID 。
-
-i, --instance-idIBM Cloud インスタンスを識別する Key Protect インスタンス ID。
次のコマンド**
$ export KP_INSTANCE_ID=<INSTANCE_ID>**で-iを指定する代わりに、環境変数を設定できます。
オプション・パラメーター
-
-o, --outputCLI 出力形式を設定します。 すべてのコマンドで、デフォルトの出力形式は表形式です。 出力形式を JSON に変更するには
--output jsonを使用します。 -
--key-ring人間が判読可能な固有の鍵リング名。 ユーザーにデフォルト鍵リングに対する権限がない場合は必須。
kp key update
以下の既存の鍵リングまたは新しい鍵リングを使用で鍵を更新します。 Key Protect インスタンス。
ibmcloud kp key update KEY_ID_OR_ALIAS
-i, --instance-id INSTANCE_ID
-r, --new-key-ring KEY_RING_ID
[-o, --output OUTPUT]
必須パラメーター
-
KEY_ID_OR_ALIAS表示するルート鍵の UUID または別名 ( v4 )。
-
-i, --instance-idIBM Cloud インスタンスを識別する Key Protect インスタンス ID。
次のコマンド**
$ export KP_INSTANCE_ID=<INSTANCE_ID>**で-iを指定する代わりに、環境変数を設定できます。 -
-r, --new-key-ring人間が判読可能な固有の鍵リング名。 ユーザーにデフォルト鍵リングに対する権限がない場合は必須。
オプション・パラメーター
-
-o, --outputCLI 出力形式を設定します。 すべてのコマンドで、デフォルトの出力形式は表形式です。 出力形式を JSON に変更するには
--output jsonを使用します。
例
対象の鍵リングは、(鍵の作成の一環として作成するか、鍵リングだけを単独で作成するかは問わず) 既に作成されていなければならないことに注意してください。
これは kp key update の例です。
ic kp key update 5f2cc155-fe16-492c-845c-4d1f0688c7ba -r TestRing
コマンドを実行すると、次のような標準的な結果が返されます。
Updating key...
OK
Key ID Key Name Key Ring ID
5f2cc155-fe16-492c-845c-4d1f0688c7ba TestKey TestRing
kp key unwrap
以下に保存されているルート鍵を使用して、データ暗号鍵をアンラップします。 Key Protect インスタンス。
ibmcloud kp key unwrap KEY_ID_OR_ALIAS CIPHERTEXT_FROM_WRAP
-i, --instance-id INSTANCE_ID
[-a, --aad ADDITIONAL_DATA]
[--key-ring KEY_RING_ID]
[-o, --output OUTPUT]
例
以下に、kp key unwrap の例を示します。
例 1
暗号文をアンラップして、プレーン・テキストのデータ暗号鍵 (DEK) を表示します。
# create a root key
$ ibmcloud kp key create my-root-key
Creating key: 'my-root-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID Key Name
807eb0a6-cc10-4bfe-8331-41a6f712c4ea my-root-key
# create a data encryption key (DEK), wrapped with the root key
$ ibmcloud kp key wrap 807eb0a6-cc10-4bfe-8331-41a6f712c4ea
Wrapping key...
OK
Ciphertext
eyJjaXBoZXJ0ZXh0IjoiKzhjbHVqcUNP ...<redacted>... NmY3MTJjNGViIn0=
# capture the ciphertext
$ CIPHERTEXT=eyJjaXBoZXJ0ZXh0IjoiKzhjbHVqcUNP ...<redacted>... NmY3MTJjNGViIn0=
# unwrap the ciphertext to reveal the plaintext data encryption key (DEK)
$ ibmcloud kp key unwrap 807eb0a6-cc10-4bfe-8331-41a6f712c4ea $CIPHERTEXT
Unwrapping key...
OK
Plaintext Rewrapped Plaintext
mXW4GmBhkRG1+Dzkx1D6dMX99a4KyYwtwbghaaLEQZ0=
例 2
暗号文をアンラップして、AAD 情報を指定します。
追加認証データ (AAD) を指定するユース・ケースの 1 つは、暗号文を「パスワード保護」して、アンラップを困難にすることです。
暗号文と AAD は、暗号文をアンラップし、プレーン・テキストのデータ暗号鍵 (DEK) を表示するために必要です。
# create a root key
$ KEY_ID=$(ibmcloud kp key create my-root-key --output json | jq -r '.["id"]')
$ echo $KEY_ID
5f2cc155-fe16-492c-845c-4d1f0688c7ba
# create a random, base64-encoded, 32-byte data encryption key (DEK)
$ PLAINTEXT=$(openssl rand -base64 32)
$ echo $PLAINTEXT
H4ZfQe66aKcxirfCdNZ/3Na0JECP6HsAM3yclKmIfPQ=
# set the additional authentication data (AAD)
$ AAD1=My-Secret-Password
$ AAD2=My-Verification-Phrase
# wrap the plaintext with the root key and AAD
$ CIPHERTEXT=$(ibmcloud kp key wrap $KEY_ID -a "$AAD1,$AAD2" -p $PLAINTEXT --output json | jq -r '.["Ciphertext"]')
$ echo $CIPHERTEXT
eyJjaXBoZXJ0ZXh0IjoiL1pQUzRLbUxQ ...<redacted>... ZjA2ODhjN2JiIn0=
# unwrap the ciphertext and reveal the original plaintext DEK
$ ibmcloud kp key unwrap $KEY_ID $CIPHERTEXT -a $AAD1,$AAD2
Unwrapping key...
OK
Plaintext Rewrapped Plaintext
H4ZfQe66aKcxirfCdNZ/3Na0JECP6HsAM3yclKmIfPQ=
# this should fail (missing some of the AAD)
$ ibmcloud kp key unwrap $KEY_ID $CIPHERTEXT -a $AAD1
Unwrapping key...
FAILED
# this should fail (AAD is in a different order)
$ ibmcloud kp key unwrap $KEY_ID $CIPHERTEXT -a $AAD2,$AAD1
Unwrapping key...
FAILED
必須パラメーター
-
KEY_ID_OR_ALIAS初期のラップリクエストで使用したルートキーの UUID またはエイリアス( v4 )。
-
CIPHERTEXT_FROM_WRAP初期ラップ操作で返されたデータ暗号鍵。
-
-i, --instance-IDIBM Cloud インスタンスを識別する Key Protect インスタンス ID。
次のコマンド**
$ export KP_INSTANCE_ID=<INSTANCE_ID>**で-iを指定する代わりに、環境変数を設定できます。
オプション・パラメーター
-
-a, --aad鍵のセキュリティーを高めるために使用された追加認証データ (AAD)。 コンマで区切って最大 255 個のストリングを指定できます。 ラップ時に AAD を指定した場合は、アンラップ時に同じ AAD を同じ順序で指定する必要があります。
Key Protect サービスは、追加認証データを保存しません。 AAD を提供する場合は、同じ AAD にアクセスすることや、後続のアンラップ要求時に同じ AAD を提供することが確実にできるようにするため、データを安全な場所に保存してください。
-o, --output
Set the CLI output format. By default, all commands print in table format. To change the output format to JSON, use `--output json`.
-
--key-ring人間が判読可能な固有の鍵リング名。 ユーザーにデフォルト鍵リングに対する権限がない場合は必須。
kp 鍵のバージョン
ルート鍵をローテートすると、Key Protect が 新しいバージョンの鍵を作成します。 Key Protect インスタンス内の KeyID または鍵別名で使用可能な すべての鍵バージョンをリストします。
ibmcloud kp key versions KEY_ID_OR_ALIAS
-i, --instance-id INSTANCE_ID
[-r, --key-ring KEY_RING_ID]
[-n, --number-of-key-versions VERSION_LIMIT]
[-o, --output OUTPUT]
[-s, --starting-offset OFFSET]
[-t, --total-count TOTAL_COUNT]
[-a, --all-key-states ALL_KEY_STATES]
例
以下に、kp key versions の例を示します。
例 1
1 つのユース・ケースは、鍵のバージョン履歴を表示して、セキュリティー管理者としてルート鍵のローテーション履歴を監査することです。
# create a root key
$ ibmcloud kp key create my-root-key
Creating key: 'my-root-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID Key Name
807eb0a6-cc10-4bfe-8331-41a6f712c4ea my-root-key
# rotate the root key
$ ibmcloud kp key rotate 807eb0a6-cc10-4bfe-8331-41a6f712c4ea
Rotating root key...
OK
# Inspect the versions
$ ibmcloud kp key versions 807eb0a6-cc10-4bfe-8331-41a6f712c4ea
Retrieving key Versions...
OK
Key Version ID Creation Date
21562e93-8882-420e-90a7-912c70023373 2022-07-08T17:02:10Z
390086ac-76fa-4094-8cf3-c0829bd69526 2022-07-08T17:02:40Z
例 2
セキュリティー管理者としてルート鍵を監査し、履歴を表示するための同じユース・ケースで、その合計数が JSON 出力に示されます。
# create a root key
$ ibmcloud kp key create my-root-key
Creating key: 'my-root-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID Key Name
807eb0a6-cc10-4bfe-8331-41a6f712c4ea my-root-key
# rotate the root key
$ ibmcloud kp key rotate 807eb0a6-cc10-4bfe-8331-41a6f712c4ea
Rotating root key...
OK
# Inspect the versions
$ ibmcloud kp key versions 807eb0a6-cc10-4bfe-8331-41a6f712c4ea -t -o json
{
"metadata": {
"collectionType": "application/vnd.ibm.kms.key.version+json",
"collectionTotal": 2,
"totalCount": 2
},
"resources": [
{
"id": "21562e93-8882-420e-90a7-912c70023373",
"creationDate": "2022-07-08T17:02:10Z"
},
{
"id": "390086ac-76fa-4094-8cf3-c0829bd69526",
"creationDate": "2022-07-08T17:02:40Z"
}
]
}
例 3
別のユース・ケースでは、過去 1 年間の月次ローテーションで設定された鍵の最初の 12 個の鍵バージョンがリストされます。
# create a root key
$ ibmcloud kp key create my-root-key
Creating key: 'my-root-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID Key Name
807eb0a6-cc10-4bfe-8331-41a6f712c4ea my-root-key
# rotate the root key
$ ibmcloud kp key rotate 807eb0a6-cc10-4bfe-8331-41a6f712c4ea
Rotating root key...
OK
# Inspect the versions
$ ibmcloud kp key versions 807eb0a6-cc10-4bfe-8331-41a6f712c4ea -n 12 -o json
{
"metadata": {
"collectionType": "application/vnd.ibm.kms.key.version+json",
"collectionTotal": 12
},
"resources": [
{
"id": "21562e93-8882-420e-90a7-912c70023373",
"creationDate": "2021-07-08T17:02:10Z"
},
{
"id": "390086ac-76fa-4094-8cf3-c0829bd69526",
"creationDate": "2021-08-08T17:02:40Z"
},[...10x]
]
}
例 4
別のユース・ケースでは、過去 2 年間の月次ローテーションで設定された鍵の 2 番目の 12 個の鍵バージョンがリストされます。
bmcloud kp key versions $KEY_ID_OR_ALIAS -n 12 -s 12
# create a root key
$ ibmcloud kp key create my-root-key
Creating key: 'my-root-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID Key Name
807eb0a6-cc10-4bfe-8331-41a6f712c4ea my-root-key
# rotate the root key
$ ibmcloud kp key rotate 807eb0a6-cc10-4bfe-8331-41a6f712c4ea
Rotating root key...
OK
# Inspect the versions
$ ibmcloud kp key versions 807eb0a6-cc10-4bfe-8331-41a6f712c4ea -n 12 -s 12 -o json
{
"metadata": {
"collectionType": "application/vnd.ibm.kms.key.version+json",
"collectionTotal": 12
},
"resources": [
{
"id": "21562e93-8882-420e-90a7-912c70023373",
"creationDate": "2021-07-08T17:02:10Z"
},
{
"id": "390086ac-76fa-4094-8cf3-c0829bd69526",
"creationDate": "2021-08-08T17:02:40Z"
},[...10x]
]
}
例 5
現在アクティブでない鍵のバージョンの数を返すためのオプションのフラグ。 以前は、以下の例のように、コマンドは失敗していました。
# Attempt to show version count
$ ibmcloud kp key versions af61298c-d75d-42a8-aa76-e04178cf4685 -i 99980ccc-d482-4cd0-bb41-deb4f7f1eb92 -t
Retrieving key Versions...
FAILED
KEY_ACTION_INVALID_STATE_ERR
Key is not in a valid state
Correlation-ID:a494bf49-be82-426f-88d8-17b58cc8634d
CLI バージョン 0.8.0 以上では、以下の例のように、 -a フラグを追加するとコマンドは成功します。
# Attempt to show version count
$ ibmcloud kp key versions af61298c-d75d-42a8-aa76-e04178cf4685 -i 99980ccc-d482-4cd0-bb41-deb4f7f1eb92 -t -a
Retrieving key Versions...
OK
TotalCount: 2
Key Version ID Creation Date
14dfde20-a751-4c3e-b6b0-e8d00a17d8d1 2023-06-22T15:16:09Z
af61298c-d75d-42a8-aa76-e04178cf4685 2023-06-22T15:10:28Z
-a フラグが指定されていない場合でも、アクティブ以外の状態の鍵に対しては KEY_ACTION_INVALID_STATE_ERR が返されることに注意してください。
必須パラメーター
-
KEY_ID_OR_ALIAS初期のラップリクエストで使用したルートキーの UUID またはエイリアス( v4 )。
-
-i, --instance-IDIBM Cloud インスタンスを識別する Key Protect インスタンス ID。
次のコマンド**
$ export KP_INSTANCE_ID=<INSTANCE_ID>**で-iを指定する代わりに、環境変数を設定できます。
オプション・パラメーター
-
--key-ring人間が判読可能な固有の鍵リング名。 ユーザーにデフォルト鍵リングに対する権限がない場合は必須。
-
-n --number-of-key-versions指定された整数値によって取得される鍵バージョンの数を制限します (デフォルト: 200)。
-
-o, --outputCLI 出力形式を設定します。 すべてのコマンドで、デフォルトの出力形式は表形式です。 出力形式を JSON に変更するには
--output jsonを使用します。 -
-s --starting-offset指定された整数値で指定されたオフセットから鍵バージョンを取得します。
-
-t --total-count指定された整数値によって鍵の鍵バージョンの総数を修正するために使用されます。
-
-a --all-key-statesすべての鍵状態 (アクティブでない鍵を含む) のバージョンの数を返すためのオプション・フラグ。
kp key wrap
以下のインスタンスに保管されているルート鍵を使用してデータ暗号鍵 (DEK) をラップします。 Key Protect インスタンス。 DEK は通常、「その他」の情報を暗号化するために使用されます。
ルート鍵で DEK をラップすると、 Key Protect は、複数のアルゴリズムの長所を組み合わせて、暗号化データのプライバシーと保全性を保護します。
standard キー、つまり -s パラメーター (ibmcloud kp key create my-key-name -s)。
ibmcloud kp key wrap KEY_ID_OR_ALIAS
-i, --instance-id INSTANCE_ID
[--key-ring KEY_RING_ID]
[-a, --aad ADDITIONAL_DATA]
[-o, --output OUTPUT]
[-p, --plaintext DATA_KEY]
ベスト・プラクティス
データ暗号鍵 (DEK) をラップすると、ciphertextが作成されます。 暗号文は暗号化された情報で、アンラップされると、元の DEK が表示されます。
Key Protect サービスでは、DEK は保管されません。 kp key unwrap コマンドを使用して DEK を取得できることを確認するために、暗号文を保存 (ストレージに永続化) します。
プレーン・テキストの DEK は保存 (ストレージに永続化) しないことをお勧めします。 アプリケーションで、ストレージから暗号化テキストをロードし、 Key Protect を呼び出して、プレーン・テキストの DEK を取得し、その DEK を使用して「その他の」情報を暗号化またはラップします。
永続ストレージに DEK を保存しないでください。 DEK を公開すると、他のユーザーがデータを復号できるようになる可能性があります。
ルート鍵がラップされるたびに新しい暗号文が作成されます。
例
以下に、kp key wrap の例を示します。
例 1
Key Protect は、新しい base64 エンコードのデータ暗号鍵 (DEK) を作成し、その鍵をルート鍵でラップします。
# create a root key
$ ibmcloud kp key create my-root-key
Creating key: 'my-root-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID Key Name
807eb0a6-cc10-4bfe-8331-41a6f712c4ea my-root-key
# create a new key and wrap it with the root key, creating a DEK (this is the ciphertext)
$ ibmcloud kp key wrap 807eb0a6-cc10-4bfe-8331-41a6f712c4ea
Wrapping key...
OK
Ciphertext
eyJjaXBoZXJ0ZXh0IjoiKzhjbHVqcUNP ...<redacted>... NmY3MTJjNGViIn0=
# capture the ciphertext
$ CIPHERTEXT=eyJjaXBoZXJ0ZXh0IjoiKzhjbHVqcUNP ...<redacted>... NmY3MTJjNGViIn0=
# unwrap the ciphertext to reveal the plaintext (DEK)
$ ibmcloud kp key unwrap 807eb0a6-cc10-4bfe-8331-41a6f712c4ea $CIPHERTEXT
Unwrapping key...
OK
Plaintext Rewrapped Plaintext
mXW4GmBhkRG1+Dzkx1D6dMX99a4KyYwtwbghaaLEQZ0=
例 2
base64 エンコードのデータ暗号鍵 (DEK) を生成し、その鍵をルート鍵でラップします。
# create a root key
$ KEY_ID=$(ibmcloud kp key create my-root-key --output json | jq -r '.["id"]')
$ echo $KEY_ID
9052d914-bebe-4177-90e9-6073a167b507
# create a random, base64-encoded, 32-byte data encryption key (DEK)
$ PLAINTEXT=$(openssl rand -base64 32)
$ echo $PLAINTEXT
tEqoiCu9CeUsbqRe6yBUkrJg80QKKG/z46OkX0YQMV8=
# wrap the plaintext key with the root key, creating a DEK (this is the ciphertext)
$ CIPHERTEXT=$(ibmcloud kp key wrap $KEY_ID -p $PLAINTEXT --output json | jq -r '.["Ciphertext"]')
$ echo $CIPHERTEXT
eyJjaXBoZXJ0ZXh0IjoiTkdQRlhCb1dT ...<redacted>... M2ExNjdiNTA3In0=
# unwrap the ciphertext and reveal the original DEK
$ ibmcloud kp key unwrap $KEY_ID $CIPHERTEXT
tEqoiCu9CeUsbqRe6yBUkrJg80QKKG/z46OkX0YQMV8=
例 3
ルート鍵をラップして、AAD 情報を指定します。
追加認証データ (AAD) を指定するユース・ケースの 1 つは、暗号文を「パスワード保護」し、「検証句」を追加して、アンラップを困難にすることです。
暗号文と AAD は、暗号文をアンラップして、プレーン・テキストの DEK を表示するために必要です。
# create a root key
$ KEY_ID=$(ibmcloud kp key create my-root-key --output json | jq -r '.["id"]')
$ echo $KEY_ID
5f2cc155-fe16-492c-845c-4d1f0688c7ba
# set the additional authentication data (AAD)
$ AAD1=My-Secret-Password
$ AAD2=My-Verification-Phrase
# wrap the plaintext DEK with the root key and AAD
$ CIPHERTEXT=$(ibmcloud kp key wrap $KEY_ID -a "$AAD1,$AAD2" --output json | jq -r '.["Ciphertext"]')
$ echo $CIPHERTEXT
eyJjaXBoZXJ0ZXh0IjoiL1pQUzRLbUxQ ...<redacted>... ZjA2ODhjN2JiIn0=
# unwrap the ciphertext and reveal the original DEK
$ ibmcloud kp key unwrap $KEY_ID $CIPHERTEXT -a $AAD1,$AAD2
Unwrapping key...
OK
Plaintext Rewrapped Plaintext
H4ZfQe66aKcxirfCdNZ/3Na0JECP6HsAM3yclKmIfPQ=
# this should fail (missing some of the AAD)
$ ibmcloud kp key unwrap $KEY_ID $CIPHERTEXT -a $AAD1
Unwrapping key...
FAILED
# this should fail (AAD is in a different order)
$ ibmcloud kp key unwrap $KEY_ID $CIPHERTEXT -a $AAD2,$AAD1
Unwrapping key...
FAILED
必須パラメーター
-
KEY_ID_OR_ALIASラッピングに使用するルートキーの UUID またはエイリアス( v4 )。 標準鍵をラップすることはできません。
-
-i, --instance-idIBM Cloud インスタンスを識別する Key Protect インスタンス ID。
次のコマンド**
$ export KP_INSTANCE_ID=<INSTANCE_ID>**で-iを指定する代わりに、環境変数を設定できます。
オプション・パラメーター
-
-a, --aad鍵をさらにセキュアにするために使用される追加認証データ (AAD)。 AAD は、鍵の内容の保全性をチェックするストリングの配列です。 各ストリングは、最大 255 文字を保持できます。
ラップ要求時に AAD を指定した場合は、後続のアンラップ要求時にも同じ AAD を同じ順序で指定する必要があります。
-
-o, --outputCLI 出力形式を設定します。 すべてのコマンドで、デフォルトの出力形式は表形式です。 出力形式を JSON に変更するには
--output jsonを使用します。 -
-p, --plaintextplaintextは、ルートキー(KEY_IDまたはALIASパラメータで指定される)によってラップされた base64-encoded データ暗号化キー(DEK)を指定します。管理および保護する Base64 エンコードのデータ暗号鍵 (DEK)。 既存の鍵をインポートする場合は、32 バイト (256 ビット) の鍵を指定します。
新しい DEK を生成およびラップする場合は、
--plaintextパラメーターを省略します。 -
--key-ring人間が判読可能な固有の鍵リング名。 ユーザーにデフォルト鍵リングに対する権限がない場合は必須。
kp keys
Key Protect インスタンスで 使用可能な鍵をリストします。
鍵は key id の順序でリストされます。例 5 を参照してください。
ibmcloud kp keys
-i, --instance-id INSTANCE_ID
[-b --sort-by SORT_BY]
[-c, --crn]
[-f, --key-filter FILTERS]
[--key-ring KEY_RING_ID]
[--key-states STATES]
[-l --key-search KEY_SEARCH]
[-n, --number-of-keys NUMBER_OF_KEYS]
[-o, --output OUTPUT]
[-s, --starting-offset STARTING_OFFSET]
[-t, --key-type TYPE]
例
以下に、kp keys の例を示します。
例 1
キーをリストします。 これにより、デフォルトではインスタンス内の最初の 200 個の鍵のみがリストされることに注意してください。 表示するキーの数を増減するには、 --number-of-keys パラメーターに値を指定します。
# list keys
$ ibmcloud kp keys
Retrieving keys...
OK
Key ID Key Name
5f2cc155-fe16-492c-845c-4d1f0688c7ba my-root-key
c36e9f3a-feaf-4033-8603-687784dc7e51 my-root-key
例 2
キーの一覧を表示し、クラウドリソース名(CRN)を表示するには、 --crn パラメーター。
# list keys and show the cloud resource name (CRN)
$ ibmcloud kp keys -c
Retrieving keys...
OK
Key ID Key Name CRN
5f2cc155-fe16-492c-845c-4d1f0688c7ba my-root-key crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:5f2cc155-fe16-492c-845c-4d1f0688c7ba
c36e9f3a-feaf-4033-8603-687784dc7e51 my-root-key crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:c36e9f3a-feaf-4033-8603-687784dc7e51
例 3
JSON形式でキーを列挙してください。
--output json パラメーターは、--crn (クラウド・リソース名) パラメーターを意味しています。 パラメーター。
# list keys
$ ibmcloud kp keys --output json
[
{
"id": "5f2cc155-fe16-492c-845c-4d1f0688c7ba",
"name": "my-root-key",
"type": "application/vnd.ibm.kms.key+json",
"algorithmType": "AES",
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-05-10T18:04:01Z",
"lastUpdateDate": "2020-05-10T18:04:01Z",
"extractable": false,
"state": 1,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:5f2cc155-fe16-492c-845c-4d1f0688c7ba"
},
{
"id": "c36e9f3a-feaf-4033-8603-687784dc7e51",
"name": "my-root-key",
"type": "application/vnd.ibm.kms.key+json",
"algorithmType": "AES",
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-05-10T17:56:37Z",
"lastUpdateDate": "2020-05-10T17:56:37Z",
"extractable": false,
"state": 1,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:c36e9f3a-feaf-4033-8603-687784dc7e51"
}
]
例 4
キーを一覧表示し、それらを順に処理して詳細を表示します。
# list keys and convert to a list
$ KEYS=$(ibmcloud kp keys --output json | jq -r '.[] | .id')
$ for key in $(echo "${KEYS}"); do
ibmcloud kp key show ${key}
done
Grabbing info for key id: 5f2cc155-fe16-492c-845c-4d1f0688c7ba...
OK
Key ID Key Name Description Creation Date Expiration Date
5f2cc155-fe16-492c-845c-4d1f0688c7ba my-root-key 2020-05-10 18:04:01 +0000 UTC Key does not expire
Grabbing info for key id: c36e9f3a-feaf-4033-8603-687784dc7e51...
OK
Key ID Key Name Description Creation Date Expiration Date
c36e9f3a-feaf-4033-8603-687784dc7e51 my-root-key 2020-05-10 17:56:37 +0000 UTC Key does not expire
例 5
20 個の鍵を作成し、kp keys -n -s オプションを使用して 5 つのグループに分けて表示します。
# create 20 test keys
$ for I in {1..20}; do
KEY_ID=$(ibmcloud kp key create my-test-key-$I --output json | jq -r '.["id"]')
KEY_NAME=$(ibmcloud kp key show $KEY_ID --output json | jq -r '.["name"]')
echo $KEY_ID $KEY_NAME
done
b70f62a1-4d52-4526-91a9-ce47bf14c2a5 my-test-key-1
215f592c-3e42-47b6-867c-3cc1cce8a8fd my-test-key-2
df530c55-39c0-44e8-b7db-397593f70d90 my-test-key-3
768c9ceb-368b-46f7-9b1d-be211e036fe1 my-test-key-4
f141be88-5a34-4290-8513-4f01d934e75a my-test-key-5
b8794334-eea6-4c0d-8fe1-8086300b13f7 my-test-key-6
87679194-52d0-42af-81e1-bffd64f87315 my-test-key-7
cc7faf46-43cf-43b2-be98-7d1815371639 my-test-key-8
e9b08526-3227-406c-b83f-c28844bd952b my-test-key-9
3ee0d859-2968-4444-8e4d-3d28614f055c my-test-key-10
bc459a2f-56cb-445e-b4ee-9d1866b57560 my-test-key-11
62090ba8-7363-408e-9edc-aa9fb69c09be my-test-key-12
3b4b0511-00df-48e6-ad65-fad35bb6ce17 my-test-key-13
16276369-ba81-4eb5-be92-f13512147ad4 my-test-key-14
3d683d56-d340-40cb-b8b6-605dcfded01f my-test-key-15
10954149-0217-472d-8137-42fc330dbd03 my-test-key-16
54dd2745-7718-487f-85e6-a67e758dd945 my-test-key-17
3a5a3b52-6942-463d-9f7a-5b216bbf5123 my-test-key-18
90138be5-1dd1-4eea-b7c1-73cc8609e7f7 my-test-key-19
cf0a3d8b-4856-4aa5-be6a-88cca465eab0 my-test-key-20
# this is the same list sorted in KEY_ID order
# this is the order we expect when listing keys
10954149-0217-472d-8137-42fc330dbd03 my-test-key-16
16276369-ba81-4eb5-be92-f13512147ad4 my-test-key-14
215f592c-3e42-47b6-867c-3cc1cce8a8fd my-test-key-2
3a5a3b52-6942-463d-9f7a-5b216bbf5123 my-test-key-18
3b4b0511-00df-48e6-ad65-fad35bb6ce17 my-test-key-13
3d683d56-d340-40cb-b8b6-605dcfded01f my-test-key-15
3ee0d859-2968-4444-8e4d-3d28614f055c my-test-key-10
54dd2745-7718-487f-85e6-a67e758dd945 my-test-key-17
62090ba8-7363-408e-9edc-aa9fb69c09be my-test-key-12
768c9ceb-368b-46f7-9b1d-be211e036fe1 my-test-key-4
87679194-52d0-42af-81e1-bffd64f87315 my-test-key-7
90138be5-1dd1-4eea-b7c1-73cc8609e7f7 my-test-key-19
b70f62a1-4d52-4526-91a9-ce47bf14c2a5 my-test-key-1
b8794334-eea6-4c0d-8fe1-8086300b13f7 my-test-key-6
bc459a2f-56cb-445e-b4ee-9d1866b57560 my-test-key-11
cc7faf46-43cf-43b2-be98-7d1815371639 my-test-key-8
cf0a3d8b-4856-4aa5-be6a-88cca465eab0 my-test-key-20
df530c55-39c0-44e8-b7db-397593f70d90 my-test-key-3
e9b08526-3227-406c-b83f-c28844bd952b my-test-key-9
f141be88-5a34-4290-8513-4f01d934e75a my-test-key-5
# define a function for listing keys
$ list_keys () {
N=$1
S=$2
KEYS=$(ibmcloud kp keys --number-of-keys $N --starting-offset $S --output json | jq -r '.[] | .id')
for KEY_ID in $(echo "${KEYS}"); do
KEY_ID=$(ibmcloud kp key show $KEY_ID --output json | jq -r '.["id"]')
KEY_NAME=$(ibmcloud kp key show $KEY_ID --output json | jq -r '.["name"]')
echo $KEY_ID $KEY_NAME
done
}
# list the first group of keys
$ list_keys 5 0
10954149-0217-472d-8137-42fc330dbd03 my-test-key-16
16276369-ba81-4eb5-be92-f13512147ad4 my-test-key-14
215f592c-3e42-47b6-867c-3cc1cce8a8fd my-test-key-2
3a5a3b52-6942-463d-9f7a-5b216bbf5123 my-test-key-18
3b4b0511-00df-48e6-ad65-fad35bb6ce17 my-test-key-13
# list the second group of keys
$ list_keys 5 5
3d683d56-d340-40cb-b8b6-605dcfded01f my-test-key-15
3ee0d859-2968-4444-8e4d-3d28614f055c my-test-key-10
54dd2745-7718-487f-85e6-a67e758dd945 my-test-key-17
62090ba8-7363-408e-9edc-aa9fb69c09be my-test-key-12
768c9ceb-368b-46f7-9b1d-be211e036fe1 my-test-key-4
# list the third group of keys
$ list_keys 5 10
87679194-52d0-42af-81e1-bffd64f87315 my-test-key-7
90138be5-1dd1-4eea-b7c1-73cc8609e7f7 my-test-key-19
b70f62a1-4d52-4526-91a9-ce47bf14c2a5 my-test-key-1
b8794334-eea6-4c0d-8fe1-8086300b13f7 my-test-key-6
bc459a2f-56cb-445e-b4ee-9d1866b57560 my-test-key-11
# list the last group of keys
$ list_keys 5 15
cc7faf46-43cf-43b2-be98-7d1815371639 my-test-key-8
cf0a3d8b-4856-4aa5-be6a-88cca465eab0 my-test-key-20
df530c55-39c0-44e8-b7db-397593f70d90 my-test-key-3
e9b08526-3227-406c-b83f-c28844bd952b my-test-key-9
f141be88-5a34-4290-8513-4f01d934e75a my-test-key-5
# delete the test keys
$ KEYS=$(ibmcloud kp keys --output json | jq -r '.[] | .id')
$ for KEY_ID in $(echo "${KEYS}"); do
KEY_NAME=$(ibmcloud kp key show $KEY_ID --output json | jq -r '.["name"]')
if [[ $KEY_NAME == *"my-test-key-"* ]]; then
echo "Deleting... $KEY_NAME $KEY_ID"
ibmcloud kp key delete $KEY_ID
fi
done
(output not shown)
例 6
Key Protect インスタンス内の鍵の状態 (Active、 Suspended) に基づいて鍵をリストします。
# list active and suspended keys
$ ibmcloud kp keys --key-states active,suspended
Retrieving keys...
OK
Key ID Key Name
ef2cc155-fe56-492c-845c-4d1f0688c7ba my-active-key
636e9f3a-feaf-4033-8603-687754dc7e51 my-suspended-key
例 7
Key Protect インスタンス内の鍵タイプ (ルート) に基づいて鍵をリストします。
# list root keys
$ ibmcloud kp keys -t root
Retrieving keys...
OK
Key ID Key Name
2f1cb135-fa16-40dc-815c-4d1f0ee8c7ba my-root-key
例 8
Key Protect インスタンス内のキーをリストします。キー名または別名は、引用符なしでストリング「TEST」内の文字と正確に一致します。
# list keys with identifiers exactly matching TEST
$ ibmcloud kp keys -l exact:TEST
Retrieving keys...
OK
Key ID Key Name
636e9f3a-feaf-4033-8603-687754dc7e51 TEST
例 9
Key Protect インスタンス内の鍵をリストし、その ID と、その鍵が作成された日付 (ハイフン、「-」は降順でソートすることを示します) に基づいて鍵をソートします。
# sort keys by id and descending creationDate
$ ibmcloud kp keys -b id,-creationDate
Retrieving keys...
OK
Key ID Key Name
ef2cc155-fe56-492c-845c-4d1f0688c7ba my-last-key
2f1cb135-fa16-40dc-815c-4d1f0ee8c7ba my-first-key
必須パラメーター
-
-i, --instance-idIBM Cloud インスタンスを識別する Key Protect インスタンス ID。
次のコマンド**
$ export KP_INSTANCE_ID=<INSTANCE_ID>**で-iを指定する代わりに、環境変数を設定できます。
オプション・パラメーター
-
-b, --sort-byパラメーターに基づいてキーをソートします。 結果をソートするためのデフォルト・プロパティーは「id」です。 パラメーターの前の '-' は降順でソートすることを示します。 現時点でサポートされているソート・パラメーターは以下のとおりです。
- id
- state
- 抽出物
- インポート済み
- creationDate
- lastUpdateDate
- lastRotateDate
- deletionDate
- expirationDate
-
-c, --crn出力にクラウド・リソース名 (CRN) を含めます。
-
-f, --key-filterパラメーターに基づいてキーをフィルターに掛けます。 サポートされるキー・フィルター・パラメーターは次のとおりです。
- creationDate
- deletionDate
- expirationDate
- 抽出物
- lastUpdateDate
- lastRotateDate
- state
日付をサポートする演算子は、以下のとおりです。
- GT (より大)
- gte(以上)
- LT (より小)
- lte(以下)
これらの演算子のいずれかが欠落している場合、結果は完全一致になります。
-
--key-states取得対象のキーの状態。 有効な状態を含むストリングのリスト-
Active、Suspended、Deactivated、Destroyed。 (デフォルト:active,suspended,deactivated)。 -
-l, --key-search先頭に修飾子が付加された検索ストリング (例:
exact、not、alias、name) に基づいてキーをリストします。 詳しくは、 API 資料 を参照してください。 -
-n, --number-of-keys取得するキーの数を制限します。 デフォルトは 200 で、最大は 5000 です。
-
-o, --outputCLI 出力形式を設定します。 すべてのコマンドで、デフォルトの出力形式は表形式です。 出力形式を JSON に変更するには
--output jsonを使用します。出力を JSON に設定すると (
--output json)、出力にクラウド・リソース名 (CRN) が含められます。 -
-r, --key-ring人間が判読可能な固有の鍵リング名。 ユーザーにデフォルト鍵リングに対する権限がない場合は必須。
-
-s, --starting-offset指定されたオフセットから始まる鍵を取得します。 オフセットはゼロベースです。つまり、オフセット 0 (ゼロ) が最初の鍵です。
-
-t, --key-type取得する鍵のタイプ。
standard-keyに設定すると、標準のキーが取得されます。root-keyに設定すると、ルートキーが取得されます。
kp region-set
異なる Key Protect リージョンのエンドポイントをターゲットにします。
ibmcloud kp region-set REGION
-i, --instance-id INSTANCE_ID
[-u, --unset]
例
以下に、kp region-set の例を示します。
例 1
REGION パラメーターが指定されていない場合は、リージョンを選択するよう求めるプロンプトが出されます。
# set the region endpoint
$ ibmcloud kp region-set
Select a Region:
1. au-syd
2. ca-tor
3. eu-de
4. eu-gb
5. jp-osa
6. jp-tok
7. us-east
8. us-south
9. br-sao
10. staging (us-south)
Enter a number:
5
OK
例 2
リージョンを明示的に設定します。
# set the region endpoint to "us-south"
$ ibmcloud kp region-set us-south
OK
REGION は、有効なリージョン・エンドポイントである必要があります。
# this should fail (not a valid regional endpoint)
$ ibmcloud kp region-set not-a-region
FAILED
例 3
リージョン・エンドポイントを設定解除 (削除) します。
# remove the regional endpoint
$ ibmcloud kp region-set -u
OK
必須パラメーター
-
-i, --instance-idIBM Cloud インスタンスを識別する Key Protect インスタンス ID。
次のコマンド**
$ export KP_INSTANCE_ID=<INSTANCE_ID>**で-iを指定する代わりに、環境変数を設定できます。
オプション・パラメーター
-
REGIONリージョン・エンドポイントを指定します。 このパラメーターはオプションです。指定しない場合、リストからリージョン・エンドポイントを選択するよう求めるプロンプトが出されます。
-
-u, --unsetリージョン・エンドポイントを設定解除 (削除) します。
kp registrations
登録は、ルート鍵とその他のクラウド・リソース (Cloud Object Storage (COS) バケットや Cloud Databases デプロイメントなど) との間の関連付けです。
例えば、Key Protect で、保存中データを保護するために COS によって使用されるルート鍵を作成するとします。
他のクラウド・リソースと Key Protect の関係はregistrationと呼ばれます。
ルート鍵に依存しているリソース (COS バケットやオブジェクトなど) がある場合は、ルート鍵を削除しないでください。 ルート鍵を削除すると、それらのリソースをリカバリーできなくなります。 これは「暗号シュレッディング」と呼ばれ、この操作を元に戻すことはできません。
ibmcloud kp registrations
-i, --instance-id INSTANCE_ID
[-r, --key-ring KEY_RING_ID]
[-c, --crn-query CRN_PATTERN]
[-k, --key-id KEY_ID_OR_ALIAS]
[-o, --output OUTPUT]
例
以下に、kp registrations の例を示します。
登録の例では、多数のクラウド・リソース名 (CRN) が表示されます。 CRN は以下の形式に従います。
crn:version:cname:ctype:service-name:location:scope:service-instance:resource-type:resource
CRNフィールドに関する詳細な説明については、 「 クラウドリソース名 」 を参照してください。
例 1
すべての登録をリストします。これには、データベース、ストレージ、コンピュート、コンテナー、またはメッセージングなどのクラウド・リソースが含まれる場合があります。
この例は、Cloud Object Storage (COS) と以下の間の登録を示しています。 Key Protect.
# view all registrations
$ ibmcloud kp registrations --output json
[
{
"keyId": "2cbea94c-6070-4a24-b0f8-7a56e4d7cb6f",
"resourceCrn": "crn:v1:bluemix:public:cloud-object-storage:global:a/ea998d3389c3473aa0987652b46fb146:4b636e74-f3ca-40bb-80b8-3bd21801ccb8:bucket:my-cos-kms-bucket",
"createdBy": "crn-crn:v1:bluemix:public:cloud-object-storage:global:a/ea998d3389c3473aa0987652b46fb146:4b636e74-f3ca-40bb-80b8-3bd21801ccb8::",
"creationDate": "2020-06-15T16:07:37Z",
"lastUpdated": "2020-06-15T16:07:37Z",
"keyVersion": { "id": "2cbea94c-6070-4a24-b0f8-7a56e4d7cb6f", "creationDate": "2020-06-15T16:05:53Z"
}
}
]
例 2
この例では、2 つのクラウド・リソース (Cloud Object Storage および Key Protect) のライフサイクル全体を示しています。 それは Key Protect インスタンスを作成し、それらの間にポリシーを作成してから、インスタンスを削除するまでです。
ステップの概要は以下のとおりです。
| 手順 | 説明 | 説明 |
|---|---|---|
| 1 | CLI | Cloud Object Storage (COS) および Key Protect (KP) インスタンスを作成します |
| 2 | CLI | KP 暗号鍵にアクセスするための COS のポリシーを作成します |
| 3 | CLI | COS がデータを暗号化するために使用する KP ルート鍵を作成します |
| 4 | コンソール UI | COS バケットを作成し、KP 暗号化を指定します。現時点では API も CLI もサポートされていないため、これはコンソール・ユーザー・インターフェース (UI) で行われます |
| 5 | CLI | KP 登録を表示します |
| 6 | CLI | COS と KP が連携することを検証するために、オブジェクトをアップロードおよびダウンロードします |
| 7 | CLI | COS バケットおよび KP ルート鍵を削除します |
| 8 | CLI | COS と KP の間の許可ポリシーを削除します |
| 9 | CLI | COS インスタンスと KP インスタンスを削除します |
これらのコマンドは、COS と Key Protect サービス・プラン を表示します。 ibmcloud resource service-instance-create コマンドには、カタログ内にある service plan name と location が必要です。
# show the catalog offerings for cloud object storage (COS) and Key Protect
$ ibmcloud catalog service cloud-object-storage
$ ibmcloud catalog service kms
この例には多数の手順が含まれています。記載されている概要を確認しながら進めてください。
# create a Cloud Object Storage (COS) instance
# "lite" is the pricing plan and "global" is the region
$ COS_NAME=my-cos-1
$ ibmcloud resource service-instance-create $COS_NAME cloud-object-storage lite global
Creating service instance my-cos-1 in resource group Default of account <account name> as <email address>...
OK
Service instance my-cos-1 was created.
Name: my-cos-1
ID: crn:v1:bluemix:public:cloud-object-storage:global:a/ea998d3389c3473aa0987652b46fb146:4b636e74-f3ca-40bb-80b8-3bd21801ccb8::
GUID: 4b636e74-f3ca-40bb-80b8-3bd21801ccb8
Location: global
State: active
Type: service_instance
Sub Type:
Allow Cleanup: false
Locked: false
Created at: 2020-06-15T16:03:39Z
Updated at: 2020-06-15T16:03:39Z
Last Operation: Status create succeeded Message Completed create instance operation
# capture the COS instance id (GUID)
$ COS_INSTANCE_ID=4b636e74-f3ca-40bb-80b8-3bd21801ccb8
# create a Key Management Service (KMS) service instance
# "tiered-pricing" is the pricing plan and "us-south" is the region
$ KMS_NAME=my-kms-1
$ ibmcloud resource service-instance-create $KMS_NAME kms tiered-pricing us-south
Creating service instance my-kms-1 in resource group Default of account <account name> as <email address>...
OK
Service instance my-kms-1 was created.
Name: my-kms-1
ID: crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:b3933ab0-d579-46fc-8ed5-351aea657b9a::
GUID: b3933ab0-d579-46fc-8ed5-351aea657b9a
Location: us-south
State: active
Type: service_instance
Sub Type: kms
Allow Cleanup: false
Locked: false
Created at: 2020-06-15T16:04:40Z
Updated at: 2020-06-15T16:04:40Z
Last Operation: Status create succeeded Message Completed create instance operation
# capture the Key Protect (KP) instance id (GUID)
$ KP_INSTANCE_ID=b3933ab0-d579-46fc-8ed5-351aea657b9a
# create a policy for COS to read KMS; source is COS, target is KMS
$ ibmcloud iam authorization-policy-create cloud-object-storage kms Reader \
--source-service-instance-id $COS_INSTANCE_ID \
--target-service-instance-id $KP_INSTANCE_ID
Creating authorization policy under account ea998d3389c3473aa0987652b46fb146 as <email address>...
OK
Authorization policy 18cfc980-4458-4313-972e-93f312cdcd81 was created.
ID: 18cfc980-4458-4313-972e-93f312cdcd81
Source service name: cloud-object-storage
Source service instance: 4b636e74-f3ca-40bb-80b8-3bd21801ccb8
Target service name: kms
Target service instance: b3933ab0-d579-46fc-8ed5-351aea657b9a
Roles: Reader
# capture the COS-to-KMS authorization policy id
$ COS_KMS_AUTHORIZATION=18cfc980-4458-4313-972e-93f312cdcd81
# create a KP root key that COS uses to encrypt data
$ ibmcloud kp key create my-cos-key --output json
{
"id": "2cbea94c-6070-4a24-b0f8-7a56e4d7cb6f",
"name": "my-cos-key",
"type": "application/vnd.ibm.kms.key+json",
"extractable": false,
"state": 1,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:b3933ab0-d579-46fc-8ed5-351aea657b9a:key:2cbea94c-6070-4a24-b0f8-7a56e4d7cb6f"
}
# capture the KP root key id
$ MY_COS_KEY_ID=2cbea94c-6070-4a24-b0f8-7a56e4d7cb6f
# create a COS bucket and set KP encryption
# must be done in the console user interface (UI) because
# there is no API or CLI support at this time
# 1 - In the UI, go to... Resource list -> Storage -> my-cos-1
# 2 - Create bucket -> custom bucket
# 3 - Properties of a custom bucket
# a - bucket name: my-cos-kms-bucket
# b - location: us-south (same region as KP)
# c - checkbox: Key Protect
# d - instance: my-kms-1
# e - key name: my-cos-key
# f - button: Create bucket
# capture the name of the COS bucket that was created
$ COS_BUCKET=my-cos-kms-bucket
# view the KP registration; it's a result of creating the COS bucket
$ ibmcloud kp registrations --output json
[
{
"keyId": "2cbea94c-6070-4a24-b0f8-7a56e4d7cb6f",
"resourceCrn": "crn:v1:bluemix:public:cloud-object-storage:global:a/ea998d3389c3473aa0987652b46fb146:4b636e74-f3ca-40bb-80b8-3bd21801ccb8:bucket:my-cos-kms-bucket",
"createdBy": "crn-crn:v1:bluemix:public:cloud-object-storage:global:a/ea998d3389c3473aa0987652b46fb146:4b636e74-f3ca-40bb-80b8-3bd21801ccb8::",
"creationDate": "2020-06-15T16:07:37Z",
"lastUpdated": "2020-06-15T16:07:37Z",
"keyVersion": { "id": "2cbea94c-6070-4a24-b0f8-7a56e4d7cb6f", "creationDate": "2020-06-15T16:05:53Z"
}
}
]
# list the bucket
$ ibmcloud cos list-buckets --ibm-service-instance-id $COS_INSTANCE_ID
OK
1 bucket found in your account:
Name Date Created
my-cos-kms-bucket Jun 15, 2020 at 16:07:38
# upload an object to COS
$ ibmcloud cos put-object --bucket $COS_BUCKET --key '/cos-file.txt' --body cos-file-upload.txt
OK
Successfully uploaded object '/cos-file.txt' to bucket 'my-cos-kms-bucket'.
# get the object from COS
$ ibmcloud cos get-object --bucket $COS_BUCKET --key '/cos-file.txt' cos-file-download.txt
OK
Successfully downloaded '/cos-file.txt' from bucket 'my-cos-kms-bucket'
20 B downloaded.
# verify that the upload and download files are the same
$ cat cos-file-upload.txt
This is a test file
$ cat cos-file-download.txt
This is a test file
# delete the object
$ ibmcloud cos delete-object --bucket $COS_BUCKET --key '/cos-file.txt' --force
OK
Delete '/cos-file.txt' from bucket 'my-cos-kms-bucket' ran successfully.
# delete the bucket
$ ibmcloud cos delete-bucket --bucket $COS_BUCKET --force
OK
Successfully deleted bucket 'my-cos-kms-bucket'. The bucket 'my-cos-kms-bucket' will be available for reuse after 15 minutes.
# list the bucket (it should no longer exist)
$ ibmcloud cos list-buckets --ibm-service-instance-id $COS_INSTANCE_ID
OK
No buckets found in your account.
# view the KP registration (it should no longer exist)
$ ibmcloud kp registrations --output json
# delete the KP root key; COS no longer uses it
$ ibmcloud kp key delete $MY_COS_KEY_ID --output json
{
"id": "2cbea94c-6070-4a24-b0f8-7a56e4d7cb6f"
}
# delete the authorization policy between COS AND KMS
$ ibmcloud iam authorization-policy-delete $COS_KMS_AUTHORIZATION --force
Deleting authorization policy 18cfc980-4458-4313-972e-93f312cdcd81 under account ea998d3389c3473aa0987652b46fb146...
OK
Authorization policy 18cfc980-4458-4313-972e-93f312cdcd81 is deleted successfully
# view the authorization policy (it should no longer exist)
$ ibmcloud iam authorization-policies
Getting authorization policies under account ea998d3389c3473aa0987652b46fb146 as <email address>...
OK
No policy found
# delete the KMS instance
$ ibmcloud resource service-instance-delete $KMS_NAME --force
Deleting service instance my-kms-1 in resource group Default under account <account name> as <email address>...
OK
Service instance my-kms-1 with ID crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:b3933ab0-d579-46fc-8ed5-351aea657b9a:: is deleted successfully
# delete the COS instance
$ ibmcloud resource service-instance-delete $COS_NAME --force
Deleting service instance my-cos-1 in resource group Default under account <account name> as <email address>...
OK
Service instance my-cos-1 with ID crn:v1:bluemix:public:cloud-object-storage:global:a/ea998d3389c3473aa0987652b46fb146:4b636e74-f3ca-40bb-80b8-3bd21801ccb8:: is deleted successfully
# view resources (COS and KMS should no longer exist)
$ ibmcloud resource service-instances
Retrieving instances with type service_instance in resource group Default in all locations under account <account name> as <email address>...
OK
No service instance found.
例 3
この例は、COS と Key Protect (KP) の間で以下のいずれかが発生した場合に何が起こるかを示しています。- COS は Key Protect ルート鍵にアクセスできません。
- KP ルート鍵の削除
- CMS/KP 許可ポリシーの削除
この例では、関連のあるコマンド出力以外は表示しません。
# create a Cloud Object Storage (COS) service instance
# "lite" is the pricing plan and "global" is the region
$ COS_NAME=my-cos-1
$ ibmcloud resource service-instance-create $COS_NAME cloud-object-storage lite global
# capture the COS instance id (GUID)
$ COS_INSTANCE_ID=c488e11a-c8a0-4688-b002-9327266ea55f
# create a Key Management Service (KMS) service instance
# "tiered-pricing" is the pricing plan and "us-south" is the region
$ KMS_NAME=my-kms-1
$ ibmcloud resource service-instance-create $KMS_NAME kms tiered-pricing us-south
# capture the Key Protect (KP) instance id (GUID)
$ KP_INSTANCE_ID=26f4b198-952a-47ab-9f44-ef69c038b3c5
# create a policy for COS to read KMS; source is COS, target is KMS (Key Protect)
$ ibmcloud iam authorization-policy-create cloud-object-storage kms Reader \
--source-service-instance-id $COS_INSTANCE_ID \
--target-service-instance-id $KP_INSTANCE_ID
# capture the COS-to-KMS authorization policy id
$ COS_KMS_AUTHORIZATION=594b946e-0e90-44ea-ac62-6cbb42450cd5
# create a KP root key that COS uses to encrypt data
$ ibmcloud kp key create my-cos-key --output json
# capture the KP root key id
$ MY_COS_KEY_ID=464d78c3-57dc-49a5-b932-8ebf8f8c7771
# create a COS bucket and set KP encryption
# must be done in the console user interface (UI) because
# there is no API or CLI support at this time
# capture the name of the COS bucket that was created
$ COS_BUCKET=my-cos-kms-bucket
# upload an object to COS
$ ibmcloud cos put-object --bucket $COS_BUCKET --key '/cos-file.txt' --body cos-file-upload.txt
# delete the authorization policy between COS AND KMS - this breaks everything
$ ibmcloud iam authorization-policy-delete $COS_KMS_AUTHORIZATION --force
# get the object from COS - this fails because COS no longer has access to KMS
$ ibmcloud cos get-object --bucket $COS_BUCKET --key '/cos-file.txt' cos-file-download.txt
FAILED
ServiceNotAuthorized: The specified COS Service Instance does not have sufficient
permissions to access the resource provided in the ibm-sse-kp-customer-root-key-crn request header
status code: 401,
request id: a51e1da3-9bf7-4cc9-9eb0-0d074c7f9093,
host id:
# delete the object
$ ibmcloud cos delete-object --bucket $COS_BUCKET --key '/cos-file.txt' --force
# delete the bucket
$ ibmcloud cos delete-bucket --bucket $COS_BUCKET --force
# delete the KP root key - this fails because the registration was not deleted
$ ibmcloud kp key delete $MY_COS_KEY_ID --output json
FAILED
kp.Error:
correlation_id='fffdd8a9-405a-4a91-a5a7-52c30d11424d',
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]'
# delete the KP root key; use --force because the registration between COS and KMS still exists
$ ibmcloud kp key delete $MY_COS_KEY_ID --force --output json
# delete the KMS instance
$ ibmcloud resource service-instance-delete $KMS_NAME --force
# delete the COS instance
$ ibmcloud resource service-instance-delete $COS_NAME --force
# view resources (COS and KMS should no longer exist)
$ ibmcloud resource service-instances
Retrieving instances with type service_instance in resource group Default in all locations under account <account name> as <email address>...
OK
No service instance found.
必須パラメーター
-
KEY_ID_OR_ALIASクエリの対象となるキーの UUID またはエイリアス( v4 )。
-
-i, --instance-idIBM Cloud インスタンスを識別する Key Protect インスタンス ID。
次のコマンド**
$ export KP_INSTANCE_ID=<INSTANCE_ID>**で-iを指定する代わりに、環境変数を設定できます。
オプション・パラメーター
-
-c, --crn-query登録をリストする必要がある CRN 照会を指定します
-
-k, --key-id登録をリストする必要がある鍵 ID を指定します。
-
-o, --outputCLI 出力形式を設定します。 すべてのコマンドで、デフォルトの出力形式は表形式です。 出力形式を JSON に変更するには
--output jsonを使用します。出力を JSON に設定すると (
--output json)、出力にクラウド・リソース名 (CRN) が含められます。 -
-r, --key-ring人間が判読可能な固有の鍵リング名。 指定した鍵リングの登録を表示する場合は必須。
ibmcloud kp kmip コマンド
KMIP コマンドは、KMIP アダプターおよびオブジェクトへの API アクセスを許可します。
| サブコマンド | 状況 v0.10 | 説明 |
|---|---|---|
| アダプター-作成 | KMIP アダプターの作成 | |
| アダプター | KMIP アダプターの取得 | |
| アダプター | インスタンス内の KMIP アダプターのリスト | |
| アダプター-削除 | KMIP アダプターの削除 | |
| cert-作成 | アダプターに関連付けられた KMIP クライアント証明書の作成 | |
| 証明書 | KMIP クライアント証明書の取得 | |
| 証明書 | KMIP アダプターに関連付けられた KMIP クライアント証明書のリスト | |
| cert-削除 | KMIP クライアント証明書の削除 | |
| オブジェクト | KMIP オブジェクトの取得 | |
| オブジェクト | KMIP アダプター内の KMIP オブジェクトのリスト | |
| オブジェクト-削除 | KMIP オブジェクトの削除 |
kp kmip アダプター-作成
kmip adapter-create を使用して、 Key Protect インスタンスの下に KMIP アダプターを作成します。 アダプターは、KMIP オブジェクトをグループ化および管理するために使用されます。 同じ Key Protect インスタンスの下にある KMIP アダプターには固有の名前を付ける必要があります。これは、アダプターを名前または ID のいずれかで取得できるためです。 すべての KMIP 関連 CLI コマンドで、アダプター
ID を取る引数またはフラグは、アダプター名も使用できます。
プロファイルによっては、アダプターを作成するために異なる情報を指定する必要がある場合があります。 現在、サポートされている KMIP アダプターのプロファイルは、 native_1.0 の 1 つのみです。
native_1.0 プロファイルでは、ルート鍵の ID のみを -k フラグで指定する必要があります。
$ ibmcloud kp kmip adapter-create
-i, --instance-id INSTANCE_ID
-p, --profile PROFILE
[-k, --crk-id CRK_ID]
[-n, --name NAME]
[-d, --description DESC]
[-o, --output OUTPUT]
例
以下に、kp kmip adapter-create の例を示します。
例 1
この例では、 native_1.0 プロファイルを使用して KMIP アダプターを作成します。
$ ibmcloud kp kmip adapter-create -n myadapter -k 47a0ad90-204d-4e45-aa5b-68ed40a05fa2 -p native_1.0 -d "my description"
Targeting endpoint: not shown
Creating KMIP Adapter...
OK
Adapter ID Adapter Profile Adapter Name Adapter Description
d6a00af1-277f-40e8-b33e-da3a68752209 native_1.0 myadapter my description
$ ibmcloud kp kmip adapters
Targeting endpoint: not shown
Listing KMIP Adapters...
OK
Adapter ID Adapter Profile Adapter Name Created At Updated At
d6a00af1-277f-40e8-b33e-da3a68752209 native_1.0 myadapter 2024-03-20 22:06:43 +0000 UTC 2024-03-20 22:06:43 +0000 UTC
kp kmip アダプター
KMIP アダプターに関する詳細 (作成日や更新日など) を取得します。 アダプター ID またはアダプター名を使用できます。
$ ibmcloud kp kmip adapter ADAPTER_NAME_OR_ID
-i, --instance-id INSTANCE_ID
[-o, --output OUTPUT]
例
以下に、kp kmip adapter の例を示します。
例 1
アダプターに対するいくつかの属性は、JSON 出力形式でのみ表示されることに注意してください。
$ ibmcloud kp key create rootKmip
Targeting endpoint: not shown
Creating key: 'rootKmip', in instance: '8944cc2d-7e00-46b2-baa4-787051e0f7b3'...
OK
Key ID Key Name
47a0ad90-204d-4e45-aa5b-68ed40a05fa2 rootKmip
$ ibmcloud kp kmip adapter-create -n myadapter -k 47a0ad90-204d-4e45-aa5b-68ed40a05fa2 -p native_1.0
Targeting endpoint: not shown
Creating KMIP Adapter...
OK
Adapter ID Adapter Profile Adapter Name Adapter Description
d6a00af1-277f-40e8-b33e-da3a68752209 native_1.0 myadapter -
# retreiving adapter by name
$ ibmcloud kp kmip adapter myadapter
Targeting endpoint: not shown
Getting KMIP Adapter...
OK
Adapter ID Adapter Profile Adapter Name Created At Updated At Adapter Description
d6a00af1-277f-40e8-b33e-da3a68752209 native_1.0 myadapter 2024-03-20 22:06:43 +0000 UTC 2024-03-20 22:06:43 +0000 UTC -
# retrieving adapter by ID
$ ibmcloud kp kmip adapter d6a00af1-277f-40e8-b33e-da3a68752209 -o json
{
"id": "d6a00af1-277f-40e8-b33e-da3a68752209",
"profile": "native_1.0",
"profile_data": {
"crk_id": "47a0ad90-204d-4e45-aa5b-68ed40a05fa2"
},
"name": "myadapter",
"description": "",
"created_by": "IBMid-664003LB2T",
"created_at": "2024-03-20T22:06:43Z",
"updated_by": "IBMid-664003LB2T",
"updated_at": "2024-03-20T22:06:43Z"
}
kp kmip アダプター
Key Protect インスタンスで使用可能な KMIP アダプターをリストします。
$ ibmcloud kp kmip adapters
-i, --instance-id INSTANCE_ID
[-o, --output OUTPUT]
[-n, --limit LIMIT]
[-s, --starting-offset OFFSET]
[-t, --total-count]
[-k, --crk-id CRK_ID]
例
以下に、kp kmip adapters の例を示します。 使用 -k 特定の CRK ID を使用するアダプターのみを表示するフラグ。
例 1
$ ibmcloud kp kmip adapters -n 100 -s 0
Targeting endpoint: not shown
Listing KMIP Adapters...
OK
Adapter ID Adapter Profile Adapter Name Created At Updated At
d6a00af1-277f-40e8-b33e-da3a68752209 native_1.0 myadapter 2024-03-20 22:06:43 +0000 UTC 2024-03-20 22:06:43 +0000 UTC
kp kmip アダプター-削除
KMIP アダプターを削除します。 これにより、アダプターに関連付けられているすべてのオブジェクトおよび証明書が削除されます。
$ ibmcloud kp kmip adapter-delete ADAPTER_NAME_OR_ID
-i, --instance-id INSTANCE_ID
[-f, --force]
[-y, --skip-confirm]
例
以下に、kp kmip adapter-delete の例を示します。
例 1
$ ibmcloud kp kmip adapter-create -n adap -k 47a0ad90-204d-4e45-aa5b-68ed40a05fa2 -p native_1.0
Targeting endpoint: not shown
Creating KMIP Adapter...
OK
Adapter ID Adapter Profile Adapter Name Adapter Description
e97e4297-4a6f-41c9-ae67-0920715964fd native_1.0 adap -
$ ibmcloud kp kmip adapter-delete e97e4297-4a6f-41c9-ae67-0920715964fd
Targeting endpoint: not shown
Deleting KMIP Adapter...
OK
kp kmip cert-作成
kp kmip cert-create を使用して、特定の KMIP アダプターに関連付ける KMIP クライアント証明書を作成します。 -c フラグで提供される証明書は、 x509 PEM 形式でなければならない。 証明書ファイルをアップロードするには、接頭部 @ を使用してファイル・パスを指定するか、証明書ファイルの内容を直接フラグに指定します。
KMIPクライアント証明書は、相互 TLS ( mTLS )を通じてKMIPサーバーに接続し、認証するために使用される。 KMIP アダプターを使用して KMIP プロトコル操作を実行する前に、証明書を登録する必要があります。 KMIP 操作で証明書が使用可能になるまでに、最大 5 分かかる場合があります。
証明書は、同じ KMIP アダプター内で固有の名前を持つ必要があり、証明書の内容は、複数のアダプター間でも固有でなければなりません。
KMIP プロトコル仕様 も参照してください。
$ ibmcloud kp kmip cert-create
-a, --adapter ADAPTER_NAME_OR_ID
-c, --cert-string {@path/to/cert | CERTIFICATE_STRING}
[-n, --name NAME]
-i, --instance-id INSTANCE_ID
[-o, --output OUTPUT]
例
以下に、kp kmip cert-create の例を示します。
例 1
この例は、同じ証明書ファイルをアップロードする 2 つの方法を示しています。
$ ibmcloud kp key create rootKmip
Targeting endpoint: not shown
Creating key: 'rootKmip', in instance: '8944cc2d-7e00-46b2-baa4-787051e0f7b3'...
OK
Key ID Key Name
47a0ad90-204d-4e45-aa5b-68ed40a05fa2 rootKmip
$ ibmcloud kp kmip adapter-create -n myadapter -k 47a0ad90-204d-4e45-aa5b-68ed40a05fa2 -p native_1.0
Targeting endpoint: not shown
Creating KMIP Adapter...
OK
Adapter ID Adapter Profile Adapter Name Adapter Description
d6a00af1-277f-40e8-b33e-da3a68752209 native_1.0 myadapter -
$ export CERT=$(cat ./cert.pem)
$ ibmcloud kp kmip cert-create -n mycert -c "$CERT" -a myadapter
Targeting endpoint: not shown
Creating KMIP Client Certificate...
OK
Certificate ID Certificate Name Created At
3f550b96-86bc-44fe-8d1d-113e57067219 mycert 2024-03-20 22:08:03 +0000 UTC
## Alternatively, you can also provide the filepath of the certificate
$ ibmcloud kp kmip cert-delete mycert -a myadapter
Targeting endpoint: not shown
Deleting KMIP Client Certificate...
OK
$ ibmcloud kp kmip cert-create -n mycert -c @./cert.pem -a myadapter
Targeting endpoint: not shown
Creating KMIP Client Certificate...
OK
Certificate ID Certificate Name Created At
a279fded-06d1-45a1-8a95-901f194fb937 mycert 2024-03-20 22:11:34 +0000 UTC
kp kmip 証明書
特定の KMIP クライアント証明書を取得します。 証明書は、ID または名前のいずれかで取得できます。
$ ibmcloud kp kmip cert CERTIFICATE_ID
-a, --adapter ADAPTER_NAME_OR_ID
-i, --instance-id INSTANCE_ID
[-o, --output OUTPUT]
例
以下に、kp kmip cert の例を示します。
例 1
名前による証明書の取得:
$ ibmcloud kp kmip cert mycert -a myadapter
Targeting endpoint: not shown
Getting KMIP Client Certificate...
OK
Certificate ID Certificate Name Created At
a279fded-06d1-45a1-8a95-901f194fb937 mycert 2024-03-20 22:11:34 +0000 UTC
例 2
JSON 形式の UUID による証明書の取得。 証明書の PEM-formatコンテンツがJSONボディに返される。
$ ibmcloud kp kmip cert a279fded-06d1-45a1-8a95-901f194fb937 -a myadapter -o json
{
"id": "a279fded-06d1-45a1-8a95-901f194fb937",
"name": "mycert",
"certificate": "-----BEGIN CERTIFICATE-----\nMIIFqzCCA5OgAwIBAgIUNXqfJMkAHOBHz6+ekETDlCqIEqUwDQYJKoZIhvcNAQEL\nBQAw
... CERTIFICATE CONTENTS ABBREVIATED ...
Y6uFtHuQSpud0C\n-----END CERTIFICATE-----\n",
"created_by": "IBMid-12345678",
"created_at": "2024-03-20T22:11:34Z"
}
kp kmip 証明書
特定の KMIP アダプターに関連付けられているすべての KMIP クライアント証明書をリストします。
$ ibmcloud kp kmip certs
-a, --adapter ADAPTER_NAME_OR_ID
[-n, --limit LIMIT]
[-s, --starting-offset OFFSET]
[-t, --total-count]
-i, --instance-id INSTANCE_ID
[-o, --output OUTPUT]
例
以下に、kp kmip certs の例を示します。
例 1
$ ibmcloud kp kmip certs -a myadapter
Targeting endpoint: not shown
Listing KMIP Client Certificates...
OK
Certificate ID Certificate Name Created At
a279fded-06d1-45a1-8a95-901f194fb937 mycert 2024-03-20 22:11:34 +0000 UTC
kp kmip cert-削除
KMIP クライアント証明書を削除します。
$ ibmcloud kp kmip cert-delete CERTIFICATE_ID
-a, --adapter ADAPTER_NAME_OR_ID
-i, --instance-id INSTANCE_ID
例
以下に、 kp kmip cert-delete の例を示します。
例 1
$ ibmcloud kp kmip cert-delete -a myadapter mycert
Targeting endpoint: not shown
Deleting KMIP Client Certificate...
OK
kp kmip オブジェクト
KMIP オブジェクトは、KMIP プロトコルを使用して KMIP クライアントを介して実行される操作によって作成されます。 API を使用して作成することはできませんが、読み取りおよび削除することはできます。 オブジェクトは単一のアダプターに属します。
オブジェクトには名前がないため、ID で取得する必要があります。
$ ibmcloud kp kmip object OBJECT_ID
-a, --adapter ADAPTER_NAME_OR_ID
-i, --instance-id INSTANCE_ID
[-o, --output OUTPUT]
例
以下に、 kp kmip object の例を示します。
例 1
$ ibmcloud kp kmip object 12365a82-5404-4bd9-a4c7-2b628ee18304 -a testadapter
Targeting endpoint: not shown
Getting KMIP Object...
OK
Object ID Object Type Object State Created At Updated At
12365a82-5404-4bd9-a4c7-2b628ee18304 Symmetric Key Active 2024-03-14 21:01:45 +0000 UTC 2024-03-14 21:01:45 +0000 UTC
例 2
KMIP オブジェクトを JSON として取得すると、通常の表ビューには表示されない追加の属性がいくつか表示されます。
$ ibmcloud kp kmip object 12365a82-5404-4bd9-a4c7-2b628ee18304 -a testadapter -o json
{
"id": "12365a82-5404-4bd9-a4c7-2b628ee18304",
"kmip_object_type": 2,
"state": 2,
"created_by_kmip_client_cert_id": "531c18f3-4e37-447e-a7e0-e8676407bb75",
"created_by": "IBMid-123456",
"created_at": "2024-03-14T21:01:45Z",
"updated_by_kmip_client_cert_id": "531c18f3-4e37-447e-a7e0-e8676407bb75",
"updated_by": "IBMid-123456",
"updated_at": "2024-03-14T21:01:45Z"
}
kp kmip オブジェクト
KMIP オブジェクトをリストし、そのオブジェクト・タイプやオブジェクト状態などのメタデータに関する情報を表示します。 -f フラグは、特定の状態にあるオブジェクトのみをフィルターに掛けるために使用します。 デフォルトでは、状態フィルターは 1,2,3,4 に設定されています。
番号は、以下のようにオブジェクトの状態に対応しています。
- 事前アクティブ = 1
- アクティブ = 2
- 非アクティブ = 3
- 危殆化 = 4
- 破棄済み = 5
- 破棄された危殆化 = 6
KMIP 状態列挙 を参照してください。
ibmcloud kp kmip objects
-a, --adapter ADAPTER_NAME_OR_ID
[-n, --limit LIMIT]
[-s, --starting-offset OFFSET]
[-t, --total-count]
-i, --instance-id INSTANCE_ID
[-o, --output OUTPUT]
例
以下に、kp kmip objects の例を示します。
例 1
$ ibmcloud kp kmip objects -a myadapter
Targeting endpoint: not shown
Listing KMIP Objects...
OK
Object ID Object Type Object State Created At Updated At
00196c59-c5c2-42d8-9729-703cd0389f60 Symmetric Key Compromised 2024-03-14 20:47:54 +0000 UTC 2024-03-14 20:47:54 +0000 UTC
02f1043c-0494-4399-82af-5395a14b019f Symmetric Key Pre-Active 2024-03-14 20:58:06 +0000 UTC 2024-03-14 20:58:06 +0000 UTC
08082ff4-821b-4689-83ec-15cac5bd1939 Symmetric Key Pre-Active 2024-02-22 00:10:46 +0000 UTC 2024-02-22 00:11:23 +0000 UTC
0c1ea28d-dfaa-404a-b9c4-fcdc3f5d8b02 Symmetric Key Deactivated 2024-03-14 21:05:48 +0000 UTC 2024-03-14 21:05:48 +0000 UTC
10b49b05-0101-4234-927b-20a3356da291 Symmetric Key Pre-Active 2024-03-14 21:26:54 +0000 UTC 2024-03-14 21:26:54 +0000 UTC
12365a82-5404-4bd9-a4c7-2b628ee18304 Symmetric Key Active 2024-03-14 21:01:45 +0000 UTC 2024-03-14 21:01:45 +0000 UTC
例 2
-f フラグを使用して、特定の状態のオブジェクトをフィルタリングします。 複数の状態を指定するには、コンマを使用します。
$ ibmcloud kp kmip objects -a testadapter -f 5,6
Targeting endpoint: not shown
Listing KMIP Objects...
OK
Object ID Object Type Object State Created At Updated At
03d38805-2bb2-4aa0-bbf3-dc4a6d5d0475 Symmetric Key Destroyed 2024-03-14 20:47:58 +0000 UTC 2024-03-14 20:47:58 +0000 UTC
08c94f34-0100-4331-b759-5937ed5b1228 Symmetric Key Destroyed 2024-03-14 20:46:38 +0000 UTC 2024-03-14 20:46:38 +0000 UTC
1a13e112-41f8-4d52-be08-a0946b8c22fa Symmetric Key Destroyed Compromised 2024-03-14 20:58:20 +0000 UTC 2024-03-14 20:58:20 +0000 UTC
kp kmip オブジェクト-削除
KMIP オブジェクトを削除します。 状態が「アクティブ」でも「破棄済み」でもないオブジェクトのみを正常に削除できます。
$ ibmcloud kp kmip object-delete OBJECT_ID
-a, --adapter ADAPTER_NAME_OR_ID
-i, --instance-id INSTANCE_ID
[-f, --force]
[-y, --skip-confirm]
例
以下に、 kp kmip object-delete の例を示します。
例 1
$ ibmcloud kp kmip object-delete 9b2f5af5-3534-4f02-8836-f89af37c4351 -a testadapter
Targeting endpoint: not shown
Deleting KMIP Object...
OK
kp暗号単位
kp crypto-unit 、暗号化ユニットを管理できる。 このコマンドは単独では何もしないことに注意。 サブコマンドのいずれかを併用しなければならない。
NAME:
-ibmcloud key-protect crypto-unit - Manage crypto units
USAGE:
ibmcloud key-protect crypto-unit command [arguments...] [command options]
COMMANDS:
claim Claim crypto unit(s)
master-key Commands to manage Master Keys (MKs) of crypto unit(s)
master-keys List the MKs uploaded to crypto unit(s)
sig-key Generate a signature key file compatible for use as a crypto unit user credential
user Manage users in crypto unit(s)
users List users in crypto unit(s)
zeroize Zeroize a crypto unit
help, h Show help
Enter 'ibmcloud key-protect crypto-unit help [command]' for more information about a command.
kp crypto-unit コマンドで問題が発生した場合は、 トラブルシューティングの セクションを参照してください。
zeroize
暗号ユニットをゼロにすることは、鍵の作成または鍵の操作を行った後、非常に推奨され ない。 この時点以降にゼロ化が必要な場合は、すべてのキーを削除してパージしなければならない。 削除された鍵がパージされるようになるまでには、4時間の待ち時間が ある。
NAME:
zeroize - Zeroize a crypto unit
USAGE:
zeroize --id CRYPTO_UNIT_ID
OPTIONS:
--id value Required. The ID of the crypto unit to zeroize
claim
IBMクラウドKP暗号単位の請求
NAME:
claim - Claim crypto unit(s)
USAGE:
claim --credential ADMIN_KEY_FILE
OPTIONS:
--credential value Required. Path to file containing signature key that will be associated with the user. Must be between 1 and 255 characters. Do not include file passphrase
--ids strings Optional. List of crypto unit IDs to target, can be provided as a comma-separated list, or repeating the flag. If omitted, all crypto units will be targeted
master-key
NAME:
ibmcloud key-protect crypto-unit master-key - Commands to manage Master Keys (MKs) of crypto unit(s)
USAGE:
ibmcloud key-protect crypto-unit master-key command [arguments...] [command options]
COMMANDS:
generate Generate Master Key (MK) material. This command does not store the MK material in crypto unit used to generate it. Use `crypto-unit master-key import` to upload an MK to a crypto unit
import Import a Master Key (MK) to crypto unit(s)
help, h Show help
master-key generate
NAME:
generate - Generate Master Key (MK) material. This command does not store the MK material in crypto unit used to generate it. Use `crypto-unit master-key import` to upload an MK to a crypto unit
USAGE:
generate --keyshare-files KEYSHARE_FILES --keyshare-minimum KEYSHARE_MINIMUM --algo ALGO --key-name KEYNAME --cu CRYPTO_UNITS
OPTIONS:
--algo value Required. Algorithm that generated MK will be compatible with. Only AES-256 is supported
--auth value Credentials to use for authenticating request(s) sent to crypto unit(s). Format: '[{"myUsername": "/path/to/signature.key#filepassphrase"}]' or '@/path/to/auth.json'. Omit # to be prompted to enter file passphrase. --auth and --cu are mutually exclusive
--cu value Crypto unit(s) for the request to target and credentials to submit request with. Format: '[{"CryptoUnitId": "fadedbee-0000-0000-0000-1234567890ab", "Auth": [{"ADMIN": "/path/to/signature.key#filepassphrase"}]}]' or '@/path/to/cu.json'. Omit # to be prompted to enter file passphrase. --auth and --cu are mutually exclusive
--key-name value Required. MK name. Must be between 1 and 8 characters
--keyshare-files value Required. Array specifying file paths to write MK key share files to. Format: '["file1.key#filepwd1", "file2.key#filepwd2"]'. File path must be 1-255 characters. Passphrase must be between 6 and 255 characters. Omit # to be prompted to enter file passphrase.
--keyshare-minimum value Required. Number of key shares needed to reconstruct the MK. Must be between 2 and 255 and less than or equal to the number of keyshare files
master-key import
NAME:
import - Import a Master Key (MK) to crypto unit(s)
USAGE:
import --keyshare-files KEYSHARE_FILES --auth AUTH
OPTIONS:
--auth value Credentials to use for authenticating request(s) sent to crypto unit(s). Format: '[{"myUsername": "/path/to/signature.key#filepassphrase"}]' or '@/path/to/auth.json'. Omit # to be prompted to enter file passphrase. --auth and --cu are mutually exclusive
--cu value Crypto unit(s) for the request to target and credentials to submit request with. Format: '[{"CryptoUnitId": "fadedbee-0000-0000-0000-1234567890ab", "Auth": [{"ADMIN": "/path/to/signature.key#filepassphrase"}]}]' or '@/path/to/cu.json'. Omit # to be prompted to enter file passphrase. --auth and --cu are mutually exclusive
--keyshare-files value Required. Array specifying file paths to MK key share files. Format: '["file1.key#filepwd1", "file2.key#filepwd2"]'. File path must be 1-255 characters. Passphrase must be between 6 and 255 characters. Omit # to be prompted to enter file passphrase.
master-keys
NAME:
master-keys - List the MKs uploaded to crypto unit(s)
USAGE:
master-keys [--cu CRYPTO_UNITS]
OPTIONS:
--cu value Optional. Crypto unit(s) for the request to target and credentials to submit request with. Format: '[{"CryptoUnitId": "fadedbee-0000-0000-0000-1234567890ab", "Auth": [{"ADMIN": "/path/to/signature.key#filepassphrase"}]}]' or '@/path/to/cu.json'. Omit # to be prompted to enter file passphrase. --auth and --cu are mutually exclusive. If omitted, lists MKs in all crypto units of the instance.
sig-key
NAME:
ibmcloud key-protect crypto-unit sig-key - Generate a signature key file compatible for use as a crypto unit user credential
USAGE:
ibmcloud key-protect crypto-unit sig-key command [arguments...] [command options]
COMMANDS:
generate Generate a signature key file compatible for use as a crypto unit user credential
help, h Show help
Enter 'ibmcloud key-protect crypto-unit sig-key help [command]' for more information about a command.
sig-key generate
NAME:
generate - Generate a signature key file compatible for use as a crypto unit user credential
USAGE:
generate --file FILE --passphrase PASSWORD --algo RSA-2048
OPTIONS:
--algo value The algorithm type used to generate the signature key. Only RSA-2048 is supported
--file value Required. The file path to write the signature key to. Must be between 1 and 255 characters
--passphrase value --passphrase string Optional passphrase used to encrypt the signature key file. Provide "-" to prompt for password
user
NAME:
ibmcloud key-protect crypto-unit user - Manage users in crypto unit(s)
USAGE:
ibmcloud key-protect crypto-unit user command [arguments...] [command options]
COMMANDS:
add Add new user to crypto unit(s)
remove Remove user from crypto unit
help, h Show help
Enter 'ibmcloud key-protect crypto-unit user help [command]' for more information about a command.
user-add
NAME:
add - Add new user to crypto unit(s)
USAGE:
add --type TYPE --name NAME --credential CREDENTIAL --auth AUTH
OPTIONS:
--auth value Credentials to use for authenticating request(s) sent to crypto unit(s). Format: '[{"myUsername": "/path/to/signature.key#filepassphrase"}]' or '@/path/to/auth.json'. Omit # to be prompted to enter file passphrase. --auth and --cu are mutually exclusive
--credential value Required. Path to file containing signature key that will be associated with the user. Must be between 1 and 255 characters. Do not include file passphrase
--cu value Crypto unit(s) for the request to target and credentials to submit request with. Format: '[{"CryptoUnitId": "fadedbee-0000-0000-0000-1234567890ab", "Auth": [{"ADMIN": "/path/to/signature.key#filepassphrase"}]}]' or '@/path/to/cu.json'. Omit # to be prompted to enter file passphrase. --auth and --cu are mutually exclusive
--name value Required. Name of the user to add. Must be between 1 and 255 characters
--type value Required. Type of user to add. Allowable values are: admin, kmsCryptoUser
user-remove
NAME:
remove - Remove user from crypto unit
USAGE:
remove -u USER --cu CRYPTO_UNITS
OPTIONS:
--cu value Crypto unit(s) for the request to target and credentials to submit request with. Format: '[{"CryptoUnitId": "fadedbee-0000-0000-0000-1234567890ab", "Auth": [{"ADMIN": "/path/to/signature.key#filepassphrase"}]}]' or '@/path/to/cu.json'. Omit # to be prompted to enter file passphrase. --auth and --cu are mutually exclusive
-u value, --user value Required. The username of the user to remove from crypto-unit(s)
users
NAME:
users - List users in crypto unit(s)
USAGE:
users [--cu CRYPTO_UNITS]
OPTIONS:
--cu value Optional. Crypto unit(s) for the request to target. Format: '[{"CryptoUnitId": "fadedbee-0000-0000-0000-1234567890ab"}]' or '@/path/to/cu.json'. If omitted, lists users in all crypto units of the instance.
kp crypto-units
kp crypto-units 、暗号化ユニットを一覧表示できる。
NAME:
ibmcloud kp - List crypto units allocated to instance
USAGE:
ibmcloud crypto-units
COMMANDS:
Additional help topics:
Use "export KP_INSTANCE_ID=TARGET_INSTANCE_ID" or "ibmcloud kp command [arguments...] [command options] -i TARGET_INSTANCE_ID" to set a target instance ID.
次のステップ
API 資料で、関連する操作を探します。