View a markdown version of this page

Referência do Parameter Store - AWS Systems Manager

Referência do Parameter Store

Um parâmetro é qualquer parte de dados armazenada no Parameter Store, como um bloco de texto, uma lista de nomes, uma senha, um ID de AMI, um ID de comerciante ou outro valor de configuração. Você pode fazer referência a esses dados de forma centralizada em seus scripts, comandos e documentos do SSM.

Ao referenciar um parâmetro, você especifica o nome desse parâmetro usando a seguinte convenção.

{{ssm:parameter-name}}

nota

Os parâmetros não podem ser referenciados ou aninhados nos valores de outros parâmetros. Não é possível incluir {{}} ou {{ssm:parameter-name}} em um valor de parâmetro.

O Parameter Store fornece suporte a três tipos de parâmetros: String, StringList e SecureString.

Com uma exceção, ao criar ou atualizar um parâmetro, você insere o valor do parâmetro como texto sem formatação, e o Parameter Store não executa nenhuma validação no texto inserido. No entanto, para parâmetros String, você pode especificar o tipo de dados como aws:ec2:image, e o Parameter Store valida se o valor inserido é o formato adequado para uma AMI do Amazon EC2. por exemplo, ami-12345abcdeEXAMPLE.

Tipo de parâmetro: String

Por padrão, o valor de um parâmetro String consiste em qualquer bloco de texto inserido. Por exemplo:

  • abc123

  • Example Corp

  • <img src="images/bannerImage1.png"/>

Tipo de parâmetro: StringList

Os valores de parâmetros StringList contêm uma lista de valores separada por vírgulas, conforme mostrado nos exemplos a seguir.

Monday,Wednesday,Friday

CSV,TSV,CLF,ELF,JSON

Tipo de parâmetro: SecureString

Use o SecureString para valores de configuração que exigem criptografia, como endpoints de serviço e identificadores de conta. Para segredos como credenciais de banco de dados, chaves de API ou tokens, recomendamos o AWS Secrets Manager, que fornece controles de segurança específicos, incluindo rotação automática e replicação entre regiões.

Somente o valor de um parâmetro é criptografado. O nome do parâmetro, a descrição e outros metadados não são criptografados.

O Parameter Store criptografa e descriptografa valores de parâmetros SecureString usando uma chave do AWS KMS. Você pode usar a Chave gerenciada pela AWS padrão para o Parameter Store ou uma chave gerenciada pelo cliente. Use uma chave gerenciada pelo cliente quando precisar restringir quais entidades principais podem descriptografar parâmetros específicos. Para obter mais informações, consulte Criptografia e descriptografia de parâmetros usando chaves do AWS KMS.

Importante

Observe as seguintes informações importantes:

  • Se você gerencia credenciais que exigem rotação automática, acesso entre contas ou registro de auditoria detalhado, recomendamos usar o AWS Secrets Manager. O Secrets Manager foi desenvolvido especificamente para gerenciar segredos, como credenciais de banco de dados, chaves de API e segredos fornecidos por software de terceiros compatíveis. Para obter mais informações, consulte O que é o AWS Secrets Manager? no Guia do usuário do AWS Secrets Manager.

  • Não armazene dados confidenciais em um parâmetro String ou StringList. Para todos os dados confidenciais que devem permanecer criptografados, use somente o tipo de parâmetro SecureString.

  • Somente o valor de um parâmetro SecureString é criptografado. O nome do parâmetro, a descrição e outras propriedades não são criptografados.

Você pode usar parâmetros de SecureString com outros Serviços da AWS. A função do Lambda a seguir recupera um ID de comerciante criptografado do parâmetro /myapp/dev/vendor/merchant-id. A função usa o valor sem gravá-lo nos logs da função ou retorná-lo na resposta.

import json import boto3 ssm = boto3.client("ssm", region_name="us-east-1") def lambda_handler(event, context): response = ssm.get_parameter( Name="/myapp/dev/vendor/merchant-id", WithDecryption=True ) merchant_id = response["Parameter"]["Value"] # Use merchant_id when communicating with the vendor system. # Don't write the value to logs or include it in the response. return { "statusCode": 200, "body": json.dumps("Vendor configuration retrieved.") }
AWS KMSCriptografia de definição de preço do

Quando você cria um parâmetro SecureString, o Systems Manager utiliza AWS KMS para criptografar o valor do parâmetro.

Importante

O Parameter Store só oferece suporte a chaves de criptografia simétricas KMS. Não é possível usar uma chave de criptografia KMS assimétrica para criptografar os parâmetros. Para obter ajuda para determinar se uma KMS é simétrica ou assimétrica, consulte Identificar KMSs simétricas e assimétricas no Manual do desenvolvedor do AWS Key Management Service.

Não há cobrança do Parameter Store para criar um parâmetro SecureString, mas as cobranças pelo uso da criptografia do AWS KMS são aplicáveis. Para obter mais informações, consulte Preços do AWS Key Management Service.

Para obter mais informações sobre Chaves gerenciadas pela AWS e chaves gerenciadas pelo cliente, consulte Conceitos do AWS Key Management Service, no Guia do desenvolvedor do AWS Key Management Service. Para obter mais informações sobre como o Parameter Store usa o AWS KMS, consulte Como o AWS Systems ManagerParameter Store usa o AWS KMS.

nota

Para visualizar a Chave gerenciada pela AWS padrão para o Parameter Store, execute o comando a seguir.

aws kms describe-key \ --region us-east-1 \ --key-id alias/aws/ssm

Restrições de nome de parâmetro

Use as informações contidas neste tópico para ajudar você a especificar os valores válidos para os nomes de parâmetro quando você cria um parâmetro.

Essas informações complementam os detalhes no tópico PutParameter na Referência da API do AWS Systems Manager, que também fornece informações sobre os valores AllowedPattern, Description, KeyId, Overwrite, Type e Value.

Os requisitos e restrições para nomes de parâmetros incluem os seguintes:

  • Diferenciação de letras maiúsculas e minúsculas: os nomes de parâmetro diferenciam maiúsculas de minúsculas.

  • Espaços: nomes de parâmetro não podem incluir espaços.

  • Caracteres válidos: nomes de parâmetro podem conter somente os seguintes símbolos e letras: a-zA-Z0-9_.-

    Além disso, o caractere de barra (/) é usado para delinear hierarquias em nomes de parâmetros. Por exemplo: /Dev/Production/East/Project-ABC/MyParameter

  • Formato válido da AMI: quando você escolhe aws:ec2:image como o tipo de dados para um parâmetro String, o ID inserido deve ser validado para o formato de ID da AMI ami-12345abcdeEXAMPLE.

  • Totalmente qualificado: quando você cria ou faz referência a um parâmetro em uma hierarquia, é necessário incluir um caractere de barra (/) inicial. Quando você faz referência a um parâmetro que faz parte de uma hierarquia, é necessário especificar todo o caminho da hierarquia, inclusive a barra (/) inicial.

    • Nomes de parâmetros totalmente qualificados: MyParameter1, /MyParameter2, /Dev/Production/East/Project-ABC/MyParameter

    • Nome do parâmetro não totalmente qualificado: MyParameter3/L1

  • Comprimento: o comprimento máximo de um nome de parâmetro que você especifica é 1.011 caracteres. Esse número de 1.011 caracteres inclui os caracteres no ARN que precedem o nome especificado, como os 45 caracteres no arn:aws:ssm:us-east-2:111122223333:parameter/.

  • Prefixos: um nome de parâmetro não pode ser prefixado com "aws" ou "ssm" (sem distinção entre maiúsculas e minúsculas). Por exemplo, as tentativas de criar parâmetros com os seguintes nomes falaharão sem exceção:

    • awsTestParameter

    • SSM-testparameter

    • /aws/testparam1

    nota

    Quando você especifica um parâmetro em um documento, comando ou script do SSM, deve incluir ssm como parte da sintaxe, conforme mostrado nos exemplos a seguir. Válido: {{ssm:parameter-name}} e {{ ssm:parameter-name }}, como {{ssm:MyParameter}} e {{ ssm:MyParameter }}.

  • Exclusividade: um nome de parâmetro deve ser exclusivo em uma região da Região da AWS. Por exemplo, o Systems Manager trata os seguintes parâmetros como parâmetros separados, se eles existirem na mesma região:

    • /Test/TestParam1

    • /TestParam1

    Os exemplos a seguir também são exclusivos:

    • /Test/TestParam1/Logpath1

    • /Test/TestParam1

    No entanto, se estiverem na mesma região, os seguintes exemplos não serão considerados como exclusivos:

    • /TestParam1

    • TestParam1

  • Profundidade da hierarquia: se você especificar uma hierarquia de parâmetros, ela poderá ter uma profundidade máxima de quinze níveis. É possível definir um parâmetro em qualquer nível da hierarquia. Ambos os exemplos a seguir são estruturalmente válidos:

    • /Level-1/L2/L3/L4/L5/L6/L7/L8/L9/L10/L11/L12/L13/L14/parameter-name

    • parameter-name

    A tentativa de criar o seguinte parâmetro falharia com uma exceção HierarchyLevelLimitExceededException:

    • /Level-1/L2/L3/L4/L5/L6/L7/L8/L9/L10/L11/L12/L13/L14/L15/L16/parameter-name

Importante

Se um usuário tiver acesso a um caminho, o usuário poderá acessar todos os níveis desse caminho. Por exemplo, se um usuário tiver permissão para acessar um caminho /a, ele também pode acessar /a/b. Mesmo se o acesso de um usuário tiver sido explicitamente negado no AWS Identity and Access Management (IAM) para o parâmetro /a/b, ele ainda poderá chamar a operação de API GetParametersByPath recursivamente para /a e visualizar o /a/b.