Ativando a segunda camada de autenticação para conexões EP11-Somente plano padrão
Para garantir o controle exclusivo sobre a execução de operações criptográficas, é possível usar a CLI do gerenciador de certificados Hyper Protect Crypto Services para ativar a segunda camada de autenticação para conexões EP11 (GREP11 ou API PKCS n° 11). Ao ativar essa função, você inclui uma camada extra de controle de acesso em cima do token de gerenciamento de acesso e de identidade (IAM) para os aplicativos EP11. Uma conexão TLS mútua é estabelecida para garantir que apenas os aplicativos EP11 com um certificado de cliente válido podem executar operações do EP11.
A segunda camada de autenticação para conexões EP11 é atualmente suportada apenas pelo Plano padrão Hyper Protect Crypto Services.
Melhores práticas de segurança e disponibilidade para ativar a autenticação TLS mútua
Com o TLS mútuo como uma segunda camada de autenticação para acessar o EP11, é necessário estar ciente das seguintes considerações de segurança e de disponibilidade:
- Se for necessário evitar que determinadas pessoas acessem o EP11, separe os administradores de certificados dos usuários de serviço. Controle o acesso designando a função Certificate Manager apenas para as pessoas que gerenciam os certificados de cliente e designando a outros usuários de serviço as funções correspondentes para uso operacional. Para gerenciar o acesso do usuário, é necessário ter sido designado à função Administrador com acesso de gerenciamento de conta.
- As APIs do EP11 não são acessíveis se você usa certificados de cliente inválidos ou usa chaves privadas indisponíveis para assinar certificados de cliente. Para assegurar a disponibilidade, designe mais de uma pessoa à função Certificate Manager como um backup. Os administradores de certificados precisam manter, de forma segura, suas chaves privadas exclusivas de administrador. Os administradores de certificado também precisam manter um backup de todos os certificados de cliente fora da instância do Hyper Protect Crypto Services, por exemplo, usando o IBM Cloud Secrets Manager. Sugere-se também monitorar a expiração dos certificados.
Antes de Iniciar
Antes de ser possível ativar a segunda camada de autenticação para conexões da API do GREP11 ou PKCS n° 11, certifique-se de concluir os pré-requisitos a seguir:
-
Você está designado à função Certificate Manager IAM para executar as ações correspondentes. Para obter mais informações sobre designar funções do IAM, consulte Gerenciando o acesso do usuário e Gerenciando o acesso a recursos.
-
Você tem um certificado de cliente preparado em sua estação de trabalho que é usado para a autenticação TLS. É sugerido usar o IBM Cloud Secrets Manager para gerenciar certificados SSL/TLS para seus aplicativos e serviços. Ele é sem custo e fornece armazenamento persistente para seus certificados.
-
Instale a IBM Cloud CLI.
-
Instale o plug-in da CLI do Certificate Manager mais recente com o comando a seguir:
ibmcloud plugin install hpcs-cert-mgr -
Efetue login no IBM Cloud com a CLI. Se você tiver várias contas, selecione a conta com a qual sua instância de serviço foi criada. Certifique-se de fazer login na região e no grupo de recursos corretos no qual a instância de serviço está localizada com o comando a seguir:
ibmcloud target -r <region> -g <resource_group>
Etapa 1: Configure a chave de assinatura do administrador
Para ativar a segunda camada de autenticação, é necessário primeiro configurar a chave de assinatura do administrador. A chave de assinatura é usada para você se conectar ao seu servidor do Certificate Manager de sua instância que processa os comandos da CLI do Certificate Manager.
-
Gere o par de chaves de assinatura com o comando a seguir:
ibmcloud hpcs-cert-mgr adminkey set --crn HPCS_CRN [--private]Substitua a variável
HPCS_CRNpelo Cloud Resource Name (CRN) de sua instância Hyper Protect Crypto Services. É possível usar o comandoibmcloud resource service-instances --longpara recuperar o CRN. O parâmetro--privateé opcional. Se você utilizar esta opção, a URL do servidor do gerenciador de certificados aponta para o terminal privado e é necessário utilizar a rede privada para conectar sua instância de serviço.Após a execução desse comando, um par de chaves pública e privada é gerado e armazenado em sua estação de trabalho local. O caminho de arquivo padrão é
/Users/<username>/.hpcs-cert-mgr-cfg/. Certifique-se de armazenar a chave de assinatura de forma segura, por exemplo com proteção por senha. A chave pública é transferida por upload automaticamente para o servidor do Certificate Manager de sua instância para verificação de assinatura.Se você deseja atualizar a sua chave de assinatura, é possível usar o comando
ibmcloud hpcs-cert-mgr adminkey updatepara executar a ação. Para obter mais informações sobre o uso da CLI, consulte Hyper Protect Crypto Services referência da CLI do gerenciador de certificados. -
(Opcional) Verifique e confirme se a chave pública foi transferida por upload para o servidor com o comando a seguir:
ibmcloud hpcs-cert-mgr adminkey get --crn HPCS_CRN [--private]Se este comando retornar o valor da chave pública, isso significa que você fez upload da chave pública com sucesso.
Etapa 2: configurar o certificado de autoridade de certificação do cliente para autenticação
Depois de configurar a chave de assinatura do administrador, é necessário fazer upload do certificado de autoridade de certificação(CA)A trusted third-party organization or company that issues the digital certificates. The certificate authority typically verifies the identity of the individuals who are granted the unique certificate. do cliente para o servidor do gerenciador do certificado da instância para autenticação do cliente TLS.
Depois de configurar o certificado de autoridade de certificação do cliente, você não poderá mais acessar os keystores EP11 e as chaves EP11 por meio da IU.
-
(Opcional) Prepare certificados de autoridade de certificação e de cliente
É possível gerar certificados de autoridade de certificação para a infraestrutura GREP11 usando o utilitário OpenSSL.
Certifique-se de instalar o OpenSSL em uma estação de trabalho que possa ser usada para gerar os certificados. Conclua as etapas a seguir em sua estação de trabalho:
- Gere a chave de autoridade de certificação, executando o comando a seguir:
openssl genrsa -out ca.key 2048 - Crie o certificado de autoridade de certificação, executando o comando a seguir:
openssl req -new -x509 -key ca.key -days 730 -out ca.pem - Crie a chave do cliente, executando o comando a seguir:
openssl genrsa -out client-key.pem 2048 - Crie a solicitação de assinatura do certificado de cliente, executando o comando a seguir:
openssl req -new -key client-key.pem -out client.csr - Crie o certificado de cliente, executando o comando a seguir:
openssl x509 -req -days 730 -in client.csr -CA ca.pem -CAcreateserial -CAkey ca.key -out client.pem
- Gere a chave de autoridade de certificação, executando o comando a seguir:
-
Faça upload do certificado de autoridade de certificação do cliente para o servidor com o comando a seguir:
Se o seu certificado de cliente for assinado por um certificado de autoridade de certificação intermediário em uma cadeia de certificados, será necessário fazer upload desse certificado de autoridade de certificação intermediário.
ibmcloud hpcs-cert-mgr cert set --crn HPCS_CRN --admin-priv-key ADMIN_PRIV_KEY --cert-id CERT_ID --cert CERT_FILE [--private]Substitua as variáveis na solicitação de exemplo de acordo com a tabela a seguir.
Tabela 1. Descreve as variáveis necessárias para fazer upload do certificado TLS Variável Descrição HPCS_CRNObrigatório. O Cloud Resource Name (CRN) da sua instância Hyper Protect Crypto Services. É possível usar o comando ibmcloud resource service-instances --longpara recuperar o CRN.ADMIN_PRIV_KEYObrigatório. O caminho do arquivo de sua chave privada atual em sua estação de trabalho local que você gera ou atualiza na Etapa 1. A chave privada é utilizada para assinar esta ação de comando em direção ao servidor do gerenciador de certificados da sua instância. CERT_IDObrigatório. O ID de sequência de caracteres que você deseja designar ao certificado de autoridade de certificação do cliente para fácil identificação. CERT_FILEObrigatório. O caminho do arquivo do certificado de autoridade de certificação do cliente em sua estação de trabalho local. O parâmetro
--privateé opcional. Se você utilizar esta opção, a URL do servidor do gerenciador de certificados aponta para o terminal privado e é necessário utilizar a rede privada para conectar sua instância de serviço. -
(Opcional) Verifique e confirme se o certificado de autoridade de certificação do cliente foi transferido por upload para o servidor com o comando a seguir:
ibmcloud hpcs-cert-mgr cert list --crn HPCS_CRN [--private]Este comando lista todos os certificados de autoridade de certificação do cliente disponíveis que são gerenciados por você no servidor. Se a lista contiver o certificado transferido por upload anteriormente, isso significa que a ação foi concluída com êxito.
Etapa 3: Estabelecer conexões TLS mútuas para aplicativos do EP11
Após configurar a chave de assinatura do administrador e o certificado de autoridade de certificação do cliente, os usuários do EP11 podem estabelecer conexões TLS mútuas para aplicativos que utilizam a API do GREP11 ou do PKCS # 11. Antes que os usuários do EP11 possam fazer isso, eles precisam configurar os aplicativos do GREP11 ou do PKCS n° 11 com o certificado de cliente.
Para utilizar a API do GREP11 ou do PKCS n° 11, certifique-se de que os usuários do EP11 sejam designados as funções do IAM adequadas para executar operações do EP11. Para obter mais informações, consulte a guia APIs do HSM em Funções de acesso ao serviço do IAM.
-
Configurar aplicativos do GREP11
Dependendo da linguagem de programação que você utiliza para o aplicativo do GREP11, o método de configuração varia com base no pacote gRPC correspondente. O seguinte fornece exemplos para Golang e JavaScript.
-
Snippet de código de exemplo do Golang
cert, _ := tls.LoadX509KeyPair("client.pem", "client-key.pem") var callOpts = []grpc.DialOption{ grpc.WithTransportCredentials(credentials.NewTLS(&tls.Config{Certificates: []tls.Certificate{cert}})) }O
tls.Config{}precisa ser definido corretamente com base naConfigestrutura de tipo É necessário configurar pelo menos o campoCertificates. Certifique-se de usar sua chave do cliente e seu certificado de cliente. Para o código de exemplo Golang completo, consulte O repositório GitHub de amostra para Golang. -
Snippet de código de exemplo de JavaScript
credentials.push(grpc.credentials.createSsl());É possível consultar a documentação do Módulo de Credenciais para obter informações detalhadas sobre funções e parâmetros. É necessário configurar os parâmetros
private_keyecert_chainpara a funçãocreateSsl(). Para o código de exemplo JavaScript completo, consulte O repositório GitHub de amostra para JavaScript.
-
-
Configurar aplicativos do PKCS n° 11
O PKCS n° 11 manipula o TLS mútuo em seu arquivo de configuração. Atualize o campo
tlsde acordo com o exemplo a seguir:tls: enabled: true mutual: true cacert: certfile: "<client_certificate>" keyfile: "<client_certificate_private_key>"Substitua as variáveis no exemplo com base na tabela a seguir:
Tabela 3. Descreve as variáveis necessárias para configurar aplicativos PKCS #11 Variável Descrição client_certificateObrigatório. O caminho de arquivo do certificado de cliente que é carregado para o servidor pelo administrador de certificados. client_certificate_private_keyObrigatório. O caminho de arquivo da chave privada do certificado de cliente que é usada para assinar o certificado.
Após a configuração, quando os aplicativos usam a API do GREP11 ou do PKCS n° 11 para executar operações criptográficas, uma conexão TLS mútua é estabelecida e o certificado de cliente é validado para a camada adicional de autenticação.
(Opcional) Desativando conexões TLS mútuas
Se você não precisar mais da segunda camada de autenticação, poderá desativar a função, excluindo todos os certificados de autoridade de certificação do cliente no servidor.
-
Exclua um certificado de autoridade de certificação com o comando a seguir. Repita esta etapa para excluir todos os certificados disponíveis no servidor para desativar as conexões TLS de aplicativos EP11.
ibmcloud hpcs-cert-mgr cert delete --crn HPCS_CRN --admin-priv-key ADMIN_PRIV_KEY --cert-id CERT_ID [--private]Substitua as variáveis na solicitação de exemplo de acordo com a tabela a seguir.
Tabela 2. Descreve as variáveis necessárias para excluir certificados de autoridade de certificação Variável Descrição HPCS_CRNObrigatório. O Cloud Resource Name (CRN) da sua instância Hyper Protect Crypto Services. É possível usar o comando ibmcloud resource service-instances --longpara recuperar o CRN.ADMIN_PRIV_KEYObrigatório. O caminho de arquivo de sua chave privada atual que está armazenada em sua estação de trabalho local. A chave privada é utilizada para assinar esta ação de comando em direção ao servidor do gerenciador de certificados da sua instância. CERT_IDObrigatório. O ID de sequência de caracteres do certificado de autoridade de certificação que você deseja excluir. É possível primeiro usar o comando ibmcloud hpcs-cert-mgr cert list --crn HPCS_CRNpara listar todos os certificados, incluindo seus IDs.O parâmetro
--privateé opcional. Se você utilizar esta opção, a URL do servidor do gerenciador de certificados aponta para o terminal privado e é necessário utilizar a rede privada para conectar sua instância de serviço.Se vários administradores de certificados forem configurados para a sua instância de serviço, certifique-se de excluir todos os certificados de autoridade de certificação sob esses administradores.
Se você excluir um certificado de autoridade de certificação do servidor do Certificate Manager, todos os aplicativos que usam os certificados de clientes emitidos por este certificado de autoridade de certificação não terão acesso à instância GREP11 por meio da conexão TLS mútua.
Depois de excluir todos os certificados de autoridade de certificação do servidor do Certificate Manager, a autenticação TLS mútua para a instância GREP11 é desativada. Os aplicativos, portanto, não precisam de conexão TLS mútua para se conectar com a instância GREP11.
-
(Opcional) Verifique e confirme se todos os certificados de autoridade de certificação foram excluídos com o comando a seguir:
ibmcloud hpcs-cert-mgr cert list --crn HPCS_CRN [--private]Se nenhum certificado for retornado, significa que todos os certificados de sua instância de serviço foram excluídos.
-
(Opcional) Atualize os aplicativos GREP11 ou PKCS #11 para excluir as configurações do certificado, de modo que os aplicativos não utilizem mais o certificado para conexões futuras da API.
O que vem a seguir
- Para a referência completa dos comando da CLI do gerenciador de certificados, consulte Hyper Protect Crypto ServicesPlug-in da CLI do gerenciador de certificados.
- Para a referência da API do GREP11 e do PKCS n° 11, consulte Operações criptográficas: API do GREP11 e Operações criptográficas: API do PKCS n° 11.