Trabalhar com hierarquias de parâmetros - AWS Systems Manager

Trabalhar com hierarquias de parâmetros

Gerenciar dezenas ou centenas de parâmetros como uma lista simples é um processo demorado e propenso a erros. Também pode ser difícil identificar o parâmetro correto para uma tarefa. Isso significa que você pode usar acidentalmente o parâmetro errado ou pode criar vários parâmetros que usam os mesmos dados de configuração.

Você pode usar hierarquias de parâmetros para ajudar você a organizar e gerenciar parâmetros. Uma hierarquia é um nome de parâmetro que inclui um caminho definido usando barras (/).

Exemplos de hierarquia de parâmetros

O exemplo a seguir usa três níveis de hierarquia no nome para identificar o seguinte:

/Environment/Type of computer/Application/Data

/Dev/DBServer/MySQL/db-string13

É possível criar uma hierarquia com um máximo de 15 níveis. Sugerimos que você crie hierarquias que reflitam uma estrutura hierárquica existente no seu ambiente, conforme indicado nos exemplos a seguir:

  • Seu ambiente de integração contínua e entrega contínua (fluxos de trabalho de CI/CD)

    /Dev/DBServer/MySQL/db-string

    /Staging/DBServer/MySQL/db-string

    /Prod/DBServer/MySQL/db-string

  • Seus aplicativos que utilizam contêineres

    /MyApp/.NET/Libraries/my-password
  • Sua organização empresarial

    /Finance/Accountants/UserList

    /Finance/Analysts/UserList

    /HR/Employees/EU/UserList

As hierarquias de parâmetros padronizam a maneira de criar parâmetros e facilitam o gerenciamento de parâmetros ao longo do tempo. Uma hierarquia de parâmetros também pode ajudar você a identificar o parâmetro correto para uma tarefa de configuração. Isso ajuda você a evitar a criação de vários parâmetros com os mesmos dados de configuração.

Você pode criar uma hierarquia que permite compartilhar parâmetros em diferentes ambientes, como mostram os exemplos a seguir, que usam senhas em ambientes de desenvolvimento e teste.

/DevTest/MyApp/database/my-password

Você poderia então criar uma senha exclusiva para o seu ambiente de produção, conforme mostrado no exemplo a seguir:

/prod/MyApp/database/my-password

Não é necessário especificar uma hierarquia de parâmetros. Você pode criar parâmetros no nível um. Estes são chamados de parâmetros raiz. Por motivo de compatibilidade com versões anteriores, todos os parâmetros criados no Parameter Store antes do lançamento de hierarquias são parâmetros raiz. Os sistemas tratam ambos os parâmetros a seguir como parâmetros raiz.

/parameter-name

parameter-name

Consultar parâmetros em uma hierarquia

Outro benefício de usar hierarquias é a capacidade de consultar todos os parâmetros dentro de uma hierarquia usando a operação de API GetParametersByPath. Por exemplo, se você executar o seguinte comando na AWS Command Line Interface (AWS CLI), o sistema retornará todos os parâmetros no nível do IIS.

aws ssm get-parameters-by-path --path /Dev/Web/IIS

Para visualizar os parâmetros de SecureString descriptografados em uma hierarquia, você especifica o caminho e o parâmetro --with-decryption, como mostra o exemplo a seguir.

aws ssm get-parameters-by-path --path /Prod/ERP/SAP --with-decryption

Restringir o acesso a ações da API do Parameter Store

Usando políticas do AWS Identity and Access Management (IAM), você pode fornecer ou restringir o acesso do usuário a operações e conteúdos da API do Parameter Store.

No exemplo de política a seguir, os usuários recebem primeiro acesso para executar a operação da API PutParameter em todos os parâmetros na Conta da AWS 123456789012 na região Leste dos EUA (Ohio) (us-east-2). Porém, os usuários são impedidos de alterar valores de parâmetros existentes porque a opção Overwrite é explicitamente negada para a operação PutParameter. Em outras palavras, os usuários que recebem essa política podem criar parâmetros, mas não fazer alterações nos parâmetros existentes.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:PutParameter" ], "Resource": "arn:aws:ssm:us-east-2:123456789012:parameter/*" }, { "Effect": "Deny", "Action": [ "ssm:PutParameter" ], "Condition": { "StringEquals": { "ssm:Overwrite": [ "true" ] } }, "Resource": "arn:aws:ssm:us-east-2:123456789012:parameter/*" } ] }

Gerenciar parâmetros usando hierarquias (AWS CLI)

Esta demonstração explica como trabalhar com parâmetros e hierarquias de parâmetros usando a AWS CLI.

Para gerenciar parâmetros usando hierarquias
  1. Instale e configure a AWS Command Line Interface (AWS CLI), caso ainda não o tenha feito.

    Para obter informações, consulte Instalar ou atualizar a versão mais recente da AWS CLI.

  2. Execute o seguinte comando para criar um parâmetro que usa o parâmetro allowedPattern e o tipo de parâmetro String. O padrão permitido neste exemplo significa que o valor para o parâmetro deve ter entre 1 e 4 dígitos.

    Linux & macOS
    aws ssm put-parameter \ --name "/MyService/Test/MaxConnections" \ --value 100 --allowed-pattern "\d{1,4}" \ --type String
    Windows
    aws ssm put-parameter ^ --name "/MyService/Test/MaxConnections" ^ --value 100 --allowed-pattern "\d{1,4}" ^ --type String

    O comando retornará o número da versão do parâmetro.

  3. Execute o seguinte comando para tentar substituir o parâmetro que você acabou de criar por um novo valor.

    Linux & macOS
    aws ssm put-parameter \ --name "/MyService/Test/MaxConnections" \ --value 10,000 \ --type String \ --overwrite
    Windows
    aws ssm put-parameter ^ --name "/MyService/Test/MaxConnections" ^ --value 10,000 ^ --type String ^ --overwrite

    O sistema lança o seguinte erro porque o novo valor não atende aos requisitos do padrão permitido que você especificou na etapa anterior.

    An error occurred (ParameterPatternMismatchException) when calling the PutParameter operation: Parameter value, cannot be validated against allowedPattern: \d{1,4}
  4. Execute o comando a seguir para criar um parâmetro SecureString que usa uma Chave gerenciada pela AWS. O padrão permitido neste exemplo significa que o usuário pode especificar qualquer caractere, e o valor deve estar entre 8 e 20 caracteres.

    Linux & macOS
    aws ssm put-parameter \ --name "/MyService/Test/my-password" \ --value "p#sW*rd33" \ --allowed-pattern ".{8,20}" \ --type SecureString
    Windows
    aws ssm put-parameter ^ --name "/MyService/Test/my-password" ^ --value "p#sW*rd33" ^ --allowed-pattern ".{8,20}" ^ --type SecureString
  5. Execute os seguintes comandos para criar mais parâmetros que usam a estrutura hierárquica da etapa anterior.

    Linux & macOS
    aws ssm put-parameter \ --name "/MyService/Test/DBname" \ --value "SQLDevDb" \ --type String
    aws ssm put-parameter \ --name "/MyService/Test/user" \ --value "SA" \ --type String
    aws ssm put-parameter \ --name "/MyService/Test/userType" \ --value "SQLuser" \ --type String
    Windows
    aws ssm put-parameter ^ --name "/MyService/Test/DBname" ^ --value "SQLDevDb" ^ --type String
    aws ssm put-parameter ^ --name "/MyService/Test/user" ^ --value "SA" ^ --type String
    aws ssm put-parameter ^ --name "/MyService/Test/userType" ^ --value "SQLuser" ^ --type String
  6. Execute o seguinte comando para obter o valor de dois parâmetros.

    Linux & macOS
    aws ssm get-parameters \ --names "/MyService/Test/user" "/MyService/Test/userType"
    Windows
    aws ssm get-parameters ^ --names "/MyService/Test/user" "/MyService/Test/userType"
  7. Execute o seguinte comando para consultar todos os parâmetros em um único nível.

    Linux & macOS
    aws ssm get-parameters-by-path \ --path "/MyService/Test"
    Windows
    aws ssm get-parameters-by-path ^ --path "/MyService/Test"
  8. Execute o seguinte comando para excluir dois parâmetros

    Linux & macOS
    aws ssm delete-parameters \ --names "/IADRegion/Dev/user" "/IADRegion/Dev/userType"
    Windows
    aws ssm delete-parameters ^ --names "/IADRegion/Dev/user" "/IADRegion/Dev/userType"