Depois de hospedar o AccessKey de um usuário do RAM no KMS, instale o plug-in de secret do RAM. Ao usar os Alibaba Cloud SDKs, referencie o nome do secret do RAM para obter o AccessKey para autenticação de API, sem precisar conhecer os detalhes do AccessKey nem se houve rotação. Este tópico descreve o princípio de funcionamento, a instalação e o uso do plug-in de secret do RAM.
Princípio de funcionamento
O plug-in de secret do RAM obtém o valor do secret do RAM do KMS com base no nome do secret e armazena esse valor em cache na memória da aplicação. Quando a aplicação usa um Alibaba Cloud SDK, o plug-in utiliza o AccessKey em cache para enviar solicitações aos cloud services.
Quando o AccessKey em cache se torna inválido devido à rotação do secret, o plug-in de secret do RAM obtém imediatamente o novo secret do KMS e atualiza o cache local. Em seguida, com base no comportamento de repetição em caso de erro configurado, o plug-in repete a solicitação da API do cloud service usando o secret do RAM mais recente. Por padrão, o plug-in de secret do RAM determina que o AccessKey é inválido com base nos códigos de erro InvalidAccessKeyId e InvalidAccessKeyId.NotFound na resposta da API do cloud service.
Alibaba Cloud SDKs suportados
O KMS fornece plug-ins de secret do RAM para os Alibaba Cloud SDKs listados nas tabelas a seguir.
O plug-in de secret do RAM exige desenvolvimento separado para cada Alibaba Cloud SDK. Caso o plug-in de secret do RAM não atenda aos seus requisitos, use o Secrets Manager Client ou Alibaba Cloud SDK. Para mais informações sobre cada SDK, consulte SDK references. Para obter assistência, entre em contato com o suporte técnico.
Java SDK (apenas Java 8 e versões posteriores)
|
Alibaba Cloud SDK |
Módulo do plug-in de secret do RAM |
Python SDK
|
Alibaba Cloud SDK |
Módulo do plug-in de secret do RAM |
Descrição |
|
Há suporte apenas para a V1.0. Não há suporte para a V2.0. Para a V2.0, use o Secrets Manager Client ou Alibaba Cloud SDK. |
||
|
Nenhum. |
Go SDK
O plug-in de secret do Go não repete a solicitação automaticamente quando ocorre um erro InvalidAccessKeyId. Secrets com rotação automática obtêm novos secrets por meio do mecanismo de atualização agendada (a cada 6 horas). Para rotação manual de secrets, especifique a janela de rotação com pelo menos 12 horas e evite interrupções de tarefas por credenciais expiradas. Para mais informações, consulte How do I resolve credential expiration after the Go RAM plug-in reports the InvalidAccessKeyId error?.
|
Alibaba Cloud SDK |
Módulo do plug-in de secret do RAM |
Descrição |
|
Há suporte apenas para a V1.0. Não há suporte para a V2.0. Para a V2.0, use o Secrets Manager Client ou Alibaba Cloud SDK. |
||
|
Nenhum. |
Etapa 1: Crie credenciais de acesso
Cenário 1: Obtenha valores de credenciais por meio de um gateway compartilhado
O tipo de rede é Internet ou VPC. As credenciais de acesso suportam funções de RAM de instâncias ECS e ClientKeys.
Função de RAM de instância ECS
Uma função de RAM de instância ECS permite obter uma credencial de acesso temporária (token STS) de dentro de uma instância ECS para chamar operações da API do KMS, sem precisar configurar um par de AccessKey.
Para mais informações, consulte Instance RAM roles.
-
Acesse o RAM console e crie uma função de RAM para um Alibaba Cloud service confiável.
Trusted Entity Type: Selecione Elastic Compute Service.
Trusted entity: Selecione Elastic Compute Service (ECS).
-
Conceda permissões à função de RAM para acessar o KMS.
-
Método 1: Configure uma política baseada em identidade
Na coluna Actions da função de RAM, clique em Grant Permission para anexar uma política de permissão integrada do sistema para o KMS à função de RAM. Para mais informações sobre as políticas de permissão do sistema para o 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 recursos
O KMS suporta políticas baseadas em recursos para conceder permissões de acesso a chaves e secrets individuais. Use essas políticas para controlar quais contas Alibaba Cloud, usuários do RAM e funções de RAM podem gerenciar ou usar chaves e secrets do KMS. Para mais informações, consulte Key policies e Secret policies.
-
Acesse o ECS console e atribua a função de RAM a uma instância ECS.
ClientKey
Acesse o Key Management Service console. Na barra de navegação superior, selecione uma região. No painel de navegação à esquerda, escolha .
-
(Opcional) Crie uma regra de rede.
NotaA configuração de uma regra de rede para restringir o acesso por endereço IP de origem é opcional. No entanto, recomendamos essa configuração para maior segurança.
Clique na guia Network Access Rules e, em seguida, clique em Create Network Access Rule.
No painel Create Network Access Rule, defina Network Type como Public, insira os Allowed Source IP Addresses e clique em OK.
-
Crie uma política de permissão.
Clique na guia Policies e, em seguida, clique em Create Policy.
-
No painel Create Policy, configure os parâmetros para o gateway compartilhado conforme descrito abaixo e, em seguida, clique em OK.
Scope: Shared KMS Gateway
Accessible Resources: Selecione os secrets a serem acessados.
(Opcional) Network Access Rules: Selecione a regra de rede criada na etapa anterior.
-
Crie um application access point (AAP).
Clique na guia Application Access e, em seguida, clique em Create AAP.
-
No painel Create AAP, defina Mode como Standard Creation e, em seguida, configure os parâmetros conforme descrito abaixo.
Parâmetro
Descrição
Authentication Method
Selecione ClientKey.
Encryption Password
Insira uma string de 8 a 64 caracteres que contenha dígitos, letras e caracteres especiais:
~!@#$%^&*?_-.Validity Period
ImportanteRecomendamos definir o período de validade como um ano para reduzir o risco de vazamentos de ClientKey. Rotacione o ClientKey antes da expiração para evitar interrupções do service. Para mais informações, consulte Rotate a ClientKey.
Policies
Selecione a política de permissão que você criou na etapa anterior.
-
Clique em OK e baixe o ClientKey automaticamente pelo navegador. O ClientKey inclui os seguintes arquivos:
Credential (ClientKeyContent): O nome padrão do arquivo é
clientKey_****.json.Credential password (ClientKeyPassword): O nome padrão do arquivo é
clientKey_****_Password.txt.
Cenário 2: Obtenha valores de credenciais por meio de um gateway dedicado (não recomendado)
O tipo de rede é a rede privada do KMS. As credenciais de acesso suportam apenas ClientKeys.
Crie um ClientKey usando o modo Quick Create ou Standard Create. Para mais informações sobre ClientKeys, consulte Application access points e Create an application access point.
-
Método 1: Quick Create
Este método é prático e eficiente, adequado para testes e desenvolvimentos rápidos. A credencial de acesso gerada dessa forma tem acesso total a todos os recursos na 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 guia 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 sua aplicação precisa acessar.
Application Access Point Name
Insira um nome para o application access point.
Authentication Method
Definido como ClientKey, não pode ser alterado.
Encryption Algorithm
Selecione o algoritmo de criptografia usado para criptografar o ClientKey. Valores válidos: TripleDES-CBC e RC2-CBC (padrão).
NotaO RC2-CBC funciona na maioria dos ambientes e é o recomendado. Se o seu ambiente tiver requisitos de algoritmo mais rigorosos e não suportar o RC2-CBC, selecione TripleDES-CBC.
Default Permission Policy
O valor é
key/secret/e não pode ser alterado. Isso concede à aplicação acesso a todas as chaves e secrets na instância do KMS especificada. -
Clique em OK e baixe o ClientKey automaticamente pelo navegador. O ClientKey inclui os seguintes arquivos:
Credential (ClientKeyContent): O nome padrão do arquivo é
clientKey_****.json.Credential password (ClientKeyPassword): O nome padrão do arquivo é
clientKey_****_Password.txt.
-
Método 2: Standard Create
Para configurar permissões de acesso detalhadas para recursos, use o método Standard Create.
-
Siga as instruções do Standard Create em Create an application access point para criar um ClientKey para acessar o gateway dedicado. Os principais parâmetros estão descritos abaixo:
Ao configurar 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, baixe o ClientKey automaticamente pelo navegador. O arquivo inclui:
Credential (ClientKeyContent): O arquivo é nomeado como
clientKey_****.jsonpor padrão.Credential password (ClientKeyPassword): O arquivo é nomeado como
clientKey_****_Password.txtpor padrão.
-
Etapa 2: Configure os parâmetros de tempo de execução do plug-in de secret do RAM por meio de um arquivo de configuração
O plug-in de secret do RAM suporta apenas arquivos de configuração para definir parâmetros de tempo de execução. Crie um arquivo de configuração (managed_credentials_providers.properties) no diretório de tempo de execução da aplicação e adicione conteúdo ao arquivo de configuração de acordo com o método de autenticação.
Caso a aplicação não consiga ler automaticamente o arquivo managed_credentials_providers.properties, consulte os exemplos de código e defina o caminho do arquivo de configuração no código.
Função de RAM de instância ECS
O código a seguir mostra o conteúdo do arquivo de configuração.
credentials_type=ecs_ram_role
## The name of the ECS RAM role.
credentials_role_name=#credentials_role_name#
## The region of the associated KMS service.
cache_client_region_id=[{"regionId":"#regionId#"}]
ClientKey (gateway compartilhado)
Obtenha o valor da credencial por meio do endpoint do gateway compartilhado do KMS. O código a seguir mostra o conteúdo do arquivo de configuração.
## The type of the access credential.
credentials_type=client_key
## The password for reading the ClientKey: supports reading from an environment variable or a file.
## The credential password: the credential password (ClientKeyPassword) saved when creating the Client Key in the AAP.
client_key_password_from_env_variable=#your client key private key password environment variable name#
client_key_password_from_file_path=#your client key private key password file path#
# The path to the Client Key file.
# The Client Key file: the application identity credential content (ClientKeyContent) downloaded when creating the Client Key in the AAP.
# The default filename after download is ClientKey_******.json.
client_key_private_key_path=#your client key private key file path#
## The region of the associated KMS service.
cache_client_region_id=[{"regionId":"#regionId#"}]
ClientKey (gateway dedicado)
Obtenha o valor da credencial por meio do endpoint do gateway dedicado do KMS. O código a seguir mostra o conteúdo do arquivo de configuração.
-
Método 1: Configure o caminho do arquivo de senha da credencial ClientKey (
clientKey_****_Password.txt) para leitura pelo SDK.cache_client_dkms_config_info=[{"regionId":"<your dkms regionId>","endpoint":"<your dkms endpoint>","passwordFromFilePath":"< your password file path >","clientKeyFile":"<your Client Key file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}] -
Método 2: Configure diretamente o conteúdo da senha da credencial ClientKey (ClientKeyPassword)
AvisoPrimeiro, armazene a senha da credencial (ClientKeyPassword), ou seja, o conteúdo em
clientKey_****_Password.txt, em uma variável de ambiente personalizada (comoclientKeyPassword_content).cache_client_dkms_config_info=[{"regionId":"<your dkms regionId>","endpoint":"<your dkms endpoint>","passwordFromEnvVariable":"<YOUR_PASSWORD_ENV_VARIABLE>","clientKeyFile":"<your ClientKey file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}]
Etapa 3: Use o plug-in de secret do RAM nos Alibaba Cloud SDKs
Java
Alibaba Cloud SDK for Java (V2.0)
Compatibilidade com Java 9+
-
Adicione o plug-in de secret do RAM ao seu projeto por meio do Maven.
<dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-tea-openapi-sdk-managed-credentials-provider</artifactId> <version>[1.3.5,]</version> </dependency>NotaInstale a versão mais recente do plug-in. Para mais informações, consulte o source code.
-
Obtenha o cliente do Alibaba Cloud SDK for Java e chame os cloud services. O exemplo a seguir usa a API DescribeInstances do ECS.
-
Adicione a dependência do cloud server ECS ecs20140526.
<dependency> <groupId>com.aliyun</groupId> <artifactId>ecs20140526</artifactId> <version>7.1.0</version> </dependency> -
Chame a operação da API DescribeInstances.
import com.aliyun.ecs20140526.Client; import com.aliyun.ecs20140526.models.DescribeInstancesResponse; import com.aliyun.kms.secretsmanager.plugin.tea.openapi.ProxyClientCreator; import com.google.gson.Gson; public class AliyunTeaOpenApiProviderSample { public static void main(String[] args) throws Exception { // Step 1: Specify the name of the hosted secret (the secret name created in KMS). String secretName = "your-secret-name"; /* If the application cannot read the default configuration file (managed_credentials_providers.properties) from the classpath and executable JAR file, or if you need to customize the configuration file name, you can call the following code to set a custom configuration file and read it in the following order: 1. "your-config-name" absolute path + filename, which reads the file under the absolute path. 2. "your-config-name" filename only, which first reads the configuration file under the classpath, then the configuration file in the executable JAR file. */ //ConfigLoader.setConfigName("your-config-name"); // Step 2: Configure the OpenAPI client. com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config(); config.endpoint = "your-product-endpoint"; // Replace with the actual cloud service endpoint. // Step 3: Create a client instance. Client client = ProxyClientCreator.createClient(config, Client.class, secretName); // Step 4: Call the cloud service API. com.aliyun.ecs20140526.models.DescribeInstancesRequest request = new com.aliyun.ecs20140526.models.DescribeInstancesRequest(); request.setRegionId("cn-hangzhou"); // Set the region ID. DescribeInstancesResponse response = client.describeInstances(request); // Step 5: Print the result. System.out.println(new Gson().toJson(response.getBody())); } }
-
Alibaba Cloud SDK for Java (V1.0)
-
Adicione o plug-in de secret do RAM ao seu projeto por meio do Maven.
<dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>[4.3.2,5.0.0]</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core-managed-credentials-provider</artifactId> <version>[1.3.1,]</version> </dependency>NotaInstale a versão mais recente do plug-in. Para mais informações, consulte o source code.
-
Obtenha o cliente do Alibaba Cloud SDK for Java e chame os cloud services.
O exemplo a seguir usa a API DescribeInstanceStatus do ECS.
-
Adicione a dependência do cloud server ECS aliyun-java-sdk-ecs.
<dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-ecs</artifactId> <version>5.11.20</version> </dependency> -
Chame a operação da API DescribeInstanceStatus.
import com.aliyuncs.IAcsClient; import com.aliyuncs.ecs.model.v20140526.DescribeInstanceStatusRequest; import com.aliyuncs.ecs.model.v20140526.DescribeInstanceStatusResponse; import com.aliyun.kms.secretsmanager.plugin.sdkcore.ProxyAcsClient; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.exceptions.ServerException; public class AliyunSdkProviderSample { public static void main(String[]args) { String secretName="******"; /* If the application cannot read the default configuration file (managed_credentials_providers.properties) from the classpath and executable JAR file, or if you need to customize the configuration file name, you can call the following code to set a custom configuration file and read it in the following order: 1. "your-config-name" absolute path + filename, which reads the file under the absolute path. 2. "your-config-name" filename only, which first reads the configuration file under the classpath, then the configuration file in the executable JAR file. */ //ConfigLoader.setConfigName("your-config-name"); // 1. Obtain the ACSClient by using aliyun-java-sdk-managed-credentials-provider. IAcsClient client = null; try { client = new ProxyAcsClient("<the regionId of ECS>", secretName); } catch (ClientException e) { e.printStackTrace(); } // 2. Call the ECS OpenAPI to implement business functions. DescribeInstanceStatusRequest request = new DescribeInstanceStatusRequest(); DescribeInstanceStatusResponse response; try { response = client.getAcsResponse(request); } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); } // 3. Release the plug-in resources by closing the client. client.shutdown(); } }
-
Uso no OSS SDK
-
Adicione o plug-in de secret do RAM ao seu projeto por meio do Maven.
<dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>4.5.17</version> </dependency> <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>[2.1.0,3.10.2]</version> <exclusions> <exclusion> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-kms</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-sdk-oss-managed-credentials-provider</artifactId> <version>[1.3.1,]</version> </dependency>NotaInstale a versão mais recente do plug-in. Para mais informações, consulte o source code.
-
Obtenha o cliente do OSS Java SDK e chame os cloud services. O exemplo a seguir usa o listBuckets do OSS.
import com.aliyun.kms.secretsmanager.plugin.oss.ProxyOSSClientBuilder; import com.aliyun.oss.OSS; import com.aliyun.oss.model.Bucket; import java.util.List; public class OssProviderSample { public static void main(String[] args) throws Exception { String secretName = "******"; String endpoint = "https://oss-cn-hangzhou.aliyuncs.com"; /* If the application cannot read the default configuration file (managed_credentials_providers.properties) from the classpath and executable JAR file, or if you need to customize the configuration file name, you can call the following code to set a custom configuration file and read it in the following order: 1. "your-config-name" absolute path + filename, which reads the file under the absolute path. 2. "your-config-name" filename only, which first reads the configuration file under the classpath, then the configuration file in the executable JAR file. */ //ConfigLoader.setConfigName("your-config-name"); // Obtain the OSS client. OSS ossClient = new ProxyOSSClientBuilder().build(endpoint, secretName); // The following is the business code: call Alibaba Cloud OSS services to implement business functions. List<Bucket> buckets = ossClient.listBuckets(); for (Bucket bucket : buckets) { if (bucket != null) { // ... } } // Release the plug-in resources by closing the client. ossClient.shutdown(); } }
Python
Alibaba Cloud SDK for Python (V1.0)
-
Execute o comando pip para adicionar o plug-in de secret do RAM ao seu projeto.
pip install aliyun-openapi-python-sdk-managed-credentials-providerNotaVerifique se a versão do plug-in é 0.1.0 ou posterior. Para mais informações, consulte o source code.
-
Obtenha o cliente do Alibaba Cloud SDK for Python e chame os cloud services.
from aliyun_sdk_secretsmanager_sdk_core_plugin.proxy_acs_client import ProxyAcsClient region="cn-hangzhou" secretName="******" # 1. Obtain the ACSClient. client = ProxyAcsClient(region_id=region, secret_name=secretName ) # 2. Business code: use the client to call Alibaba Cloud services without code changes. ... # 3. Release the plug-in resources by closing the client. client.shutdown()
OSS Python SDK
-
Execute o comando pip para adicionar o plug-in de secret do RAM ao seu projeto.
pip install aliyun-oss-python-sdk-managed-credentials-providerNotaVerifique se a versão do plug-in é 0.1.0 ou posterior. Para mais informações, consulte o source code.
-
Obtenha o cliente do Alibaba Cloud OSS Python SDK e chame os cloud services.
from aliyun_sdk_secretsmanager_oss_plugin.proxy_bucket import ProxyBucket from itertools import islice endpoint = "******" secret_name ="******" bucket_name = "******" bucket = ProxyBucket(secret_name=secret_name, endpoint=endpoint, bucket_name=bucket_name) objects = bucket.list_objects() for b in islice(objects.object_list, 10): print(b.key) bucket.shutdown()
Go
Alibaba Cloud SDK for Go (V1.0)
-
Instale o plug-in de secret do RAM para o Alibaba Cloud SDK for Go.
ImportanteInstale a versão mais recente do plug-in. Para mais informações, consulte o source code.
Para Go, a versão do
alibaba-cloud-sdk-goexigida pelo plug-in de secret do RAM deve ser anterior a v1.63.0. Verifique e confirme a versão no arquivogo.moddo plug-in para evitar possíveis problemas de compatibilidade.
-
Método 1: Use o
go.mode gerencie suas dependências.Adicione o seguinte conteúdo ao arquivo
go.modpara instalar a dependência.require ( github.com/aliyun/aliyun-sdk-managed-credentials-providers-go/aliyun-sdk-managed-credentials-providers/alibaba-cloud-sdk-go-managed-credentials-provider vX.X.X ) -
Método 2: Use o comando
go getpara obter o pacote de código remoto.go get -u github.com/aliyun/aliyun-sdk-mxanaged-credentials-providers-go/aliyun-sdk-managed-credentials-providers/alibaba-cloud-sdk-go-managed-credentials-provider
-
Obtenha o cliente do Alibaba Cloud SDK for Go e chame os cloud services.
O exemplo a seguir usa a API DescribeInstances do ECS.
package sample import ( "fmt" "github.com/aliyun/alibaba-cloud-sdk-go/services/ecs" sdkcoreprovider "github.com/aliyun/aliyun-sdk-managed-credentials-providers-go/aliyun-sdk-managed-credentials-providers/alibaba-cloud-sdk-go-managed-credentials-provider/sdk" ) func main() { secretName := "********" regionId := "cn-hangzhou" client, err := sdkcoreprovider.GetClient(&ecs.Client{}, regionId, secretName) if err != nil { fmt.Println(err) return } ecsClient := client.(*ecs.Client) request := ecs.CreateDescribeInstancesRequest() instancesResponse, err := ecsClient.DescribeInstances(request) if err != nil { fmt.Println(err) return } for _, instance := range instancesResponse.Instances.Instance { // do something with instance } }
OSS Go SDK
-
Instale o plug-in de secret do RAM para o OSS Go SDK.
ImportanteInstale a versão mais recente do plug-in. Para mais informações, consulte o source code.
Para Go, a versão do
alibaba-cloud-sdk-goexigida pelo plug-in de secret do RAM deve ser anterior a v1.63.0. Verifique e confirme a versão no arquivogo.moddo plug-in para evitar possíveis problemas de compatibilidade.
-
Método 1: Use o
go.mode gerencie suas dependências.Adicione o seguinte conteúdo ao arquivo
go.modpara instalar a dependência.require ( github.com/aliyun/aliyun-sdk-managed-credentials-providers-go/aliyun-sdk-managed-credentials-providers/aliyun-oss-go-sdk-managed-credentials-provider vX.X.X ) -
Método 2: Use o comando
go getpara obter o pacote de código remoto.go get -u github.com/aliyun/aliyun-sdk-managed-credentials-providers-go/aliyun-sdk-managed-credentials-providers/aliyun-oss-go-sdk-managed-credentials-provider
-
Obtenha o cliente do Alibaba Cloud OSS Go SDK e chame os cloud services.
package sample import ( "fmt" ossprovider "aliyun-oss-go-sdk-managed-credentials-provider/sdk" ) func main() { secretName := "********" endpoint := "https://oss-cn-hangzhou.aliyuncs.com" // Obtain the proxy OSS client. client, err := ossprovider.New(endpoint, secretName) if err != nil { fmt.Println(err) return } result, err := client.ListBuckets() if err != nil { fmt.Println(err) return } for _, bucket := range result.Buckets { // Business code. } // Release the plug-in resources by closing the client. client.Shutdown() }
FAQ
Como resolvo a expiração de credenciais após o plug-in de secret do Go reportar o erro InvalidAccessKeyId?
-
Causa:
O plug-in de secret do Go não repete a solicitação automaticamente quando ocorre um erro
InvalidAccessKeyId.Definir uma janela de rotação curta (como 10 minutos), menor que 6 horas, durante a rotação manual pode tornar o AccessKey do cliente inválido antes da atualização do cache local.
-
Solução
Aguarde a atualização automática: Secrets com rotação automática obtêm novos secrets por meio do mecanismo de atualização agendada (o intervalo é de 6 horas).
Atualização imediata: Quando uma credencial expirar, capture a exceção e chame o método
sdk.RefreshSecretInfo(secretName)para atualizar manualmente o secret do RAM.Atualização agendada: Configure uma tarefa agendada para chamar
sdk.RefreshSecretInfo(secretName)em uma frequência personalizada para atualizar o secret do RAM, para garantir a obtenção do novo secret antes da expiração do atual.Ajuste a janela de rotação: Para a rotação manual de secrets do RAM, especifique a janela de rotação com mais de 12 horas.