O Secrets Manager Client é um wrapper personalizado desenvolvido sobre o KMS OpenAPI e as APIs de instância do KMS. Ele oferece cache e atualização automática de segredos para integração com aplicações, aumentando a estabilidade do negócio e simplificando o fluxo de trabalho dos desenvolvedores. O cliente suporta a recuperação de valores de segredos para todos os tipos de segredo.
Secrets Manager Client SDK
O Secrets Manager Client SDK encapsula as APIs do KMS e incorpora as melhores práticas e padrões de design para cache de segredos, facilitando a integração do gerenciamento de segredos nos seus sistemas de aplicação. O SDK oferece as seguintes vantagens:
Integre o gerenciamento de segredos às suas aplicações com apenas uma linha de código para ler valores de segredos.
Cache e atualização de segredos integrados diretamente na sua aplicação.
Lógica de nova tentativa automática para erros de API, com tratamento inteligente de erros no lado do servidor.
Arquitetura baseada em plugins que permite personalizar o cache, a lógica de nova tentativa e outros módulos.
A Alibaba Cloud também disponibiliza o KMS Instance SDK e o Alibaba Cloud SDK, que também podem ser usados para recuperar valores de segredos. Para mais informações, consulte SDK references.
Para executar operações de gerenciamento em segredos, você deve usar o Alibaba Cloud SDK.
Versões do SDK
O SDK 2.0 já está disponível. Recomendamos usar o SDK 2.0. A tabela a seguir compara o SDK 1.0 e o SDK 2.0.
-
Suporte a credenciais
Credential Type
SDK 1.0
SDK 2.0
AccessKey
OIDC Role Arn
ECS RAM Role
RAM Role Arn
NotaO SDK 2.0 não suporta a leitura de informações de RAM Role ARN a partir de variáveis de ambiente padrão e arquivos de configuração. Você deve usar a abordagem de codificação direta. Se precisar desse recurso, entre em contato com o suporte técnico.
Client Key
-
Recursos de segurança
Feature
SDK 1.0
SDK 2.0
Built-in CA Certificate
Fluxo de autenticação do SDK
O Secrets Manager Client realiza a autenticação por meio de credenciais de acesso. O processo de autenticação varia levemente dependendo do tipo de gateway ao qual você se conecta. O SDK detecta automaticamente os parâmetros configurados e seleciona o gateway adequado. Com esse mecanismo de autenticação flexível, não é necessário configurar manualmente o tipo de gateway. As etapas de autenticação são as seguintes:
Defina as variáveis de ambiente ou prepare o arquivo de configuração, garantindo que todas as informações de credencial necessárias estejam incluídas. Os parâmetros diferem entre gateways dedicados e gateways compartilhados.
Inicialize o cliente. O SDK lê a configuração automaticamente e identifica o tipo de gateway.
Após a conclusão da autenticação, prossiga com as operações do gateway.
Escopo
Tipos de segredo suportados: segredo genérico, segredo RAM, segredo ECS, segredo de banco de dados.
Linguagens de programação suportadas: Java (Java 8 ou superior), Python, Go, Node.js.
Instalar o Secrets Manager Client
As instruções a seguir mostram como instalar o SDK 2.0. Para instalar o SDK 1.0, consulte os respectivos repositórios de código-fonte do SDK.
Java
Instale o Secrets Manager Client no seu projeto usando Maven.
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>alibabacloud-secretsmanager-client-v2</artifactId>
<version>x.x.x</version>
</dependency>
Use a versão mais recente do SDK 2.0 para obter os recursos e otimizações mais atuais. Acesse alibabacloud-secretsmanager-client-java-v2 para consultar o código de exemplo e o código-fonte do SDK 2.0. Para o SDK 1.0, acesse alibabacloud-secretsmanager-client-java.
Python
Instale o Secrets Manager Client usando pip.
# If the following command fails, replace pip with pip3
pip install alibabacloud_secretsmanager_client_v2
A instalação do Secrets Manager Client Python SDK V2 requer Python 3.7 ou superior. Execute
python3 --versionpara verificar a versão atual. Se a versão for inferior a 3.7, atualize o Python antes de executar o comando de instalação.Use o SDK 2.0 para obter os recursos e otimizações mais atuais. Acesse aliyun-secretsmanager-client-python-v2 para consultar o código de exemplo e o código-fonte do SDK 2.0. Para o SDK 1.0, acesse aliyun-secretsmanager-client-python.
Go
Instale o Secrets Manager Client usando o comando go get.
go get -u github.com/aliyun/alibabacloud-secretsmanager-client-go-v2
Para Go, a dependência
alibaba-cloud-sdk-godeve ser anterior à V1.63.0. Verifique o arquivogo.modpara confirmar a versão e evitar problemas de compatibilidade.Use o SDK 2.0 para obter os recursos e otimizações mais atuais. Acesse alibabacloud-secretsmanager-client-go-v2 para consultar o código de exemplo e o código-fonte do SDK 2.0. Para o SDK 1.0, acesse aliyun-secretsmanager-client-go.
Node.js
Instale o Secrets Manager Client usando npm ou yarn.
-
npm
npm install alibabacloud-secretsmanager-client-v2 -
yarn
yarn add alibabacloud-secretsmanager-client-v2
A instalação do Secrets Manager Client SDK V2 requer Node.js 16.0.0 ou superior.
Use o SDK 2.0 para obter os recursos e otimizações mais atuais. Acesse alibabacloud-secretsmanager-client-nodejs-v2 para consultar o código de exemplo e o código-fonte do SDK 2.0.
Configurar credenciais de acesso
ECS RAM Role
Etapa 1: Criar uma função RAM e configurar permissões
Uma função RAM de instância ECS permite obter uma credencial de acesso temporária (token STS) dentro de uma instância ECS para chamar operações de API do KMS, sem a necessidade de configurar um par de AccessKey.
Para mais informações, consulte Instance RAM roles.
-
Faça login no RAM console e crie uma função RAM para um service Alibaba Cloud confiável.
Tipo de entidade confiável: selecione Elastic Compute Service.
Entidade confiável: selecione Elastic Compute Service (ECS).
-
Conceda permissões à função RAM para acessar o KMS.
-
Método 1: Configure uma política baseada em identidade
Na coluna Actions da função RAM, clique em Grant Permission para anexar uma política de permissão de sistema integrada do KMS à função RAM. Para mais informações sobre as políticas de permissão de sistema do KMS, consulte System policies for KMS.
NotaTambém é possível criar políticas de permissão personalizadas. Para mais informações, consulte Create a custom policy.
-
Método 2: Configure uma política baseada em recurso
O KMS oferece suporte a políticas baseadas em recurso que concedem permissões de acesso para chaves e segredos individuais. Use essas políticas para controlar quais contas Alibaba Cloud, usuários RAM e funções RAM podem gerenciar ou usar chaves e segredos do KMS. Para mais informações, consulte Key policies e Secret policies.
-
Faça login no ECS console e anexe a função RAM a uma instância ECS.
Etapa 2: Definir variáveis de ambiente ou arquivo de configuração
O SDK oferece suporte aos dois métodos a seguir para obter credenciais de acesso:
-
Variáveis de ambiente: os métodos de configuração variam conforme o sistema operacional. Para mais informações, consulte definir credenciais de acesso em variáveis de ambiente.
AvisoNão modifique os nomes dos parâmetros. Caso contrário, o SDK não conseguirá reconhecê-los.
-
Arquivo de configuração: o arquivo de configuração padrão é
secretsmanager.properties(o nome do arquivo não pode ser alterado). Para garantir que sua aplicação carregue o arquivo de configuração corretamente, coloque-o no diretório de configuração adequado. Os diretórios de configuração comuns para diferentes linguagens incluem:Java: coloque o arquivo de configuração no diretório
src/main/resourcespara que seja incluído automaticamente no classpath durante a compilação.Go: coloque o arquivo de configuração no diretório raiz do projeto ou em um diretório
configdedicado e carregue-o via código.Python: coloque o arquivo de configuração no diretório do projeto ou em um diretório
configespecífico, e use um método adequado (comoos.pathoupkg_resources) para carregá-lo.
Se você utilizar um arquivo de configuração personalizado, especifique o caminho do arquivo (
#customConfigFileName#) durante a inicialização do cliente.
Configuration file
-
Dedicated gateway
# Credential type credentials_type=ecs_ram_role # ECS RAM Role name credentials_role_name=#credentials_role_name# # Associated KMS region and instance endpoint cache_client_region_id=[{"regionId":"<regionId>","endpoint":"<your_kms_instance_id>.cryptoservice.kms.aliyuncs.com"}] -
Shared gateway
# Credential type credentials_type=ecs_ram_role # ECS RAM Role name credentials_role_name=#credentials_role_name# # Associated KMS region cache_client_region_id=[{"regionId":"#regionId#"}] -
Shared gateway (VPC)
# Credential type credentials_type=ecs_ram_role # ECS RAM Role name credentials_role_name=#credentials_role_name# # Associated KMS region and VPC Endpoint cache_client_region_id=[{"regionId":"#regionId#","endpoint":"kms-vpc.#regionId#.aliyuncs.com","vpc":"true"}]
Environment variables
|
Parameter |
Value |
|
|
Valor fixo: |
|
|
O nome da função RAM. |
|
|
|
AccessKey
Etapa 1: Criar um AccessKey e configurar permissões
Por padrão, uma conta Alibaba Cloud possui permissões de administrador para todos os recursos, o que não pode ser modificado. Para garantir a segurança dos recursos, recomendamos usar um usuário RAM para criar um par de AccessKey e conceder apenas as permissões necessárias.
Faça login no RAM console. Na página Users, clique em no nome do usuário RAM de destino.
Na aba Secret Management, na seção AccessKey, clique em Create AccessKey.
-
Conceda permissões ao usuário RAM para acessar o KMS.
-
Método 1: Configure uma política baseada em identidade
Na coluna Actions do usuário RAM, clique em Grant Permission para anexar uma política de permissão de sistema integrada do KMS ao usuário RAM. Para mais informações sobre as políticas de permissão de sistema do KMS, consulte System policies for KMS.
NotaTambém é possível criar políticas de permissão personalizadas. Para mais informações, consulte Create a custom policy.
-
Método 2: Configure uma política baseada em recurso
O KMS oferece suporte a políticas baseadas em recurso que concedem permissões de acesso para chaves e segredos individuais. Use essas políticas para controlar quais contas Alibaba Cloud, usuários RAM e funções RAM podem gerenciar ou usar chaves e segredos do KMS. Para mais informações, consulte Key policies e Secret policies.
-
Etapa 2: Definir variáveis de ambiente ou arquivo de configuração
O SDK oferece suporte aos dois métodos a seguir para obter credenciais de acesso:
-
Variáveis de ambiente: os métodos de configuração variam conforme o sistema operacional. Para mais informações, consulte definir credenciais de acesso em variáveis de ambiente.
AvisoNão modifique os nomes dos parâmetros. Caso contrário, o SDK não conseguirá reconhecê-los.
-
Arquivo de configuração: o arquivo de configuração padrão é
secretsmanager.properties(o nome do arquivo não pode ser alterado). Para garantir que sua aplicação carregue o arquivo de configuração corretamente, coloque-o no diretório de configuração adequado. Os diretórios de configuração comuns para diferentes linguagens incluem:Java: coloque o arquivo de configuração no diretório
src/main/resourcespara que seja incluído automaticamente no classpath durante a compilação.Go: coloque o arquivo de configuração no diretório raiz do projeto ou em um diretório
configdedicado e carregue-o via código.Python: coloque o arquivo de configuração no diretório do projeto ou em um diretório
configespecífico, e use um método adequado (comoos.pathoupkg_resources) para carregá-lo.
Se você utilizar um arquivo de configuração personalizado, especifique o caminho do arquivo (
#customConfigFileName#) durante a inicialização do cliente.
Configuration File
-
Dedicated gateway
# Credential type credentials_type=ak # AccessKey ID credentials_access_key_id=#access_key_id# # AccessKey Secret credentials_access_secret=#access_key_secret# # Use the following configuration for dedicated KMS instance gateway cache_client_region_id=[{"regionId":"<regionId>","endpoint":"<your_kms_instance_id>.cryptoservice.kms.aliyuncs.com"}] -
Shared gateway
# Credential type credentials_type=ak # AccessKey ID credentials_access_key_id=#access_key_id# # AccessKey Secret credentials_access_secret=#access_key_secret# # Associated KMS region cache_client_region_id=[{"regionId":"#regionId#"}] -
Shared gateway (VPC)
# Credential type credentials_type=ak # AccessKey ID credentials_access_key_id=#access_key_id# # AccessKey Secret credentials_access_secret=#access_key_secret# # Associated KMS region and VPC Endpoint cache_client_region_id=[{"regionId":"#regionId#","endpoint":"kms-vpc.#regionId#.aliyuncs.com","vpc":"true"}]
Environment variables
|
Parameter |
Value |
|
|
Valor fixo: |
|
|
O AccessKey ID. |
|
|
O AccessKey Secret. |
|
|
|
OIDC Role ARN
Apenas o SDK 2.0 oferece suporte a credenciais OIDC Role ARN. O SDK 1.0 não oferece suporte.
Etapa 1: Crie um ARN de função OIDC e configure as permissões
-
Crie um provedor OIDC
Acesse o RAM console como administrador RAM. Na página SSO, clique em na aba Role-based SSO.
Na aba OIDC, clique em Create IdP.
Na página Create IdP, configure as informações do provedor. Para mais informações, consulte Manage OIDC providers.
-
Obtenha e salve as informações de identidade OIDC (ARN e Client ID)
Acesse a página SSO e, na aba IdP, clique em no nome do provedor OIDC desejado.
Na página de detalhes do IdP, visualize o ARN e o Client ID.
-
Crie e autorize uma função RAM para o provedor OIDC
Acesse o RAM console como administrador RAM e navegue até a página .
Clique em Create Role. No canto superior direito da página de criação, clique em Switch to Policy Editor.
-
No editor de políticas, especifique o provedor OIDC. Selecione o editor visual e configure os parâmetros conforme descrito abaixo.
NotaPara informações sobre outros modos, consulte Create a RAM role for an OIDC identity provider.
Na seção Select Trusted Entity, selecione IdP.
-
Na seção Edit Trust Policy, configure os seguintes parâmetros.
IdP Type: Selecione OIDC.
IdP: Selecione o provedor OIDC criado anteriormente.
-
Conceda permissões de acesso ao KMS para a função OIDC RAM
-
Método 1: Configure uma política baseada em identidade
Volte à página de lista Identities > Roles e clique em Grant Permission na coluna Actions da função OIDC desejada para associar diretamente uma política de permissão de sistema integrada do KMS à função RAM. Para mais informações sobre as políticas de permissão de sistema integradas do KMS, consulte Key Management Service System Permission Policy Reference.
NotaPolíticas de permissão personalizadas também são compatíveis. Para mais informações, consulte Create a custom policy.
-
Método 2: Configure uma política baseada em recursos
O KMS suporta políticas baseadas em recursos que concedem permissões de acesso para chaves e segredos individuais. Use essas políticas para controlar quais contas Alibaba Cloud, usuários RAM e funções RAM podem gerenciar ou usar as chaves e segredos do KMS. Para mais informações, consulte Key policies e Secret policies.
-
-
Obtenha o ARN da função OIDC de destino
Na página , clique em no nome da função desejada.
-
Na página de detalhes da função, localize o ARN da função OIDC na seção ARN.
NotaO Role ARN é o ARN da função RAM a ser assumida. O formato é
acs:ram::$accountID:role/$roleName, onde$accountIDé o ID da conta Alibaba Cloud e$roleNameé o nome da função RAM.
-
Emita e salve o arquivo de token OIDC
O Alibaba Cloud não suporta login OIDC direto pelo console, mas é possível concluir o processo de SSO via OIDC de forma programática. A obtenção de um token OIDC envolve um fluxo OAuth, geralmente por meio de um processo padrão OAuth 2.0 do provedor de identidade OIDC (IdP).
Por exemplo: quando uma aplicação é executada em um cluster ACK com RRSA ativado, o cluster cria e monta automaticamente o arquivo de token OIDC da service account correspondente para o pod da aplicação.
Etapa 2: Defina variáveis de ambiente ou arquivo de configuração
O SDK suporta os dois métodos a seguir para obter credenciais de acesso:
-
Variáveis de ambiente: Os métodos de configuração variam conforme o sistema operacional. Para mais informações, consulte a seção sobre como definir credenciais de acesso em variáveis de ambiente.
AvisoNão modifique os nomes dos parâmetros; caso contrário, o SDK não os reconhecerá.
-
Arquivo de configuração: O arquivo de configuração padrão é
secretsmanager.properties(o nome do arquivo não pode ser alterado). Para garantir que sua aplicação carregue o arquivo de configuração corretamente, coloque-o no diretório de configuração adequado. Os diretórios comuns para diferentes linguagens incluem:Java: Coloque o arquivo de configuração no diretório
src/main/resourcespara que seja incluído automaticamente no classpath durante a compilação.Go: Coloque o arquivo de configuração no diretório raiz do projeto ou em um diretório dedicado
config, e carregue-o via código.Python: Coloque o arquivo de configuração no diretório do projeto ou em um diretório específico
config, e utilize um método adequado (comoos.pathoupkg_resources) para carregá-lo.
Ao usar um arquivo de configuração personalizado, especifique o caminho do arquivo (
#customConfigFileName#) durante a inicialização do cliente.
Configuration file
-
Dedicated gateway
# Credential type credentials_type=oidc_role_arn # Role ARN (optional. If not specified, the Default credential provider chain is used) credentials_role_arn=<role_arn> # OIDC provider ARN (optional. If not specified, the Default credential provider chain is used) credentials_oidc_provider_arn=<oidc_provider_arn> # OIDC token file path (optional. If not specified, the Default credential provider chain is used) credentials_oidc_token_file_path=<oidc_token_file_path> # KMS region and instance endpoint cache_client_region_id=[{"regionId":"<regionId>","endpoint":"<your_kms_instance_id>.cryptoservice.kms.aliyuncs.com"}] -
Shared gateway
# Credential type credentials_type=oidc_role_arn # Role ARN (optional. If not specified, the Default credential provider chain is used) credentials_role_arn=<role_arn> # OIDC provider ARN (optional. If not specified, the Default credential provider chain is used) credentials_oidc_provider_arn=<oidc_provider_arn> # OIDC token file path (optional. If not specified, the Default credential provider chain is used) credentials_oidc_token_file_path=<oidc_token_file_path> # Associated KMS region cache_client_region_id=[{"regionId":"<regionId>"}] -
Shared gateway (VPC)
# Credential type credentials_type=oidc_role_arn # Role ARN (optional. If not specified, the Default credential provider chain is used) credentials_role_arn=<role_arn> # OIDC provider ARN (optional. If not specified, the Default credential provider chain is used) credentials_oidc_provider_arn=<oidc_provider_arn> # OIDC token file path (optional. If not specified, the Default credential provider chain is used) credentials_oidc_token_file_path=<oidc_token_file_path> # Associated KMS region and VPC Endpoint cache_client_region_id=[{"regionId":"#regionId#","endpoint":"kms-vpc.#regionId#.aliyuncs.com","vpc":"true"}]
Environment variables
|
Parameter |
Value |
|
|
Valor fixo: |
|
|
O ARN da função RAM para o provedor de identidade OIDC. Opcional. Se não especificado, o Default credential provider chain será utilizado. |
|
|
O ARN do provedor de identidade OIDC. Opcional. Se não especificado, o Default credential provider chain será utilizado. |
|
|
O caminho relativo ou absoluto para o arquivo que armazena o token OIDC. Opcional. Se não especificado, o Default credential provider chain será utilizado. |
|
|
|
AK+RamRoleArn
Apenas o SDK 1.0 suporta a leitura de informações de RAM Role ARN a partir de variáveis de ambiente padrão e arquivos de configuração. O SDK 2.0 não oferece esse suporte. Caso precise dessa funcionalidade com o SDK 2.0, entre em contato com o suporte técnico.
Etapa 1: Crie um ARN de função RAM e configure as permissões
Usuários RAM ou cloud services podem assumir uma função para obter permissões temporárias (token STS) em vez de utilizar chaves de longo prazo, o que reduz o risco de vazamento de chaves. Por exemplo, em uma tarefa temporária de processamento de dados, um usuário RAM ou cloud service assume temporariamente uma função com um RamRoleArn específico. Após a conclusão da tarefa, as permissões da função são revogadas, minimizando o risco de exposição.
-
Crie um par de AccessKey para o usuário
Acesse o RAM console. No painel de navegação à esquerda, escolha . Na página Users, clique em no nome do usuário RAM desejado.
Associe a política de sistema
AliyunSTSAssumeRoleAccessou uma política personalizada que inclua a açãosts:AssumeRoleao usuário RAM.Na aba Secret Management, na seção AccessKey, clique em Create AccessKey.
-
Crie e autorize uma função RAM:
No painel de navegação à esquerda, escolha . Na página Roles, clique em Create Role. Para mais informações, consulte Create a RAM role.
-
Conceda permissões de acesso ao KMS para a função RAM.
-
Método 1: Configure uma política baseada em identidade
Na coluna Actions da função RAM, clique em Grant Permission para associar uma política de permissão de sistema integrada do KMS à função RAM. Para mais informações sobre as políticas de permissão de sistema para o KMS, consulte System policies for KMS.
NotaPolíticas de permissão personalizadas também são compatíveis. Para mais informações, consulte Create a custom policy.
-
Método 2: Configure uma política baseada em recursos
O KMS suporta políticas baseadas em recursos que concedem permissões de acesso para chaves e segredos individuais. Use essas políticas para controlar quais contas Alibaba Cloud, usuários RAM e funções RAM podem gerenciar ou usar as chaves e segredos do KMS. Para mais informações, consulte Key policies e Secret policies.
-
-
Obtenha o RamRoleArn da função RAM de destino. Para mais informações, consulte View the information about a RAM role.
No painel de navegação à esquerda, escolha . Na página Roles, clique em no nome da função desejada.
-
Na página de detalhes da função, localize o RamRoleArn na seção ARN.
NotaO RamRoleArn é o Alibaba Cloud Resource Name (ARN) da função RAM a ser assumida. O formato é
acs:ram::$accountID:role/$roleName, onde$accountIDé o ID da conta Alibaba Cloud e$roleNameé o nome da função RAM.
Passo 2: Defina variáveis de ambiente ou arquivo de configuração
O SDK suporta os dois métodos a seguir para obter credenciais de acesso:
-
Variáveis de ambiente: Os métodos de configuração variam de acordo com o sistema operacional. Para mais informações, consulte como definir credenciais de acesso em variáveis de ambiente.
AvisoNão modifique os nomes dos parâmetros. Caso contrário, o SDK não conseguirá reconhecê-los.
-
Arquivo de configuração: O arquivo de configuração padrão é
secretsmanager.properties(o nome do arquivo não pode ser alterado). Para garantir que sua aplicação carregue o arquivo de configuração corretamente, coloque-o no diretório de configuração adequado. Os diretórios de configuração mais comuns por linguagem são:Java: Coloque o arquivo de configuração no diretório
src/main/resourcespara que ele seja incluído automaticamente no classpath durante a compilação.Go: Coloque o arquivo de configuração no diretório raiz do projeto ou em um diretório dedicado
config, e então carregue-o via código.Python: Coloque o arquivo de configuração no diretório do projeto ou em um diretório específico
config, e utilize um método adequado (comoos.pathoupkg_resources) para carregá-lo.
Se você utilizar um arquivo de configuração personalizado, especifique o caminho do arquivo (
#customConfigFileName#) durante a inicialização do cliente.
Configuration File
-
Dedicated Gateway
# Credential type credentials_type=ram_role # Role session name credentials_role_session_name=#role_session_name# # Role ARN credentials_role_arn=#role_arn# # AccessKey ID credentials_access_key_id=#access_key_id# # AccessKey Secret credentials_access_secret=#access_key_secret# # Use the following configuration for dedicated KMS instance gateway cache_client_region_id=[{"regionId":"<regionId>","endpoint":"<your_kms_instance_id>.cryptoservice.kms.aliyuncs.com"}] -
Shared gateway
# Credential type credentials_type=ram_role # Role session name credentials_role_session_name=#role_session_name# # Role ARN credentials_role_arn=#role_arn# # AccessKey ID credentials_access_key_id=#access_key_id# # AccessKey Secret credentials_access_secret=#access_key_secret# # Associated KMS region cache_client_region_id=[{"regionId":"#regionId#"}] -
Shared gateway (VPC)
# Credential type credentials_type=ram_role # Role session name credentials_role_session_name=#role_session_name# # Role ARN credentials_role_arn=#role_arn# # AccessKey ID credentials_access_key_id=#access_key_id# # AccessKey Secret credentials_access_secret=#access_key_secret# # Associated KMS region and VPC Endpoint cache_client_region_id=[{"regionId":"#regionId#","endpoint":"kms-vpc.#regionId#.aliyuncs.com","vpc":"true"}]
Environment variables
|
Parameter |
Value |
|
|
|
|
|
O nome da sessão da função RAM. |
|
|
O ARN da função RAM. |
|
|
O AccessKey ID. |
|
|
O AccessKey Secret. |
|
|
|
ClientKey (Deprecated)
Somente o SDK 1.0 suporta o tipo de credencial ClientKey. O SDK 2.0 não oferece suporte a esse tipo.
Shared gateway
Dedicated gateway
Etapa 1: Criar uma ClientKey
É possível criar uma ClientKey usando o modo Quick Create ou Standard Create. Para obter mais informações sobre ClientKeys, consulte Application access points e Create an application access point.
-
Método 1: Quick Create
Este método é conveniente e eficiente, sendo indicado para testes rápidos e desenvolvimento. A credencial de acesso criada dessa forma tem acesso total a todos os recursos da instância do KMS.
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 Application Access, clique em Create AAP. No painel Create AAP, configure os parâmetros.
Parâmetro
Descrição
Mode
Selecione Quick Creation.
Scope (KMS Instance)
Selecione a instância do KMS que a sua aplicação precisa acessar.
Application Access Point Name
Insira um nome para o ponto de acesso da aplicação.
Authentication Method
Este campo está definido como ClientKey e não pode ser alterado.
Encryption Algorithm
Selecione o algoritmo de criptografia usado para criptografar a ClientKey. Valores válidos: TripleDES-CBC e RC2-CBC (padrão).
NotaO RC2-CBC funciona na maioria dos ambientes e é recomendado. Caso o seu ambiente tenha requisitos de algoritmo mais restritivos e não seja compatível com RC2-CBC, selecione TripleDES-CBC.
Default Permission Policy
O valor é
key/secret/e não pode ser alterado. Isso significa que a aplicação pode acessar todas as chaves e segredos na instância do KMS especificada. -
Clique em OK. O navegador baixa automaticamente a ClientKey, que inclui os seguintes arquivos:
Credential (ClientKeyContent): O nome de arquivo padrão é
clientKey_****.json.Senha da credencial (ClientKeyPassword): O nome de arquivo padrão é
clientKey_****_Password.txt.
-
Método 2: Standard Create
Se você precisar configurar permissões de acesso granulares para recursos, recomendamos usar o método Standard Create.
-
Siga as instruções do Standard Create em Create an application access point para criar uma ClientKey destinada ao acesso ao gateway dedicado. Os parâmetros principais estão descritos abaixo:
Ao configurar as regras de rede, selecione Private para o tipo de rede.
Ao configurar o escopo da regra de permissão, selecione o KMS Instance ID correspondente.
-
Após a criação, o navegador baixa automaticamente a ClientKey, que inclui:
Credential (ClientKeyContent): O arquivo é nomeado
clientKey_****.jsonpor padrão.Senha da credencial (ClientKeyPassword): O arquivo é nomeado
clientKey_****_Password.txtpor padrão.
-
Etapa 2: Configure as variáveis de ambiente ou o arquivo de configuração
-
Variáveis de ambiente: os métodos de configuração variam conforme o sistema operacional. Para obter mais informações, consulte as instruções para definir credenciais de acesso em variáveis de ambiente.
AvisoNão modifique os nomes dos parâmetros. Caso contrário, o SDK não conseguirá reconhecê-los.
-
Arquivo de configuração: o arquivo de configuração padrão é
secretsmanager.properties(o nome do arquivo não pode ser alterado). Para garantir que a aplicação carregue o arquivo de configuração corretamente, coloque-o no diretório de configuração adequado. Os diretórios de configuração mais comuns para cada linguagem são:Java: Coloque o arquivo de configuração no diretório
src/main/resourcespara que seja incluído automaticamente no classpath durante a compilação.Go: Coloque o arquivo de configuração no diretório raiz do projeto ou em um diretório
configdedicado e carregue-o via código.Python: Coloque o arquivo de configuração no diretório do projeto ou em um diretório
configespecífico e utilize um método apropriado (comoos.pathoupkg_resources) para carregá-lo.
Se você usar um arquivo de configuração personalizado, especifique o caminho do arquivo (
#customConfigFileName#) durante a inicialização do cliente.
Arquivo de configuração
Abordagem 1: Configure o caminho do arquivo
cache_client_dkms_config_info=[{"regionId":"<your_dkms_region_id>","endpoint":"<your_dkms_endpoint>","passwordFromFilePath":"<your_password_file_path>","clientKeyFile":"<your_client_key_file_path>","ignoreSslCerts":false,"caFilePath":"<your_ca_certificate_file_path>"}]
Abordagem 2: Configure a senha via variável de ambiente
cache_client_dkms_config_info=[{"regionId":"<your_dkms_region_id>","endpoint":"<your_dkms_endpoint>","passwordFromEnvVariable":"<YOUR_PASSWORD_ENV_VARIABLE>","clientKeyFile":"<your_client_key_file_path>","ignoreSslCerts":false,"caFilePath":"<your_ca_certificate_file_path>"}]
Environment variables
O SDK oferece suporte a duas abordagens para configurar a senha da credencial ClientKey:
-
Abordagem 1: Configure o caminho do arquivo de senha da ClientKey
Parâmetro
Valor
cache_client_dkms_config_infoFormato:
[{"regionId":"<your_dkms_region_id>","endpoint":"<your_dkms_endpoint>","passwordFromFilePath":"<your_password_file_path>","clientKeyFile":"<your_client_key_file_path>","ignoreSslCerts":false,"caFilePath":"<your_ca_certificate_file_path>"}]. -
Abordagem 2: Configure o conteúdo da senha da ClientKey via variável de ambiente
Parâmetro
Valor
cache_client_dkms_config_infoFormato:
[{"regionId":"<your_dkms_region_id>","endpoint":"<your_dkms_endpoint>","passwordFromEnvVariable":"<YOUR_PASSWORD_ENV_VARIABLE>","clientKeyFile":"<your_client_key_file_path>","ignoreSslCerts":false,"caFilePath":"<your_ca_certificate_file_path>"}].
Parâmetros de cache_client_dkms_config_info
|
Parâmetro |
Descrição |
|
|
O ID da região onde a instância do KMS está implantada. Para consultar os IDs de região, veja Regions and zones. |
|
|
O endpoint da instância do KMS, no formato |
|
|
O caminho absoluto ou relativo para o arquivo Credential-ClientKeyContent ( |
|
|
O caminho absoluto ou relativo para o arquivo ClientKeyPassword ( |
|
|
O nome da variável de ambiente que armazena o conteúdo de ClientKeyPassword, por exemplo, |
|
|
Especifica se a validação do certificado SSL da instância do KMS deve ser ignorada. A instância do KMS possui um certificado SSL integrado, utilizado com o protocolo SSL/TLS para verificação de identidade e comunicação criptografada. Valores válidos:
|
|
|
O caminho absoluto ou relativo para o arquivo do certificado CA da instância do KMS. Nota
O certificado CA é usado para validar o certificado SSL da instância do KMS. Para obter mais informações sobre como obter o certificado CA, consulte Obtain the KMS instance CA certificate. |
Recuperar secrets
Todos os exemplos abaixo utilizam o SDK 2.0. Para exemplos do SDK 1.0, acesse o repositório do código-fonte do SDK 1.0.
Java
Usar configuração padrão
O SDK lê automaticamente as informações de credencial do arquivo secretsmanager.properties ou das variáveis de ambiente.
import com.aliyuncs.kms.secretsmanager.client.V2.0.SecretCacheClient;
import com.aliyuncs.kms.secretsmanager.client.V2.0.SecretCacheClientBuilder;
import com.aliyuncs.kms.secretsmanager.client.V2.0.exception.CacheSecretException;
import com.aliyuncs.kms.secretsmanager.client.V2.0.model.SecretInfo;
public class CacheClientEnvironmentSample {
public static void main(String[] args) {
try {
SecretCacheClient client = SecretCacheClientBuilder.newClient();
SecretInfo secretInfo = client.getSecretInfo("#secretName#");
System.out.println(secretInfo);
} catch (CacheSecretException e) {
e.printStackTrace();
}
}
}
Usar arquivo de configuração personalizado
Adote esta abordagem quando o arquivo de configuração não utilizar o nome ou o caminho padrão. Especifique o caminho do arquivo de configuração (#customConfigFileName#).
import com.aliyuncs.kms.secretsmanager.client.V2.0.SecretCacheClient;
import com.aliyuncs.kms.secretsmanager.client.V2.0.SecretCacheClientBuilder;
import com.aliyuncs.kms.secretsmanager.client.V2.0.exception.CacheSecretException;
import com.aliyuncs.kms.secretsmanager.client.V2.0.model.SecretInfo;
import com.aliyuncs.kms.secretsmanager.client.V2.0.service.BaseSecretManagerClientBuilder;
public class CacheClientCustomConfigFileSample {
public static void main(String[] args) {
try {
SecretCacheClient client = SecretCacheClientBuilder.newCacheClientBuilder(
BaseSecretManagerClientBuilder.standard()
.withCustomConfigFile("#customConfigFileName#")
.build())
.build();
SecretInfo secretInfo = client.getSecretInfo("#secretName#");
System.out.println(secretInfo);
} catch (CacheSecretException e) {
System.out.println("CacheSecretException: " + e.getMessage());
}
}
}
Usar credenciais fixas no código
Nesta abordagem, o AccessKey e as informações de região são passados diretamente durante a inicialização do cliente, sem a necessidade de gravar o AccessKey no arquivo de configuração ou nas variáveis de ambiente.
import com.aliyuncs.kms.secretsmanager.client.V2.0.SecretCacheClient;
import com.aliyuncs.kms.secretsmanager.client.V2.0.SecretCacheClientBuilder;
import com.aliyuncs.kms.secretsmanager.client.V2.0.exception.CacheSecretException;
import com.aliyuncs.kms.secretsmanager.client.V2.0.model.RegionInfo;
import com.aliyuncs.kms.secretsmanager.client.V2.0.service.BaseSecretManagerClientBuilder;
import com.aliyuncs.kms.secretsmanager.client.V2.0.utils.CredentialsProviderUtils;
public class CacheClientWithCaCertificateSample {
public static void main(String[] args) {
try {
// Create a RegionInfo with the CA certificate path
RegionInfo regionInfo = new RegionInfo();
regionInfo.setRegionId("#regionId#");
// Dedicated gateway endpoint. Omit if using shared gateway.
regionInfo.setEndpoint("<your_kms_instance_id>.cryptoservice.kms.aliyuncs.com");
SecretCacheClient client = SecretCacheClientBuilder.newCacheClientBuilder(
BaseSecretManagerClientBuilder.standard()
.withCredentialsProvider(CredentialsProviderUtils.withAccessKey(
System.getenv("#accessKeyId#"),
System.getenv("#accessKeySecret#")))
.addRegion(regionInfo)
.build())
.build();
SecretInfo secretInfo = client.getSecretInfo("#secretName#");
} catch (CacheSecretException e) {
e.printStackTrace();
}
}
}
Usar o Default credential provider chain da Alibaba Cloud
A cadeia de provedores de credencial padrão é uma estratégia de fallback que busca credenciais em uma ordem predefinida até encontrá-las. Se todos os métodos falharem, a autenticação não é concluída e as credenciais não podem ser obtidas.
import com.aliyuncs.kms.secretsmanager.client.V2.0.SecretCacheClient;
import com.aliyuncs.kms.secretsmanager.client.V2.0.SecretCacheClientBuilder;
import com.aliyuncs.kms.secretsmanager.client.V2.0.exception.CacheSecretException;
import com.aliyuncs.kms.secretsmanager.client.V2.0.model.SecretInfo;
import com.aliyuncs.kms.secretsmanager.client.V2.0.service.BaseSecretManagerClientBuilder;
public class CacheClientDefaultCredentialChainSample {
public static void main(String[] args) {
try {
SecretCacheClient client = SecretCacheClientBuilder.newCacheClientBuilder(
BaseSecretManagerClientBuilder.standard()
.withRegion("#regionId#")
.build())
.build();
SecretInfo secretInfo = client.getSecretInfo("#secretName#");
System.out.println(secretInfo);
} catch (CacheSecretException e) {
e.printStackTrace();
}
}
}
Para mais exemplos, consulte Secrets Manager Client SDK Examples.
Python
Usar configuração padrão
O SDK lê automaticamente as informações de credencial do arquivo secretsmanager.properties ou das variáveis de ambiente.
from alibabacloud_secretsmanager_client_V2.0.secret_manager_cache_client_builder import SecretManagerCacheClientBuilder
if __name__ == '__main__':
secret_cache_client = SecretManagerCacheClientBuilder.new_client()
secret_info = secret_cache_client.get_secret_info("#secretName#")
print(secret_info.__dict__)
Usar arquivo de configuração personalizado
Adote esta abordagem quando o arquivo de configuração não utilizar o nome ou o caminho padrão.
from alibabacloud_secretsmanager_client_V2.0.secret_manager_cache_client_builder import SecretManagerCacheClientBuilder
from alibabacloud_secretsmanager_client_V2.0.service.default_secret_manager_client_builder import DefaultSecretManagerClientBuilder
if __name__ == '__main__':
secret_cache_client = SecretManagerCacheClientBuilder.new_cache_client_builder(
DefaultSecretManagerClientBuilder.standard()
.with_custom_config_file("#customConfigFileName#")
.build()
).build()
secret_info = secret_cache_client.get_secret_info("#secretName#")
print(secret_info.__dict__)
Usar credenciais fixas no código
Nesta abordagem, o AccessKey e as informações de região são passados diretamente durante a inicialização do cliente.
import os
from alibabacloud_secretsmanager_client_V2.0.secret_manager_cache_client_builder import SecretManagerCacheClientBuilder
from alibabacloud_secretsmanager_client_V2.0.service.default_secret_manager_client_builder import \
DefaultSecretManagerClientBuilder
from alibabacloud_secretsmanager_client_V2.0.model.region_info import RegionInfo
if __name__ == '__main__':
# Create a RegionInfo with the CA certificate path
region_info = RegionInfo(
region_id="#regionId#",
endpoint="#kmsInstanceEndpoint#", # Dedicated gateway endpoint. Omit if using shared gateway.
)
secret_cache_client = SecretManagerCacheClientBuilder.new_cache_client_builder(
DefaultSecretManagerClientBuilder.standard()
.with_access_key(
os.getenv("#accessKeyId#"),
os.getenv("#accessKeySecret#")
)
.add_region_info(region_info)
.build()
).build()
# ... use the client
Usar o Default credential provider chain da Alibaba Cloud
from alibabacloud_secretsmanager_client_V2.0.secret_manager_cache_client_builder import SecretManagerCacheClientBuilder
from alibabacloud_secretsmanager_client_V2.0.service.default_secret_manager_client_builder import DefaultSecretManagerClientBuilder
if __name__ == '__main__':
secret_cache_client = SecretManagerCacheClientBuilder.new_cache_client_builder(
DefaultSecretManagerClientBuilder.standard()
.with_region("#regionId#")
.build()
).build()
secret_info = secret_cache_client.get_secret_info("#secretName#")
print(secret_info.__dict__)
Para mais exemplos, consulte Secrets Manager Client SDK Examples.
Go
Usar configuração padrão
package main
import "github.com/aliyun/alibabacloud-secretsmanager-client-go-V2.0/sdk"
func main() {
client, err := sdk.NewClient()
if err != nil {
// Handle exceptions
panic(err)
}
secretInfo, err := client.GetSecretInfo("#secretName#")
if err != nil {
// Handle exceptions
panic(err)
}
}
Usar arquivo de configuração personalizado
package main
import (
"github.com/aliyun/alibabacloud-secretsmanager-client-go-V2.0/sdk"
"github.com/aliyun/alibabacloud-secretsmanager-client-go-V2.0/sdk/service"
)
func main() {
client, err := sdk.NewSecretCacheClientBuilder(
service.NewDefaultSecretManagerClientBuilder().Standard().
WithCustomConfigFile("#customConfigFileName#").Build()).Build()
if err != nil {
// Handle exceptions
panic(err)
}
secretInfo, err := client.GetSecretInfo("#secretName#")
if err != nil {
// Handle exceptions
panic(err)
}
}
Usar credenciais fixas no código
package main
import (
"github.com/aliyun/alibabacloud-secretsmanager-client-go-V2.0/sdk"
"github.com/aliyun/alibabacloud-secretsmanager-client-go-V2.0/sdk/models"
"github.com/aliyun/alibabacloud-secretsmanager-client-go-V2.0/sdk/service"
"os"
)
func main() {
regionInfo := &models.RegionInfo{
RegionId: "#regionId#",
// Dedicated gateway endpoint. Omit if using shared gateway.
Endpoint: "<kmsInstanceId>.cryptoservice.kms.aliyuncs.com",
}
client, err := sdk.NewSecretCacheClientBuilder(
service.NewDefaultSecretManagerClientBuilder().
Standard().
WithAccessKey(os.Getenv("#accessKeyId#"), os.Getenv("#accessKeySecret#")).
AddRegionInfo(regionInfo).
Build()).Build()
if err != nil {
// Handle exceptions
panic(err)
}
secretInfo, err := client.GetSecretInfo("#secretName#")
if err != nil {
// Handle exceptions
panic(err)
}
}
Usar o Default credential provider chain da Alibaba Cloud
package main
import (
"github.com/aliyun/alibabacloud-secretsmanager-client-go-V2.0/sdk"
"github.com/aliyun/alibabacloud-secretsmanager-client-go-V2.0/sdk/service"
)
func main() {
client, err := sdk.NewSecretCacheClientBuilder(
service.NewDefaultSecretManagerClientBuilder().Standard().
WithRegion("#regionId#").Build()).Build()
if err != nil {
// Handle exceptions
panic(err)
}
secretInfo, err := client.GetSecretInfo("#secretName#")
if err != nil {
// Handle exceptions
panic(err)
}
}
Para mais exemplos, consulte Secrets Manager Client SDK Examples.
Node.js
Usar configuração padrão
O SDK lê automaticamente as informações de credencial do arquivo secretsmanager.properties ou das variáveis de ambiente.
import { SecretCacheClientBuilder } from 'alibabacloud-secretsmanager-client-v2';
async function example() {
try {
// Build client via environment variables or default configuration
const client = await SecretCacheClientBuilder.newClient();
const secretInfo = await client.getSecretInfo('#secretName#');
console.log(secretInfo);
} catch (error) {
console.error('Error:', error);
}
}
example();
Usar arquivo de configuração personalizado
Adote esta abordagem quando o arquivo de configuração não utilizar o nome ou o caminho padrão. Especifique o caminho do arquivo de configuração.
import {
SecretCacheClientBuilder,
BaseSecretManagerClientBuilder,
CredentialsProviderUtils
} from 'alibabacloud-secretsmanager-client-v2';
async function example() {
try {
const client = await SecretCacheClientBuilder.newCacheClientBuilder(
BaseSecretManagerClientBuilder.standard().withCustomConfigFile('#customConfigFileName#').build()
).build();
const secretInfo = await client.getSecretInfo('#secretName#');
console.log(secretInfo);
} catch (error) {
console.error('Error:', error);
}
}
example();
Usar credenciais fixas no código
Nesta abordagem, o AccessKey e as informações de região são passados diretamente durante a inicialização do cliente.
import {
SecretCacheClientBuilder,
BaseSecretManagerClientBuilder,
CredentialsProviderUtils,
RegionInfo
} from 'alibabacloud-secretsmanager-client-v2';
async function example() {
try {
// Create RegionInfo with CA certificate path
const regionInfo = new RegionInfo();
regionInfo.setRegionId('#regionId#');
regionInfo.setEndpoint('#kmsInstanceEndpoint#'); // Specify KMS instance address
const client = await SecretCacheClientBuilder.newCacheClientBuilder(
BaseSecretManagerClientBuilder.standard()
.withCredentialsProvider(
CredentialsProviderUtils.withAccessKey(
process.env['#accessKeyId#'],
process.env['#accessKeySecret#']
)
)
.addRegionInfo(regionInfo) // Use RegionInfo with CA certificate path
.build()
).build();
const secretInfo = await client.getSecretInfo('#secretName#');
console.log(secretInfo);
} catch (error) {
console.error('Error:', error);
}
}
example();
Usar o Default credential provider chain da Alibaba Cloud
import {
SecretCacheClientBuilder,
BaseSecretManagerClientBuilder,
CredentialsProviderUtils
} from 'alibabacloud-secretsmanager-client-v2';
async function example() {
try {
const client = await SecretCacheClientBuilder.newCacheClientBuilder(
BaseSecretManagerClientBuilder.standard()
.withCredentialsProvider(CredentialsProviderUtils.withDefaultCredential())
.withRegion('#regionId#')
.build()
).build();
const secretInfo = await client.getSecretInfo('#secretName#');
console.log(secretInfo);
} catch (error) {
console.error('Error:', error);
}
}
example();
Para mais exemplos, consulte Secrets Manager Client SDK Examples.
FAQ
-
O que fazer se o erro "cannot find the built-in CA certificate for region[$regionId], please provide the caFilePath parameter." aparecer?
Causa: O certificado CA integrado para a região especificada não existe no SDK.
-
Solução:
Atualize o SDK para a versão mais recente V2.0.
-
Se o erro persistir após a atualização para a versão mais recente, baixe o certificado CA mais recente (disponível no KMS console em Instance Management > Instance Details) e informe o caminho do certificado CA. Use um dos métodos a seguir:
Pass via environment variable
Adicione o parâmetro
caFilePathà configuraçãocache_client_region_id:# Associated KMS region, including the CA certificate path and instance endpoint cache_client_region_id=[{"regionId":"<regionId>","endpoint":"<kmsInstanceId>.cryptoservice.kms.aliyuncs.com","caFilePath":"<ca_certificate_file_path>"}]Pass via configuration file
Adicione o parâmetro
caFilePathao arquivosecretsmanager.propertiesou a um arquivo de configuração personalizado:# Associated KMS region, including the CA certificate path and instance endpoint cache_client_region_id=[{"regionId":"<regionId>","endpoint":"<kmsInstanceId>.cryptoservice.kms.aliyuncs.com","caFilePath":"<ca_certificate_file_path>"}]Pass via Hard-coded Credentials
import com.aliyuncs.kms.secretsmanager.client.V2.0.SecretCacheClient; import com.aliyuncs.kms.secretsmanager.client.V2.0.SecretCacheClientBuilder; import com.aliyuncs.kms.secretsmanager.client.V2.0.exception.CacheSecretException; import com.aliyuncs.kms.secretsmanager.client.V2.0.model.RegionInfo; import com.aliyuncs.kms.secretsmanager.client.V2.0.service.BaseSecretManagerClientBuilder; import com.aliyuncs.kms.secretsmanager.client.V2.0.utils.CredentialsProviderUtils; public class CacheClientWithCaCertificateSample { public static void main(String[] args) { try { // Create a RegionInfo with the CA certificate path RegionInfo regionInfo = new RegionInfo(); regionInfo.setRegionId("#regionId#"); regionInfo.setEndpoint("#kmsInstanceEndpoint#"); // Specify KMS instance endpoint regionInfo.setCaFilePath("#caFilePath#"); // Specify CA certificate file path SecretCacheClient client = SecretCacheClientBuilder.newCacheClientBuilder( BaseSecretManagerClientBuilder.standard() .withCredentialsProvider(CredentialsProviderUtils.withAccessKey( System.getenv("#accessKeyId#"), System.getenv("#accessKeySecret#"))) .addRegion(regionInfo) // Use RegionInfo with CA certificate path .build()) .build(); // ... use the client } catch (CacheSecretException e) { e.printStackTrace(); } } }import os from alibabacloud_secretsmanager_client_V2.0.secret_manager_cache_client_builder import SecretManagerCacheClientBuilder from alibabacloud_secretsmanager_client_V2.0.service.default_secret_manager_client_builder import \ DefaultSecretManagerClientBuilder from alibabacloud_secretsmanager_client_V2.0.model.region_info import RegionInfo if __name__ == '__main__': # Create a RegionInfo with the CA certificate path region_info = RegionInfo( region_id="#regionId#", endpoint="#kmsInstanceEndpoint#", # Specify KMS instance endpoint ca_file_path="#caFilePath#" # Specify CA certificate file path ) secret_cache_client = SecretManagerCacheClientBuilder.new_cache_client_builder( DefaultSecretManagerClientBuilder.standard() .with_access_key( os.getenv("#accessKeyId#"), os.getenv("#accessKeySecret#") ) .add_region_info(region_info) # Use RegionInfo with CA certificate path .build() ).build() # ... use the clientpackage main import ( "github.com/aliyun/alibabacloud-secretsmanager-client-go-V2.0/sdk" "github.com/aliyun/alibabacloud-secretsmanager-client-go-V2.0/sdk/models" "github.com/aliyun/alibabacloud-secretsmanager-client-go-V2.0/sdk/service" "os" ) func main() { // Create a RegionInfo with the CA certificate path regionInfo := &models.RegionInfo{ RegionId: "#regionId#", Endpoint: "#kmsInstanceEndpoint#", // Specify KMS instance endpoint CaFilePath: "#caFilePath#", // Specify CA certificate file path } client, err := sdk.NewSecretCacheClientBuilder( service.NewDefaultSecretManagerClientBuilder(). Standard(). WithAccessKey(os.Getenv("#accessKeyId#"), os.Getenv("#accessKeySecret#")). AddRegionInfo(regionInfo). // Use RegionInfo with CA certificate path Build()).Build() if err != nil { // Handle exceptions panic(err) } secretInfo, err := client.GetSecretInfo("#secretName#") if err != nil { // Handle exceptions panic(err) } }import { SecretCacheClientBuilder, BaseSecretManagerClientBuilder, CredentialsProviderUtils, RegionInfo } from 'alibabacloud-secretsmanager-client-v2'; async function example() { try { // Create RegionInfo with CA certificate path const regionInfo = new RegionInfo(); regionInfo.setRegionId('#regionId#'); regionInfo.setEndpoint('#kmsInstanceEndpoint#'); // Specify KMS instance address regionInfo.setCaFilePath('#caFilePath#'); // Specify CA certificate file path const client = await SecretCacheClientBuilder.newCacheClientBuilder( BaseSecretManagerClientBuilder.standard() .withCredentialsProvider( CredentialsProviderUtils.withAccessKey( process.env['#accessKeyId#'], process.env['#accessKeySecret#'] ) ) .addRegionInfo(regionInfo) // Use RegionInfo with CA certificate path .build() ).build(); const secretInfo = await client.getSecretInfo('#secretName#'); console.log(secretInfo); } catch (error) { console.error('Error:', error); } } example();
-
O que fazer se o erro "env/config credentials type[client_key] is illegal" aparecer?
Causa: O Alibaba Cloud Secrets Manager Client SDK 2.0 não oferece suporte ao tipo de credencial ClientKey.
-
Solução:
Mude para um tipo de credencial compatível, como AccessKey, ECS RAM Role ou OIDC Role ARN. Para mais informações, consulte Configure access credentials.
Faça o downgrade para o SDK 1.0 (não recomendado).
-
**O que fazer se o erro
NoSuchMethodError: setFetchExtendedConfigaparecer ao usar o Secrets Manager Client V1.x?**Causa: Ao usar o
alibabacloud-secretsmanager-clientV1.x, se a versão doaliyun-java-sdk-kmsno classpath de execução for anterior à 2.14.0, uma chamada agetSecretValuelançaNoSuchMethodError: void com.aliyuncs.kms.model.v20160120.GetSecretValueRequest.setFetchExtendedConfig(java.lang.Boolean). O métodosetFetchExtendedConfigfoi introduzido noaliyun-java-sdk-kms2.14.0 e não existe na classeGetSecretValueRequestde versões anteriores.-
Solução: Declare explicitamente o
aliyun-java-sdk-kms2.14.0 ou superior no seu pom.xml e atualize oaliyun-java-sdk-corepara a versão 4.5.17:<dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-kms</artifactId> <version>2.14.0</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>4.5.17</version> </dependency>