Este tópico descreve problemas comuns ao acessar uma instância do Key Management Service (KMS) por meio de um SDK.
Lista de problemas
Erro "no such host" ou "not known" ao acessar uma instância do KMS
Erro "Forbidden.NoPermission" ao acessar uma instância do KMS por um ponto de acesso à aplicação
Erro "UnsupportedOperation" ao chamar uma operação da API do KMS
Erro "unable to find valid certification path to requested target" ao acessar uma instância do KMS
Falha na resolução do nome de domínio de uma instância do KMS
Erro "Incorrect ClientKey password" ao acessar uma instância do KMS
O gerenciamento de segredos do KMS é compatível com Android?
Data center on-premises não acessa a instância do KMS pelo nome de domínio
Erro "QPS Limit Exceeded" durante a sincronização de segredos do KMS pelo ACK com ack-secret-manager
Erro "MissingParameter" ao usar um gateway dedicado para operações criptográficas via OpenAPI
Problemas de validação de certificado para ISV terceirizado ao acessar o KMS por gateway dedicado
Erro 'no such host' ou 'not known'
Problema
Ao acessar uma instância do KMS com o SDK de instância do KMS para Go, o seguinte erro é retornado:
kst-xxx.cryptoservice.kms.aliyuncs.com: no such host.Ao acessar uma instância do KMS com o SDK de instância do KMS para Java, o seguinte erro é retornado:
kst-xxx.cryptoservice.kms.aliyuncs.com: nodename nor servname provided, or not known.
Causa
A instância do KMS é um serviço dedicado de gerenciamento de chaves e segredos, acessível apenas a partir de uma Virtual Private Cloud (VPC) associada.
Solução
-
Se a VPC da aplicação e a instância do KMS estiverem na mesma região, associe a VPC à instância do KMS. Para mais informações, consulte Acessar uma instância do KMS a partir de várias VPCs na mesma região.
Para verificar as VPCs associadas à sua instância do KMS, consulte Visualizar detalhes da instância do KMS.
Se a VPC da aplicação e a instância do KMS estiverem em regiões diferentes, estabeleça uma conexão de rede entre as duas VPCs.
Erro 'Forbidden.NoPermission' ao usar um AAP
Problema
Ao acessar uma instância do KMS, a descrição do erro ou a mensagem de exceção do SDK contém: Forbidden.NoPermission : This operation is forbidden by permission system.
Solução
Esse erro ocorre porque a política de permissões do ponto de acesso à aplicação (AAP) não concede as permissões necessárias de chave ou segredo em RBAC Permissions e Accessible Resources. Para mais informações, consulte Criar um ponto de acesso à aplicação.
Erro '...forbidden by permission system' ao recuperar um segredo
Problema
Ao recuperar o valor de um segredo, a descrição do erro ou a mensagem de exceção do SDK retornada pelo KMS contém: This operation for key-xxxxxx is forbidden by permission system.
O código a seguir mostra um exemplo de mensagem de exceção do SDK de instância do KMS para Java:
Connected to the target VM, address: '127.0.xxx', transport: 'socket'
Exception in thread "main" com.aliyun.tea.TeaException Create breakpoint : This operation for key-hzz6xxx xxx is forbidden by permission system.
at com.aliyun.dkms.gcs.openapi.Client.doRequest(Client.java:159)
at com.aliyun.dkms.gcs.sdk.Client.getSecretValueWithOptions(Client.java:190)
at com.aliyun.dkms.gcs.sdk.Client.getSecretValue(Client.java:213)
at com.yqn.center.user.config.RdsSecretSampleCode.main(RdsSecretSampleCode.java:209)
Disconnected from the target VM, address: '127.0.xxx', transport: 'socket'
Process finished with exit code 1
Causa
A aplicação não tem permissão para usar a chave na descriptografia.
Ao criar um segredo, você seleciona uma chave na mesma instância do KMS para criptografia. Para recuperar o segredo, a aplicação precisa ter permissão tanto para acessar o segredo quanto para usar a chave correspondente na descriptografia.
Solução
-
Cenário 1: Acesso ao KMS por um ponto de acesso à aplicação (AAP) com ClientKey
Edite a política de permissões do AAP para conceder à aplicação permissão de uso da chave para descriptografia.
Acesse o console do Key Management Service. Na barra de navegação superior, selecione uma região. No painel de navegação à esquerda, escolha .
Clique em no nome do AAP desejado para acessar a página Details.
-
Na coluna Actions da política de permissões, clique em Modify. Configure os parâmetros a seguir e clique em Update.
RBAC Permissions: Selecione CryptoServiceKeyUser.
Accessible Resources: Na seção Available Resources, selecione a chave e clique em no ícone
. Alternativamente, clique em no ícone
ao lado de Selected Resources para adicionar uma chave no formato key/key_id. Exemplo:key/key-hzz6xxxxxx.
-
Cenário 2: Acesso ao KMS com par de AccessKey de usuário RAM ou função RAM assumida
Edite a política de permissões do RAM para conceder à aplicação permissão de uso da chave para descriptografia.
Acesse o console do RAM.
No painel de navegação à esquerda, escolha Permissions > Policies.
Localize a política de permissões anexada ao usuário RAM ou à função RAM e clique em no nome da política.
-
Na aba Policy Document, clique em Modify Policy Document. Adicione o script a seguir à seção
Statemente clique em Continue to edit basic information.{ "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "acs:kms:${region}:${account}:key/keyId-example" }Para mais informações sobre políticas de permissões, consulte Políticas de permissões personalizadas para o Key Management Service.
Erro 'Forbidden.KeyNotFound'
Causa: Geralmente, a região, o ID da chave ou o alias especificados na solicitação não correspondem aos usados na criptografia.
Solução: Certifique-se de que a região, o ID da chave ou o alias usados na descriptografia correspondam aos usados na criptografia.
Erro 'UnsupportedOperation'
-
Configuração de acesso à rede incorreta
Causa: A aplicação usa um SDK padrão do Alibaba Cloud, em vez do SDK específico do KMS, para executar operações criptográficas em uma chave de uma instância do KMS.
-
Solução:
Acesse o console do Key Management Service. Na barra de navegação superior, selecione uma região. No painel de navegação à esquerda, escolha .
-
Na lista de instâncias, clique em no ID da instância desejada. Na página de detalhes, ative a opção Public Network Access na seção RD Multi-Account.
NotaSe uma instância do KMS for compartilhada entre várias contas do Alibaba Cloud, defina as permissões de acesso à rede pública para cada conta.
Na aba Basic Information da página de detalhes da instância, localize o Public Endpoint. O endpoint aparece após a ativação do acesso à rede pública e tem formato semelhante a
kms.cn-hangzhou.aliyuncs.com.
-
Tipo de chave incorreto
Causa: A aplicação usa uma chave de serviço ao chamar uma operação de API criptográfica, como Encrypt, Decrypt ou GenerateDataKey, por meio de um SDK.
Solução: Para operações criptográficas, use diretamente uma chave mestra de cliente (CMK), não uma chave de serviço gerenciada por outro serviço de nuvem.
-
Incompatibilidade entre algoritmo de chave e API
-
Cenário 1: Criptografia, descriptografia e geração de chave de dados
Ao chamar a operação GenerateDataKey, o algoritmo da chave mestra de cliente (CMK) é assimétrico, como RSA, ECC .
Solução: Certifique-se de que o algoritmo da CMK seja simétrico, como AES , e que o uso da chave seja ENCRYPT/DECRYPT.
-
Cenário 2: Assinatura e verificação
Acesse o console do Key Management Service. Na barra de navegação superior, selecione uma região. No painel de navegação à esquerda, escolha .
Na página Instances, clique em Download na coluna Instance CA Certificate.
-
Na caixa de diálogo Instance CA Certificate, selecione o ID da instância, clique em Download e armazene o certificado em um local seguro.
Por padrão, o certificado CA baixado chama-se PrivateKmsCA_kst-.pem. Integre o certificado ao SDK para verificar a autenticidade e a validade do certificado SSL do serviço da instância do KMS.
-
SDK de Instância do KMS para Java
NotaA dependência tea deve ser da versão 1.2.3 ou posterior.
SDK de Instância do KMS para Python 3, SDK de Instância do KMS para Python 2
Ao acessar uma instância do KMS com o SDK de instância do KMS para Java, o seguinte erro é retornado:
java.io.IOException: keystore password was incorrect.Ao acessar uma instância do KMS com o SDK de instância do KMS para PHP, o seguinte erro é retornado:
Could not decrypt the privateKey of clientKey, the password is incorrect,or it is not a valid pkcs12.Ao acessar uma instância do KMS com o SDK de instância do KMS para Go, o seguinte erro é retornado:
panic: pkcs12: decryption password incorrect.Ao acessar uma instância do KMS com o SDK de instância do KMS para Python, o seguinte erro é retornado:
OpenSSL.crypto.Error: [('PKCS12 routines', '', 'mac verify failure')].-
Verifique se a senha da ClientKey atende aos requisitos de formato. Caso contrário, crie uma nova ClientKey. Para mais informações, consulte Criar uma ClientKey.
A senha da ClientKey deve ter de 8 a 64 caracteres e conter pelo menos dois dos seguintes tipos: dígitos (0-9), letras minúsculas (a-z), letras maiúsculas (A-Z) e caracteres especiais (
~!@#$%^&*?_-). Se ler a senha da ClientKey de um arquivo, certifique-se de que seja um arquivo de texto simples com apenas uma linha contendo a senha. O arquivo não deve conter caracteres extras, como quebras de linha ou tabulações.
Criptografia e descriptografia: Não exceda 6 KB de dados por operação para chaves simétricas ou 1 KB para chaves assimétricas. Para volumes maiores, use criptografia de envelope.
Assinatura e verificação: Se a mensagem a ser assinada for grande, gere um resumo (digest) da mensagem localmente e chame a operação
SignouVerifypara assinar ou verificar o resumo.-
Verifique se o ambiente da aplicação tem conectividade de rede com a VPC da instância do KMS.
Se a VPC da aplicação e a instância do KMS estiverem na mesma região, associe a VPC à instância do KMS. Para mais informações, consulte Acessar uma instância do KMS a partir de várias VPCs na mesma região. Para outros cenários, veja as soluções a seguir.
-
Cross-VPC interconnection solutions
Use Cloud Enterprise Network (CEN), VPN Gateway, conexão de peering de VPC ou PrivateLink para habilitar a comunicação privada entre VPCs. Para obter informações sobre recursos e configuração dessas soluções, consulte Interconexão de VPC.
-
Connecting a VPC to the internet
Use um endereço IP público estático de instância ECS, Elastic IP Address, NAT Gateway ou Server Load Balancer (SLB) para permitir que recursos em nuvem na VPC acessem a internet ou sejam acessados por ela. Para mais informações, consulte Acesso à rede pública.
-
Connecting a VPC to an on-premises data center
Use VPN Gateway, circuito Express Connect ou Smart Access Gateway para conectar seu data center on-premises a uma VPC na nuvem e criar uma nuvem híbrida. Para mais informações, consulte Conectar uma VPC a um data center on-premises ou outra nuvem.
-
Certifique-se de que a resolução de nomes de domínio da VPC do KMS esteja configurada corretamente. Para obter informações sobre configurações de resolução de DNS, consulte Introdução à resolução de DNS interno.
-
No Express Connect router, permita os segmentos de rota 100.100.2.136 e 100.100.2.138 para garantir que o data center on-premises possa executar ping em 100.100.2.136 e 100.100.2.138. Para dúvidas sobre a configuração do roteador do Express Connect, consulte seu arquiteto de soluções de rede ou os seguintes documentos: Interconexão de rede nuvem-para-on-premises, Conectar um data center on-premises a uma VPC por meio de um circuito Express Connect, Adicionar e gerenciar entradas de rota e Processar mensagens de um data center on-premises usando o Message Queue for Apache RocketMQ por meio de um circuito Express Connect.
ImportanteSe o data center on-premises não estiver conectado por Alibaba Cloud CEN ou circuito Express Connect, entre em contato com seu provedor de rede para configurar o roteador.
-
Modifique o arquivo de configuração primária do DNS local named.conf para encaminhar consultas DNS do nome de domínio do KMS (kms.aliyuncs.com) ao DNS do Alibaba Cloud. O código a seguir mostra um exemplo de configuração:
zone "kms.aliyuncs.com" { type forward; forwarders { 100.100.2.136;100.100.2.138;}; };NotaA configuração de encaminhamento de rotas varia conforme o software de DNS. Para mais informações, consulte a documentação do seu software de DNS.
Acesse o console do Key Management Service. Na barra de navegação superior, selecione uma região. No painel de navegação à esquerda, escolha .
-
Na lista de instâncias, clique em no ID da instância desejada. Na página de detalhes, ative a opção Public Network Access na seção RD Multi-Account.
NotaSe uma instância do KMS for compartilhada entre várias contas do Alibaba Cloud, defina as permissões de acesso à rede pública para cada conta.
Na aba Basic Information da página de detalhes da instância, localize o Public Endpoint. O endpoint aparece após a ativação do acesso à rede pública e tem formato semelhante a
kms.cn-hangzhou.aliyuncs.com.
Erro 'Unable to find valid certification path'
Possível causa 1: Certificado CA selecionado incorreto para a instância do KMS
Possível causa 2: Versão incorreta do SDK instalada
Recomendamos instalar a versão mais recente do SDK. A lista a seguir fornece os endereços dos repositórios de código aberto dos SDKs:
Falha na resolução do nome de domínio da instância do KMS
Problema
Na VPC da instância do KMS ou em uma VPC associada, a aplicação não consegue acessar o nome de domínio da instância. Por exemplo, o comando
ping kst-hzz62****.cryptoservice.kms.aliyuncs.comfalha na resolução do nome de domínio e a mensagem retornada contém "cannot resolve".Solução
Verifique se a configuração de DNS do servidor usa os servidores DNS padrão do Alibaba Cloud: 100.100.2.136 e 100.100.2.138. Para mais informações, consulte Preciso modificar a configuração de DNS do servidor para usar o PrivateZone?.
Erro 'Incorrect ClientKey password'
Problema
Causa
A senha especificada para a ClientKey está incorreta.
Solução
Código de status HTTP 413
O corpo da solicitação, após codificação com Protocol Buffers, não pode exceder 3 MB. Solicitações acima desse limite são rejeitadas com o código de status HTTP 413.
Erro 'UnknownHostException'
Problema
Ao acessar uma instância do KMS com o SDK de instância do KMS para Java, o seguinte erro é retornado:
Caused by: java.net.UnknownHostException: kst-hzz664da459rvtjtd****.cryptoservice.kms.aliyuncs.com.Solução
O gerenciamento de segredos do KMS é compatível com Android?
Não, o recurso de gerenciamento de segredos não é compatível com Android no momento.
Endpoint do KMS inacessível
Esse problema geralmente ocorre porque o protocolo HTTPS não está ativado ao usar um SDK para acessar o KMS.
Para garantir a segurança dos dados, os endpoints do KMS suportam apenas o protocolo HTTPS. Ao usar um SDK para acessar um endpoint do KMS, execute o código a seguir para garantir que o HTTPS esteja ativado.
req.setProtocol(ProtocolType.HTTPS);Data center on-premises não acessa a instância do KMS
Problema
Um data center on-premises está conectado a uma VPC do Alibaba Cloud. Sem configuração adicional, o data center on-premises não consegue acessar uma instância do KMS usando o nome de domínio kms.aliyuncs.com configurado no PrivateZone.
Solução
Erro 'QPS Limit Exceeded' ao sincronizar segredos com o ACK
Causa
A sincronização de um grande número de segredos do KMS pode acionar a política de limitação de taxa do serviço e causar falha na sincronização.
Solução
Esse problema foi corrigido na versão 0.5.2 do
ack-secret-manager. Atualize para a versão 0.5.2 ou posterior.Erro 'MissingParameter' no gateway dedicado
Problema
Ao usar um SDK do Alibaba Cloud para chamar uma operação OpenAPI de criptografia por meio de um gateway dedicado, o seguinte erro é retornado:
MissingParamter AParamter x-kms-acccesskeyid does not exist in http header or body "$430c76cd-******.Causa
A versão da imagem da instância do KMS é anterior à 3.0.0. Para usar um gateway dedicado em chamadas de operações OpenAPI criptográficas, a versão da imagem da instância do KMS deve ser 3.0.0 ou posterior.
Solução
Na página Instances, verifique a versão da imagem nos detalhes da instância. Clique em Upgrade para atualizar a versão da imagem da instância do KMS. Para mais informações, consulte Atualizar a versão da imagem de uma instância do KMS.
Problemas de validação de certificado de ISV terceirizado
Ativar o acesso público permite que o ISV terceirizado se conecte pelo gateway compartilhado, que usa um certificado assinado por uma autoridade certificadora (CA) confiável.
-