Referência da CLI do Key Protect
A versão mais recente do plug-in da CLI do IBM® Key Protect for IBM Cloud® permite gerenciar, com segurança e eficiência, as chaves contidas em sua instância do Key Protect.
Ao acessar o site IBM Cloud CLI, você será notificado quando houver atualizações disponíveis. Certifique-se de manter a CLI atualizada para que seja possível usar os comandos e sinalizadores que estão disponíveis para o plug-in da CLI do Key Protect.
Notas
Para instalar e configurar o plug-in da CLI do Key Protect, consulte o tópico em Configurando a CLI.
O exemplo mostrando como usar region-set descreve uma etapa crítica na configuração.
Versões anteriores
Esta documentação da versão 0.8 não inclui comandos obsoletos.
Todos os comandos descontinuados funcionam nas versões 0.4.0 e 0.5.2. Ou seja, a versão 0.5.2 é compatível com as versões anteriores 0.3.9 e 0.4.0.
Exemplos
Todos os comandos têm uma seção Example, que mostra como usar o comando no contexto de um fluxo de trabalho.
Os exemplos assumem que você openssl e jq instalado.
Muitos exemplos utilizam uma variável de ambiente configurada para a sessão relacionada ao ID da instância do Key Protect, em vez do parâmetro -i. As variáveis assim configuradas serão automaticamente utilizadas pelo plug-in sempre
que exigido e quando necessário.
# export the Key Protect instance id in the command line
$ export KP_INSTANCE_ID=<INSTANCE_ID>
Certifique-se de definir o ponto de extremidade da instância Key Protect:
export KP_TARGET_ADDR=<KEY_PROTECT_INSTANCE_ENDPOINT>
Substitua <KEY_PROTECT_INSTANCE_ENDPOINT> pelo endpoint do ID da sua instância. Por exemplo:
export KP_TARGET_ADDR=https://fadedbee-0000-0000-0000-1234567890ab.api.us-south.kms.appdomain.cloud
Você pode encontrar o endpoint da instância para Key Protect no console da interface do usuário IBM Cloud para sua instância específica.
Resumo do comando ibmcloud kp
ibmcloud kp suporta os comandos listados aqui.
Comando kp import-token
O comando kp import-token prepara uma chave raiz para importação segura.
| Subcomando | Status v0.8 | Descrição |
|---|---|---|
| create | Criar um token de importação | |
| key-encrypt | Criptografar a chave que você importa para o serviço | |
| nonce-encrypt | Criptografar o nonce que é gerado por kp import-token create |
|
| show | Recuperar um token de importação |
Comando kp instance
O comando kp instance gerencia as políticas de uma instância do Key Protect.
| Subcomando | Status v0.8 | Descrição |
|---|---|---|
| policies | Listar políticas associadas a uma instância | |
| policy-update allowed-network | Atualizar a política da instância para allowed network |
|
| policy-update dual-auth-delete | Atualizar a política da instância para dual auth delete |
|
| policy-update rotation | Atualizar a política da instância para rotation |
Comando kp key
O comando kp key gerencia chaves individuais.
| Subcomando | Status v0.8 | Descrição |
|---|---|---|
| alias-create | Crie um alias para uma referência exclusiva e conveniente a uma chave | |
| cancel-delete | Cancelar uma solicitação planejada anteriormente para excluir uma chave | |
| create | Criar uma chave ou importar a sua própria chave | |
| delete | Excluir uma chave | |
| disable | Desativar uma chave | |
| enable | Ativar uma chave | |
| policies | Recuperar uma lista de políticas | |
| policy-update dual-auth-delete | Atualizar a política de chaves para dual auth delete |
|
| policy-update rotation | Atualizar a política de chaves para rotation |
|
| restore | Restaurar uma chave raiz que foi excluída anteriormente | |
| girar | Fazer rodízio de um chave raiz | |
| schedule-delete | Autorizar uma chave, com uma política de exclusão de autorização dupla, para ser excluída | |
| show | Recuperar uma chave | |
| sync | Sincronizar os recursos associados de uma chave | |
| unwrap | Desagrupar uma chave de criptografia de dados | |
| atualizar | Atualize uma chave, transferindo-a para um novo conjunto de chaves | |
| Versões | Listar todas as versões chave | |
| wrap | Agrupar uma chave de criptografia de dados |
comando kp key-ring
O suporte ao Conjunto de chaves permite o gerenciamento de grupos de chaves para melhores práticas usando kp key-ring.
| Subcomando | Status v0.8 | Descrição |
|---|---|---|
| create | Cria um conjunto de chaves dentro de uma instância kp | |
| delete | Exclui um conjunto de chaves dentro de uma instância kp |
Outros comandos kp
Quanto mais comandos para o gerenciamento de recursos do Key Protect, maior o suporte para boas práticas.
| Comando | Status v0.8 | Descrição |
|---|---|---|
| kp keys | Listar as chaves que estão disponíveis em sua instância do Key Protect | |
| kp key-rings | Lista os conjuntos de chaves associados à instância kp | |
| conjunto de regiões kp | Destinar um terminal regional diferente | |
| kp registrations | Listar associações entre chaves raiz e outros recursos em nuvem | |
| kp kmip | Crie e gerencie adaptadores KMIP e recursos associados. | |
| Unidade de criptografia kp | Gerenciar unidades de criptografia | |
| unidades criptográficas kp | Listar as unidades de criptografia alocadas a uma instância |
Aliases de chave podem ser usados como identificadores para métodos, conforme mostrado em exemplos para key create, key disable e em qualquer lugar que você veja 'Key ID ou Alias' suportado aqui.
Visualizando a ajuda
Estes são exemplos de informações da ajuda do kp.
ibmcloud kp -hibmcloud kp import-token -hibmcloud kp key -hibmcloud kp keys -h
Os comandos kp import-token e kp key têm subcomandos. Estes exemplos mostram a ajuda para alguns subcomandos.
ibmcloud kp import-token create -hibmcloud kp key delete -h
kp import-token create
Crie um token de importação que possa ser usado para criptografar e importar uma chave raiz para a instância do Key Protect. Por padrão, o token de importação expira após 10 minutos (600 segundos).
ibmcloud kp import-token create
-i, --instance-id INSTANCE_ID
[-e, --expiration EXPIRATION_TIME_SECONDS]
[-m, --max-retrievals MAX_RETRIEVALS]
Exemplo
Este exemplo cria um token de importação. O token de importação consiste em um nonce e um public key.
Um nonce é um número arbitrário que pode ser usado apenas uma vez em uma comunicação criptográfica.
# 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="
}
Parâmetros necessários
-
-i, --instance-idO ID da instância da IBM Cloud que identifica a sua instância do Key Protect.
É possível configurar uma variável de ambiente, em vez de especificar
-icom o comando a seguir:$ export KP_INSTANCE_ID=<INSTANCE_ID>.
Parâmetros opcionais
-
-e, --expirationEspecifique um prazo de expiração (em segundos) para um token de importação. Esse valor determina por quanto tempo o token de importação e a chave pública associada a ele permanecem válidos para operações.
O valor mínimo é
300segundos (5 minutos) e o valor máximo é86400segundos (24 horas). O valor padrão é600segundos (10 minutos). -
-m, --max-retrievalsConfigure a contagem de utilização para o token de importação. Esse valor determina o número de vezes que o token de importação pode ser recuperado no prazo de expiração antes de se tornar inacessível. O valor padrão é
1.
kp import-token key-encrypt
Para criptografar o material de chave importado para o Key Protect, utilize a chave pública que está associada à instância do Key Protect.
Em seguida, forneça a chave criptografada recuperada ao executar ibmcloud kp key create para importar a chave para o serviço.
ibmcloud kp import-token key-encrypt
-i, --instance-id INSTANCE_ID
-k, --key KEY_MATERIAL
-p, --pubkey PUBLIC_KEY
[-a, --hash HASH_ALGORITHM]
Exemplo
Este exemplo criptografa um arquivo key material usando a chave pública criada por
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=
Parâmetros necessários
-
-i, --instance-idO ID da instância da IBM Cloud que identifica a sua instância do Key Protect.
É possível configurar uma variável de ambiente, em vez de especificar
-icom o comando a seguir:$ export KP_INSTANCE_ID=<INSTANCE_ID>. -
-k, --keyO material da chave codificada em Base64 que você armazena e gerencia no serviço.
-p, --pubkeyA chave de criptografia pública codificada em Base64 que foi distribuída por Key Protect. Para criar nova chave pública, use
ibmcloud kp import-token create. Para recuperar uma chave pública, useibmcloud kp import-token show.
Parâmetros opcionais
-
-a, --hashO algoritmo hash usado para agrupar a chave. SHA1 e SHA256 são suportados. O padrão é SHA256. O SHA1 é suportado somente por HPCS.
Essa opção é usada para gerar uma chave criptografada que pode ser usada somente em uma solicitação com a API do HPCS. Não use esta opção para criar chaves raiz do Key Protect.
Os Hyper Protect Crypto Services (HPCS) são um serviço de gerenciamento de chave dedicado e um módulo de segurança de hardware (HSM). Os HPCS se integram com o Key Protect para gerar e criptografar chaves. A função Manter a sua própria chave (KYOK) também é ativada por HPCS.
Notas
Para obter mais informações sobre HPCS, consulte Introdução ao IBM Cloud Hyper Protect Crypto Services.
kp import-token nonce-encrypt
Para criptografar o nonce distribuído pelo Key Protect utilize o material de chave importado para o serviço.
Em seguida, forneça os valores de nonce e IV criptografados recuperados ao executar
ibmcloud kp key create para importar a chave..
ibmcloud kp import-token nonce-encrypt
-i, --instance-id INSTANCE_ID
-k, --key KEY_MATERIAL
-n, --nonce NONCE
[-c, --cbc]
Exemplo
Este exemplo criptografa o nonce usando o key material.
Um nonce é um número arbitrário que pode ser usado apenas uma vez em uma comunicação criptográfica.
# 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
Parâmetros necessários
-
-i, --instance-idO ID da instância da IBM Cloud que identifica a sua instância do Key Protect.
É possível configurar uma variável de ambiente, em vez de especificar
-icom o comando a seguir:$ export KP_INSTANCE_ID=<INSTANCE_ID>. -
-k, --keyO material da chave codificada em Base64 que você armazena e gerencia no serviço.
-n, --nonceO nonce que é usado para verificar uma solicitação para importar uma chave. O valor é codificado em Base64. Para recuperar um nonce, use
ibmcloud kp import-token show.
Parâmetros opcionais
-
-c, --cbcCriptografe o nonce usando o algoritmo de criptografia AES-CBC. Esse método de algoritmo é suportado somente para HPCS. O algoritmo de criptografia padrão é AES-GCM.
Essa opção é usada para gerar um nonce criptografado que pode ser usado somente em uma solicitação com a API do HPCS. Não use esta opção para criar chaves raiz do Key Protect.
Os Hyper Protect Crypto Services (HPCS) são um serviço de gerenciamento de chave dedicado e um módulo de segurança de hardware (HSM). Os HPCS se integram com o Key Protect para gerar e criptografar chaves. A função Manter a sua própria chave (KYOK) também é ativada por HPCS.
Notas
Para obter mais informações sobre HPCS, consulte Introdução ao IBM Cloud Hyper Protect Crypto Services.
kp import-token show
Recuperar o token de importação que está associado à instância doKey Protect Instância.
O token de importação contém uma chave de criptografia pública e um nonce. Forneça a chave pública recuperada e nonce como argumentos para
ibmcloud kp import-token nonce-encrypt e
ibmcloud kp import-token key-encrypt.
ibmcloud kp import-token show
-i, --instance-id INSTANCE_ID
Exemplo
Este exemplo cria um token de importação e mostra os resultados.
# 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=
Parâmetros necessários
-
-i, --instance-idO ID da instância da IBM Cloud que identifica a sua instância do Key Protect.
É possível configurar uma variável de ambiente, em vez de especificar
-icom o comando a seguir:$ export KP_INSTANCE_ID=<INSTANCE_ID>.
kp instance policies
Recupere detalhes sobre políticas de instância, como allowed networks (public-and-private ou private-only), allowed IP políticas, key create import acesso, métricas e exclusão
de autorização dupla (a exclusão de uma chave requer uma autorização de dois usuários).
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]
Exemplo
O exemplo mostra como usar o comando e os resultados. Caso o serviço não tenha resultados para a consulta, será retornada uma matriz vazia ([]).
# 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" }
}
}
]
Parâmetros necessários
-
-i, --instance-IDO ID da instância da IBM Cloud que identifica a sua instância do Key Protect.
É possível configurar uma variável de ambiente, em vez de especificar
-icom o comando a seguir:$ export KP_INSTANCE_ID=<INSTANCE_ID>.
Parâmetros opcionais
-
-p, --allowed-ipMostrar a política da instância para “IPs permitidos”.
-
-a, --allowed-networkMostrar a política de instância para "rede permitida".
-
-d, --dual-auth-deleteExibir a política da instância para
dual authorization delete. -
-k, --key-create-import-accessRecupera os detalhes da política de acesso de importação de criação da chave da instância
-
-m, --metricsRecupera os detalhes da política de métricas da instância.
-
-o, --outputConfigure o formato de saída da CLI. Por padrão, todos os comandos são impressos no formato de tabela. Para mudar o formato de saída para JSON, use
--output json. -
-r, --rotationRecupera detalhes da política de rotação da instância.
kp instance policy-update allowed-network
Atualize a política de uma instância e defina a rede permitida como
public-and-private ou private-only.
A política allowed-network impede uma instância de obter solicitações de redes públicas ou privadas.
Para instâncias existentes, a política de acesso à rede é reforçada após ela ser configurada.
Para obter mais informações, consulte Gerenciando políticas de acesso à rede.
ibmcloud kp instance policy-update allowed-network
-i, --instance-id INSTANCE_ID
-d, --disable OR
-e, --enable
-t, --network-type NETWORK_TYPE
Exemplo
Este exemplo configura a política de "rede permitida" para "pública e privada".
# 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
Parâmetros necessários
-
-d, --disable -
-e, --enableDesativar ou ativar a política de acesso à rede. É obrigatório que haja uma opção.
-
-i, --instance-IDO ID da instância da IBM Cloud que identifica a sua instância do Key Protect.
É possível configurar uma variável de ambiente, em vez de especificar
-icom o comando a seguir:$ export KP_INSTANCE_ID=<INSTANCE_ID>. -
-t, --network-typeEspecificar o tipo de acesso à rede permitido. As opções são
public-and-privateouprivate-only.
kp instance policy-update dual-auth-delete
Use a política dual-auth-delete para excluir com segurança as chaves de criptografia. Ao excluir uma chave, você fragmenta o seu conteúdo e os dados associados. Qualquer dado criptografado pela chave torna-se inacessível.
A exclusão de uma chave que tenha uma política de autorização dupla requer uma autorização de dois usuários.
Para obter mais informações, consulte Uso de políticas de autorização dupla para a exclusão de chaves.
Notas
A exclusão de autorização dupla para uma instância é diferente da exclusão de autorização dupla para chaves.
Uma vez ativado o dual-auth-delete para uma chave, não é possível desativá-lo ou removê-lo. Deve-se aguardar 7 dias para a expiração da política.
A exclusão de autorização dupla para uma instância pode ser ativada ou desativada a qualquer momento.
Se uma chave tiver uma política dual-auth-delete, mudar a política de instância não mudará nenhuma política de chave existente.
Ao mudar a política de instância, novas chaves são aplicadas a ela.
ibmcloud kp instance policy-update dual-auth-delete
-i, --instance-id INSTANCE_ID
-d, --disable OR
-e, --enable
Exemplos
Estes são exemplos de kp instance policy-update dual-auth-delete.
Exemplo 1
Este exemplo ativa a política de exclusão de autorização dupla.
# 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
}
}
]
Exemplo 2
Este exemplo ativa a política de exclusão de autorização dupla e cria uma nova chave para mostrar como uma nova chave herda a política de instância.
A desativação da política de autorização dupla para uma instância não muda a política para as chaves existentes. A política de instância se aplica às novas chaves criadas após a política ser atualizada.
# 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]'
Parâmetros necessários
-
-d, --disable -
-e, --enableDesativar ou ativar a política de autorização dupla. É obrigatório que haja uma opção.
-
-i, --instance-IDO ID da instância da IBM Cloud que identifica a sua instância do Key Protect.
É possível configurar uma variável de ambiente, em vez de especificar
-icom o comando a seguir:$ export KP_INSTANCE_ID=<INSTANCE_ID>.
kp key alias-create
Cria um alias para uma chave e exibe o resultado no formato JSON. Os aliases podem ser usados como referência em métodos que aceitam uma chave ID Cada alias é único apenas dentro da instância em questão e não é reservado em todo
o serviço Key Protect. Cada chave pode ter até cinco aliases. Não há limite para o número de aliases por instância. O comprimento do alias pode ser entre 2 a 90 caracteres, inclusive.
Um alias deve ser alfanumérico e não pode conter espaços ou caracteres especiais além de '-' or '_'. Além disso, o alias não pode ser um UUID versão 4 e não deve ser um nome reservado do 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]
Exemplos
Este é um exemplo de kp key alias-create.
Exemplo
Crie um alias de chave.
# 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
Parâmetros necessários
-
KEY_IDO ID da chave que você deseja modificar. Para recuperar uma lista de suas chaves disponíveis, execute o comando kp keys.
-
KEY_ALIASO alias, ou identificador alternativo, da chave que você deseja modificar. O identificador deve ser: alfanumérico e sem espaços ou caracteres especiais além de '-' ou '_' e não pode ser um UUID versão 4.
-
-i, --instance-IDO ID da instância da IBM Cloud que identifica a sua instância do Key Protect.
É possível configurar uma variável de ambiente, em vez de especificar
-icom o comando a seguir:$ export KP_INSTANCE_ID=<INSTANCE_ID>.
Parâmetros opcionais
-
-o, --outputConfigure o formato de saída da CLI. Por padrão, todos os comandos são impressos no formato de tabela. Para mudar o formato de saída para JSON, use
--output json.
kp key cancel-delete
Uma chave com uma política dual-auth-delete requer autorização de dois usuários administrativos para excluir a chave.
Este comando (kp key cancel-delete) cancela ou remove uma autorização prévia.
O comando kp key schedule-delete é a "autorização" para excluir a chave.
Siga este processo para excluir uma chave com uma política dual-auth-delete.
-
Crie uma chave e ative a política
dual-auth-delete -
O usuário 1 planeja (autoriza) uma exclusão de chave com o Comando
kp key schedule-delete -
O usuário 2 planeja (autoriza) uma exclusão de chave
-
A chave é excluída após a segunda
schedule-deleteser executada, a qual é suportada na interface com o usuário, na API e na CLI -
Se uma segunda autorização não ocorrer em até 7 dias, a chave retornará ao seu status padrão
Há duas maneiras de ativar a política dual-auth-delete:
- Configure a política para uma única chave usando
kp key policy-update dual-auth-delete - Configure a política para a instância usando
kp instance policy-update dual-auth-delete; todas as chaves criadas após a política da instância ser ativada herdam a configuração da política da instância
ibmcloud kp key cancel-delete KEY_ID_OR_ALIAS
-i, --instance-id INSTANCE_ID
Exemplo
Este é um exemplo de cancelamento de uma exclusão de chave planejada anteriormente.
# 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
Parâmetros necessários
-
KEY_ID_OR_ALIASO UUID ou alias v4 da chave que você deseja excluir. Para recuperar uma lista de suas chaves disponíveis, execute o comando kp keys.
kp key create
Criar uma chave raiz na instância do Key Protect que você especificar ou importar a sua própria chave
As chaves raiz devem ter 16, 24 ou 32 bytes de comprimento; correspondentes a 128, 192 ou 256 bits.
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]
Exemplos
Estes são exemplos de kp key create.
Exemplo 1
Crie uma chave raiz.
# 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
Exemplo 2
Crie uma chave raiz e mostre a saída 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"
}
Exemplo 3
Crie uma chave raiz por meio de um valor codificado em 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
Exemplo 4
Crie uma chave raiz usando um token de importação.
# 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
Exemplo 5
Crie uma chave padrão.
# 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
Exemplo 6
Crie uma chave padrão, que é usada como uma área segura para credenciais.
Qualquer cadeia codificada em base64 pode ser importada como uma chave padrão. Este exemplo mostra como armazenar credenciais, não apenas chaves de criptografia, no Key Protect.
As chaves padrão podem ter até 7.500 bytes de tamanho antes da codificação em base64.
# 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"
}
Exemplo 7
Crie uma chave raiz com um alias e, em seguida, use esse alias para identificar a chave para mostrar os detalhes da chave.
# 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
}
}
Exemplo 8
Adicione uma descrição a uma chave. Por exemplo, uma frase curta usada para descrever o propósito da chave.
ibmcloud kp key create KEY_NAME -i 40f2a13c-780e-4641-bea5-e166e5bb5a9f -D ""description of the key""
Parâmetros necessários
-
KEY_NAMEUm identificador exclusivo e legível para designar à sua chave.
-
-i, --instance-IDO ID da instância da IBM Cloud que identifica a sua instância do Key Protect.
É possível configurar uma variável de ambiente, em vez de especificar
-icom o comando a seguir:$ export KP_INSTANCE_ID=<INSTANCE_ID>.
Parâmetros opcionais
-
-k, --key-materialSe você tiver gerado uma chave, este será o material de chave codificado em base64 que é armazenado e gerenciado no serviço.
As chaves raiz devem ter 16, 24 ou 32 bytes de comprimento; correspondentes a 128, 192 ou 256 bits. A chave deve ser codificada em Base64.
As chaves padrão podem ter até 7.500 bytes de tamanho. A chave deve ser codificada em Base64.
Se você estiver criando uma chave usando um token de importação, então, esta será a chave criptografada do processo
kp import-token key-encrypt.Para gerar uma nova chave, omita o parâmetro
-k, --key-material. -
-n, --encrypted-nonceUsado com tokens de importação. O valor nonce criptografado que verifica a sua solicitação de importação de uma chave para o Key Protect. Esse valor deve ser criptografado usando o material de chave que você importa para o serviço. Consulte
ibmcloud kp import-token --help.Para recuperar um nonce, use
ibmcloud kp import-token show. Em seguida, criptografe o valor executandoibmcloud kp import-token nonce-encrypt. -
-o, --outputConfigure o formato de saída da CLI. Por padrão, todos os comandos são impressos no formato de tabela. Para mudar o formato de saída para JSON, use
--output json. -
-s, --standard-keyConfigure o parâmetro somente se você desejar criar uma chave padrão. Para criar uma chave raiz, omita o parâmetro
--standard-key. -
-v, --ivUsado com tokens de importação. O vetor de inicialização (IV) gerado quando você criptografa um nonce. O valor IV é necessário para decriptografar o valor nonce criptografado fornecido ao fazer uma solicitação de importação de chave para o serviço.
Para gerar um IV, criptografe o nonce executando
ibmcloud kp import-token nonce-encrypt. -
--key-ringUm nome exclusivo, legível para o conjunto de chaves. Necessário se o usuário não tiver permissões no conjunto de chaves padrão.
-
-D, --descriptionPermite que uma descrição seja adicionada à chave. Por exemplo, uma frase curta usada para descrever o propósito da chave.
kp key create-key-with-policy-substituições
Crie uma chave com políticas somente para a chave nomeada que substituirá quaisquer políticas de instância aplicáveis...
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]
Exemplo
Crie uma chave raiz que permita uma política de rotação com um intervalo de 2 meses (cada "mês" é avaliado em 30 dias, resultando em um intervalo de rotação de 60 dias)
% 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
Parâmetros necessários
-
KEY_NAMEUm identificador exclusivo e legível para designar à sua chave.
-
-i, --instance-IDO ID da instância da IBM Cloud que identifica a sua instância do Key Protect.
É possível configurar uma variável de ambiente, em vez de especificar
-icom o comando a seguir:$ export KP_INSTANCE_ID=<INSTANCE_ID>.
Parâmetros opcionais
-
-a, --aliasesNomes de alias alfanuméricos legíveis por humanos, que variam de 2 a 90 caracteres designados à sua chave O alias não pode conter espaços ou caracteres especiais diferentes de sublinhados e traços. Um máximo de 5 aliases é permitido por chave
-
-d, --dual-auth-delete-policy-enabled
Ativa a política de exclusão de auth dual para uma chave
-
-k, --key-materialSe você tiver gerado uma chave, este será o material de chave codificado em base64 que é armazenado e gerenciado no serviço.
As chaves raiz devem ter 16, 24 ou 32 bytes de comprimento; correspondentes a 128, 192 ou 256 bits. A chave deve ser codificada em Base64.
As chaves padrão podem ter até 7.500 bytes de comprimento. A chave deve ser codificada em Base64.
Se você estiver criando uma chave usando um token de importação, então, esta será a chave criptografada do processo
kp import-token key-encrypt.Para gerar uma nova chave, omita o parâmetro
-k, --key-material. -
-n, --encrypted-nonceUsado com tokens de importação. O valor nonce criptografado que verifica a sua solicitação de importação de uma chave para o Key Protect. Esse valor deve ser criptografado usando o material de chave que você importa para o serviço. Consulte
ibmcloud kp import-token --help.Para recuperar um nonce, use
ibmcloud kp import-token show. Em seguida, criptografe o valor executandoibmcloud kp import-token nonce-encrypt. -
-o, --outputConfigure o formato de saída da CLI. Por padrão, todos os comandos são impressos no formato de tabela. Para mudar o formato de saída para JSON, use
--output json. -
-m, --rotation-interval-month
Especifica o intervalo de tempo de rotação (em meses) para uma chave. O valor padrão é -1.
-
-s, --standard-keyConfigure o parâmetro somente se você desejar criar uma chave padrão. Para criar uma chave raiz, omita o parâmetro
--standard-key. -
-v, --ivUsado com tokens de importação. O vetor de inicialização (IV) gerado quando você criptografa um nonce. O valor IV é necessário para decriptografar o valor nonce criptografado fornecido ao fazer uma solicitação de importação de chave para o serviço.
Para gerar um IV, criptografe o nonce executando
ibmcloud kp import-token nonce-encrypt. -
--key-ringUm nome exclusivo, legível para o conjunto de chaves. Necessário se o usuário não tiver permissões no conjunto de chaves padrão.
kp key delete
Exclua uma chave que está armazenada em seu serviço do 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]
Exemplos
Estes são exemplos de kp key delete.
Exemplo 1
Exclua uma chave raiz.
# 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
Exemplo 2
Exclua uma chave raiz e mostre a saída 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"
}
Exemplo 3
Exclua uma chave raiz que esteja registrada com outro recurso em nuvem.
# 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.
Parâmetros necessários
-
KEY_ID_OR_ALIASO UUID ou alias v4 da chave que você deseja excluir. Para recuperar uma lista de suas chaves disponíveis, execute o comando kp keys.
-
-i, --instance-idO ID da instância da IBM Cloud que identifica a sua instância do Key Protect.
É possível configurar uma variável de ambiente, em vez de especificar
-icom o comando a seguir:$ export KP_INSTANCE_ID=<INSTANCE_ID>.
Parâmetros opcionais
-
-f, --forceExclua uma chave com force, que é usado para excluir uma chave que tenha "registros". Os registros são associações entre chaves raiz e outros recursos em nuvem, como depósitos do Cloud Object Storage (COS) ou implementações de bancos de dados de nuvem.
Para obter mais informações, consulte kp registrations
-
-o, --outputConfigure o formato de saída da CLI. Por padrão, todos os comandos são impressos no formato de tabela. Para mudar o formato de saída para JSON, use
--output json. -
--key-ringUm nome exclusivo, legível para o conjunto de chaves. Necessário se o usuário não tiver permissões no conjunto de chaves padrão.
kp key disable
O comando kp key disable desativa uma chave raiz e revoga temporariamente o acesso aos dados associados da chave na nuvem.
Como um administrador, poderá ser necessário desativar uma chave raiz temporariamente se você suspeitar de um possível risco à segurança, comprometimento ou violação de seus dados.
A desativação de uma chave raiz suspende suas operações de criptografia e decriptografia. Depois de confirmar que um risco à segurança não está mais ativo, é possível restaurar o acesso aos seus dados ativando a chave raiz desativada.
Ao desativar uma chave raiz que anteriormente estava ativada, a chave passa do estado Active (valor 1) para Suspended (valor 2).
Para desabilitar uma chave raiz, deve-se atribuir uma função de acesso de serviço Gerente para a instância ou chave. Para saber como as funções do IAM mapeiam para ações de serviços do Key Protect, consulte Funções de acesso de serviços.
Se você estiver usando um Serviço de nuvem integrado que suporte a revogação de acesso a uma chave raiz desativada, o serviço poderá levar até um máximo de 4 horas antes de o acesso aos dados associados da chave raiz ser revogado.
Após a revogação do acesso aos dados associados, um disable event é exibido na interface do usuário do site IBM Cloud Logs. O disable event indica que a chave foi revogada (e agora está desativada) e não pode ser usada para operações de criptografia e decriptografia.
ibmcloud kp key disable KEY_ID_OR_ALIAS
-i, --instance-id INSTANCE_ID
[--key-ring KEY_RING_ID]
Exemplos
Estes são exemplos de kp key disable.
Exemplo 1
Crie uma chave raiz, desative-a, verifique o estado da chave (suspenso), ative a chave raiz e verifique o estado da chave (ativo).
# 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"
}
Exemplo 2
Crie uma chave raiz, desative-a e tente usar a chave raiz para agrupar outra chave.
# 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]'
Exemplo 3
Crie uma chave raiz com um alias, use esse alias para identificar a chave a ser desativada, verifique o estado da chave (suspenso), em seguida, ative a chave raiz e verifique o novo estado da chave (ativo).
# 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"
}
Parâmetros necessários
-
KEY_ID_OR_ALIASO UUID ou alias v4 da chave que você deseja excluir. Para recuperar uma lista de suas chaves disponíveis, execute o comando kp keys.
-
-i, --instance-idO ID da instância da IBM Cloud que identifica a sua instância do Key Protect.
É possível configurar uma variável de ambiente, em vez de especificar
-icom o comando a seguir:$ export KP_INSTANCE_ID=<INSTANCE_ID>.
Parâmetros opcionais
-
--key-ringUm nome exclusivo, legível para o conjunto de chaves. Necessário se o usuário não tiver permissões no conjunto de chaves padrão.
kp key enable
Ao ativar uma chave raiz que anteriormente estava desativada, a chave passa do estado Suspended (valor 2) para Active (valor 1). Esta ação restaura as operações de criptografia e decriptografia da chave.
Se você está usando um Cloud Service integrado que suporta a restauração do acesso a uma chave raiz desativada, o serviço pode levar até um máximo de quatro horas antes de o acesso aos dados associados da chave raiz ser restaurado.
Após a restauração do acesso aos dados associados, um enable event é exibido na interface do usuário do site IBM Cloud Logs. O enable event indica que a chave foi restaurada (e agora está ativada) e pode ser usada para
operações de criptografia e decriptografia, como agrupar, desagrupar e reagrupar.
ibmcloud kp key enable <KEY_ID_OR_ALIAS> -i <INSTANCE_ID> [ --key-ring KEY_RING_ID]
Exemplos
Este é um exemplo de 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"
}
Parâmetros necessários
-
KEY_ID_OR_ALIASO UUID ou alias v4 da chave que você deseja excluir. Para recuperar uma lista de suas chaves disponíveis, execute o comando kp keys.
-
-i, --instance-idO ID da instância da IBM Cloud que identifica a sua instância do Key Protect.
É possível configurar uma variável de ambiente, em vez de especificar
-icom o comando a seguir:$ export KP_INSTANCE_ID=<INSTANCE_ID>.
Parâmetros opcionais
-
--key-ringUm nome exclusivo, legível para o conjunto de chaves. Necessário se o usuário não tiver permissões no conjunto de chaves padrão.
políticas de chave kp
Recupera detalhes sobre uma política de chave, tais como o intervalo de rotação automática da chave.
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]
Exemplo
Este exemplo lista as políticas para uma chave raiz.
As políticas de chave são exclusão de autorização dupla e rotação.
# 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
}
}
]
Parâmetros necessários
-
KEY_ID_OR_ALIASO UUID ou alias v4 da chave que você deseja consultar. Para recuperar uma lista de suas chaves disponíveis, execute o comando kp keys.
-
-i, --instance-idO ID da instância da IBM Cloud que identifica a sua instância do Key Protect.
É possível configurar uma variável de ambiente, em vez de especificar
-icom o comando a seguir:$ export KP_INSTANCE_ID=<INSTANCE_ID>.
Parâmetros opcionais
-
-d, --dual-authMostrar políticas que têm uma política
dual-auth-delete. -
-o, --outputConfigure o formato de saída da CLI. Por padrão, todos os comandos são impressos no formato de tabela. Para mudar o formato de saída para JSON, use
--output json. -
-r, --rotationMostrar políticas que têm uma política
rotation. -
--key-ringUm nome exclusivo, legível para o conjunto de chaves. Necessário se o usuário não tiver permissões no conjunto de chaves padrão.
kp key policy-update dual-auth-delete
É possível usar o Key Protect para excluir com segurança chaves de criptografia usando um processo de autorização dupla. Ao excluir uma chave, você fragmenta o seu conteúdo e os dados associados. Qualquer dado criptografado pela chave torna-se inacessível.
A exclusão de uma chave que tenha uma política de autorização dupla requer uma autorização de dois usuários. Com o API do Key Protect, é possível fornecer a primeira autorização, configurando a exclusão da chave. Em seguida, um usuário diferente fornece uma segunda autorização usando a GUI ou a API para excluir a chave.
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]
Exemplo
Este exemplo ativa a política de exclusão de autorização dupla.
# 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]'
Parâmetros necessários
-
KEY_ID_OR_ALIASO UUID ou alias v4 da chave que você deseja consultar. Para recuperar uma lista de suas chaves disponíveis, execute o comando kp keys.
-
-e, --enableUma vez ativada a política de exclusão de autorização dupla, não é possível desativá-la. Não é possível excluir uma chave sem duas autorizações (duplas). O processo deve ser concluído em até 7 dias, caso contrário, a política de autorização dupla é automaticamente cancelada, o que significa que a chave pode ser excluída por qualquer pessoa que tenha autorização (não são necessárias duas autorizações).
Se você tiver ativado a política de autorização dupla acidentalmente e quiser excluir a chave, será possível
disablea chave (usando o comandokp key disable) e aguardar 7 dias para que a política de autorização dupla expire. Nesse momento, será possível excluir a chave.Não é possível excluir a instância do Key Protect enquanto suas chaves estão ativas. Uma chave com uma política de autorização dupla é uma chave ativa.
Parâmetros opcionais
-
-o, --outputConfigure o formato de saída da CLI. Por padrão, todos os comandos são impressos no formato de tabela. Para mudar o formato de saída para JSON, use
--output json. -
--key-ringUm nome exclusivo, legível para o conjunto de chaves. Necessário se o usuário não tiver permissões no conjunto de chaves padrão.
kp key policy-update rotation
Ao configurar uma política de rotação automática para uma chave raiz, você encurta o tempo de vida da chave em intervalos regulares e limita a quantidade de informações que são protegidas por essa chave. Os usuários também podem ativar ou desativar a política de rotação de chaves em uma chave
É possível criar uma política de rodízio apenas para as chaves raiz geradas no Key Protect. Se você tiver importado a chave raiz inicialmente, um novo material de chave codificado em base64 deverá ser fornecido para girar a chave. Para obter mais informações, consulte Girando chaves raiz on demand.
ibmcloud kp key policy-update rotation KEY_ID|KEY_ALIAS
[--enable | --disable] [-m MONTHLY_INTERVAL] [-o FORMAT]
[--key-ring KEY_RING_ID]
Exemplos
As políticas de rotação podem ser aplicadas no momento da criação da chave ou depois que uma chave tiver sido criada No primeiro exemplo, simplesmente criamos a chave sem uma política de rotação:
# 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
}
}
---------------------------------------------------------------------------------------------------------------------------------------------------
Parâmetros necessários
-
KEY_ID_OR_ALIASO UUID ou alias v4 da chave que você deseja consultar. Para recuperar uma lista de suas chaves disponíveis, execute o comando kp keys.
Parâmetros opcionais
-
-m, --monthly-intervalConfigure o intervalo de rotação de chave em meses. O intervalo de rotação deve ser de 1 a 12 meses.
-
-e, --enableou-d, --disablePor padrão, a política de rotação de chave está ativada Se o usuário quiser desativar ou ativar a política, ele poderá usar -d(--disable) ou -e(--enable), respectivamente.
-
-o, --outputConfigure o formato de saída da CLI. Por padrão, todos os comandos são impressos no formato de tabela. Para mudar o formato de saída para JSON, use
--output json. -
--key-ringUm nome exclusivo, legível para o conjunto de chaves. Necessário se o usuário não tiver permissões no conjunto de chaves padrão.
kp key restore
O Key Protect pode restaurar uma chave raiz excluída anteriormente, o que restaura o acesso aos seus dados associados na nuvem.
Como administrador, você talvez precise restaurar uma chave raiz que foi importada para o Key Protect para acessar os dados anteriormente protegidos pela chave.
Quando restaurada, uma chave passa do estado Destroyed (valor 5) para Active (valor 1), restaurando o acesso aos dados anteriormente criptografados pela chave.
É possível restaurar uma chave excluída dentro de 30 dias de sua exclusão. Esta capacidade está disponível apenas para chaves raiz que foram criadas com um key material.
É possível restaurar apenas as chaves raiz que foram criadas com um key material, usando
kp key create com a opção -k, --key-material Não é possível restaurar uma chave raiz caso a opção --key-material não tenha sido especificada.
Se você desejar restaurar uma chave raiz excluída, deverá salvar o
key material que foi usado para criar a chave raiz Não é possível restaurar uma chave excluída sem fornecer a key material original.
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]
Exemplos
Estes são exemplos de kp key restore.
Exemplo 1
Este exemplo cria uma chave raiz usando um material de chave, exclui a chave, em seguida, restaura-a.
# 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
Exemplo 2
Este fluxo de trabalho cria uma chave raiz usando um token de importação, exclui a chave, em seguida, restaura-a.
Esse é um processo de duas etapas.
-
Crie uma chave raiz usando um token de importação e, em seguida, exclua a chave
-
Crie um token de importação, que é necessário para restaurar a chave, e restaure a chave
A criação de uma chave raiz por meio de um token de importação tem um prazo limite (o opção -e, --expiration ). Ao restaurar uma chave, é necessário um token de importação. Por isso, é necessário passar por um processo de token
de importação para restaurar uma chave.
Etapa 1 - crie uma chave raiz usando um token de importação e, em seguida, exclua a chave
# 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
Etapa 2 - crie um token de importação, que é necessário para restaurar a chave, e restaure a chave
# 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
Parâmetros necessários
-
KEY_ID_OR_ALIASO UUID ou alias “ v4 ” da chave que você deseja restaurar.
-
-i, --instance-IDO ID da instância da IBM Cloud que identifica a sua instância do Key Protect.
É possível configurar uma variável de ambiente, em vez de especificar
-icom o comando a seguir:$ export KP_INSTANCE_ID=<INSTANCE_ID>.
Parâmetros opcionais
-
-k, --key-materialDeprecatedO material de chave de uma chave codificada em base64 previamente importada.Se você tiver criado a chave raiz usando um
import token, o valor da opção-k, --key-materialserá a chave de material criptografada. Veja o exemplo 2, que usa um token de importação para criar a chave raiz e usa um token de importação para restaurar a chave raiz. -
-n, --encrypted-nonceDeprecatedVerifique uma solicitação para importar uma chave fornecendo um nonce criptografado.Para obter mais informações, consulte kp import-token nonce-encrypt.
-
-o, --outputConfigure o formato de saída da CLI. Por padrão, todos os comandos são impressos no formato de tabela. Para mudar o formato de saída para JSON, use
--output json. -
-v, --ivDeprecatedForneça o vetor de inicialização (IV) que é gerado após a criptografia de um nonce.Para obter mais informações, consulte kp import-token nonce-encrypt.
-
--key-ringUm nome exclusivo, legível para o conjunto de chaves. Necessário se o usuário não tiver permissões no conjunto de chaves padrão.
kp key-rings
Liste os conjuntos de chaves associados à instância kp.
Exemplo
O exemplo mostra o uso do plug-in da CLI para listar conjuntos de chaves apropriados para a instância fornecida.
ibmcloud kp key-rings -i <INSTANCE_ID>
Parâmetros necessários
-
-i, --instance-IDO ID da instância da IBM Cloud que identifica a sua instância do Key Protect.
É possível configurar uma variável de ambiente, em vez de especificar
-icom o comando a seguir:$ export KP_INSTANCE_ID=<INSTANCE_ID>.
kp key-ring create
Crie um conjunto de chaves dentro de uma instância kp.
Exemplo
O exemplo mostra o uso do plug-in da CLI para criar um conjunto de chaves na instância fornecida.
ibmcloud kp key-ring create KEY_RING_ID -i <INSTANCE_ID>
Parâmetros necessários
-
KEY_RING_IDA referência alfanumérica com 2 ou mais caracteres e com 100 ou menos para o conjunto de chaves.
-
-i, --instance-IDO ID da instância da IBM Cloud que identifica a sua instância do Key Protect.
É possível configurar uma variável de ambiente, em vez de especificar
-icom o comando a seguir:$ export KP_INSTANCE_ID=<INSTANCE_ID>.
kp key-ring delete
Exclua um conjunto de chaves dentro de uma instância kp.
Exemplo
O exemplo mostra o uso do plug-in da CLI para excluir um conjunto de chaves na instância fornecida. Observe que a força (-f) foi adicionada.
ibmcloud kp key-ring delete KEY_RING_ID -i <INSTANCE_ID> -f
Parâmetros necessários
-
KEY_RING_IDA referência alfanumérica com 2 ou mais caracteres e com 100 ou menos para o conjunto de chaves.
-
-i, --instance-IDO ID da instância da IBM Cloud que identifica a sua instância do Key Protect.
É possível configurar uma variável de ambiente, em vez de especificar
-icom o comando a seguir:$ export KP_INSTANCE_ID=<INSTANCE_ID>.
Parâmetros opcionais
-
-f, --forceForçar exclui um conjunto de chaves que ainda possui chaves no estado Destruído . Não exclui os conjuntos de chaves que possuem chaves em qualquer outro estado Se um conjunto de chaves contiver chaves no estado Destruído e esse sinalizador não for incluído, a exclusão do conjunto de chaves falhará
kp key rotate
Gire uma chave raiz que esteja armazenada no serviço do Key Protect.
Ao girar a sua chave raiz, você substitui a chave por um novo material da chave.
Caso o Key Protect tenha criado a chave (a chave não foi criada com o parâmetro -k), o Key Protect criará uma nova chave. Não é possível especificar kp key rotate com o -k .
Se você criou uma chave e forneceu o material da chave (
kp key create key-name -k $KEY_MATERIAL), então deverá fornecer um novo material da chave ao fazer a rotação da chave (kp key rotate $KEY_ID_OR_ALIAS -k $NEW_KEY_MATERIAL)
Não é possível rotacionar uma chave do tipo “ standard ”, ou seja, uma chave criada usando o
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]
Exemplos
Estes são exemplos de kp key rotate.
Exemplo 1
Gire uma chave raiz.
# 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
Exemplo 2
Gire uma chave de token codificada em Base64 ou importada.
Primeiro, crie uma chave raiz por meio de um valor base64 ou de um token importado.
# 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
Exemplo 3
Este exemplo mostra como...
-
Criar uma chave raiz
-
Crie uma chave de criptografia de dados (DEK). Este é o
plaintext -
Agrupe a DEK com a chave raiz. Isto cria um
ciphertext -
Girar a chave raiz
-
Desagrupar o texto cifrado para revelar o DEK original (texto sem formatação) e um novo texto cifrado (o novo texto cifrado é o texto sem formatação agrupado com a nova chave raiz girada)
-
Desagrupar o novo texto cifrado para revelar o DEK original (texto sem formatação)
# 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": ""
}
Parâmetros necessários
-
KEY_ID_OR_ALIASO UUID ou alias v4 da chave raiz que você deseja rotacionar.
-
-i, --instance-idO ID da instância da IBM Cloud que identifica a sua instância do Key Protect.
É possível configurar uma variável de ambiente, em vez de especificar
-icom o comando a seguir:$ export KP_INSTANCE_ID=<INSTANCE_ID>.
Parâmetros opcionais
-
-k, --key-materialPara girar uma chave que foi gerada inicialmente sem um parâmetro
--key-material, ou seja,kp key create my-key, omita o parâmetro--key-material.Se uma chave tiver sido criada com o parâmetro
--key-material, especifique o novo material de chave codificado em base64 que você usa para girar uma chave raiz existente.Para girar uma chave que foi inicialmente importada para o serviço, forneça uma nova chave de 32 bytes (256 bits).
-
--key-ringUm nome exclusivo, legível para o conjunto de chaves. Necessário se o usuário não tiver permissões no conjunto de chaves padrão.
kp key schedule-delete
Uma chave com uma política dual-auth-delete requer autorização de dois usuários administrativos para excluir a chave.
Siga este processo para excluir uma chave com uma política dual-auth-delete.
-
Crie uma chave e ative a política
dual-auth-delete -
O usuário 1 planeja (autoriza) uma exclusão de chave com o Comando
kp key schedule-delete -
O usuário 2 planeja (autoriza) uma exclusão de chave
-
A chave é excluída após a segunda
schedule-deleteser executada, a qual é suportada na interface com o usuário, na API e na CLI -
Se uma segunda autorização não ocorrer em até 7 dias, a chave retornará ao seu status padrão
Há duas maneiras de ativar a política dual-auth-delete:
- Configure a política para uma única chave usando
kp key policy-update dual-auth-delete - Configure a política para a instância usando
kp instance policy-update dual-auth-delete; todas as chaves criadas após a política da instância ser ativada herdam a configuração da política da instância
O comando kp key cancel-delete cancela ou remove uma autorização prévia.
ibmcloud kp key schedule-delete KEY_ID_OR_ALIAS
-i, --instance-id INSTANCE_ID
[--key-ring KEY_RING_ID]
Exemplo
Este é um exemplo de como agendar a exclusão de uma chave.
# 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
}
}
]
Parâmetros necessários
-
KEY_ID_OR_ALIASO UUID ou alias v4 da chave que você deseja excluir. Para recuperar uma lista de suas chaves disponíveis, execute o comando kp keys.
Parâmetros opcionais
-
--key-ringUm nome exclusivo, legível para o conjunto de chaves. Necessário se o usuário não tiver permissões no conjunto de chaves padrão.
kp key show
Recuperar detalhes sobre uma chave, como os metadados da chave e o material da chave.
Se a chave tiver sido designada como uma chave raiz, o sistema não poderá retornar o material da chave para essa chave.
ibmcloud kp key show KEY_ID_OR_ALIAS
-i, --instance-id INSTANCE_ID
[--key-ring KEY_RING_ID]
[-o, --output OUTPUT]
Exemplos
Estes são exemplos de kp key show.
Exemplo 1
Crie uma chave raiz e mostre os detalhes.
# 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
Exemplo 2
Esta é uma explicação das chaves e valores JSON do kp key show comando . Neste exemplo, a chave foi girada para assegurar que todos os pares chave/valor JSON sejam mostrados.
$ 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"
}
| Chave | Descrição |
|---|---|
| ID | Esse é o KEY_ID; ele é exclusivo e é usado sempre que a CLI especifica um KEY_ID |
| nome | O nome fornecido quando a chave foi criada |
| tipo | Usado pela API para configurar o tipo de conteúdo em uma chamada REST |
| algorithmType | Os tipos de algoritmo são padrão de criptografia avançado (AES) ou encadeamento de blocos cifrados (CBC) |
| createdBy | O ID do usuário que criou a chave |
| creationDate | A data e hora na qual a chave foi criada |
| lastUpdateDate | A data e hora na qual a chave foi atualizada pela última vez |
| lastRotateDate | A data e hora na qual a chave foi girada pela última vez; esta entrada existirá somente se a chave tiver sido girada |
| keyVersion/id | Isso identifica a versão mais recente da chave raiz |
| keyVersion / creationDate | A data e hora na qual o material de chave foi atualizado pela última vez |
| extractable | Um booleano que determina se o material de chave pode deixar o serviço. Se configurado como false, o Key Protect designará a chave como uma chave raiz não extraível usada para ações de agrupamento e desagrupamento. Se configurado como true, o Key Protect designará a chave como uma chave padrão a ser armazenada em seus apps e serviços. Uma vez configurado como false, não será possível mudá-lo para true. |
| estado | 1 - a chave está ativa; 2 - a chave está suspensa; consulte estados da chave |
| CRN | O nome do recurso em nuvem (CRN) |
Parâmetros necessários
-
KEY_ID_OR_ALIASO UUID ou alias v4 da chave raiz que você deseja mostrar.
-
-i, --instance-idO ID da instância da IBM Cloud que identifica a sua instância do Key Protect.
É possível configurar uma variável de ambiente, em vez de especificar
-icom o comando a seguir:$ export KP_INSTANCE_ID=<INSTANCE_ID>.
Parâmetros opcionais
-
-o, --outputConfigure o formato de saída da CLI. Por padrão, todos os comandos são impressos no formato de tabela. Para mudar o formato de saída para JSON, use
--output json. -
--key-ringUm nome exclusivo, legível para o conjunto de chaves. Necessário se o usuário não tiver permissões no conjunto de chaves padrão.
kp key sync
Este subcomando sincroniza os recursos associados de uma chave.
ibmcloud kp key sync KEY_ID
-i, --instance-id INSTANCE_ID
[--key-ring KEY_RING_ID]
[-o, --output FORMAT]
Exemplos
Este é um exemplo de kp key sync.
Exemplo
Sincronizar uma chave e mostrar os resultados.
# 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
Parâmetros necessários
-
KEY_IDO ID da chave a ser sincronizada.
-
-i, --instance-idO ID da instância da IBM Cloud que identifica a sua instância do Key Protect.
É possível configurar uma variável de ambiente, em vez de especificar
-icom o comando a seguir:$ export KP_INSTANCE_ID=<INSTANCE_ID>.
Parâmetros opcionais
-
-o, --outputConfigure o formato de saída da CLI. Por padrão, todos os comandos são impressos no formato de tabela. Para mudar o formato de saída para JSON, use
--output json. -
--key-ringUm nome exclusivo, legível para o conjunto de chaves. Necessário se o usuário não tiver permissões no conjunto de chaves padrão.
kp key update
Atualizar uma chave com um conjunto de chaves existente ou um novo conjunto de chaves na instância do 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]
Parâmetros necessários
-
KEY_ID_OR_ALIASO UUID ou alias v4 da chave raiz que você deseja mostrar.
-
-i, --instance-idO ID da instância da IBM Cloud que identifica a sua instância do Key Protect.
É possível configurar uma variável de ambiente, em vez de especificar
-icom o comando a seguir:$ export KP_INSTANCE_ID=<INSTANCE_ID>. -
-r, --new-key-ringUm nome exclusivo, legível para o conjunto de chaves. Necessário se o usuário não tiver permissões no conjunto de chaves padrão.
Parâmetros opcionais
-
-o, --outputConfigure o formato de saída da CLI. Por padrão, todos os comandos são impressos no formato de tabela. Para mudar o formato de saída para JSON, use
--output json.
Exemplos
Observe que o conjunto de chaves já deve estar criado, seja como parte da criação de uma chave ou por si mesmo.
Este é um exemplo de kp key update.
ic kp key update 5f2cc155-fe16-492c-845c-4d1f0688c7ba -r TestRing
A execução do comando tem um resultado típico:
Updating key...
OK
Key ID Key Name Key Ring ID
5f2cc155-fe16-492c-845c-4d1f0688c7ba TestKey TestRing
kp key unwrap
Desagrupar uma chave de criptografia de dados utilizando uma chave raiz que está armazenada na instância do 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]
Exemplos
Estes são exemplos de kp key unwrap.
Exemplo 1
Desagrupe um texto cifrado para revelar a chave de criptografia de dados (DEK) de texto sem formatação.
# 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=
Exemplo 2
Desagrupe um texto cifrado e forneça informações de AAD.
Um caso de uso para fornecimento de dados de autenticação adicionais (AAD) é "proteger por senha" o texto cifrado para torná-lo mais difícil de desagrupar.
O texto cifrado e o AAD é necessário para desagrupar o texto cifrado e revelar a chave de criptografia de dados (DEK) de texto sem formatação.
# 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
Parâmetros necessários
-
KEY_ID_OR_ALIASO UUID ou alias “ v4 ” da chave raiz que você utilizou na solicitação inicial de wrap.
-
CIPHERTEXT_FROM_WRAPA chave de dados criptografados que foi retornada durante a operação de agrupamento inicial.
-
-i, --instance-IDO ID da instância da IBM Cloud que identifica a sua instância do Key Protect.
É possível configurar uma variável de ambiente, em vez de especificar
-icom o comando a seguir:$ export KP_INSTANCE_ID=<INSTANCE_ID>.
Parâmetros opcionais
-
-a, --aadOs dados de autenticação adicionais (AAD) que foram usados para proteção adicional de uma chave. É possível fornecer até 255 sequências, cada uma delas delimitada por uma vírgula. Se você forneceu o AAD ao agrupar, deverá especificar o mesmo AAD, na mesma ordem, ao desagrupar.
O serviço Key Protect não salva dados de autenticação adicionais. Se você fornecer um AAD, salve os dados em um local seguro para assegurar que você possa acessar e fornecer o mesmo AAD durante as solicitações de desagrupamento subsequentes.
-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-ringUm nome exclusivo, legível para o conjunto de chaves. Necessário se o usuário não tiver permissões no conjunto de chaves padrão.
Versões de chave kp
Ao girar uma chave raiz, o Key Protect cria uma nova versão da chave. Listar todas as versões de chave que estão disponíveis para um KeyID ou Alias de chave em sua instância Key Protect.
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]
Exemplos
Estes são exemplos de kp key versions.
Exemplo 1
Um caso de uso é auditar o histórico de rotação de uma chave raiz como um administrador de segurança, visualizando seu histórico de versão de chaves
# 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
Exemplo 2
O mesmo caso de uso para auditar uma chave raiz como um administrador de segurança e visualizar o histórico, com sua contagem total na saída 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"
}
]
}
Exemplo 3
Outro caso de uso lista as primeiras 12 versões de chave para um conjunto de chaves em uma rotação mensal para o ano passado
# 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]
]
}
Exemplo 4
Outro caso de uso lista as segundas 12 versões de chave para um conjunto de chaves em uma rotação mensal para os últimos dois anos
Versões da chave do ibmcloud kp $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]
]
}
Exemplo 5
Uma sinalização opcional para retornar o número de versões de uma chave que não está atualmente ativa. Anteriormente, o comando teria falhado, como no exemplo a seguir:
# 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
Com a versão da CLI 0.8.0 e superior, o comando é bem-sucedido ao incluir a sinalização -a, como no exemplo a seguir:
# 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
Observe que se a sinalização -a não for fornecida, o KEY_ACTION_INVALID_STATE_ERR ainda será retornado para uma chave em um estado diferente de ativo.
Parâmetros necessários
-
KEY_ID_OR_ALIASO UUID ou alias “ v4 ” da chave raiz que você utilizou na solicitação inicial de wrap.
-
-i, --instance-IDO ID da instância da IBM Cloud que identifica a sua instância do Key Protect.
É possível configurar uma variável de ambiente, em vez de especificar
-icom o comando a seguir:$ export KP_INSTANCE_ID=<INSTANCE_ID>.
Parâmetros opcionais
-
--key-ringUm nome exclusivo, legível para o conjunto de chaves. Necessário se o usuário não tiver permissões no conjunto de chaves padrão.
-
-n --number-of-key-versionsRestringe o número de versões de chave a ser recuperado pelo valor de número inteiro fornecido (padrão: 200).
-
-o, --outputConfigure o formato de saída da CLI. Por padrão, todos os comandos são impressos no formato de tabela. Para mudar o formato de saída para JSON, use
--output json. -
-s --starting-offsetRecupera as versões de chave do deslocamento, conforme especificado pelo valor de número inteiro fornecido.
-
-t --total-countUsado para obter o número total de versões de chave para uma chave pelo valor de número inteiro fornecido.
-
-a --all-key-statesUma sinalização opcional para retornar o número de versões para todos os estados de chave, incluindo chaves que não estão ativas.
agrupar a chave kp
Agrupar uma chave de criptografia de dados (DEK) utilizando uma chave raiz que está armazenada na instância do Key Protect. Uma DEK é tipicamente usada para criptografar "outras" partes de informações.
Ao agrupar uma DEK com uma chave raiz, O Key Protect combina a força de múltiplos algoritmos para proteger a privacidade e a integridade de seus dados criptografados.
Não é possível encapsular uma chave do tipo “ standard ”, ou seja, uma chave criada usando o -s parâmetro (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]
Melhores práticas
Agrupar uma chave de criptografia de dados (DEK) cria um ciphertext. O texto cifrado são informações criptografadas que, quando desagrupadas, revelam a DEK original.
O serviço Key Protect não armazena a sua DEK. Salve ou persista para o armazenamento o texto cifrado para se certificar de que você pode recuperar a DEK com o comando kp key unwrap.
É recomendável que você nunca salve, ou persista para o armazenamento, a DEK de texto sem formatação. No aplicativo, carregue o texto cifrado a partir do armazenamento, chame Key Protect para obter a DEK em texto simples e utilizá-la para criptografar, ou agrupar, "outros" fragmentos de informações.
Não salve a DEK no armazenamento persistente. Expor a DEK pode permitir que outros decriptografem os seus dados.
Um novo texto cifrado é criado cada vez que a chave raiz é agrupada.
Exemplos
Estes são exemplos de kp key wrap.
Exemplo 1
O Key Protect cria uma nova chave de criptografia de dados (DEK) codificada em base64 e agrupa-a com a chave raiz.
# 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=
Exemplo 2
Gere uma chave de criptografia de dados (DEK) codificada em base64 e agrupe-a com a chave raiz.
# 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=
Exemplo 3
Agrupe uma chave raiz e forneça informações de AAD.
Um caso de uso para o fornecimento de dados de autenticação adicionais (AAD) consiste em "proteger a senha" e incluir uma "frase de verificação" no texto cifrado, o que torna o desagrupamento mais difícil.
O texto cifrado e o AAD é necessário para desagrupar o texto cifrado e revelar a DEK de texto sem formatação.
# 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
Parâmetros necessários
-
KEY_ID_OR_ALIASO UUID ou alias v4 da chave raiz que você deseja usar para o encapsulamento. Não é possível agrupar uma chave padrão.
-
-i, --instance-idO ID da instância da IBM Cloud que identifica a sua instância do Key Protect.
É possível configurar uma variável de ambiente, em vez de especificar
-icom o comando a seguir:$ export KP_INSTANCE_ID=<INSTANCE_ID>.
Parâmetros opcionais
-
-a, --aadOs dados de autenticação adicionais (AAD) que são usados para proteção adicional de uma chave. O AAD é uma matriz de sequências que verifica a integridade dos conteúdos chaves. Cada sequência pode ter até 255 caracteres.
Se você fornecer o AAD durante uma solicitação de agrupamento, deverá especificar o mesmo AAD, na mesma ordem, durante a solicitação de desagrupamento subsequente.
-
-o, --outputConfigure o formato de saída da CLI. Por padrão, todos os comandos são impressos no formato de tabela. Para mudar o formato de saída para JSON, use
--output json. -
-p, --plaintextO
plaintextespecifica uma chave de criptografia de dados (DEK) do tipobase64-encoded, que é encapsulada pela chave raiz (identificada pelos parâmetrosKEY_IDouALIAS).A chave de criptografia de dados (DEK) codificada em Base64 que você deseja gerenciar e proteger. Para importar uma chave existente, forneça uma chave de 32 bytes (256 bits).
Para gerar e agrupar uma nova DEK, omita o parâmetro
--plaintext. -
--key-ringUm nome exclusivo, legível para o conjunto de chaves. Necessário se o usuário não tiver permissões no conjunto de chaves padrão.
kp keys
Listar as chaves que estão disponíveis em sua instância do Key Protect.
As chaves são listadas na ordem de key id; consulte o exemplo 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]
Exemplos
Estes são exemplos de kp keys.
Exemplo 1
Listar chaves. Observe que isso listará somente as primeiras 200 chaves em sua instância, por padrão Para mostrar um número maior ou menor de chaves, forneça um valor para o parâmetro --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
Exemplo 2
Listar chaves e exibir o nome do recurso na nuvem (CRN) usando o --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
Exemplo 3
Listar chaves no formato JSON.
O parâmetro --output json implica o uso parâmetro --crn (cloud resource name) .
# 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"
}
]
Exemplo 4
Listar as chaves e percorrê-las, exibindo os detalhes.
# 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
Exemplo 5
Crie 20 chaves e mostre-as em grupos de 5 usando as opções kp keys -n -s.
# 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)
Exemplo 6
Lista as chaves com base nos estados de chave (Active, Suspended) na instância Key Protect.
# 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
Exemplo 7
Lista as chaves com base no tipo de chave (raiz) na instância do 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
Exemplo 8
Lista as chaves na instância do Key Protect com o nome da chave ou alias que corresponde exatamente aos caracteres na sequência "TEST" sem aspas.
# 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
Exemplo 9
Lista as chaves na instância do Key Protect e classifica as chaves com base em seu ID e na data em que a chave foi criada iniciando com a mais recente (o hífen, '-', indica a classificação por ordem decrescente.
# 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
Parâmetros necessários
-
-i, --instance-idO ID da instância da IBM Cloud que identifica a sua instância do Key Protect.
É possível configurar uma variável de ambiente, em vez de especificar
-icom o comando a seguir:$ export KP_INSTANCE_ID=<INSTANCE_ID>.
Parâmetros opcionais
-
-b, --sort-byClassifique as chaves com base nos parâmetros A propriedade padrão para classificar resultados é "id." '-' antes que o parâmetro indique a classificação por ordem decrescente Os parâmetros de classificação suportados neste momento são
- ID
- estado
- extractable
- importados
- creationDate
- lastUpdateDate
- lastRotateDate
- deletionDate
- expirationDate
-
-c, --crnInclua o nome do recurso em nuvem (CRN) na saída.
-
-f, --key-filterFiltre as chaves com base nos parâmetros Os parâmetros de filtragem de chave suportados são
- creationDate
- deletionDate
- expirationDate
- extractable
- lastUpdateDate
- lastRotateDate
- estado
Os operadores de suporte para datas são:
- GT (maior que)
- gte (maior ou igual a)
- LT (menor que)
- lte (menor ou igual a)
Os resultados serão uma correspondência exata caso algum desses operadores esteja ausente.
-
--key-statesO estado das chaves a serem recuperadas. Lista de sequências contendo estados válidos-
Active,Suspended,Deactivated,Destroyed. (padrão:active,suspended,deactivated).. -
-l, --key-searchListar chaves com base na sequência de procura com qualificadores pré-anexados (por exemplo,
exact,not,alias,name). Para obter mais detalhes, consulte a documentação da API -
-n, --number-of-keysRestringe o número de chaves a serem recuperadas. O padrão é 200 e o máximo é 5000.
-
-o, --outputConfigure o formato de saída da CLI. Por padrão, todos os comandos são impressos no formato de tabela. Para mudar o formato de saída para JSON, use
--output json.Configurar a saída para JSON (
--output json) inclui o nome do recurso em nuvem (CRN) na saída. -
-r, --key-ringUm nome exclusivo, legível para o conjunto de chaves. Necessário se o usuário não tiver permissões no conjunto de chaves padrão.
-
-s, --starting-offsetRecupera chaves iniciando no deslocamento especificado. O deslocamento é baseado em zero, o que significa que o deslocamento 0 (zero) é a primeira chave.
-
-t, --key-typeO tipo de chaves a serem recuperadas. Se estiver definido como “
standard-key”, serão recuperadas as chaves padrão. Se configurado como “root-key”, as chaves raiz serão recuperadas.
conjunto de regiões kp
Destine um terminal regional do Key Protect diferente.
ibmcloud kp region-set REGION
-i, --instance-id INSTANCE_ID
[-u, --unset]
Exemplos
Estes são exemplos de kp region-set.
Exemplo 1
Se o parâmetro REGION não for especificado, será solicitado que você selecione uma região.
# 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
Exemplo 2
Configure a região explicitamente.
# set the region endpoint to "us-south"
$ ibmcloud kp region-set us-south
OK
A REGION deve ser um terminal regional válido.
# this should fail (not a valid regional endpoint)
$ ibmcloud kp region-set not-a-region
FAILED
Exemplo 3
Desconfigure (remova) o terminal regional.
# remove the regional endpoint
$ ibmcloud kp region-set -u
OK
Parâmetros necessários
-
-i, --instance-idO ID da instância da IBM Cloud que identifica a sua instância do Key Protect.
É possível configurar uma variável de ambiente, em vez de especificar
-icom o comando a seguir:$ export KP_INSTANCE_ID=<INSTANCE_ID>.
Parâmetros opcionais
-
REGIONEspecificar um terminal regional. Esse parâmetro é opcional e, se não especificado, será solicitado que você selecione um terminal regional em uma lista.
-
-u, --unsetDesconfigure (remova) o terminal regional.
kp registrations
Os registros são associações entre chaves raiz e outros recursos em nuvem, como depósitos do Cloud Object Storage (COS) ou implementações de bancos de dados de nuvem.
Por exemplo, no Key Protect, você cria uma chave raiz, que é usada pelo COS para proteger os dados em repouso.
O relacionamento entre outros recursos de nuvem e o Key Protect é chamado de registration.
Não exclua uma chave raiz se houver recursos, como depósitos e objetos do COS, que dependam dela. A exclusão da chave raiz significa que não é possível recuperar esses recursos. Isso é conhecido como "fragmentação criptográfica" e não há recuperação dessa ação.
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]
Exemplos
Estes são exemplos de kp registrations.
Exemplos de registro mostram inúmeros nomes de recurso em nuvem (CRNs). Os CRNs seguem este formato:
crn:version:cname:ctype:service-name:location:scope:service-instance:resource-type:resource
Consulte Nomes de Recursos na Nuvem para obter uma explicação detalhada sobre os campos do CRN.
Exemplo 1
Liste todos os registros, que podem incluir recursos em nuvem como bancos de dados, armazenamento, cálculo, contêineres ou sistema de mensagens.
Este exemplo mostra o registro entre o Cloud Object Storage (COS) e o 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"
}
}
]
Exemplo 2
Este exemplo mostra o ciclo de vida completo de dois recursos de nuvem (Cloud ObjectStorage e Key Protect - desde a criação de instâncias do Key Protect e da criação de uma política entre elas, até a exclusão das instâncias.
Um resumo das etapas é:
| Salto | em que | Descrição |
|---|---|---|
| 1 | CLI | Crie instâncias do Cloud Object Storage (COS) e do Key Protect (KP) |
| 2 | CLI | Crie uma política para o COS para acessar chaves de criptografia do KP |
| 3 | CLI | Crie uma chave raiz do KP que o COS use para criptografar dados |
| 4 | IU do console | Crie um depósito do COS e especifique a criptografia do KP; isso é feito na interface com o usuário (IU) do console, pois não há suporte de API ou de CLI neste momento |
| 5 | CLI | Visualize o registro do KP |
| 6 | CLI | Fazer upload e download de um objeto para verificar se o COS e o KP funcionam juntos |
| 7 | CLI | Exclua o depósito do COS e a chave raiz do KP |
| 8 | CLI | Excluir a política de autorização entre o COS e o KP |
| 9 | CLI | Excluir as instâncias do COS e do KP |
Estes comandos mostram o COS e os planos de serviços do Key Protect . O comando ibmcloud resource service-instance-create requer um service plan name e um location, que está no catálogo.
# show the catalog offerings for cloud object storage (COS) and Key Protect
$ ibmcloud catalog service cloud-object-storage
$ ibmcloud catalog service kms
O exemplo abrange várias etapas e deve ser realizado em consulta com o resumo fornecido.
# 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.
Exemplo 3
Este exemplo mostra o que acontece quando uma das situações a seguir ocorre entre o COS e o Key Protect (KP) - o COS não consegue acessar a chave raiz do Key Protect.
- Excluir a chave raiz do KP
- Remover a política de autorização do CMS/KP
Este exemplo não mostra a saída de comando, exceto quando relevante.
# 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.
Parâmetros necessários
-
KEY_ID_OR_ALIASO UUID ou alias v4 da chave que você deseja consultar.
-
-i, --instance-idO ID da instância da IBM Cloud que identifica a sua instância do Key Protect.
É possível configurar uma variável de ambiente, em vez de especificar
-icom o comando a seguir:$ export KP_INSTANCE_ID=<INSTANCE_ID>.
Parâmetros opcionais
-
-c, --crn-queryEspecifique a consulta de CRN cujos registros precisam ser listados
-
-k, --key-idEspecifique o ID da chave cujos registros precisam ser listados.
-
-o, --outputConfigure o formato de saída da CLI. Por padrão, todos os comandos são impressos no formato de tabela. Para mudar o formato de saída para JSON, use
--output json.Configurar a saída para JSON (
--output json) inclui o nome do recurso em nuvem (CRN) na saída. -
-r, --key-ringUm nome exclusivo, legível para o conjunto de chaves. Necessário mostrar registros sobre o conjunto de chaves fornecido.
comando ibmcloud kp kmip
Os comandos KMIP permitem o acesso da API a adaptadores e objetos KMIP
| Subcomando | Status v0.10 | Descrição |
|---|---|---|
| adaptador-criar | Criar um Adaptador KMIP | |
| adaptador | Recuperar um Adaptador KMIP | |
| adaptadores | Listar adaptadores KMIP em uma instância | |
| adaptador-excluir | Excluir um Adaptador KMIP | |
| criação de certificados | Criar um certificado de cliente KMIP associado a um adaptador | |
| cert | Recuperar um certificado de cliente KMIP | |
| certificados | Listar Certificado de Cliente KMIP associado a um Adaptador KMIP | |
| cert-excluir | Excluir um certificado de cliente KMIP | |
| objeto | Recuperar um Objeto KMIP | |
| Objetos | Listar Objetos KMIP em um Adaptador KMIP | |
| objeto-excluir | Excluir um Objeto KMIP |
kp kmip adapter-criar
Use kmip adapter-create para criar um Adaptador KMIP em uma instância do Key Protect. Adaptadores são usados para agrupar e gerenciar objetos KMIP. Os adaptadores KMIP sob a mesma instância do Key Protect devem ter um nome exclusivo,
pois os adaptadores podem ser recuperados pelo nome ou pelo ID. Para todos os comandos da CLI relacionados ao KMIP, qualquer argumento ou sinalizador que usa um ID do Adaptador também pode usar um nome do Adaptador...
Dependendo do perfil, pode ser necessário fornecer informações diferentes para criar o adaptador Atualmente, apenas um perfil do adaptador KMIP é suportado: native_1.0.
O perfil native_1.0 precisa apenas do ID de uma chave raiz a ser fornecido na sinalização -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]
Exemplo
Estes são exemplos de kp kmip adapter-create.
Exemplo 1
Este exemplo cria o adaptador KMIP com o perfil native_1.0
$ 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
adaptador kp kmip
Recupere detalhes sobre um adaptador KMIP, incluindo a data de criação e atualização. É possível usar o ID ou o nome do adaptador.
$ ibmcloud kp kmip adapter ADAPTER_NAME_OR_ID
-i, --instance-id INSTANCE_ID
[-o, --output OUTPUT]
Exemplo
Estes são exemplos de kp kmip adapter.
Exemplo 1
Observe que há alguns atributos para o adaptador visíveis apenas no formato de saída 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 adaptadores
Liste os adaptadores KMIP que estão disponíveis em sua instância do Key Protect
$ 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]
Exemplo
Estes são exemplos de kp kmip adapters. Use a sinalização -k para mostrar apenas adaptadores que usam um ID de CRK específico.
Exemplo 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 adapter-excluir
Exclui um adaptador KMIP.. Isso excluirá quaisquer objetos e certificados associados ao adaptador..
$ ibmcloud kp kmip adapter-delete ADAPTER_NAME_OR_ID
-i, --instance-id INSTANCE_ID
[-f, --force]
[-y, --skip-confirm]
Exemplo
Estes são exemplos de kp kmip adapter-delete.
Exemplo 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-criar
Use kp kmip cert-create para criar um certificado de cliente KMIP para associar a um adaptador KMIP específico. O certificado fornecido no sinalizador -c deve estar no formato x509 PEM. O arquivo de certificado pode
ser transferido por upload usando o prefixo @ para especificar um caminho de arquivo ou fornecendo o conteúdo do arquivo de certificado diretamente para a sinalização.
Os certificados de cliente KMIP são usados para conectar e autenticar o servidor KMIP por meio de TLS mútuo ( mTLS ). Um certificado deve ser registrado antes que qualquer operação de protocolo KMIP possa ser executada com um adaptador KMIP Pode demorar até 5 minutos para que o certificado seja utilizável em operações KMIP..
Os certificados devem ter um nome exclusivo no mesmo adaptador KMIP e o conteúdo do certificado deve ser exclusivo, mesmo entre vários adaptadores..
Consulte também: Especificações de Protocolo 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]
Exemplo
Estes são exemplos de kp kmip cert-create.
Exemplo 1
Este exemplo mostra duas maneiras de fazer upload do mesmo arquivo de certificado..
$ 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
Certificado kp kmip
Recupera um Certificado de Cliente KMIP específico Um certificado pode ser recuperado pelo ID ou pelo nome
$ ibmcloud kp kmip cert CERTIFICATE_ID
-a, --adapter ADAPTER_NAME_OR_ID
-i, --instance-id INSTANCE_ID
[-o, --output OUTPUT]
Exemplos
Estes são exemplos de kp kmip cert.
Exemplo 1
Obtendo um certificado por nome:
$ 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
Exemplo 2
Obtendo um certificado por UUID no formato JSON O conteúdo em formato PEM do certificado será retornado no corpo 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"
}
certificados kp kmip
Liste todos os Certificados de Cliente KMIP associados a um adaptador KMIP específico
$ 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]
Exemplos
Estes são exemplos de kp kmip certs.
Exemplo 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-excluir
Excluir um certificado de cliente KMIP.
$ ibmcloud kp kmip cert-delete CERTIFICATE_ID
-a, --adapter ADAPTER_NAME_OR_ID
-i, --instance-id INSTANCE_ID
Exemplos
Estes são exemplos de kp kmip cert-delete
Exemplo 1
$ ibmcloud kp kmip cert-delete -a myadapter mycert
Targeting endpoint: not shown
Deleting KMIP Client Certificate...
OK
objeto kp kmip
Objetos KMIP são criados por meio de operações executadas por meio de um cliente KMIP usando o protocolo KMIP. Eles não podem ser criados por meio da API, mas podem ser lidos e excluídos Os objetos pertencem a um único adaptador.
Os objetos não possuem um nome e devem ser recuperados por ID.
$ ibmcloud kp kmip object OBJECT_ID
-a, --adapter ADAPTER_NAME_OR_ID
-i, --instance-id INSTANCE_ID
[-o, --output OUTPUT]
Exemplos
Estes são exemplos de kp kmip object
Exemplo 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
Exemplo 2
Obter um Objeto KMIP como um JSON mostrará alguns atributos extras não visíveis na visualização de tabela normal.
$ 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 objetos
Listar objetos KMIP e visualizar informações sobre seu tipo de objeto e estado do objeto entre outros metadados. Use a sinalização -f para filtrar objetos somente em um estado específico. Por padrão, o filtro de estado é configurado
como 1,2,3,4
Os números correspondem aos estados do objeto da seguinte forma:
- Pré-ativo = 1
- Active = 2
- Desativado = 3
- Comprometido = 4
- Destruído = 5
- Comprometido destruído = 6
Consulte Enumeração de Estado 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]
Exemplos
Estes são exemplos de kp kmip objects.
Exemplo 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
Exemplo 2
Usando a sinalização -f para filtrar objetos de um estado específico. Use vírgulas para especificar vários estados
$ 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 object-excluir
Excluir um Objeto KMIP. Apenas objetos cujo estado não é Ativo ou não Destruído podem ser excluídos com êxito
$ ibmcloud kp kmip object-delete OBJECT_ID
-a, --adapter ADAPTER_NAME_OR_ID
-i, --instance-id INSTANCE_ID
[-f, --force]
[-y, --skip-confirm]
Exemplos
Estes são exemplos de kp kmip object-delete
Exemplo 1
$ ibmcloud kp kmip object-delete 9b2f5af5-3534-4f02-8836-f89af37c4351 -a testadapter
Targeting endpoint: not shown
Deleting KMIP Object...
OK
Unidade de criptomoeda kp
O comando kp crypto-unit permite que você gerencie suas unidades de criptografia. Observe que esse comando não faz nada por si só. Você deve usar um dos subcomandos junto com ele.
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.
Se tiver problemas com o comando kp crypto-unit, consulte a seção Solução de problemas.
zeroize
A zeragem de suas unidades de criptografia é altamente desaconselhável depois que você tiver criado chaves ou realizado operações de chave. Se a zeragem for necessária após esse ponto, todas as chaves deverão ser excluídas e purgadas. Observe que há um período de espera de quatro horas antes que uma chave excluída se torne elegível para ser eliminada.
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
reivindicação de unidade de criptografia ibmcloud 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
O comando kp crypto-units permite que você liste suas unidades de criptografia.
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.
Próximas etapas
Procure por operações relacionadas na documentação da API.