Fazer referência a segredos do AWS Secrets Manager em parâmetros do Parameter Store
O AWS Secrets Manager ajuda você a organizar e gerenciar dados de configuração importantes, como credenciais, senhas e chaves de licença. O Parameter Store, um recurso do AWS Systems Manager, agora está integrado ao Secrets Manager, para que você possa recuperar segredos do Secrets Manager ao usar outros Serviços da AWS que já oferecem suporte para referências a parâmetros do Parameter Store. Esses serviços incluem o Amazon Elastic Compute Cloud (Amazon EC2), Amazon Elastic Container Service (Amazon ECS), AWS Lambda, AWS CloudFormation, AWS CodeBuild, AWS CodeDeploy e outros recursos do Systems Manager. Usando o Parameter Store para referenciar segredos do Secrets Manager, você cria um processo consistente e seguro para chamar e usar segredos e referenciar dados no código e nos scripts de configuração.
Para obter mais informações sobre o Secrets Manager, consulte O que é o AWS Secrets Manager no Manual do usuário do AWS Secrets Manager.
Restrições
Observe as seguintes restrições ao usar o Parameter Store para fazer referência a segredos do Secrets Manager:
-
Você só pode recuperar segredos do Secrets Manager usando as operações de API GetParameter e GetParameters. As operações de modificação e de APIs de consulta avançada, como DescribeParameters ou GetParametersByPath, não são compatíveis com o Secrets Manager.
-
Você pode usar a AWS Command Line Interface (AWS CLI), AWS Tools for Windows PowerShell e os SDKs para recuperar um segredo usando o Parameter Store.
-
Os segredos do Secrets Manager no Parameter Store devem ter um prefixo de
/aws/reference/secretsmanager
. Veja os exemplos a seguir:/aws/reference/secretsmanager/CFCreds1
/aws/reference/secretsmanager/myapp/db/password
-
O Parameter Store honra as políticas (IAM) do AWS Identity and Access Management anexadas aos segredos do Secrets Manager. Por exemplo, se o Usuário 1 não tiver acesso ao Segredo A, o Usuário 1 não poderá recuperar o Segredo A usando o Parameter Store.
-
Os parâmetros que fazem referência a segredos do Secrets Manager não podem usar os recursos de versionamento ou de histórico do Parameter Store.
-
O Parameter Store honra os estágios de versão do Secrets Manager. Se você fizer referência a um estágio da versão, ele usará letras, números, um ponto (.), um hífen (-) ou um sublinhado (_). Todos os outros símbolos especificados no estágio da versão provocam falha na referência.
Como referenciar um segredo do Secrets Manager usando o Parameter Store
O procedimento a seguir descreve como fazer referência a um segredo do Secrets Manager usando APIs do Parameter Store. O procedimento faz referência a outros procedimentos no Manual do usuário do AWS Secrets Manager.
nota
Antes de começar, verifique se você tem permissão para fazer referência aos segredos do Secrets Manager em parâmetros do Parameter Store. Se você tiver permissões de administrador no Secrets Manager e no Systems Manager, poderá fazer referência ou recuperar segredos usando as APIs do Parameter Store. Se você fizer referência a um segredo do Secrets Manager em um parâmetro do Parameter Store, mas não tiver permissão para acessar o segredo, a referência não funcionará. Para obter mais informações, consulte Controle de acesso e autenticação para o AWS Secrets Manager no Manual do usuário do AWS Secrets Manager.
Importante
O Parameter Store funciona como um serviço de passagem para referências a segredos do Secrets Manager. O Parameter Store não retém dados ou metadados sobre os segredos. A referência é stateless.
Para referenciar um segredo do Secrets Manager usando o Parameter Store
-
Crie um segredo no Secrets Manager. Para obter mais informações, consulte Criar e gerenciar segredos com o AWS Secrets Manager.
-
Faça referência a um segredo usando a AWS CLI, o AWS Tools for Windows PowerShell ou o SDK. Ao referenciar um segredo do Secrets Manager, o nome deve começar com o seguinte caminho reservado:
/aws/reference/secretsmanager/
. Especificando esse caminho, o Systems Manager saberá que precisa recuperar o segredo do Secrets Manager em vez do Parameter Store. Aqui estão alguns nomes de exemplo que referenciam corretamente os segredos do Gerenciador de Segredos,CFCreds1
eDBPass
, usando o Parameter Store.-
/aws/reference/secretsmanager/CFCreds1
-
/aws/reference/secretsmanager/DBPass
Este é um exemplo de código Java que faz referência a uma chave de acesso e a uma chave secreta armazenadas no Secrets Manager. Esse exemplo de código define um cliente do Amazon DynamoDB. O código recupera dados da configuração e credenciais do Parameter Store. Os dados da configuração são armazenados como um parâmetro de string no Parameter Store, e as credenciais são armazenadas no Secrets Manager. Embora os dados da configuração e as credenciais sejam armazenados em serviços separados, os dois conjuntos de dados podem ser acessados no Parameter Store usando a API
GetParameter
./** * Initialize Systems Manager client with default credentials */ AWSSimpleSystemsManagement ssm = AWSSimpleSystemsManagementClientBuilder.defaultClient(); ... /** * Example method to launch DynamoDB client with credentials different from default * @return DynamoDB client */ AmazonDynamoDB getDynamoDbClient() { //Getting AWS credentials from Secrets Manager using GetParameter BasicAWSCredentials differentAWSCreds = new BasicAWSCredentials( getParameter("/aws/reference/secretsmanager/
access-key
"), getParameter("/aws/reference/secretsmanager/secret-key
")); //Initialize the DynamoDB client with different credentials final AmazonDynamoDB client = AmazonDynamoDBClient.builder() .withCredentials(new AWSStaticCredentialsProvider(differentAWSCreds)) .withRegion(getParameter("region")) //Getting configuration from Parameter Store .build(); return client; } /** * Helper method to retrieve parameter value * @param parameterName identifier of the parameter * @return decrypted parameter value */ public GetParameterResult getParameter(String parameterName) { GetParameterRequest request = new GetParameterRequest(); request.setName(parameterName); request.setWithDecryption(true); return ssm.newGetParameterCall().call(request).getParameter().getValue(); }Estes são alguns exemplos da AWS CLI. Use o comando
aws secretsmanager list-secrets
para encontrar os nomes dos segredos.Exemplo 1 da AWS CLI: referência usando o nome do segredo
O comando retorna informações como as seguintes.
{ "Parameter": { "Name": "/aws/reference/secretsmanager/s1-secret", "Type": "SecureString", "Value": "Fl*MEishm!al875", "Version": 0, "SourceResult": "{ \"CreatedDate\": 1526334434.743, \"Name\": \"s1-secret\", \"VersionId\": \"aaabbbccc-1111-222-333-123456789\", \"SecretString\": \"Fl*MEishm!al875\", \"VersionStages\": [\"AWSCURRENT\"], \"ARN\": \"arn:aws:secretsmanager:us-east-2:123456789012:secret:s1-secret-E18LRP\" }" "LastModifiedDate": 2018-05-14T21:47:14.743Z, "ARN": "arn:aws:secretsmanager:us-east-2:123456789012:secret:s1-secret- E18LRP", } }
Exemplo 2 da AWS CLI: referência que inclui o ID da versão
O comando retorna informações como as seguintes.
{ "Parameter": { "Name": "/aws/reference/secretsmanager/s1-secret", "Type": "SecureString", "Value": "Fl*MEishm!al875", "Version": 0, "SourceResult": "{ \"CreatedDate\": 1526334434.743, \"Name\": \"s1-secret\", \"VersionId\": \"11111-aaa-bbb-ccc-123456789\", \"SecretString\": \"Fl*MEishm!al875\", \"VersionStages\": [\"AWSCURRENT\"], \"ARN\": \"arn:aws:secretsmanager:us-east-2:123456789012:secret:s1-secret-E18LRP\" }" "Selector": ":11111-aaa-bbb-ccc-123456789" } "LastModifiedDate": 2018-05-14T21:47:14.743Z, "ARN": "arn:aws:secretsmanager:us-east-2:123456789012:secret:s1-secret- E18LRP", }
Exemplo 3 da AWS CLI: referência que inclui o estágio da versão
O comando retorna informações como as seguintes.
{ "Parameter": { "Name": "/aws/reference/secretsmanager/s1-secret", "Type": "SecureString", "Value": "Fl*MEishm!al875", "Version": 0, "SourceResult": "{ \"CreatedDate\": 1526334434.743, \"Name\": \"s1-secret\", \"VersionId\": \"11111-aaa-bbb-ccc-123456789\", \"SecretString\": \"Fl*MEishm!al875\", \"VersionStages\": [\"AWSCURRENT\"], \"ARN\": \"arn:aws:secretsmanager:us-east-2:123456789012:secret:s1-secret-E18LRP\" }" "Selector": ":AWSCURRENT" } "LastModifiedDate": 2018-05-14T21:47:14.743Z, "ARN": "arn:aws:secretsmanager:us-east-2:123456789012:secret:s1-secret- E18LRP", }
-