A inclusão de informações confidenciais, como senhas de banco de dados e chaves de API, diretamente no código do seu aplicativo pode causar vazamento de credenciais. O Gerenciador de Credenciais do Key Management Service (KMS) permite armazenar e criptografar dados confidenciais de forma centralizada. Aplicativos podem recuperar credenciais dinamicamente pela rede VPC usando SDKs, eliminando a necessidade de incorporar dados confidenciais no código. Este tópico descreve como criar uma credencial e integrá-la ao seu aplicativo.
Tipos de credenciais
O KMS oferece gerenciamento completo do ciclo de vida de credenciais, incluindo criação, atualização, rotação e exclusão. Os aplicativos recuperam os valores das credenciais dinamicamente por meio de SDKs para evitar a inclusão de dados confidenciais diretamente no código.
|
Tipo de credencial |
Cenário |
Descrição |
|
Credencial genérica |
Armazene qualquer dado confidencial no formato de par chave-valor ou texto simples |
Ideal para chaves de API, strings de conexão, texto de certificados, entre outros. Os dados confidenciais devem ter no máximo 30.720 bytes (30 KB). |
|
Credencial do RAM |
Gerencie pares de AccessKey de usuários do RAM |
Selecione um usuário do RAM existente para gerenciar seu par de AccessKey. O nome da credencial é gerado automaticamente com base no nome de usuário do RAM. Suporta rotação automática. |
|
Credencial de banco de dados (RDS) |
Gerencie contas e senhas de bancos de dados RDS |
Associe a uma instância RDS para gerenciar contas de banco de dados. Suporta o modo de conta dupla para rotação contínua sem interrupção de conexão. |
|
Credencial de banco de dados (PolarDB) |
Gerencie contas e senhas de bancos de dados PolarDB |
Associe a instâncias PolarDB MySQL/PostgreSQL. Suporta apenas o modo de conta dupla e a criação de conta com um clique. |
|
Credencial de banco de dados (Redis) |
Gerencie contas e senhas de instâncias Redis/Tair |
Associe a instâncias Redis ou Tair. Suporta apenas o modo de conta dupla. O KMS cria automaticamente duas contas com permissões idênticas no banco de dados. |
|
Credencial do ECS |
Gerencie senhas de login ou pares de chaves SSH para instâncias ECS |
Associe a instâncias ECS e usuários do sistema. Suporta os formatos de senha e par de chaves SSH. |
Pré-requisitos
Crie uma chave simétrica na sua instância do KMS para criptografar as credenciais. A chave e a credencial devem pertencer à mesma instância do KMS. Para mais informações, consulte Create a key.
Etapa 1: Crie uma credencial
Ative a rotação automática ao criar uma credencial. O KMS atualiza periodicamente o valor da credencial para reduzir o risco de vazamentos. A seguir, veja como criar cada tipo de credencial.
Credencial genérica
Credenciais genéricas não suportam a configuração de rotação no momento da criação. Para rotacionar uma credencial genérica, consulte Rotate a generic secret.
Acesse o Key Management Service console. Na barra de navegação superior, selecione uma região. No painel de navegação à esquerda, escolha .
Na aba Customer-managed Secrets, clique na aba Type e, em seguida, clique em Generic Secrets.
-
Clique em Create Generic Secret na parte superior da lista à direita. Defina as seguintes configurações e clique em OK.
Parâmetro
Descrição
Secret Name
Nome personalizado da credencial. Deve ser exclusivo na região atual.
Secret Value
Selecione Secret Key/Value ou Plain Text e insira os dados confidenciais a serem armazenados. O valor deve ter no máximo 30.720 bytes (30 KB).
Initial Version
Número da versão inicial. Valor padrão: v1. Suporta valores personalizados.
CMK
Selecione a chave simétrica usada para criptografar o valor da credencial. A chave e a credencial devem pertencer à mesma instância do KMS.
ImportanteA chave e a credencial devem pertencer à mesma instância do KMS, e a chave deve ser simétrica. Para mais informações sobre as chaves simétricas suportadas pelo KMS, consulte Key types and specifications.
Se você usar um usuário ou função do RAM, ele deverá ter permissões para executar a operação GenerateDataKey usando a chave mestra de criptografia.
Description
Descrição opcional da credencial para identificação e gerenciamento.
Defina a política de acesso da credencial para controlar quais usuários ou funções do RAM podem lê-la ou modificá-la.
Selecione a política padrão primeiro e modifique-a posteriormente conforme necessário.
Credencial do RAM
Acesse o Key Management Service console. Na barra de navegação superior, selecione uma região. No painel de navegação à esquerda, escolha .
Na aba Customer-managed Secrets, clique na aba Type e, em seguida, clique em RAM Secrets.
-
Clique em Create RAM Secret na parte superior da lista à direita. Defina as seguintes configurações e clique em OK.
Parâmetro
Descrição
Select RAM User
Selecione o usuário do RAM cuja credencial você deseja gerenciar. O usuário deve ter pelo menos um par de AccessKey. O nome da credencial é gerado automaticamente com base no nome de usuário do RAM.
Se o usuário não tiver um par de AccessKey, crie um primeiro.
Secret Value
Insira o AccessKey secret. O valor deve ter no máximo 30.720 bytes (30 KB).
CMK
Selecione a chave simétrica usada para criptografar o valor da credencial. A chave e a credencial devem pertencer à mesma instância do KMS.
ImportanteA chave e a credencial devem pertencer à mesma instância do KMS, e a chave deve ser simétrica. Para mais informações sobre as chaves simétricas suportadas pelo KMS, consulte Key types and specifications.
Se você usar um usuário ou função do RAM, ele deverá ter permissões para executar a operação GenerateDataKey usando a chave mestra de criptografia.
Automatic Rotation
Selecione se deseja ativar a rotação automática. Quando ativada, o KMS atualiza periodicamente o valor da credencial para reduzir o risco de vazamentos.
Days (7 Days to 365 Days)
Defina este parâmetro apenas quando a rotação automática estiver ativada. Especifica o intervalo de rotação.
Description
Descrição opcional da credencial para identificação e gerenciamento.
Defina a política de acesso da credencial para controlar quais usuários ou funções do RAM podem lê-la ou modificá-la.
Selecione a política padrão primeiro e modifique-a posteriormente conforme necessário.
Credencial de banco de dados (RDS)
Apenas a opção Create Single Secret é suportada.
Acesse o Key Management Service console. Na barra de navegação superior, selecione uma região. No painel de navegação à esquerda, escolha .
Na aba Customer-managed Secrets, clique na aba Type e, em seguida, clique em Database Secrets.
-
Clique em Create Database Secret > Create Single Secret na parte superior da lista à direita. Defina as seguintes configurações e clique em OK.
Parâmetro
Descrição
Database Type
Selecione ApsaraDB RDS Secrets.
Secret Name
Nome personalizado da credencial. Deve ser exclusivo na região atual.
ApsaraDB RDS Instance
Selecione uma instância RDS na sua conta Alibaba Cloud.
Account Management
-
Manage Dual Accounts (Recomendado): Ideal para acesso programático ao banco de dados. O KMS gerencia duas contas com permissões idênticas para evitar interrupção de conexão durante a rotação.
-
Clique em Create Account para configurar o nome da conta, selecionar um banco de dados e especificar permissões.
Nota-
A criação e a autorização com um clique não criam a nova conta imediatamente. A conta é criada após a revisão e a confirmação das informações da credencial.
-
Para o RDS PostgreSQL, não é possível obter o nome do banco de dados durante a criação. Defina o DBName manualmente.
-
-
Clique em Import Existing Accounts para selecionar um nome de usuário e configurar a senha.
NotaRecomendamos definir a senha como a mesma usada ao criar a conta de usuário da instância RDS. Se o nome de usuário e a senha importados não coincidirem, será possível obter a conta e a senha corretas após a primeira rotação da credencial.
-
-
Manage Single Account: Ideal para contas privilegiadas ou cenários de hospedagem de contas de O&M manual. A versão atual da credencial pode ficar temporariamente indisponível logo após a redefinição da senha.
-
Clique em Create Account para configurar o nome da conta e selecionar o tipo de conta.
Suporta Standard Account e Privileged Account. Ao selecionar Standard Account, também é necessário selecionar um banco de dados e especificar permissões.
-
Clique na aba Import Existing Accounts para selecionar um nome de usuário e configurar a senha.
-
CMK
Selecione a chave simétrica usada para criptografar o valor da credencial. A chave e a credencial devem pertencer à mesma instância do KMS.
ImportanteA chave e a credencial devem pertencer à mesma instância do KMS, e a chave deve ser simétrica. Para mais informações sobre as chaves simétricas suportadas pelo KMS, consulte Key types and specifications.
Se você usar um usuário ou função do RAM, ele deverá ter permissões para executar a operação GenerateDataKey usando a chave mestra de criptografia.
Automatic Rotation
Selecione se deseja ativar a rotação automática. Quando ativada, o KMS atualiza periodicamente o valor da credencial para reduzir o risco de vazamentos.
Rotation Period
Defina este parâmetro apenas quando a rotação automática estiver ativada. Valores válidos: 6 horas a 365 dias.
Especifica o intervalo de rotação. O KMS atualiza periodicamente o valor da credencial com base nessa configuração.
Description
Descrição opcional da credencial para identificação e gerenciamento.
Defina a política de acesso da credencial para controlar quais usuários ou funções do RAM podem lê-la ou modificá-la.
Selecione a política padrão primeiro e modifique-a posteriormente conforme necessário.
-
Credencial de banco de dados (PolarDB)
Há suporte apenas para Create Single Secret, e somente para PolarDB MySQL/PostgreSQL com Create Account e Manage Dual Accounts. Não há suporte para Import Existing Accounts e Manage Single Account.
Acesse o Key Management Service console. Na barra de navegação superior, selecione uma região. No painel de navegação à esquerda, escolha .
Na aba Customer-managed Secrets, clique na aba Type e, em seguida, clique em Database Secrets.
-
Clique em Create Database Secret > Create Single Secret na parte superior da lista à direita. Defina as seguintes configurações e clique em OK.
Parâmetro
Descrição
Database Type
Selecione PolarDB Secret.
Secret Name
Nome personalizado da credencial. Deve ser exclusivo na região atual.
PolarDB Cluster
Selecione uma instância PolarDB na sua conta Alibaba Cloud.
Account Management
Manage Dual Accounts: Ideal para acesso programático ao banco de dados. O KMS cria duas contas padrão com permissões idênticas para evitar interrupção de conexão durante a rotação.
Create Account: Configure o nome da conta e as permissões. Há suporte apenas para Standard Account. Para MySQL, também é necessário selecionar um banco de dados e especificar permissões.
Nota-
A criação e a autorização com um clique não criam a nova conta imediatamente. A conta é criada após a revisão e a confirmação das informações da credencial.
-
O nome da conta deve ser exclusivo. Se o nome da conta já existir, não será possível hospedá-lo como uma credencial.
CMK
Selecione a chave simétrica usada para criptografar o valor da credencial. A chave e a credencial devem pertencer à mesma instância do KMS.
ImportanteA chave e a credencial devem pertencer à mesma instância do KMS, e a chave deve ser simétrica. Para mais informações sobre as chaves simétricas suportadas pelo KMS, consulte Key types and specifications.
Se você usar um usuário ou função do RAM, ele deverá ter permissões para executar a operação GenerateDataKey usando a chave mestra de criptografia.
Automatic Rotation
Selecione se deseja ativar a rotação automática. Quando ativada, o KMS atualiza periodicamente o valor da credencial para reduzir o risco de vazamentos.
Rotation Period
Defina este parâmetro apenas quando a rotação automática estiver ativada. Valores válidos: 6 horas a 365 dias.
Especifica o intervalo de rotação. O KMS atualiza periodicamente o valor da credencial com base nessa configuração.
Description
Descrição opcional da credencial para identificação e gerenciamento.
Defina a política de acesso da credencial para controlar quais usuários ou funções do RAM podem lê-la ou modificá-la.
Selecione a política padrão primeiro e modifique-a posteriormente conforme necessário.
-
Credencial de banco de dados (Redis)
Há suporte tanto para Create Single Secret quanto para Create Bulk Secrets. O exemplo a seguir usa Create Single Secret.
Acesse o Key Management Service console. Na barra de navegação superior, selecione uma região. No painel de navegação à esquerda, escolha .
Na aba Customer-managed Secrets, clique na aba Type e, em seguida, clique em Database Secrets.
-
Clique em Create Database Secret > Create Single Secret na parte superior da lista à direita. Defina as seguintes configurações e clique em OK.
Parâmetro
Descrição
Database Type
Selecione ApsaraDB for Redis/Tair Instance.
Secret Name
Nome personalizado da credencial. Deve ser exclusivo na região atual.
ApsaraDB for Redis/Tair Instance
Selecione uma instância Redis ou Tair na sua conta Alibaba Cloud.
Account Management
Há suporte apenas para Manage Dual Accounts.
Secret Value
Há suporte apenas para novas contas. Não é possível hospedar contas Redis/Tair existentes.
-
Account Name: Especifique um prefixo de nome de usuário. O KMS cria duas contas de banco de dados com permissões idênticas chamando uma API. Por exemplo, se você especificar
user, o KMS criaráusereuser_clone. -
Permissions: Defina como Read/Write ou Read-Only. Ambas as novas contas terão as mesmas permissões.
CMK
Selecione a chave simétrica usada para criptografar o valor da credencial. A chave e a credencial devem pertencer à mesma instância do KMS.
ImportanteA chave e a credencial devem pertencer à mesma instância do KMS, e a chave deve ser simétrica. Para mais informações sobre as chaves simétricas suportadas pelo KMS, consulte Key types and specifications.
Se você usar um usuário ou função do RAM, ele deverá ter permissões para executar a operação GenerateDataKey usando a chave mestra de criptografia.
Automatic Rotation
Selecione se deseja ativar a rotação automática. Quando ativada, o KMS atualiza periodicamente o valor da credencial para reduzir o risco de vazamentos.
Rotation Period
Defina este parâmetro apenas quando a rotação automática estiver ativada. Valores válidos: 6 horas a 365 dias.
Especifica o intervalo de rotação. O KMS atualiza periodicamente o valor da credencial com base nessa configuração.
Description
Descrição opcional da credencial para identificação e gerenciamento.
Defina a política de acesso da credencial para controlar quais usuários ou funções do RAM podem lê-la ou modificá-la.
Selecione a política padrão primeiro e modifique-a posteriormente conforme necessário.
-
Credencial do ECS
Acesse o Key Management Service console. Na barra de navegação superior, selecione uma região. No painel de navegação à esquerda, escolha .
Na aba Customer-managed Secrets, clique na aba Type e, em seguida, clique em ECS Secrets.
-
Clique em Create ECS Secret na parte superior da lista à direita. Defina as seguintes configurações e clique em OK.
Parâmetro
Descrição
Secret Name
Nome personalizado da credencial. Deve ser exclusivo na região atual.
Managed Instance
Selecione uma instância ECS na sua conta Alibaba Cloud.
Managed User
Insira o nome de um usuário existente na instância ECS, como
root(Linux) ouAdministrator(Windows).Initial Secret Value
O valor da credencial deve ter no máximo 30.720 bytes (30 KB).
-
Password: A senha de login do usuário na instância ECS.
-
Key pair: O par de chaves SSH usado para fazer login na instância ECS.
NotaConfigure o valor da credencial corretamente. Se o valor estiver incorreto, a senha ou o par de chaves recuperado do KMS não poderá ser usado para fazer login na instância ECS até a primeira rotação da credencial.
CMK
Selecione a chave simétrica usada para criptografar o valor da credencial. A chave e a credencial devem pertencer à mesma instância do KMS.
ImportanteA chave e a credencial devem pertencer à mesma instância do KMS, e a chave deve ser simétrica. Para mais informações sobre as chaves simétricas suportadas pelo KMS, consulte Key types and specifications.
Se você usar um usuário ou função do RAM, ele deverá ter permissões para executar a operação GenerateDataKey usando a chave mestra de criptografia.
Automatic Rotation
Selecione se deseja ativar a rotação automática. Quando ativada, o KMS atualiza periodicamente o valor da credencial para reduzir o risco de vazamentos.
Rotation Period
Defina este parâmetro apenas quando a rotação automática estiver ativada. Valores válidos: 1 hora a 365 dias.
Especifica o intervalo de rotação. O KMS atualiza periodicamente o valor da credencial com base nessa configuração.
Description
Descrição opcional da credencial para identificação e gerenciamento.
Defina a política de acesso da credencial para controlar quais usuários ou funções do RAM podem lê-la ou modificá-la.
Selecione a política padrão primeiro e modifique-a posteriormente conforme necessário.
-
Após a criação, a credencial aparece na lista de credenciais. Verifique se o nome e o tipo da credencial estão corretos e se o status é "Enabled".
Etapa 2: Recupere a credencial no seu aplicativo
Este exemplo usa o Alibaba Cloud SDK for Java para recuperar uma credencial dinamicamente.
Preparação
-
Prepare o ambiente de execução do SDK.
Requisito: Java 8 ou superior instalado.
Verificação: Execute
java -versionem um terminal para confirmar a versão. -
Instale o SDK. Adicione a seguinte dependência do Maven ao seu projeto usando o Alibaba Cloud SDK V2.0.
ImportanteRecomendamos o uso da versão mais recente. Acesse kms-20160120 para obter a versão mais recente e informações sobre o código-fonte.
<dependency> <groupId>com.aliyun</groupId> <artifactId>kms20160120</artifactId> <version>1.4.0</version> </dependency> -
Crie uma credencial de autenticação. O Alibaba Cloud SDK suporta vários métodos de autenticação. Este exemplo usa o par de AccessKey de um usuário do RAM.
Crie um par de AccessKey para um usuário do RAM no RAM console. Ignore esta etapa se você já tiver um par de AccessKey.
-
Conceda permissões ao usuário do RAM para acessar o KMS. Para recuperar valores de credenciais, anexe as políticas de sistema
AliyunKMSSecretUserAccesseAliyunKMSCryptoUserAccess. Para mais informações, consulte Configure policies.NotaO KMS fornece dois métodos de configuração de permissões de acesso:
Políticas baseadas em identidade: Controlam o acesso associando identidades às permissões correspondentes. Para mais informações, consulte Identity-based policy configuration.
Políticas baseadas em recursos: Incluem políticas de chave e políticas de credencial associadas diretamente aos recursos para definir regras de acesso para recursos específicos. Para mais informações, consulte Key policy configuration e Credential policy configuration.
-
Obtenha o certificado CA da sua instância do KMS.
Na página Instances, clique na aba Software Key Management ou Hardware Key Management e, em seguida, selecione a instância do KMS de destino.
-
Clique no ID da instância ou em Details na coluna Actions. Na página Details, na seção Instance CA Certificate, clique em Download e salve o certificado com segurança.
NotaO arquivo de certificado CA baixado é nomeado como
PrivateKmsCA_kst-******.pempor padrão.
-
Obtenha o endpoint VPC da sua instância do KMS.
Na página Instances, clique na aba Software Key Management ou Hardware Key Management e, em seguida, selecione a instância do KMS de destino.
Clique no ID da instância para acessar a página de detalhes e visualizar o Instance VPC Endpoint.
Recupere a credencial
-
Inicialize o cliente do SDK.
NotaAntes de executar o código de exemplo, substitua os seguintes placeholders pelos valores reais:
<VPC endpoint>: Substitua pelo endpoint VPC da sua instância do KMS.<CA certificate>: Substitua pelo conteúdo real do certificado CA da instância do KMS.<SecretName>: Substitua pelo nome da credencial criada na Etapa 1.
public static com.aliyun.kms20160120.Client createClient() throws Exception { // Code leaks may cause AccessKey compromise and threaten the security of all resources under your account. The following sample code is for reference only. // We recommend that you use STS for more secure authentication. For more information, see https://www.alibabacloud.com/help/document_detail/378657.html. com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config() // Required. Make sure the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is set. .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")) // Required. Make sure the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is set. .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")); // Enter the VPC endpoint of your KMS instance, for example, kst-hzz65f176a0ogplgq****.cryptoservice.kms.aliyuncs.com config.endpoint = "<VPC endpoint>"; // Enter the CA certificate content of your KMS instance config.ca = "<CA certificate>"; return new com.aliyun.kms20160120.Client(config); } -
Chame a operação
GetSecretValuepara recuperar o valor da credencial.// This file is auto-generated, don't edit it. Thanks. package com.aliyun.sample; import com.aliyun.tea.*; public class Sample { public static com.aliyun.kms20160120.Client createClient() throws Exception { // Code leaks may cause AccessKey compromise and threaten the security of all resources under your account. The following sample code is for reference only. // We recommend that you use STS for more secure authentication. For more information, see https://www.alibabacloud.com/help/document_detail/378657.html. com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config() // Required. Make sure the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is set. .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")) // Required. Make sure the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is set. .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")); // Enter the VPC endpoint of your KMS instance, for example, kst-hzz65f176a0ogplgq****.cryptoservice.kms.aliyuncs.com config.endpoint = "<VPC endpoint>"; // Enter the CA certificate content of your KMS instance config.ca = "<CA certificate>"; return new com.aliyun.kms20160120.Client(config); } public static void main(String[] args_) throws Exception { java.util.List<String> args = java.util.Arrays.asList(args_); com.aliyun.kms20160120.Client client = Sample.createClient(); com.aliyun.kms20160120.models.GetSecretValueRequest getSecretValueRequest = new com.aliyun.kms20160120.models.GetSecretValueRequest() .setSecretName("<SecretName>"); com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions(); try { // Replace with your own logic to process the API response client.getSecretValueWithOptions(getSecretValueRequest, runtime); } catch (TeaException error) { // Print for demonstration only. Handle exceptions carefully in production. // Error message System.out.println(error.getMessage()); // Diagnostic URL System.out.println(error.getData().get("Recommend")); com.aliyun.teautil.Common.assertAsString(error.message); } catch (Exception _error) { TeaException error = new TeaException(_error.getMessage(), _error); // Print for demonstration only. Handle exceptions carefully in production. // Error message System.out.println(error.getMessage()); // Diagnostic URL System.out.println(error.getData().get("Recommend")); com.aliyun.teautil.Common.assertAsString(error.message); } } }
Após uma chamada bem-sucedida, o SDK retorna um objeto de resposta contendo campos como SecretName e SecretData. Imprima response.body.secretData para visualizar o valor da credencial e use-o no seu aplicativo para acessar o serviço correspondente e verificar a conectividade.