Todos os produtos
Search
Central de documentação

Key Management Service:Secrets Manager Client

Última atualização: Sep 21, 2026

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.

Nota
  • 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

    Supported

    Supported

    OIDC Role Arn

    Unsupported

    Supported

    ECS RAM Role

    Supported

    Supported

    RAM Role Arn

    Supported

    Supported

    Nota

    O 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

    Supported

    Unsupported

    Default credential provider chain

    Unsupported

    Supported

  • Recursos de segurança

    Feature

    SDK 1.0

    SDK 2.0

    Built-in CA Certificate

    Unsupported

    Supported

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:

  1. 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.

  2. Inicialize o cliente. O SDK lê a configuração automaticamente e identifica o tipo de gateway.

  3. 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>
          
Importante

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
          
Importante
  • A instalação do Secrets Manager Client Python SDK V2 requer Python 3.7 ou superior. Execute python3 --version para 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          
Importante
  • Para Go, a dependência alibaba-cloud-sdk-go deve ser anterior à V1.63.0. Verifique o arquivo go.mod para 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
Importante
  • 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.

  1. 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).

  2. 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.

      Nota

      També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.

  3. 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.

    Aviso

    Nã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/resources para 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 config dedicado e carregue-o via código.

    • Python: coloque o arquivo de configuração no diretório do projeto ou em um diretório config específico, e use um método adequado (como os.path ou pkg_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

credentials_type

Valor fixo: ecs_ram_role.

credentials_role_name

O nome da função RAM.

cache_client_region_id

  • Dedicated gateway: [{"regionId":"<regionId>","endpoint":"<your_kms_instance_id>.cryptoservice.kms.aliyuncs.com"}].

  • Shared gateway: [{"regionId":"<your_region_id>"}].

  • Shared gateway (VPC): [{"regionId":"<your_region_id>","endpoint":"kms-vpc.<your_region_id>.aliyuncs.com","vpc":"true"}].

    Importante
    • Substitua <regionId> pelo ID de região real e <your_kms_instance_id> pelo ID de instância real.

    • No Linux, ao definir variáveis de ambiente com o comando export, use caracteres de escape, por exemplo: [{\"regionId\":\"<your_region_id>"}].

AccessKey

Etapa 1: Criar um AccessKey e configurar permissões

Aviso

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.

  1. Faça login no RAM console. Na página Users, clique em no nome do usuário RAM de destino.

  2. Na aba Secret Management, na seção AccessKey, clique em Create AccessKey.

  3. 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.

      Nota

      També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.

    Aviso

    Nã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/resources para 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 config dedicado e carregue-o via código.

    • Python: coloque o arquivo de configuração no diretório do projeto ou em um diretório config específico, e use um método adequado (como os.path ou pkg_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

credentials_type

Valor fixo: ak.

credentials_access_key_id

O AccessKey ID.

credentials_access_secret

O AccessKey Secret.

cache_client_region_id

  • Dedicated gateway: [{"regionId":"<regionId>","endpoint":"<your_kms_instance_id>.cryptoservice.kms.aliyuncs.com"}].

  • Shared gateway: [{"regionId":"<your_region_id>"}].

  • Shared gateway (VPC): [{"regionId":"<your_region_id>","endpoint":"kms-vpc.<your_region_id>.aliyuncs.com","vpc":"true"}].

    Importante
    • Substitua <regionId> pelo ID de região real e <your_kms_instance_id> pelo ID de instância real.

    • No Linux, ao definir variáveis de ambiente com o comando export, use caracteres de escape, por exemplo: [{\"regionId\":\"<your_region_id>"}].

OIDC Role ARN

Nota

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

  1. Crie um provedor OIDC

    1. Acesse o RAM console como administrador RAM. Na página SSO, clique em na aba Role-based SSO.

    2. Na aba OIDC, clique em Create IdP.

    3. Na página Create IdP, configure as informações do provedor. Para mais informações, consulte Manage OIDC providers.

  2. Obtenha e salve as informações de identidade OIDC (ARN e Client ID)

    1. Acesse a página SSO e, na aba IdP, clique em no nome do provedor OIDC desejado.

    2. Na página de detalhes do IdP, visualize o ARN e o Client ID.

  3. Crie e autorize uma função RAM para o provedor OIDC

    1. Acesse o RAM console como administrador RAM e navegue até a página Identities > Roles.

    2. Clique em Create Role. No canto superior direito da página de criação, clique em Switch to Policy Editor.

    3. No editor de políticas, especifique o provedor OIDC. Selecione o editor visual e configure os parâmetros conforme descrito abaixo.

      Nota

      Para informações sobre outros modos, consulte Create a RAM role for an OIDC identity provider.

      1. Na seção Select Trusted Entity, selecione IdP.

      2. Na seção Edit Trust Policy, configure os seguintes parâmetros.

        • IdP Type: Selecione OIDC.

        • IdP: Selecione o provedor OIDC criado anteriormente.

  4. 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.

      Nota

      Polí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.

  5. Obtenha o ARN da função OIDC de destino

    1. Na página Identities > Roles, clique em no nome da função desejada.

    2. Na página de detalhes da função, localize o ARN da função OIDC na seção ARN.

      Nota

      O 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.

  6. 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.

    Aviso

    Nã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/resources para 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 (como os.path ou pkg_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

credentials_type

Valor fixo: oidc_role_arn.

credentials_role_arn

O ARN da função RAM para o provedor de identidade OIDC. Opcional. Se não especificado, o Default credential provider chain será utilizado.

credentials_oidc_provider_arn

O ARN do provedor de identidade OIDC. Opcional. Se não especificado, o Default credential provider chain será utilizado.

credentials_oidc_token_file_path

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.

cache_client_region_id

  • Dedicated gateway: [{"regionId":"<regionId>","endpoint":"<your_kms_instance_id>.cryptoservice.kms.aliyuncs.com"}].

  • Shared gateway: [{"regionId":"<your_region_id>"}].

  • Shared gateway (VPC): [{"regionId":"<your_region_id>","endpoint":"kms-vpc.<your_region_id>.aliyuncs.com","vpc":"true"}].

    Importante
    • Substitua <regionId> pelo ID de região real e <your_kms_instance_id> pelo ID de instância real.

    • No Linux, ao definir variáveis de ambiente com o comando export, utilize caracteres de escape; por exemplo: [{\"regionId\":\"<your_region_id>"}].

AK+RamRoleArn

Nota

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.

  1. Crie um par de AccessKey para o usuário

    1. Acesse o RAM console. No painel de navegação à esquerda, escolha Identities > Users. Na página Users, clique em no nome do usuário RAM desejado.

    2. Associe a política de sistema AliyunSTSAssumeRoleAccess ou uma política personalizada que inclua a ação sts:AssumeRole ao usuário RAM.

    3. Na aba Secret Management, na seção AccessKey, clique em Create AccessKey.

  2. Crie e autorize uma função RAM:

    1. No painel de navegação à esquerda, escolha Identities > Roles. Na página Roles, clique em Create Role. Para mais informações, consulte Create a RAM role.

    2. 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.

        Nota

        Polí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.

  3. Obtenha o RamRoleArn da função RAM de destino. Para mais informações, consulte View the information about a RAM role.

    1. No painel de navegação à esquerda, escolha Identities > Roles. Na página Roles, clique em no nome da função desejada.

    2. Na página de detalhes da função, localize o RamRoleArn na seção ARN.

      Nota

      O 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.

    Aviso

    Nã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/resources para 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 (como os.path ou pkg_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

credentials_type

ram_role or sts

credentials_role_session_name

O nome da sessão da função RAM.

credentials_role_arn

O ARN da função RAM.

credentials_access_key_id

O AccessKey ID.

credentials_access_secret

O AccessKey Secret.

cache_client_region_id

  • Dedicated gateway: [{"regionId":"<regionId>","endpoint":"<your_kms_instance_id>.cryptoservice.kms.aliyuncs.com"}].

  • Shared gateway: [{"regionId":"<your_region_id>"}].

  • Shared gateway (VPC): [{"regionId":"<your_region_id>","endpoint":"kms-vpc.<your_region_id>.aliyuncs.com","vpc":"true"}].

    Importante
    • Substitua <regionId> pelo ID de região real e <your_kms_instance_id> pelo ID de instância real.

    • No Linux, ao definir variáveis de ambiente com o comando export, utilize caracteres de escape, por exemplo: [{\"regionId\":\"<your_region_id>"}].

ClientKey (Deprecated)

Nota

Somente o SDK 1.0 suporta o tipo de credencial ClientKey. O SDK 2.0 não oferece suporte a esse tipo.

Shared gateway

Passo 1: Crie um ClientKey
  1. Faça login no Key Management Service console. Na barra de navegação superior, selecione uma região. No painel de navegação à esquerda, escolha Application Access > Multi-Cloud Access (formerly AAP).

  2. (Opcional) Crie uma regra de rede.

    Nota

    Configurar uma regra de rede para restringir o acesso por endereço IP de origem é opcional. No entanto, recomendamos configurar uma para maior segurança.

    1. Clique em Network Access Rules e em seguida clique em Create Network Access Rule.

    2. No painel Create Network Access Rule, defina Network Type como Public, insira os Allowed Source IP Addresses e clique em OK.

  3. Crie uma política de permissão.

    1. Clique em Policies e em seguida clique em Create Policy.

    2. No painel Create Policy, configure os parâmetros do shared gateway conforme descrito abaixo e clique em OK.

      1. Scope: Shared KMS Gateway

      2. Accessible Resources: Selecione os segredos que deseja acessar.

      3. (Opcional) Network Access Rules: Selecione a regra de rede criada na etapa anterior.

  4. Crie um ponto de acesso de aplicação (AAP).

    1. Clique em Application Access e em seguida clique em Create AAP.

    2. No painel Create AAP, defina Mode como Standard Creation e configure os parâmetros conforme descrito abaixo.

      Parameter

      Description

      Authentication Method

      Selecione ClientKey.

      Encryption Password

      Insira uma string de 8 a 64 caracteres contendo dígitos, letras e caracteres especiais: ~!@#$%^&*?_-.

      Validity Period

      Importante

      Recomendamos definir o período de validade como um ano para reduzir o risco de vazamento do ClientKey. Certifique-se de rotacionar o ClientKey antes do vencimento para evitar interrupções no service. Para mais informações, consulte Rotate a ClientKey.

      Policies

      Selecione a política de permissão criada na etapa anterior.

    3. Clique em OK. O navegador baixa o ClientKey automaticamente. O ClientKey inclui os seguintes arquivos:

      • Credential (ClientKeyContent): O nome de arquivo padrão é clientKey_****.json.

      • Credential password (ClientKeyPassword): O nome de arquivo padrão é clientKey_****_Password.txt.

Passo 2: Configure as variáveis de ambiente ou o arquivo de configuração
  • 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.

    Aviso

    Nã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/resources para 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 (como os.path ou pkg_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

  • Abordagem 1: Configure o caminho do arquivo

    # Credential type
    credentials_type=client_key
    
    # File path to the ClientKeyPassword file (clientKey_****_Password.txt)
    client_key_password_from_file_path=#client_key_password_file_path#
    
    # File path to the ClientKeyContent file (clientKey_****.json)
    client_key_private_key_path=#client_key_private_key_file_path#
    
    # Associated KMS region
    cache_client_region_id=[{"regionId":"#regionId#"}]
                  
  • Abordagem 2: Configure a senha via variável de ambiente

    Aviso

    Primeiro, armazene o ClientKeyPassword do arquivo clientKey_****_Password.txt em uma variável de ambiente personalizada, como clientKeyPassword_content.

    # Credential type
    credentials_type=client_key
    
    # Environment variable name that stores the ClientKeyPassword content
    client_key_password_from_env_variable=#client_key_password_env_var_name#
    
    # ClientKey private key file path
    client_key_private_key_path=#client_key_private_key_file_path#
    
    # Associated KMS region
    cache_client_region_id=[{"regionId":"#regionId#"}]
                  

Environment variables

O SDK suporta duas abordagens para configurar a senha da credencial ClientKey:

  • Abordagem 1: Configure o caminho do arquivo de senha do ClientKey (clientKey__Password.txt)

    Parameter

    Value

    credentials_type

    Valor fixo: client_key.

    client_key_password_from_file_path

    O caminho absoluto ou relativo para o arquivo ClientKeyPassword (clientKey_****_Password.txt).

    client_key_private_key_path

    O caminho absoluto ou relativo para o arquivo Credential-ClientKeyContent (clientKey_****.json).

    cache_client_region_id

    Formato: [{"regionId":"<your_region_id>"}]. No Linux, utilize caracteres de escape: [{\"regionId\":\"<your_region_id>"}].

  • Abordagem 2: Configure diretamente o conteúdo da senha do ClientKey

    Aviso

    Primeiro, armazene o conteúdo do arquivo clientKey_****_Password.txt em uma variável de ambiente personalizada (por exemplo, clientKeyPassword_content).

    Parameter

    Value

    credentials_type

    Valor fixo: client_key.

    client_key_password_from_env_variable

    O nome da variável de ambiente que armazena o conteúdo do ClientKeyPassword, por exemplo, clientKeyPassword_content.

    client_key_private_key_path

    O caminho absoluto ou relativo para o arquivo clientKey_****.json.

    cache_client_region_id

    Formato: [{"regionId":"<your_region_id>"}]. No Linux, utilize caracteres de escape.

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.

    1. Acesse o Key Management Service console. Na barra de navegação superior, selecione uma região. No painel de navegação à esquerda, escolha Application Access > Access Control (Formerly Access Point) .

    2. 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).

      Nota

      O 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.

    3. 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.

    1. 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:

      1. Ao configurar as regras de rede, selecione Private para o tipo de rede.

      2. Ao configurar o escopo da regra de permissão, selecione o KMS Instance ID correspondente.

    2. Após a criação, o navegador baixa automaticamente a ClientKey, que inclui:

      • Credential (ClientKeyContent): O arquivo é nomeado clientKey_****.json por padrão.

      • Senha da credencial (ClientKeyPassword): O arquivo é nomeado clientKey_****_Password.txt por 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.

    Aviso

    Nã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/resources para 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 config dedicado e carregue-o via código.

    • Python: Coloque o arquivo de configuração no diretório do projeto ou em um diretório config específico e utilize um método apropriado (como os.path ou pkg_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_info

    Formato: [{"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_info

    Formato: [{"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

regionId

O ID da região onde a instância do KMS está implantada. Para consultar os IDs de região, veja Regions and zones.

endpoint

O endpoint da instância do KMS, no formato {instance_id}.kms.aliyuncs.com.

clientKeyFile

O caminho absoluto ou relativo para o arquivo Credential-ClientKeyContent (clientKey_****.json).

passwordFromFilePath

O caminho absoluto ou relativo para o arquivo ClientKeyPassword (clientKey_****_Password.txt).

passwordFromEnvVariable

O nome da variável de ambiente que armazena o conteúdo de ClientKeyPassword, por exemplo, clientKeyPassword_content.

ignoreSslCerts

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:

  • true: Ignora a validação. Não é necessário configurar caFilePath.

  • false: Valida o certificado SSL.

caFilePath

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();
        }
    }
}
          
Nota

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__)
          
Nota

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)
    }
}
          
Nota

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();
Nota

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ção cache_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 caFilePath ao arquivo secretsmanager.properties ou 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 client
                  
        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() {
            // 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: setFetchExtendedConfig aparecer ao usar o Secrets Manager Client V1.x?**

    • Causa: Ao usar o alibabacloud-secretsmanager-client V1.x, se a versão do aliyun-java-sdk-kms no classpath de execução for anterior à 2.14.0, uma chamada a getSecretValue lança NoSuchMethodError: void com.aliyuncs.kms.model.v20160120.GetSecretValueRequest.setFetchExtendedConfig(java.lang.Boolean). O método setFetchExtendedConfig foi introduzido no aliyun-java-sdk-kms 2.14.0 e não existe na classe GetSecretValueRequest de versões anteriores.

    • Solução: Declare explicitamente o aliyun-java-sdk-kms 2.14.0 ou superior no seu pom.xml e atualize o aliyun-java-sdk-core para 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>