Usando a ferramenta Key Usage Reporter (KUR)
A CLI do Key Usage Reporter (KUR) faz a varredura de uma conta IBM Cloud e produz um relatório abrangente sobre quais recursos de nuvem são criptografados por quais chaves KMS. A ferramenta é compatível com Key Protect (kms) e Hyper
Protect Crypto Services (hs-crypto). A ferramenta também é capaz de processar arquivos de registro de auditoria de rastreamento de atividades, produzindo resumos em CSV que ajudam a identificar a utilização do KMS.
O KUR é fornecido no estado em que se encontra e com base no melhor esforço. A ferramenta não detecta todos os usos possíveis das chaves, e os resultados não devem ser tratados como autoridade. Alguns serviços, configurações ou casos extremos podem não ser cobertos.
Download da ferramenta
-
Crie um tíquete de suporte IBM para Key Protect para solicitar acesso às ferramentas de migração do HPCS para Key Protect.
-
Faça o download do binário da ferramenta fornecido no tíquete de suporte.
-
Verifique se a soma de verificação SHA-256 do binário baixado corresponde ao valor fornecido no tíquete de suporte. Compare os valores diretamente; eles devem corresponder exatamente.
Execute o comando apropriado para o seu sistema operacional para obter a soma de verificação SHA-256 e compare com o valor fornecido no tíquete de suporte:
macOS:
shasum -a 256 <kur-binary>Exemplo:
shasum -a 256 kur-darwin-arm64-1.0.0Linux:
sha256sum <kur-binary>Exemplo:
sha256sum kur-linux-amd64-1.0.0Windows (Prompt de Comando):
certutil -hashfile <kur-binary> SHA256Exemplo:
certutil -hashfile kur-windows-amd64-1.0.0.exe SHA256Windows ( PowerShell ):
Get-FileHash <kur-binary> -Algorithm SHA256Exemplo:
Get-FileHash kur-windows-amd64-1.0.0.exe -Algorithm SHA256 -
Torne o binário executável ( macOS/Linux ):
chmod +x <kur-binary>
Pré-requisitos
Antes de executar a ferramenta, certifique-se de que os seguintes requisitos sejam atendidos:
-
IBM Cloud A CLI (
ibmcloud) é instalada seguindo as instruções em Getting started with the IBM Cloud CLI. -
Os seguintes sites IBM Cloud Plug-ins da CLI estão instalados e atualizados:
container-servicevpc-infrastructureevent-notifications
Instale qualquer plug-in ausente com:
ibmcloud plugin install <plugin-name> -
Você está conectado à CLI do IBM Cloud e tem como alvo a conta que deseja verificar:
ibmcloud login -
Seu token IAM é válido e tem pelo menos 3 minutos de validade restante. Em caso de dúvida, atualize-o:
ibmcloud login -
A identidade que executa a ferramenta precisa de acesso somente de leitura em toda a conta. Atribua a função de acesso à plataforma Viewer e a função de acesso ao serviço Reader em toda a conta à identidade (usuário ou chave de API) com a qual você se autentica.
Esse acesso somente para leitura, do tipo “auditor”, corresponde ao mesmo nível utilizado para auditar uma conta. Ele abrange tudo o que a ferramenta verifica, incluindo:
- Key Protect e instâncias e chaves do Hyper Protect Crypto Services
- Serviços em nuvem que podem ser criptografados por essas chaves (por exemplo, Cloud Object Storage, infraestrutura VPC, Kubernetes clusters, Event Notifications e App Configuration )
O KUR realiza apenas operações de leitura e não cria, modifica nem exclui nenhum recurso.
Os requisitos de acesso descritos nesta seção se aplicam à verificação da conta. O subcomando process-at opera inteiramente com um arquivo local de rastreamento de atividades e não requer acesso ao IBM Cloud.
Executar a ferramenta
Os exemplos a seguir mostram como executar a ferramenta Key Usage Reporter com diferentes opções e configurações.
Uso básico: procura por chaves HPCS (padrão)
Use o comando a seguir para fazer uma varredura na conta IBM Cloud atualmente direcionada em busca de todas as instâncias hs-crypto, suas chaves e quaisquer recursos de nuvem criptografados por essas chaves.
./<kur-binary>
Procure as teclas Key Protect
Para fazer a varredura de instâncias Key Protect em vez de HPCS, use o sinalizador -service kms.
./<kur-binary> --service kms
Verificação de Key Protect Somente instâncias dedicadas
Você pode filtrar a varredura para incluir apenas as instâncias dedicadas do Key Protect.
./<kur-binary> --service kms --service-type dedicated
Verificar somente instâncias multilocatário em Key Protect
Você pode filtrar a varredura para incluir apenas instâncias do Key Protect Standard (multilocatário).
./<kur-binary> --service kms --service-type multi-tenant
Ativar o registro de depuração
Ative a saída de depuração detalhada para solucionar problemas ou entender o comportamento da ferramenta.
./<kur-binary> --service kms --debug
Especificar um caminho de arquivo de saída personalizado
Por padrão, a ferramenta gera um arquivo de saída com um nome gerado automaticamente, mas você pode especificar um caminho personalizado.
./<kur-binary> --service kms --output my-report.json
Sinalizadores da CLI
A tabela a seguir lista todos os sinalizadores de linha de comando disponíveis para a ferramenta Key Usage Reporter.
| Sinalize | Padrão | Descrição |
|---|---|---|
--service |
hs-crypto |
Serviço KMS a ser verificado: hs-crypto ou kms |
--service-type |
(nenhum) | Filtre as instâncias do KMS por tipo: dedicated ou multi-tenant. Válido somente com -service kms. |
--skip-private-calls |
false |
Ignorar chamadas REST para pontos de extremidade privados. As instâncias sem um endpoint público são ignoradas. |
--debug |
false |
Ativar o modo de depuração: mostrar mensagens de registro detalhadas no stderr |
--output |
Nomeação automática | Caminho do arquivo de saída. O padrão é encryption-key-usage-report-<service>-<account-name>.json |
Os sinalizadores podem usar traço simples (-flag) ou traço duplo (--flag).
Arquivos de saída
A ferramenta produz dois arquivos de saída:
- Relatório JSON
- O arquivo de saída principal (por exemplo,
encryption-key-usage-report-kms-kp-stage.json), que contém o relatório hierárquico completo das instâncias, chaves e usos de recursos do KMS. - Arquivo de log
- Um arquivo de registro complementar com o mesmo nome base e um sufixo
-log.txt(por exemplo,encryption-key-usage-report-kms-kp-stage-log.txt), contendo todas as mensagens de registro da execução.
Entendendo o resultado
O relatório JSON tem a seguinte estrutura de nível superior:
{
"metadata": { ... },
"result": {
"kms_instances": [ ... ],
"crns": [ ... ],
"unknowns": [ ... ]
}
}
Metadados
Os metadados incluem o contexto de execução, como a versão da ferramenta, o serviço KMS de destino, o ponto de extremidade da API IBM Cloud, o nome da conta, o ID da conta e o usuário que executou a varredura.
Instâncias KMS
Uma entrada por instância de KMS ou HPCS encontrada na conta. As instâncias com uso de chave detectado são listadas primeiro e, em seguida, as instâncias sem uso detectado. Cada instância contém:
- Metadados da Instância
- Nome, CRN, estado, rede permitida, pontos de extremidade públicos e privados, tipo (para Key Protect:
multi-tenantoudedicated) found_by_kms_instance_listingtruese a instância foi encontrada ao listar as instâncias do KMS na conta.found_by_resource_scantruese a instância com chaves detectadas durante a varredura de recursos.instance_stats- Contagens principais por estado:
active_crk_count,suspended_crk_count,deactivated_crk_count,destroyed_crk_countactive_standard_key_count,destroyed_standard_key_count.
keys[]- Inventário completo de chaves da API Key Protect. Cada chave inclui:
type:crk(Chave raiz do cliente) oustandard_key.state_name:pre-activation,active,suspended,deactivated, oudestroyed.namenome da chave.id: chave UUID.has_migration_intentse a chave tem uma intenção de migração definida.migration_intent_target_crk: CRK CRN de destino (presente somente quandohas_migration_intentétrue).found_by_kms_key_listingoufound_by_resource_scan: como a chave foi descoberta.associations[]: recursos de nuvem registrados em relação à chave (a partir da API de registros Key Protect ). Cada entrada mostra o endereçoresource_crne se ele tem oprevent_key_deletionativado. Omitido quando uma chave não tem registros.service_usagemapa do nome do serviço para recursos criptografados detectados pela varredura de recursos em toda a conta. Presente somente para chaves encontradas pela varredura de recursos.
CRNs
Os recursos que fazem referência a identificadores de criptografia que correspondem a um padrão CRN, mas não a um CRN de chave KMS ou HPCS, são capturados aqui para garantir que nada seja descartado silenciosamente.
Desconhecidos
Os recursos que fazem referência a identificadores de criptografia que não puderam ser analisados como CRNs estão listados aqui.
Exemplo de entrada de instância
O exemplo a seguir mostra a estrutura de uma entrada de instância do KMS no relatório JSON.
{
"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
}
]
}
Processamento de registros de rastreamento de atividades
Além de gerar o relatório principal, a ferramenta inclui um subcomando para processar os registros de auditoria de rastreamento de atividades.
Uso
Use o subcomando process-at para processar arquivos de registro de rastreamento de atividades.
./<kur-binary> process-at <input.tsv>
Função
Obtém um arquivo TSV que é exportado da consulta do arquivo de roteamento de eventos de rastreamento de atividades IBM Cloud Logs, extrai os eventos JSON da coluna text e filtra os eventos relacionados a KMS e HPCS (ações kms.* e hs-crypto.* ). Em seguida, ele produz quatro arquivos de saída:
<base>_events.json- Todos os eventos extraídos como uma matriz JSON formatada.
<base>_events.csv- Plano CSV com uma linha por evento, contendo: serviceName, region, accountId, instanceId, keyId, action, outcome, reasonType, reasonCode, initiatorId, initiatorName, authId, requestInstanceId, eventTime, correlationId, agent.
<base>_events_summary.csv- Resumo agrupado com contagens de eventos, que são agrupados por serviço, região, conta, instância, chave, ação, resultado, motivo e iniciador.
<base>_events_summary_by_action.csv- Resumo agrupado com contagens de eventos, que são agrupados por serviço, região, conta, instância, chave, ação e iniciador (sem detalhamento de resultado ou motivo).
Em que <base> é derivado do nome do arquivo de entrada (eliminando _logs.tsv ou .tsv).
Exemplo
O exemplo a seguir mostra como processar um arquivo de registro de rastreamento de atividades e os arquivos de saída que são gerados.
./<kur-binary> process-at hpcs-at-data-1-day_logs.tsv
O comando produz os seguintes arquivos de saída:
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
Esse recurso é útil para analisar os principais padrões de atividade do KMS, identificar quais serviços e usuários estão realizando operações importantes e investigar eventos relacionados à migração, como ack-migrate.
Resolução de problemas
As informações a seguir o ajudam a resolver problemas comuns ao executar a ferramenta Key Usage Reporter.
IBM Cloud CLI não instalada
IBM Cloud CLI is not installed. Please install it first.
Visit: https://cloud.ibm.com/docs/cli?topic=cli-getting-started
Instale a CLI do IBM Cloud seguindo a documentação Getting started with the IBM Cloud CLI.
Plug-ins de CLI ausentes
Se os plug-ins necessários da CLI não estiverem instalados, você verá uma mensagem de erro que lista os plug-ins ausentes.
missing required IBM Cloud CLI plugins: [container-service vpc-infrastructure]
Instale os plug-ins ausentes:
ibmcloud plugin install container-service
ibmcloud plugin install vpc-infrastructure
ibmcloud plugin install event-notifications
Plug-ins de CLI desatualizados
Se os plug-ins da CLI estiverem desatualizados, você verá uma mensagem de aviso que lista quais plug-ins precisam ser atualizados.
the following IBM Cloud CLI plugins are outdated: [container-service]
Atualize o plug-in:
ibmcloud plugin update container-service
Não Foi Efetuado Login
Se você não estiver conectado a IBM Cloud, a ferramenta exibirá uma mensagem de erro.
not logged in to IBM Cloud. Please login first
Efetue login no IBM Cloud:
ibmcloud login
Token expirado ou prestes a expirar
A ferramenta requer um token IAM válido com pelo menos 3 minutos de validade restante.
Se o seu token IAM tiver menos de 3 minutos de validade restante, a ferramenta o rejeitará. Atualize sua sessão:
ibmcloud login
Instâncias somente privadas
Algumas instâncias do KMS podem ser configuradas para permitir apenas o acesso à rede privada. Se uma instância do KMS permitir apenas acesso à rede privada e você não estiver conectado à rede IBM Cloud Private, a ferramenta não poderá obter
estatísticas ou chaves para essa instância. Use --skip-private-calls para ignorar essas instâncias em vez de fazer com que a ferramenta falhe nelas:
./<kur-binary> --service kms --skip-private-calls
mais de 100 instâncias de KMS
A API de listagem de recursos do site IBM Cloud tem um limite para o número de instâncias que podem ser retornadas.
[WARNING] 100 or more KMS instances, only the first 100 instances will be processed.
A API de listagem de recursos IBM Cloud retorna um máximo de 100 instâncias. Se a conta tiver mais de 100 instâncias do KMS, somente as 100 primeiras serão incluídas no relatório. Esse comportamento é uma limitação conhecida.
Tipo de serviço inválido com hs-crypto
O sinalizador --service-type é válido somente ao verificar as instâncias de Key Protect.
error: --service-type can only be used with --service kms
O sinalizador --service-type (para filtrar por dedicated ou multi-tenant) aplica-se somente a Key Protect (--service kms). Ele não se aplica a instâncias HPCS.