キーユーザレポーター(KUR)ツールの使用
Key Usage Reporter (KUR) CLIは、 IBM Cloud アカウントスキャンし、どのクラウドリソースがどのKMSキーによって暗号化されているかの包括的なレポートを作成する。 このツールは Key Protect (kms) と Hyper Protect Crypto Services (hs-crypto) の両方をサポートしている。このツールは、アクティビティ追跡監査ログファイルを処理することも可能で、KMSの利用状況を特定するのに役立つ
CSV サマリーを作成する。
KURは現状のまま、ベストエフォートで提供されます。 このツールは、可能なすべての鍵の使い方を検出するわけではないので、結果を権威あるものとして扱うべきでない。 一部のサービス、構成、エッジケースは対象外となる場合があります。
ツールのダウンロード
-
HPCS から Key Protect へのマイグレーション・ツールへのアクセスをリクエストするには、 Key Protect の IBM サポート・チケットを 作成してください。
-
サポートチケットに記載されているツールバイナリをダウンロードしてください。
-
ダウンロードしたバイナリの SHA-256 チェックサムが、サポートチケットに記載されている値と一致することを確認します。 値を直接比較する。
お使いのオペレーティング・システムに適したコマンドを実行して SHA-256 チェックサムを取得し、サポート・チケットに記載されている値と比較してください:
macOS:
shasum -a 256 <kur-binary>次に例を示します。
shasum -a 256 kur-darwin-arm64-1.0.0Linux:
sha256sum <kur-binary>次に例を示します。
sha256sum kur-linux-amd64-1.0.0Windows(コマンドプロンプト):
certutil -hashfile <kur-binary> SHA256次に例を示します。
certutil -hashfile kur-windows-amd64-1.0.0.exe SHA256Windows ( PowerShell ):
Get-FileHash <kur-binary> -Algorithm SHA256次に例を示します。
Get-FileHash kur-windows-amd64-1.0.0.exe -Algorithm SHA256 -
バイナリを実行可能 ( macOS/Linux ) にする:
chmod +x <kur-binary>
前提条件
ツールを実行する前に、以下の要件が満たされていることを確認してください:
-
IBM Cloud CLI (
ibmcloud) は、 Getting started with IBM Cloud CLI の指示に従ってインストールします。 -
以下の IBM Cloud CLI プラグインがインストールされ、最新の状態になっています:
container-servicevpc-infrastructureevent-notifications
不足しているプラグインをインストールする:
ibmcloud plugin install <plugin-name> -
IBM Cloud CLIにログインし、スキャンしたいアカウントターゲットにしています:
ibmcloud login -
あなたの IAMトークンは有効で、少なくとも3分の有効期限が残っています。 疑問があればリフレッシュする:
ibmcloud login -
このツールを実行するユーザーには、 アカウント 読み取り専用アクセス権が必要です。 認証に使用するID(ユーザーまたはAPIキー)に対して、 アカウントで「 Viewer 」プラットフォームアクセスロールおよび「 Reader 」サービスアクセスロールを割り当ててください。
この読み取り専用で監査員レベルのアクセス権限は、 アカウント監査に使用されるものと同じレベルです。 このツールが検査するすべての項目を網羅しており、具体的には以下のものが含まれます:
- Key Protect および Hyper Protect Crypto Services のインスタンスとキー
- これらの鍵で暗号化できるクラウドサービス(例: Cloud Object Storage、VPCインフラストラクチャ、 Kubernetes クラスター、 Event Notifications、および App Configuration )
KURは読み取り操作のみを実行し、リソースの作成、変更、削除は一切行いません。
このセクションに記載されているアクセス要件は、 アカウントスキャンに適用されます。 process-at サブコマンドは、完全にローカルのアクティビティ追跡ファイル上で動作し、 IBM Cloud へのアクセスは一切必要としません。
ツールの実行
以下の例は、さまざまなオプションと構成でKey Usage Reporterツールを実行する方法を示している。
基本的な使い方:HPCSキーのスキャン(デフォルト)
以下のコマンドを使用して、現在ターゲットとしている IBM Cloud アカウントすべての hs-crypto インスタンス、その鍵、およびそれらの鍵によって暗号化されたクラウド・リソースをスキャンする。
./<kur-binary>
Key Protect キーのスキャン
HPCSの代わりに Key Protect インスタンスをスキャンするには、 -service kms フラグを使用する。
./<kur-binary> --service kms
スキャン対象 Key Protect 専用インスタンスのみ
Key Protect Dedicatedインスタンスのみを含むようにスキャンをフィルタリングすることができます。
./<kur-binary> --service kms --service-type dedicated
Key Protect マルチテナントインスタンスのみをスキャンする
Key Protect Standard(マルチテナント)インスタンスのみを含むようにスキャンをフィルタリングできます。
./<kur-binary> --service kms --service-type multi-tenant
デバッグ・ロギングを有効にする
問題のトラブルシューティングやツールの動作を理解するために、詳細なデバッグ出力を有効にします。
./<kur-binary> --service kms --debug
カスタム出力ファイルのパスを指定する
デフォルトでは、このツールは自動生成された名前で出力ファイルを生成するが、カスタムパスを指定することもできる。
./<kur-binary> --service kms --output my-report.json
CLIフラグ
以下の表は、Key Usage Reporterツールで使用可能なコマンドライン・フラグの一覧である。
| フラグ | デフォルト | 説明 |
|---|---|---|
--service |
hs-crypto |
スキャンするKMSサービス: hs-crypto または kms |
--service-type |
(なし) | KMS インスタンスをタイプ別にフィルタリングする: dedicated または multi-tenant。 -service kms のみ有効。 |
--skip-private-calls |
false |
プライベートエンドポイントへのRESTコールをスキップする。 パブリック・エンドポイントを持たないインスタンスはスキップされる。 |
--debug |
false |
デバッグモードを有効にする |
--output |
オートネーム | 出力ファイルのパス。 デフォルトは encryption-key-usage-report-<service>-<account-name>.json です |
フラグにはシングルダッシュ(-flag)またはダブルダッシュ(--flag)を使用することができる。
出力ファイル
このツールは2つの出力ファイルを作成する:
- JSONレポート
- KMSインスタンス、キー、リソース使用量の完全な階層レポートを含むメイン出力ファイル(例:
encryption-key-usage-report-kms-kp-stage.json)。 - ログ・ファイル
- 同じベース名を持ち、
-log.txtの接尾辞(例:encryption-key-usage-report-kms-kp-stage-log.txt)を持つコンパニオン・ログ・ファイルには、実行時のすべてのログメッセージが含まれる。
アウトプットを理解する
JSONレポートのトップレベル構造は以下の通り:
{
"metadata": { ... },
"result": {
"kms_instances": [ ... ],
"crns": [ ... ],
"unknowns": [ ... ]
}
}
メタデータ
メタデータには、ツールのバージョン、ターゲットKMSサービス、 IBM Cloud APIエンドポイント、 アカウント名、 アカウント ID、スキャンを実行したユーザーなどの実行コンテキストが含まれる。
KMSインスタンス
アカウント見つかったKMSまたはHPCSインスタンスごとに1エントリ。 キーの使用が検出されたインスタンスが最初に列挙され、次に使用が検出されなかったインスタンスが列挙される。 各インスタンスには
- インスタンス・メタデータ
- 名前、CRN、状態、許可されたネットワーク、パブリックおよびプライベート・エンドポイント、タイプ( Key Protect の場合:
multi-tenantまたはdedicated) found_by_kms_instance_listingtrueインスタンスがアカウント内のKMSインスタンスをリストして見つかった場合。found_by_resource_scantrueリソーススキャン中に検出されたキーを持つインスタンスの場合。instance_stats- 州別のキーカウント:
active_crk_count,suspended_crk_count,deactivated_crk_count,destroyed_crk_countactive_standard_key_count,destroyed_standard_key_count.
keys[]- Key Protect APIからの完全なキーインベントリ。 各キーには以下のものが含まれる:
typecrk(お客様 )または。standard_keystate_name:pre-activationactive,suspended,deactivated, またはdestroyed.nameキー名。idキー UUID。has_migration_intent: キーにマイグレーション・インテントが設定されているかどうか。migration_intent_target_crk: ターゲット CRK CRN (has_migration_intentがtrueのときのみ存在する)。found_by_kms_key_listingまたはfound_by_resource_scan: キーの発見方法。associations[]Key Protect 登録 API から)キーに対して登録されたクラウドリソース。 各エントリーは、resource_crnと、prevent_key_deletionが有効になっているかどうかを示している。 キーに登録がない場合は省略。service_usageアカウントリソーススキャンによって検出された暗号化されたリソースへのサービス名のマップ。 リソーススキャンで見つかったキーのみに存在する。
CRN
KMSまたはHPCSの鍵CRNではないが、CRNパターンに一致する暗号化識別子を参照するリソースは、何もサイレント・ドロップされないように、ここでキャプチャされる。
未知数
CRNとしてまったく解析できなかった暗号化識別子を参照するリソースをここに列挙する。
インスタンス・エントリーの例
次の例は、JSONレポートのKMSインスタンス・エントリーの構造を示している。
{
"name": "my-kp-instance",
"type": "multi-tenant",
"crn": "crn:v1:bluemix:public:kms:us-south:a/00000000000000000000000000000000:deadbeef-0000-0000-0000-1234567890ab::",
"state": "active",
"allowed_network": "public-and-private",
"public_endpoint": "https://us-south.kms.cloud.ibm.com",
"private_endpoint": "https://private.us-south.kms.cloud.ibm.com",
"found_by_kms_instance_listing": true,
"found_by_resource_scan": true,
"instance_stats": {
"active_crk_count": 5,
"suspended_crk_count": 0,
"deactivated_crk_count": 1,
"destroyed_crk_count": 2,
"active_standard_key_count": 3,
"destroyed_standard_key_count": 1
},
"keys": [
{
"type": "crk",
"state_name": "active",
"name": "my-root-key",
"id": "abc12345-6789-0abc-def0-1234567890ab",
"has_migration_intent": false,
"found_by_kms_key_listing": true,
"found_by_resource_scan": true,
"associations": [
{
"resource_crn": "crn:v1:bluemix:public:cloud-object-storage:global:a/00000000000000000000000000000000:deadbeef-0000-0000-0000-1234567890ab:bucket:my-encrypted-bucket",
"prevent_key_deletion": true
}
],
"service_usage": {
"cloud-object-storage (Cloud Object Storage)": [
{
"encrypted_resource": "crn:v1:bluemix:public:cloud-object-storage:global:a/00000000000000000000000000000000:deadbeef-0000-0000-0000-1234567890ab:bucket:my-encrypted-bucket"
}
]
}
},
{
"type": "standard_key",
"state_name": "active",
"name": "my-standard-key",
"id": "def45678-9012-3456-7890-abcdef012345",
"has_migration_intent": false,
"found_by_kms_key_listing": true,
"found_by_resource_scan": false
}
]
}
アクティビティ追跡ログの処理
メイン・レポートの生成に加え、このツールにはアクティビティ追跡監査ログを処理するサブコマンドが含まれている。
使用法
アクティビティ追跡ログファイルを処理するには、 process-at サブコマンドを使用します。
./<kur-binary> process-at <input.tsv>
実行内容
IBM Cloud Logs アクティビティ・トラッキング・イベント・ルーティング・アーカイブ・クエリからエクスポートされたTSVファイルを取得し、 text 列からJSONイベントを抽出し、KMSおよびHPCS関連のイベント(kms.* および hs-crypto.* アクション)をフィルタリングします。 そして4つの出力ファイルを作成する:
<base>_events.json- フォーマットされたJSON配列として抽出されたすべてのイベント。
<base>_events.csv- CSV serviceName, region, action, outcome, agent. accountId, instanceId, keyId, reasonType, reasonCode, initiatorId, initiatorName, authId, requestInstanceId, eventTime, correlationId,
<base>_events_summary.csv- サービス、地域、 アカウント、インスタンス、キー、アクション、結果、理由、および開始者によってグループ化された、イベントカウントによるグループ化されたサマリー。
<base>_events_summary_by_action.csv- サービス、地域、 アカウント、インスタンス、キー、アクション、およびイニシエータ(結果または理由の内訳なし)ごとにグループ化されたイベントカウントのサマリー。
ここで、 <base> は入力ファイル名から派生したものである( _logs.tsv または .tsv )。
例
次の例は、アクティビティ追跡ログファイルの処理方法と、生成される出力ファイルを示している。
./<kur-binary> process-at hpcs-at-data-1-day_logs.tsv
このコマンドは以下の出力ファイルを生成する:
hpcs-at-data-1-day_events.jsonhpcs-at-data-1-day_events.csvhpcs-at-data-1-day_events_summary.csvhpcs-at-data-1-day_events_summary_by_action.csv
この機能は、KMSのキー・アクティビティ・パターンを分析し、どのサービスやユーザーがキー操作を実行しているかを特定し、 ack-migrate のような移行関連イベントを調査するのに便利です。
トラブルシューティング
以下の情報は、Key Usage Reporterツールを実行する際によくある問題を解決するのに役立ちます。
IBM Cloud CLIがインストールされていない
IBM Cloud CLI is not installed. Please install it first.
Visit: https://cloud.ibm.com/docs/cli?topic=cli-getting-started
Getting started with IBM Cloud CLI ドキュメントに従って、 IBM Cloud CLI をインストールします。
不足しているCLIプラグイン
必要なCLIプラグインがインストールされていない場合、不足しているプラグインの一覧を示すエラーメッセージが表示されます。
missing required IBM Cloud CLI plugins: [container-service vpc-infrastructure]
不足しているプラグインをインストールします:
ibmcloud plugin install container-service
ibmcloud plugin install vpc-infrastructure
ibmcloud plugin install event-notifications
古いCLIプラグイン
CLIプラグインが古い場合、更新が必要なプラグインをリストアップした警告メッセージが表示されます。
the following IBM Cloud CLI plugins are outdated: [container-service]
プラグインを更新する:
ibmcloud plugin update container-service
ログインしていません
IBM Cloud にログインしていない場合、ツールはエラーメッセージを表示します。
not logged in to IBM Cloud. Please login first
次のように IBM Cloud にログインします。
ibmcloud login
トークンの有効期限が切れた、または切れようとしている
このツールには、有効期限が3分以上残っている有効なIAMトークンが必要です。
IAMトークンの残り有効時間が3分を切ると、ツールはトークンを拒否する。 セッションをリフレッシュしてください:
ibmcloud login
プライベート専用インスタンス
KMSインスタンスによっては、プライベート・ネットワーク・アクセスのみを許可するように設定されている場合がある。 KMSインスタンスがプライベート・ネットワーク・アクセスのみを許可しており、 IBM Cloud Private ネットワークに接続していない場合、ツールはそのインスタンスの統計または鍵を取得できません。 --skip-private-calls を使用して、これらのインスタンスをスキップする:
./<kur-binary> --service kms --skip-private-calls
100以上のKMSインスタンス
IBM Cloud リソース一覧 API には、返されるインスタンスの数に制限があります。
[WARNING] 100 or more KMS instances, only the first 100 instances will be processed.
IBM Cloud リソース一覧APIは、最大100個のインスタンスを返す。 アカウント 100以上のKMSインスタンスがある場合、最初の100のみがレポートに含まれます。 この動作は既知の制限事項です。
hs-cryptoで無効なサービスタイプ
--service-type フラグは、 Key Protect インスタンスをスキャンするときのみ有効である。
error: --service-type can only be used with --service kms
--service-type フラグ( dedicated または multi-tenant によるフィルタリング)は、 Key Protect (--service kms) にのみ適用されます。HPCS インスタンスには適用されません。