Verwendung des Tools Key Usage Reporter (KUR)
Der Key Usage Reporter (KUR) CLI scannt ein IBM Cloud Konto und erstellt einen umfassenden Bericht darüber, welche Cloud-Ressourcen mit welchen KMS-Schlüsseln verschlüsselt sind. Das Tool unterstützt sowohl Key Protect (kms) als auch
Hyper Protect Crypto Services (hs-crypto). Das Tool ist auch in der Lage, Protokolldateien zur Aktivitätsverfolgung zu verarbeiten und CSV Zusammenfassungen zu erstellen, die dabei helfen, die Nutzung des KMS zu ermitteln.
KUR wird im Ist-Zustand und nach bestem Wissen und Gewissen zur Verfügung gestellt. Das Tool erkennt nicht alle möglichen Verwendungen von Schlüsseln, und die Ergebnisse sollten nicht als verbindlich angesehen werden. Einige Dienste, Konfigurationen oder Sonderfälle werden möglicherweise nicht abgedeckt.
Herunterladen des Tools
-
Erstellen Sie ein IBM Support-Ticket für Key Protect, um Zugang zu den HPCS zu Key Protect Migrationswerkzeugen zu erhalten.
-
Laden Sie das im Support-Ticket angegebene Tool-Binary herunter.
-
Überprüfen Sie, ob die SHA-256 Prüfsumme der heruntergeladenen Binärdatei mit dem Wert übereinstimmt, der im Support-Ticket angegeben ist. Vergleichen Sie die Werte direkt; sie müssen genau übereinstimmen.
Führen Sie den entsprechenden Befehl für Ihr Betriebssystem aus, um die Prüfsumme SHA-256 zu erhalten, und vergleichen Sie sie mit dem Wert, der im Support-Ticket angegeben ist:
macOS:
shasum -a 256 <kur-binary>Beispiel:
shasum -a 256 kur-darwin-arm64-1.0.0Linux:
sha256sum <kur-binary>Beispiel:
sha256sum kur-linux-amd64-1.0.0Windows (Eingabeaufforderung):
certutil -hashfile <kur-binary> SHA256Beispiel:
certutil -hashfile kur-windows-amd64-1.0.0.exe SHA256Windows ( PowerShell ):
Get-FileHash <kur-binary> -Algorithm SHA256Beispiel:
Get-FileHash kur-windows-amd64-1.0.0.exe -Algorithm SHA256 -
Machen Sie die Binärdatei ausführbar ( macOS/Linux ):
chmod +x <kur-binary>
Voraussetzungen
Stellen Sie vor der Ausführung des Tools sicher, dass die folgenden Voraussetzungen erfüllt sind:
-
IBM Cloud CLI (
ibmcloud) wird installiert, indem Sie die Anweisungen in Erste Schritte mit IBM Cloud CLI befolgen. -
Die folgenden IBM Cloud CLI-Plugins sind installiert und auf dem neuesten Stand:
container-servicevpc-infrastructureevent-notifications
Installieren Sie jedes fehlende Plugin mit:
ibmcloud plugin install <plugin-name> -
Sie sind bei der IBM Cloud CLI angemeldet und zielen auf das Konto, das Sie scannen möchten:
ibmcloud login -
Ihr IAM-Token ist gültig und hat eine Restlaufzeit von mindestens 3 Minuten. Im Zweifelsfall aktualisieren Sie es:
ibmcloud login -
Die Identität, unter der das Tool ausgeführt wird, benötigt kontoweiten Lesezugriff. Weisen Sie der Identität (Benutzer oder API-Schlüssel), mit der Sie sich authentifizieren, die Zugriffsrolle „Viewer“ für die Plattform und die Zugriffsrolle „Reader“ für den Dienst kontoweit zu.
Dieser schreibgeschützte Zugriff im Auditor-Stil entspricht derselben Berechtigungsstufe, die für die Prüfung eines Kontos verwendet wird. Es umfasst alles, was das Tool überprüft, darunter:
- Key Protect sowie Instanzen und Schlüssel von „ Hyper Protect Crypto Services “
- Cloud-Dienste, die mit diesen Schlüsseln verschlüsselt werden können (zum Beispiel Cloud Object Storage, VPC-Infrastruktur, Kubernetes-Cluster, Event Notifications und App Configuration )
KUR führt ausschließlich Lesevorgänge durch und erstellt, ändert oder löscht keine Ressourcen.
Die in diesem Abschnitt genannten Zugriffsvoraussetzungen gelten für den Kontoscan. Der Unterbefehl „ process-at “ arbeitet ausschließlich mit einer lokalen Aktivitätsprotokolldatei und erfordert keinen Zugriff auf IBM Cloud.
Ausführen des Tools
Die folgenden Beispiele zeigen, wie das Tool Key Usage Reporter mit verschiedenen Optionen und Konfigurationen ausgeführt werden kann.
Grundlegende Verwendung: Suche nach HPCS-Schlüsseln (Standard)
Verwenden Sie den folgenden Befehl, um das aktuelle IBM Cloud-Konto nach allen hs-crypto-Instanzen, ihren Schlüsseln und allen Cloud-Ressourcen zu durchsuchen, die durch diese Schlüssel verschlüsselt sind.
./<kur-binary>
Suchen Sie nach Key Protect Schlüssel
Um nach Key Protect Instanzen anstelle von HPCS zu suchen, verwenden Sie das Kennzeichen -service kms.
./<kur-binary> --service kms
Suchen Sie nur nach Key Protect Dedizierte Instanzen
Sie können den Scan so filtern, dass er nur Key Protect Dedicated Instanzen umfasst.
./<kur-binary> --service kms --service-type dedicated
Nur nach Key Protect mandantenfähigen Instanzen suchen
Sie können den Scan so filtern, dass er nur Key Protect Standard-Instanzen (mit mehreren Mandanten) einschließt.
./<kur-binary> --service kms --service-type multi-tenant
Debug-Protokollierung einschalten
Aktivieren Sie detaillierte Debug-Ausgaben, um Probleme zu beheben oder das Verhalten des Tools zu verstehen.
./<kur-binary> --service kms --debug
Geben Sie einen benutzerdefinierten Pfad für die Ausgabedatei an
Standardmäßig erzeugt das Tool eine Ausgabedatei mit einem automatisch generierten Namen, aber Sie können auch einen benutzerdefinierten Pfad angeben.
./<kur-binary> --service kms --output my-report.json
CLI-Flags
In der folgenden Tabelle sind alle verfügbaren Befehlszeilenflags für das Tool Key Usage Reporter aufgeführt.
| Flag | Standard | Beschreibung |
|---|---|---|
--service |
hs-crypto |
Zu scannender KMS-Dienst: hs-crypto oder kms |
--service-type |
(Keine) | KMS-Instanzen nach Typ filtern: dedicated oder multi-tenant. Nur gültig mit -service kms. |
--skip-private-calls |
false |
Überspringen Sie REST-Aufrufe an private Endpunkte. Instanzen ohne einen öffentlichen Endpunkt werden übersprungen. |
--debug |
false |
Debug-Modus aktivieren: detaillierte Protokollmeldungen auf stderr anzeigen |
--output |
Automatisch benannt | Pfad der Ausgabedatei. Der Standardwert ist encryption-key-usage-report-<service>-<account-name>.json |
Die Flaggen können einen einfachen (-flag) oder doppelten (--flag) Bindestrich verwenden.
Ausgabedateien
Das Tool erzeugt zwei Ausgabedateien:
- JSON-Bericht
- Die Hauptausgabedatei (z. B.
encryption-key-usage-report-kms-kp-stage.json), die den vollständigen hierarchischen Bericht der KMS-Instanzen, Schlüssel und Ressourcennutzung enthält. - Protokolldatei
- Eine zusätzliche Protokolldatei mit demselben Basisnamen und dem Suffix
-log.txt(z. B.encryption-key-usage-report-kms-kp-stage-log.txt), die alle Protokollmeldungen des Laufs enthält.
Verstehen der Ausgabe
Der JSON-Bericht hat die folgende Top-Level-Struktur:
{
"metadata": { ... },
"result": {
"kms_instances": [ ... ],
"crns": [ ... ],
"unknowns": [ ... ]
}
}
Metadaten
Zu den Metadaten gehören der Ausführungskontext, z. B. die Toolversion, der Ziel-KMS-Dienst, der API-Endpunkt IBM Cloud, der Kontoname, die Konto-ID und der Benutzer, der den Scan ausgeführt hat.
KMS-Instanzen
Ein Eintrag pro KMS- oder HPCS-Instanz, die im Konto gefunden wird. Instanzen mit erkannter Schlüsselverwendung werden zuerst aufgelistet, dann Instanzen ohne erkannte Verwendung. Jede Instanz enthält:
- Instanzmetadaten
- Name, CRN, Status, erlaubtes Netz, öffentliche und private Endpunkte, Typ (für Key Protect:
multi-tenantoderdedicated) found_by_kms_instance_listingtruewenn die Instanz durch Auflistung der KMS-Instanzen im Konto gefunden wurde.found_by_resource_scantruewenn die Instanz mit den bei der Ressourcensuche gefundenen Schlüsseln.instance_stats- Schlüsselzahlen nach Bundesland:
active_crk_count,suspended_crk_count,deactivated_crk_count,destroyed_crk_countactive_standard_key_count,destroyed_standard_key_count.
keys[]- Vollständiger Schlüsselbestand aus der Key Protect API. Jeder Schlüssel enthält:
type:crk(Customer Root Key) oderstandard_key.state_name:pre-activation,active,suspended,deactivated, oderdestroyed.name: Schlüssel-Name.id: Schlüssel UUID.has_migration_intentmigrationsabsicht: ob für den Schlüssel eine Migrationsabsicht festgelegt wurde.migration_intent_target_crk: Ziel-CRK-CRN (nur vorhanden, wennhas_migration_intenttrueist).found_by_kms_key_listingoderfound_by_resource_scan: wie der Schlüssel entdeckt wurde.associations[]: mit dem Schlüssel registrierte Cloud-Ressourcen (aus der API Key Protect registrations). Jeder Eintrag zeigt dieresource_crnund ob sieprevent_key_deletionaktiviert hat. Entfällt, wenn ein Schlüssel keine Registrierungen hat.service_usagezuordnung von Dienstnamen zu verschlüsselten Ressourcen, die bei der kontoweiten Ressourcenprüfung entdeckt wurden. Nur vorhanden für Schlüssel, die bei der Ressourcenprüfung gefunden wurden.
CRNs
Ressourcen, die auf Verschlüsselungskennungen verweisen, die mit einem CRN-Muster, aber nicht mit einer KMS- oder HPCS-Schlüssel-CRN übereinstimmen, werden hier erfasst, um sicherzustellen, dass nichts unbemerkt verworfen wird.
Unbekannte
Hier werden Ressourcen aufgelistet, die auf Verschlüsselungskennungen verweisen, die überhaupt nicht als CRN geparst werden konnten.
Beispiel Instanzeintrag
Das folgende Beispiel zeigt die Struktur eines KMS-Instanzeintrags im JSON-Bericht.
{
"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
}
]
}
Verarbeitung von Protokollen zur Aktivitätsverfolgung
Zusätzlich zur Erstellung des Hauptberichts enthält das Tool einen Unterbefehl zur Verarbeitung von Audit-Protokollen zur Aktivitätsverfolgung.
Verwendung
Verwenden Sie den Unterbefehl process-at, um Protokolldateien zur Aktivitätsverfolgung zu verarbeiten.
./<kur-binary> process-at <input.tsv>
Was es bewirkt
Nimmt eine TSV-Datei, die aus der IBM Cloud Logs activity tracking event routing archive-Abfrage exportiert wurde, extrahiert die JSON-Ereignisse aus der Spalte text und filtert nach KMS- und HPCS-bezogenen Ereignissen (kms.* und hs-crypto.* actions). Anschließend werden vier Ausgabedateien erstellt:
<base>_events.json- Alle Ereignisse werden als formatiertes JSON-Array extrahiert.
<base>_events.csv- Flache CSV mit einer Zeile pro Ereignis, die Folgendes enthält: serviceName, region, accountId, instanceId, keyId, action, outcome, reasonType, reasonCode, initiatorId, initiatorName, authId, requestInstanceId, eventTime, correlationId, agent.
<base>_events_summary.csv- Gruppierte Zusammenfassung mit Ereigniszählungen, die nach Dienst, Region, Konto, Instanz, Schlüssel, Aktion, Ergebnis, Grund und Initiator gruppiert sind.
<base>_events_summary_by_action.csv- Gruppierte Zusammenfassung mit Ereigniszählungen, die nach Dienst, Region, Konto, Instanz, Schlüssel, Aktion und Initiator gruppiert sind (ohne Aufschlüsselung nach Ergebnis oder Grund).
Dabei wird <base> aus dem Namen der Eingabedatei abgeleitet (ohne _logs.tsv oder .tsv).
Beispiel
Das folgende Beispiel zeigt, wie eine Protokolldatei zur Aktivitätsverfolgung verarbeitet wird und welche Ausgabedateien erzeugt werden.
./<kur-binary> process-at hpcs-at-data-1-day_logs.tsv
Der Befehl erzeugt die folgenden Ausgabedateien:
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
Diese Funktion ist nützlich für die Analyse von KMS-Schlüsselaktivitätsmustern, die Identifizierung von Diensten und Benutzern, die wichtige Operationen durchführen, und die Untersuchung von migrationsbezogenen Ereignissen wie ack-migrate.
Fehlerbehebung
Die folgenden Informationen helfen Ihnen, häufige Probleme bei der Ausführung des Key Usage Reporter-Tools zu beheben.
IBM Cloud CLI nicht installiert
IBM Cloud CLI is not installed. Please install it first.
Visit: https://cloud.ibm.com/docs/cli?topic=cli-getting-started
Installieren Sie die IBM Cloud CLI, indem Sie der Dokumentation Erste Schritte mit der IBM Cloud CLI folgen.
Fehlende CLI-Plugins
Wenn erforderliche CLI-Plugins nicht installiert sind, wird eine Fehlermeldung angezeigt, in der die fehlenden Plugins aufgeführt sind.
missing required IBM Cloud CLI plugins: [container-service vpc-infrastructure]
Installieren Sie die fehlenden Plugins:
ibmcloud plugin install container-service
ibmcloud plugin install vpc-infrastructure
ibmcloud plugin install event-notifications
Veraltete CLI-Plugins
Wenn Ihre CLI-Plugins veraltet sind, wird eine Warnmeldung angezeigt, die auflistet, welche Plugins aktualisiert werden müssen.
the following IBM Cloud CLI plugins are outdated: [container-service]
Aktualisieren Sie das Plugin:
ibmcloud plugin update container-service
Nicht angemeldet
Wenn Sie nicht bei IBM Cloud eingeloggt sind, zeigt das Tool eine Fehlermeldung an.
not logged in to IBM Cloud. Please login first
Melden Sie sich bei IBM Cloud an:
ibmcloud login
Token ist abgelaufen oder wird demnächst ablaufen
Das Tool erfordert ein gültiges IAM-Token mit einer Restlaufzeit von mindestens 3 Minuten.
Wenn Ihr IAM-Token weniger als 3 Minuten Restlaufzeit hat, wird es vom Tool abgelehnt. Aktualisieren Sie Ihre Sitzung:
ibmcloud login
Nicht-öffentliche Instanzen
Einige KMS-Instanzen können so konfiguriert sein, dass sie nur den Zugriff auf private Netze zulassen. Wenn eine KMS-Instanz nur privaten Netzwerkzugriff zulässt und Sie nicht mit dem Netzwerk IBM Cloud Private verbunden sind, kann das Tool
keine Statistiken oder Schlüssel für diese Instanz abrufen. Verwenden Sie --skip-private-calls, um diese Instanzen zu überspringen, damit das Tool nicht versagt:
./<kur-binary> --service kms --skip-private-calls
100+ KMS-Instanzen
Die API für die Ressourcenauflistung IBM Cloud hat eine Begrenzung für die Anzahl der Instanzen, die zurückgegeben werden können.
[WARNING] 100 or more KMS instances, only the first 100 instances will be processed.
Die API für die Ressourcenauflistung IBM Cloud gibt maximal 100 Instanzen zurück. Wenn das Konto mehr als 100 KMS-Instanzen hat, werden nur die ersten 100 in den Bericht aufgenommen. Dieses Verhalten ist eine bekannte Einschränkung.
Ungültiger Diensttyp bei hs-crypto
Das Kennzeichen --service-type ist nur beim Scannen von Key Protect Instanzen gültig.
error: --service-type can only be used with --service kms
Das Kennzeichen --service-type (zum Filtern nach dedicated oder multi-tenant) gilt nur für Key Protect (--service kms). Es ist nicht auf HPCS-Instanzen anwendbar.