Key Protect のキーの一覧を取得する
IBM® Key Protect for IBM Cloud® により、 暗号鍵を表示、管理、監査する集中システムが提供されます。 リソースのセキュリティを確保するために、鍵および鍵へのアクセス制限を監査してください。
単一のキーにきめ細かいアクセスを割り当てる ことはできるが、 list keys APIは 個々のアクセス権限を持つキーを返さない。 つまり、自分だけがアクセスできるキーを返すことはない。 しかし、このAPIを呼び出すと、あなたがアクセスできるキー・リングのキーが返される。 インスタンスのすべてのキーにアクセスできる場合、すべてのキーが表示されます。 IAM によるきめ細かなアクセス・キーの表示 」の説明に従って、個別のアクセス権限を持つキーを表示できます。 あるいは、APIを使って特定のキーIDを渡す。
鍵の構成を定期的に監査することをお勧めします。
-
いつ鍵が作成されたかを調べ、鍵をローテートする時期かどうかを判断します。
-
どのユーザーが鍵へのアクセス権限を持っているか、アクセス権限のレベルは適切かどうかを検査します。
リソースへのアクセス権限の監査について詳しくは、ユーザーのアクセス権限の管理を参照してください。
コンソールでの鍵の表示
グラフィカル・インターフェースを使用してサービス内の鍵を検査したい場合は、Key Protect ダッシュボードを使用できます。
サービス内に鍵を作成するか、既存の鍵をインポートした後、以下の手順を実行して、鍵を表示します。
-
「メニュー」>**「リソース・リスト」**に移動し、リソースのリストを表示します。
-
IBM Cloud リソース・リストで、Key Protect のプロビジョン済みインスタンスを選択します。
-
「 キー 」をクリックすると、サービスインスタンス内のすべてのキーの一覧が表示されます。 テーブルビューは、以下の方法で管理できます
- キーのフィルタリング- テーブルのフィルタパネルのドロップダウンリストを使用して、「 キーの状態 」(例: 有効 )や「 キーリング ID 」でフィルタリングします。
- 並べ替えキー- 列ヘッダーをクリックすると、「 最終回転日 」などの値で並べ替えることができます。
- 検索キー- 検索バーを使用して、表示名、キーID、またはエイリアスで検索します。 特定のキーをすばやく見つけるには、そのキーIDで検索してください。
- 列のカスタマイズ- 「 設定 」ボタンをクリックして、表示する列を選択してください。
デフォルトでは、テーブルには以下の列が表示されます:
| 列 | 説明 |
|---|---|
| 名前 | キーに指定した表示名。 |
| 鍵 ID | Key Protect サービスによって鍵に割り当てられた固有の鍵 ID。 このID値を使用して、 Key Protect APIを介してサービスへの呼び出しを行うことができます。 |
| 鍵リング ID | キーが関連付けられている キーホルダー。 これらの状態には、 Deactivated、 Deleted、 Disabled、 _Enabledが_ある。 |
| 最終ローテーション日時 | キーが最後にローテーションされた日付。 |
| キー・エイリアス | 鍵の別名。 |
| タイプ | 鍵のタイプ (ルート鍵と標準鍵のどちらであるか)。 |
| 状態 | キーの状態。 「無効」、「 削除済み 」、 「無効化済み 」、または 「有効」 のいずれか。 |
テーブルで使用可能なその他のフィールドには、以下のものがあります。
- Last modified(最終更新日):キーが最後に何らかの形で変更された日時を示す。
- 作成日:キーが作成された日付。
- 削除済み: 鍵が削除済み状態 (パージ待ち) であるかどうかを示します。
- Imported(インポートされた):鍵が、ユーザーから提供された鍵素材を使用して作成されたかどうかを示す。
- ローテーション・ポリシー:このキーにローテーション・ポリシーが付加されているかどうかを示す。
- 関連リソース: 鍵がリソースを保護しているかどうかを示します。
検索機能は、5,000 個の鍵のボリュームに制限されています。 キーが5,000個以上あり、5,000個以下に絞り込めない場合、キーIDまたはエイリアスに完全に一致しない限り、検索は失敗する。 例えば、 Enabled キーだけを表示するために、キーの状態でフィルタリングすることができます。 キー検索のAPI仕様に関する詳細については、「 GET /keys 」を参照してください。
検索の結果数を絞り込みたい場合は、以下のパラメータを1つ、または組み合わせて適用してみてください
not:指定すると、検索で用いられるロジックが反転します(たとえば、not:fooと指定すると、エイリアスまたは名前に「foo」を含まないキーが検索されます)。escape:このオプション以降はプレーンテキストとして扱われる(例:escape:not:は、サブ文字列not:を含むエイリアスまたは名前を持つキーを検索する)。exact:完全一致のみを検索します。alias:鍵の別名のみを検索します。name:キー名のみを検索します。
not:exact:foobar は、キー名またはエイリアスが foobar と一致しないキーを探し、 exact:not:foobar は、キー名またはエイリアスが not:foobar と一致するキーを探す。
検索範囲は OR 方式で動作します。 つまり、複数の検索スコープを使用する場合、少なくとも1つのスコープで一致すれば、そのキーが返されることになります。 デフォルトでは (範囲が指定されていない場合)、検索は name と alias の両方の範囲で実行されます。
Key Protect インスタンスに保管されている鍵の完全なリストが表示されない場合 該当する Key Protect インスタンスまたは個別のキーに対して、適切なロールが割り当てられているかどうかを、管理者に確認してください。 役割について詳しくは、役割と許可を参照してください。
状態による鍵の取得
Key Protect インスタンスの特定の鍵の状態でフィルタリングすることで、指定した状態の鍵を取得できます。
例えば、Key Protect インスタンスにアクティブ状態の鍵、中断状態の鍵、破棄状態の鍵が存在する場合に、鍵のリストを表示してアクティブ状態の鍵だけを確認したいことがあります。
鍵の状態について詳しくは、鍵の状態および遷移を参照してください。
既存の鍵を作成するか、サービスにインポートした後、鍵を表示するオプションが 2 つあります。 最初のオプションは、 リソース・リストを通してキーを表示する もので、 きめ細かなアク セスが 可能なキーを除くすべてのキーに有効である。 詳細アクセス・キーの表示については、「 詳細アクセス・キーの表示 IAM 」を参照のこと。
リソース・リストを介した鍵の表示
-
「メニュー」>**「リソース・リスト」**に移動し、リソースのリストを表示します。
-
IBM Cloud リソース・リストで、Key Protect のプロビジョン済みインスタンスを選択します。
-
「 キー 」ページで、フィルターアイコンをクリックしてフィルターパネルを開きます。
-
[ State ] ドロップダウンから、取得したいキーのキー状態を選択してください。
-
**「適用」**ボタンをクリックします。
-
さらに、テーブルの行見出しで、
Last updatedをクリックしてテーブル内のキーが最後に更新された日付でリストをソートするか、Typeをクリックしてすべてのルート・キーと標準キーをグループとしてリストすることができます。
IAM を介したきめ細かいアクセス鍵の表示
-
メニュー・バーから、「管理」>**「アクセス (IAM)」をクリックし、「ユーザー」**を選択して、アカウント内の既存のユーザーを参照します。
-
いずれかのテーブル行を選択し、「⋯」アイコンをクリックして、そのユーザーのオプションのリストを開きます。 次に、ドロップダウン・リストから**「アクセスの管理」**を選択します。
-
ここでは、このユーザーが所属するアクセスグループを含め、このユーザーに関するすべてのIAM情報を確認できます。 このユーザーのアクセス・ポリシーを具体的に表示するには、**「アクセス・ポリシー」**タブをクリックします。
アカウント所有者または適切な権限を持つユーザーは、このユーザーに割り当てられているすべてのポリシー(キーに対するきめ細かなアクセス権限を含む)を確認できます。
API を使用した鍵の表示
Key Protect API を使用して、鍵の内容を取得できます。
鍵のリストの取得
概要を参照するために、次のエンドポイントへの GET 呼び出しをして、Key Protect のプロビジョン済みインスタンスで管理されている鍵を表示できます。
https://<region>.kms.cloud.ibm.com/api/v2/keys
-
以下の
curlコマンドを実行して、鍵に関する一般的な特性を表示します。$ curl -X GET \ "https://<region>.kms.cloud.ibm.com/api/v2/keys" \ -H "accept: application/vnd.ibm.collection+json" \ -H "authorization: Bearer <IAM_token>" \ -H "bluemix-instance: <instance_ID>" \ -H "x-kms-key-ring: <key_ring_ID>" \ -H "correlation-id: <correlation_ID>"表 1 の情報に従って、要求例の変数を置き換えます。 鍵のコレクションを表示するときに使用できるオプション・パラメーターや、鍵の検索機能について詳しくは、
List keysメソッドに関する API 資料を参照してください。
| 変数 | 説明 |
|---|---|
| リージョン | 必須。 Key Protect インスタンスが |
存在している地理的領域を表す、
地域の省略形
(例: `us-south` または
`eu-gb`)。 詳細については、[リージョナル・サービス・エンドポイント](/docs/key-protect?topic=key-protect-regions#service-endpoints)を参照してください。 |
| key_ID_or_alias | 必須。 検査対象となる鍵の固有 ID または別名。 | | IAM_token | 必須。 IBM Cloud アクセス・トークン。 Bearer 値を含む、IAM トークンの全コンテンツを curl 要求に組み込みます。 詳細については、アクセス・トークンのリトリーブを参照してください。 | | instance_ID | 必須。 Key Protect サービス・インスタンスに割り当てられた固有 ID。 詳細については、インスタンス ID のリトリーブを参照してください。 | | key_ring_ID | オプション。 ターゲットの鍵リングの固有 ID。 特に指定がない場合、レスポンスには、指定されたインスタンス内でユーザーがアクセス権を持つすべてのリソースが含まれます。 返される応答には、指定されたキーリング内でユーザーがアクセス権を持つリソースのみが含まれます。 詳しくは、鍵のグループ化を参照してください。 | | correlation_ID | オプション。 トランザクションを追跡し、相互に関連付けるために使用される固有 ID。 |
GET api/v2/keys 要求が成功すると、Key Protect サービス・インスタンス内の使用可能な鍵の集合が返されます。
{
"metadata": {
"collectionType": "application/vnd.ibm.kms.key+json",
"collectionTotal": 2
},
"resources": [
{
"id": "02fd6835-6001-4482-a892-13bd2085f75d",
"type": "application/vnd.ibm.kms.key+json",
"name": "Root-key",
"state": 1,
"crn": "crn:v1:bluemix:public:kms:us-south:a/f047b55a3362ac06afad8a3f2f5586ea:12e8c9c2-a162-472d-b7d6-8b9a86b815a6:key:02fd6835-6001-4482-a892-13bd2085f75d",
"createdBy": "...",
"creationDate": "2020-03-11T16:30:06Z",
"lastUpdateDate": "2020-03-11T16:30:06Z",
"algorithmMetadata": {
"bitLength": "256",
"mode": "Deprecated"
},
"extractable": false,
"imported": true,
"algorithmMode": "Deprecated",
"algorithmBitSize": 256,
"dualAuthDelete": {
"enabled": false
}
},
{
"id": "2291e4ae-a14c-4af9-88f0-27c0cb2739e2",
"type": "application/vnd.ibm.kms.key+json",
"name": "Standard-key",
"state": 1,
"expirationDate": "2020-03-14T03:50:12Z",
"crn": "crn:v1:bluemix:public:kms:us-south:a/f047b55a3362ac06afad8a3f2f5586ea:30372f20-d9f1-40b3-b486-a709e1932c9c:key:2291e4ae-a14c-4af9-88f0-27c0cb2739e2",
"createdBy": "...",
"creationDate": "2020-03-12T03:50:12Z",
"lastUpdateDate": "2020-03-12T03:50:12Z",
"algorithmMetadata": {
"bitLength": "256",
"mode": "Deprecated"
},
"extractable": true,
"imported": false,
"algorithmMode": "Deprecated",
"algorithmBitSize": 256,
"dualAuthDelete": {
"enabled": false
}
}
]
}
デフォルトでは、GET api/v2/keys は最初の 200 個の鍵を返しますが、照会時に limit パラメーターを使用してこの制限を調整できます。 limit および offset について詳しくは、鍵のサブセットの取得を参照してください。
鍵の完全なリストが表示されない場合、 limit および offset を利用するか、管理者にお問い合わせいただき、インスタンス内のキーに対する適切なアクセス権限が割り当てられていることを確認してください。 詳しくは、『鍵を表示またはリストできない』を参照してください。
鍵のサブセットの取得
照会時に limit パラメーターおよび offset パラメーターを指定することによって、指定した offset 値から始まる、鍵のサブセットを取得できます。
例えば、Key Protect インスタンスに 合計 3000 個の鍵を保管しているが、GET /keys 要求を行うときに 200 から 300 までの鍵を取得したい場合が考えられます。
以下の要求例を使用して、さまざまな鍵セットを取得できます。
$ curl -X GET \
"https://<region>.kms.cloud.ibm.com/api/v2/keys?offset=<offset>&limit=<limit>" \
-H "accept: application/vnd.ibm.collection+json" \
-H "authorization: Bearer <IAM_token>" \
-H "bluemix-instance: <instance_ID>"
次の表に従って、要求内の limit 変数と offset 変数を置き換えてください。
| 変数 | 説明 |
|---|---|
| offset | スキップする鍵の数。 たとえば、インスタンスに 50 個のキーがあり、26 番から 50 番までのキーを一覧表示したい場合は、 ../keys?offset=25 を使用します。 offset を limit と組み合わせて、使用可能なリソースの一部を取り出すこともできます。 |
| limit | 取得する鍵の数。 たとえば、インスタンスに 100 個のキーがあり、そのうち 10 個のキーのみを一覧表示したい場合は、 ../keys?limit=10 を使用します。 limit の最大値は 5000 です。 |
オフセットは、データ・セット内の特定の鍵の位置です。 offset 値はゼロが基準です。つまり、データ・セット内の 10 番目の暗号鍵はオフセット 9 の位置にあります。
状態による鍵の取得
照会時に state パラメーターを指定することにより、 指定した状態にある鍵を取得できます。
例えば、Key Protect インスタンス内に アクティブ状態、中断状態、および破棄状態の鍵が存在する可能性があるが、
GET /keys 要求を行うときはアクティブ状態の鍵のみを取得したい場合が考えられます。
state 照会パラメーターは、空白も末尾のコンマもない、コンマによって区切られた 0 から 5 までの 整数のリストを受け入れます。 鍵の状態について詳しくは、鍵の状態および遷移を参照してください。
以下の要求例を使用して、さまざまな鍵セットを取得できます。
$ curl -X GET \
"https://<region>.kms.cloud.ibm.com/api/v2/keys?state=<state_integers>" \
-H "accept: application/vnd.ibm.collection+json" \
-H "authorization: Bearer <IAM_token>" \
-H "bluemix-instance: <instance_ID>"
次の表に従って、要求内の state 変数を置き換えてください。
| 変数 | 説明 |
|---|---|
| state | 取得する鍵の状態。 状態は整数で表され、「事前アクティブ化」は0、「アクティブ」は1、「一時停止」は2、「非アクティブ」は3、「破壊」は5となります。 たとえば、 Key Protect インスタンス内で「active」状態のキーのみを一覧表示したい場合は、 ../keys?state=1 を使用します。 状態 (state) をオフセット (offset) や制限 (limit) と組み合わせて、該当するリソースのページング操作を行うこともできます。 |
使用上の注意点については、state 照会パラメーターの次の設定例を確認してください。
| URL | 説明 |
|---|---|
.../keys |
使用可能なリソースをすべてリストしますが、最初から 200 個までの鍵が最大限です。 |
.../keys?state=5 |
削除状態の鍵をリストします。 |
.../keys?state=2,3 |
中断状態および非アクティブ化状態の鍵をリストします。 |
extractable 値による鍵の取得
照会時に extractable パラメーターを指定すると、鍵素材がサービスの外部に出ることができる鍵を取得できます。
例えば、Key Protect インスタンスに標準鍵とルート鍵の両方がある場合に、GET /keys 要求を実行して、鍵素材を抽出できる鍵だけを取得したいことがあります。
extractable 照会パラメーターはブール値を取ります。
以下の要求例を使用して、さまざまな鍵セットを取得できます。
$ curl -X GET \
"https://<region>.kms.cloud.ibm.com/api/v2/keys?extractable=<extractable>" \
-H "accept: application/vnd.ibm.collection+json" \
-H "authorization: Bearer <IAM_token>" \
-H "bluemix-instance: <instance_ID>"
次の表に従って、要求内の extractable 変数を置き換えてください。
| 変数 | 説明 |
|---|---|
| 抽出物 | 取得する鍵のタイプ。 extractable プロパティーに基づいて鍵をフィルタリングします。 この照会パラメーターを使用すると、素材がサービスの外部に出ることができる鍵を検索できます。 true に設定すると、標準のキーが取得されます。 false に設定すると、ルートキーが取得されます。 省略した場合は、ルートキーと標準キーの両方が取得されます。 たとえば、 Key Protect インスタンス内で、抽出可能な素材を含むキーのみを一覧表示したい場合は、
../keys?extractable=true を使用します。 また、extractable を offset、limit、および state と組み合わせて、該当するリソースのページング操作を行うこともできます。 |
使用上の注意点については、extractable 照会パラメーターの次の設定例を確認してください。
| URL | 説明 |
|---|---|
../keys |
使用可能なリソースをすべてリストしますが、最初から 200 個までの鍵が最大限です。 |
../keys?extractable=true |
標準鍵をリスト表示します。 |
../keys?extractable=false |
ルート鍵をリスト表示します。 |
キーのリストの並べ替え
1 つ以上のキー・プロパティーに基づいて返される照会ストリング キーのリストをソートします。 で sort パラメーターを使用する。 プロパティの降順でソートするには、用語の前に"-"を付けます。複数のキー・プロパティでソートするには、各プロパティをカンマで区切ります。 カンマで区切られたリストの最初のプロパティが、次のプロパティの前に評価される。
$ curl -X GET \
"https://<region>.kms.cloud.ibm.com/api/v2/keys?sort=<sort-value>" \
-H "accept: application/vnd.ibm.collection+json" \
-H "authorization: Bearer <IAM_token>" \
-H "bluemix-instance: <instance_ID>"
| 変数 | 説明 |
|---|---|
| ソート値 | ソート用のプロパティーのリスト。 現在ソート可能な主なプロパティは以下の通り: id state, extractable, imported, creationDate, lastUpdateDate, lastRotateDate, deletionDate,
expirationDate. |