- Visão geral de serviço
-
Guia de usuário
- Serviço de gerenciamento de chaves
- Serviço de gerenciamento de segredo em nuvem
- Serviço de par de chaves
- HSM dedicado
- Registros de auditoria
- Controle de permissão
-
Referência de API
- Antes de começar
- Chamada das APIs
- Visão geral de API
-
APIs
- APIs de gerenciamento de chaves
- APIs de gerenciamento de pares de chaves
- APIs de gerenciamento de segredo
- APIs históricas
- Exemplos de aplicação
- Políticas de permissões e ações suportadas
- Apêndice
- Histórico de mudanças
-
Melhores práticas
-
Serviço de gerenciamento de chaves
- Uso do KMS para criptografar dados off-line
- Uso do KMS para criptografar e descriptografar dados para serviços em nuvem
- Uso do SDK de criptografia para criptografar e descriptografar arquivos locais
- Criptografia e descriptografia de dados por meio de DR entre regiões
- Uso do KMS para proteger a integridade dos arquivos
- Serviço de gerenciamento de segredo em nuvem
- Geral
- Histórico de alterações
-
Serviço de gerenciamento de chaves
- Primeiros passos
-
Perguntas frequentes
- Serviço de gerenciamento de chaves
- Serviço de gerenciamento de segredo em nuvem
- Serviço de par de chaves
- HSM dedicado
- Registros de auditoria
- Controle de permissão
-
Perguntas frequentes
-
Relacionado ao KMS
- O que é o serviço de gerenciamento de chaves?
- O que é uma Chave principal do cliente?
- O que é uma chave padrão?
- Quais são as diferenças entre uma chave personalizada e uma chave padrão?
- O que é uma chave de criptografia de dados?
- Por que não consigo excluir uma CMK imediatamente?
- Quais serviços de nuvem podem usar o KMS para criptografia?
- Como os serviços da Huawei Cloud usam o KMS para criptografar dados?
- Quais são os benefícios da criptografia de envelope?
- Existe um limite para o número de chaves personalizadas que posso criar no KMS?
- Posso exportar uma CMK do KMS?
- Posso descriptografar meus dados se eu excluir permanentemente minha chave personalizada?
- Como usar a ferramenta on-line para criptografar ou descriptografar pequenos volumes de dados?
- Posso atualizar CMKs criadas por materiais de chave gerados por KMS?
- Quando devo usar uma CMK criada com materiais de chaves importados?
- O que devo fazer quando excluir acidentalmente materiais de chaves?
- Como as chaves padrão são geradas?
- O que devo fazer se não tiver as permissões para realizar operações no KMS?
- Por que não posso encapsular chaves assimétricas usando -id-aes256-wrap-pad no OpenSSL?
- Algoritmos de chave suportados pelo KMS
- O que devo fazer se o KMS não for solicitado e o código de erro 401 for exibido?
- Qual é a relação entre o texto cifrado e o texto não criptografado retornado pela API de dados de criptografia?
- Como o KMS protege minhas chaves?
- Como usar uma chave assimétrica para verificar o resultado da assinatura de um par de chaves públicas?
- Uma chave importada suporta rotação?
- Relacionado a credenciais
-
Relacionado ao KPS
- Como criar um par de chaves?
- O que são um par de chaves privadas e um par de chaves de contas?
- Como lidar com uma falha de importação de um par de chaves criado usando o PuTTYgen?
- O que devo fazer quando não consigo importar um par de chaves usando o Internet Explorer 9?
- Como fazer logon em um ECS de Linux com uma chave privada?
- Como usar uma chave privada para obter a senha para fazer logon em um ECS do Windows?
- Como lidar com a falha na vinculação de um par de chaves?
- Como lidar com a falha na substituição de um par de chaves?
- Como lidar com a falha na redefinição de um par de chaves?
- Como lidar com a falha na desvinculação de um par de chaves?
- Preciso reiniciar os servidores depois de substituir seu par de chaves?
- Como ativar o modo de logon com senha para um ECS?
- Como lidar com a falha no logon no ECS após desvincular o par de chaves?
- O que devo fazer se minha chave privada for perdida?
- Como converter o formato de um arquivo de chave privada?
- Posso alterar o par de chaves de um servidor?
- Um par de chaves pode ser compartilhado por vários usuários?
- Como obter o arquivo de chave pública ou privada de um par de chaves?
- O que posso fazer se um erro for relatado quando uma chave de conta for criada ou atualizada pela primeira vez?
- A cota de par de chaves de conta será ocupada depois que um par de chaves privadas for atualizado para um par de chaves de conta?
-
Relacionado ao HSM dedicado
- O que é o HSM dedicado?
- Como o HSM dedicado garante a segurança para a geração de chaves?
- O pessoal da sala de equipamentos tem a função de superadministrador para roubar informações usando um UKey privilegiado?
- Quais HSMs são usados para HSM dedicado?
- Quais APIs o HSM dedicado suporta?
- Como ativar o acesso público a uma instância do HSM dedicado?
- Preços
- Geral
-
Relacionado ao KMS
- No momento, o conteúdo não está disponível no seu idioma selecionado. Consulte a versão em inglês.
- What's New
- Function Overview
- Billing
- SDK Reference
- Videos
-
More Documents
- User Guide (ME-Abu Dhabi Region)
- User Guide (Paris and Amsterdam Regions)
-
User Guide (Kuala Lumpur Region)
- Service Overview
-
User Guide
- Key Management Service
- Cloud Secret Management Service
- Auditing Logs
- Permission Control
-
FAQs
-
KMS Related
- What Is Key Management Service?
- What Is a Customer Master Key?
- What Is a Default Key?
- What Are the Differences Between a Custom Key and a Default Key?
- What Is a Data Encryption Key?
- Why Cannot I Delete a CMK Immediately?
- Which Cloud Services Can Use KMS for Encryption?
- How Do Cloud Services Use KMS to Encrypt Data?
- What Are the Benefits of Envelope Encryption?
- Is There a Limit on the Number of Custom Keys That I Can Create on KMS?
- Can I Export a CMK from KMS?
- Can I Decrypt My Data if I Permanently Delete My Custom Key?
- How Do I Use the Online Tool to Encrypt or Decrypt Small Volumes of Data?
- Can I Update CMKs Created by KMS-Generated Key Materials?
- When Should I Use a CMK Created with Imported Key Materials?
- What Types of Keys Can I Import?
- What Should I Do When I Accidentally Delete Key Materials?
- How Are Default Keys Generated?
- What Should I Do If I Do Not Have the Permissions to Perform Operations on KMS?
- Why Can't I Wrap Asymmetric Keys by Using -id-aes256-wrap-pad in OpenSSL?
- Key Algorithms Supported by KMS
- What Should I Do If KMS Failed to Be Requested and Error Code 401 Is Displayed?
- What Is the Relationship Between the Ciphertext and Plaintext Returned by the encrypt-data API?
- How Does KMS Protect My Keys?
- Credential Related
-
KMS Related
- Change History
-
API Reference (ME-Abu Dhabi Region)
- Before You Start
- Calling APIs
- API Overview
-
APIs
- Creating a CMK
- Enabling a CMK
- Disabling a CMK
- Scheduling the Deletion of a CMK
- Canceling the Scheduled Deletion of a CMK
- Querying the List of CMKs
- Querying the Information About a CMK
- Creating a Random Number
- Creating a DEK
- Creating a Plaintext-Free DEK
- Encrypting a DEK
- Decrypting a DEK
- Querying the Number of Instances
- Querying the Quota of a User
- Changing the Alias of a CMK
- Changing the Description of a CMK
- Encrypting Data
- Decrypting Data
- Obtaining CMK Import Parameters
- Importing CMK Material
- Deleting CMK Material
- Querying CMK Instances
- Querying CMK Tags
- Querying Project Tags
- Adding or Deleting CMK Tags in Batches
- Adding a CMK Tag
- Deleting a CMK Tag
- Permissions Policies and Supported Actions
- Appendix
- Change History
-
API Reference (Paris and Amsterdam Regions)
- Before You Start
- Calling APIs
- API Overview
-
APIs
- Creating a CMK
- Enabling a CMK
- Disabling a CMK
- Scheduling the Deletion of a CMK
- Canceling the Scheduled Deletion of a CMK
- Querying the List of CMKs
- Querying the Information About a CMK
- Creating a Random Number
- Creating a DEK
- Creating a Plaintext-Free DEK
- Encrypting a DEK
- Decrypting a DEK
- Querying the Number of Instances
- Querying the Quota of a User
- Changing the Alias of a CMK
- Changing the Description of a CMK
- Creating a Grant
- Revoking a Grant
- Retiring a Grant
- Querying Grants on a CMK
- Querying Grants That Can Be Retired
- Encrypting Data
- Decrypting Data
- Obtaining CMK Import Parameters
- Importing CMK Material
- Deleting CMK Material
- Enabling Rotation for a CMK
- Changing the Rotation Interval for a CMK
- Disabling Rotation for a CMK
- Querying the Rotation Status of a CMK
- Appendix
- Change History
-
API Reference (Kuala Lumpur Region)
- Before You Start
- Calling APIs
- API Overview
-
APIs
- Creating a CMK
- Enabling a CMK
- Disabling a CMK
- Scheduling the Deletion of a CMK
- Canceling the Scheduled Deletion of a CMK
- Querying the List of CMKs
- Querying the Information About a CMK
- Creating a Random Number
- Creating a DEK
- Creating a Plaintext-Free DEK
- Encrypting a DEK
- Decrypting a DEK
- Querying the Number of Instances
- Querying the Quota of a User
- Changing the Alias of a CMK
- Changing the Description of a CMK
- Creating a Grant
- Revoking a Grant
- Retiring a Grant
- Querying Grants on a CMK
- Querying Grants That Can Be Retired
- Encrypting Data
- Decrypting Data
- Obtaining CMK Import Parameters
- Importing CMK Material
- Deleting CMK Material
- Enabling Rotation for a CMK
- Changing the Rotation Interval for a CMK
- Disabling Rotation for a CMK
- Querying the Rotation Status of a CMK
- Appendix
- Change History
Copiado.
Uso do CSMS para alterar senhas de contas de banco de dados codificadas rigidamente
Geralmente, os segredos usadospara acesso estão incorporados nas aplicações. Para atualizar um segredo, você precisa criar um novo segredo e gastar tempo atualizando suas aplicações. Se você tiver várias aplicações usando o mesmo segredo, terá que atualizar todas elas, ou as aplicações que você se esqueceu de atualizar não poderão usar o segredo para logon.
Uma ferramenta de gerenciamento de segredos fácil de usar, eficaz e segura será útil.
O Cloud Secret Management Service (CSMS) tem as seguintes vantagens:
- Você pode hospedar seus segredos em vez de usar segredos codificados rigidamente, melhorando a segurança de dados e ativos.
- Seus serviços não são afetados quando você faz a rotação manual dos segredos.
- O acesso seguro ao SDK permite que você chame seus segredos dinamicamente.
- Você pode armazenar muitos tipos de segredos. Você pode armazenar contas de serviço, senhas e informações de banco de dados, incluindo, mas não limitado a, nomes de banco de dados, endereços IP e números de porta.
Fazer logon em um banco de dados usando segredos
Você pode criar um segredo e fazer logon no seu banco de dados chamando o segredo por meio de uma API.
Verifique se sua conta tem a permissão KMS Administrator ou KMS CMKFullAccess. Para obter detalhes, consulte Gerenciamento de permissões do DEW.

O processo é o seguinte:
- Crie um segredo no console ou por meio de uma API para armazenar informações do banco de dados (como endereço, porta e senha do banco de dados).
- Use uma aplicação para acessar o banco de dados. CSMS irá consultar o segredo criado em 1.
- O CSMS recupera e descriptografa o texto cifrado de segredo e retorna com segurança as informações armazenadas no segredo para a aplicação por meio da API de gerenciamento de segredo.
- A aplicação obtém o segredo de texto não criptografado descriptografado e o usa para acessar o banco de dados.
APIs de criação e consulta de segredos
Você pode chamar as seguintes APIs para criar segredos, salvar seu conteúdo e consultar informações de segredos.
API |
Descrição |
---|---|
Essa API é usada para criar um segredo e armazenar o valor de segredo na versão de segredo inicial. |
|
Essa API é usada para consultar um segredo. |
Criação e consulta de segredos por meio de APIs
- Prepare informações básicas de autenticação.
- ACCESS_KEY: chave de acesso da conta de Huawei
- SECRET_ACCESS_KEY: chave de acesso de segredo da conta de Huawei
- PROJECT_ID: ID do projeto de um site da Huawei Cloud. Para obter detalhes, consulte Projeto.
- CSMS_ENDPOINT: ponto de extremidade para acessar o CSMS. Para obter detalhes, consulte Pontos de extremidade.
- Haverá riscos de segurança se a AK/SK usada para autenticação for gravada diretamente no código. Criptografe a AK/SK no arquivo de configuração ou nas variáveis de ambiente para armazenamento.
- Neste exemplo, a AK/SK armazenada nas variáveis de ambiente é usada para autenticação de identidade. Configure as variáveis de ambiente HUAWEICLOUD_SDK_AK e HUAWEICLOUD_SDK_SK primeiro no ambiente local.
- Crie e consulte informações de segredos.
Valor de segredo: secretString
Valor da versão de segredo: LATEST_SECRET
Versão de segredo: versionId
import com.huaweicloud.sdk.core.auth.BasicCredentials; import com.huaweicloud.sdk.csms.v1.CsmsClient; import com.huaweicloud.sdk.csms.v1.model.CreateSecretRequest; import com.huaweicloud.sdk.csms.v1.model.CreateSecretRequestBody; import com.huaweicloud.sdk.csms.v1.model.CreateSecretResponse; import com.huaweicloud.sdk.csms.v1.model.ShowSecretVersionRequest; import com.huaweicloud.sdk.csms.v1.model.ShowSecretVersionResponse; public class CsmsCreateSecretExample { /** * Basic authentication information: * - ACCESS_KEY: Access key of the Huawei account * - SECRET_ACCESS_KEY: Secret access key of the Huawei account * - PROJECT_ID: Huawei Cloud project ID. For details, see https://support.huaweicloud.com/intl/pt-br/productdesc-iam/iam_01_0023.html * - CSMS_ENDPOINT: endpoint address for accessing CSMS. For details, see https://support.huaweicloud.com/intl/pt-br/api-dew/dew_02_0052.html. * - There will be security risks if the AK/SK used for authentication is directly written into code. Encrypt the AK/SK in the configuration file or environment variables for storage. * - In this example, the AK/SK stored in the environment variables are used for identity authentication. Configure the environment variables HUAWEICLOUD_SDK_AK and HUAWEICLOUD_SDK_SK in the local environment first. */ private static final String ACCESS_KEY = System.getenv("HUAWEICLOUD_SDK_AK"); private static final String SECRET_ACCESS_KEY = System.getenv("HUAWEICLOUD_SDK_SK"); private static final String PROJECT_ID = "<ProjectID>"; private static final String CSMS_ENDPOINT = "<CsmsEndpoint>"; //Version ID used to query the latest secret version details private static final String LATEST_SECRET = "latest"; public static void main(String[] args) { String secretName = args[0]; String secretString = args[1]; //Create a secret. createSecret(secretName, secretString); //Query the content of the new secret based on the secret version latest or v1. ShowSecretVersionResponse latestVersion = showSecretVersion(secretName, LATEST_SECRET); ShowSecretVersionResponse firstVersion = showSecretVersion(secretName, "v1"); assert latestVersion.equals(firstVersion); assert latestVersion.getVersion().getSecretString().equalsIgnoreCase(secretString); } /** * Create a secret. * @param secretName * @param secretString */ private static void createSecret(String secretName, String secretString) { CreateSecretRequest secret = new CreateSecretRequest().withBody( new CreateSecretRequestBody().withName(secretName).withSecretString(secretString)); CsmsClient csmsClient = getCsmsClient(); CreateSecretResponse createdSecret = csmsClient.createSecret(secret); System.out.printf("Created secret success, secret detail:%s", createdSecret); } /** * Query secret version details based on the secret version ID. * @param secretName * @param versionId * @return */ private static ShowSecretVersionResponse showSecretVersion(String secretName, String versionId) { ShowSecretVersionRequest showSecretVersionRequest = new ShowSecretVersionRequest().withSecretName(secretName) .withVersionId(versionId); CsmsClient csmsClient = getCsmsClient(); ShowSecretVersionResponse version = csmsClient.showSecretVersion(showSecretVersionRequest); System.out.printf("Query secret success. version id:%s", version.getVersion().getVersionMetadata().getId()); return version; } /** * Obtain the CSMS client. * @return */ private static CsmsClient getCsmsClient() { BasicCredentials auth = new BasicCredentials() .withAk(ACCESS_KEY) .withSk(SECRET_ACCESS_KEY) .withProjectId(PROJECT_ID); return CsmsClient.newBuilder().withCredential(auth).withEndpoint(CSMS_ENDPOINT).build(); } }
Obtenção da conta do banco de dados por meio de uma aplicação
- Obtenha a declaração de dependência do SDK do CSMS.
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>XXX</version> </dependency> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.9</version> </dependency> <dependency> <groupId>com.huaweicloud.sdk</groupId> <artifactId>huaweicloud-sdk-csms</artifactId> <version>3.0.79</version> </dependency>
- Estabeleça uma conexão com o banco de dados e obtenha a conta.
Exemplo:
import com.google.gson.Gson; import com.google.gson.JsonObject; import com.huaweicloud.sdk.csms.v1.model.ShowSecretVersionRequest; import com.huaweicloud.sdk.csms.v1.model.ShowSecretVersionResponse; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; // Obtain the specified database account based on the secret information. public static Connection getMySQLConnectionBySecret(String secretName, String jdbcUrl) throws ClassNotFoundException, SQLException{ Class.forName(MYSQL_JDBC_DRIVER); ShowSecretVersionResponse latestVersionValue = getCsmsClient().showSecretVersion(new ShowSecretVersionRequest().withSecretName(secretName).withVersionId("latest")); String secretString = latestVersionValue.getVersion().getSecretString(); JsonObject jsonObject = new Gson().fromJson(secretString, JsonObject.class); return DriverManager.getConnection(jdbcUrl, jsonObject.get("username").getAsString(), jsonObject.get("password").getAsString()); }