Especifique dados confidenciais com o Secrets Manager - AWS Batch

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Especifique dados confidenciais com o Secrets Manager

Com AWS Batch, você pode injetar dados confidenciais em seus trabalhos armazenando seus dados confidenciais em AWS Secrets Manager segredos e, em seguida, referenciando-os na definição de seu trabalho. Os dados sigilosos armazenados em segredos do Secrets Manager podem ser expostos a um trabalho como variáveis de ambiente, ou como parte da configuração do log.

Ao injetar um segredo como variável de ambiente, você pode especificar uma JSON chave ou versão de um segredo a ser injetado. Esse processo ajuda a controlar os dados sigilosos expostos a sua tarefa. Para mais informações sobre versionamento de segredos, consulte Termos e Conceitos Importantes para AWS Secrets Manager no AWS Secrets Manager Guia do Usuário.

Considerações ao especificar dados confidenciais usando o Secrets Manager

As informações a seguir devem ser consideradas quando o Secrets Manager for usado para especificar dados sigilosos para tarefas.

  • Para injetar um segredo usando uma JSON chave específica ou uma versão de um segredo, a instância do contêiner em seu ambiente computacional deve ter a versão 1.37.0 ou posterior do agente de contêiner da Amazon instalada. ECS No entanto, recomendamos usar a versão mais recente do agente de contêiner. Para obter informações sobre como verificar a versão do seu agente e atualizar para a versão mais recente, consulte Atualização do agente de ECS contêiner da Amazon no Guia do desenvolvedor do Amazon Elastic Container Service.

    Para injetar o conteúdo completo de um segredo como uma variável de ambiente ou injetar um segredo em uma configuração de log, sua instância de contêiner deve ter a versão 1.23.0 ou posterior do agente de contêiner.

  • Somente segredos que armazenam dados de texto, que são segredos criados com o SecretString parâmetro do CreateSecretAPI, são suportados. Segredos que armazenam dados binários, que são segredos criados com o SecretBinary parâmetro do, CreateSecretAPInão são suportados.

  • Ao usar uma definição de tarefa que faz referência aos segredos do Secrets Manager para recuperar dados confidenciais para suas tarefas, se você também estiver usando endpoints de interface, deverá criar VPC os endpoints de interface para o VPC Secrets Manager. Para obter mais informações, consulte Usando o Secrets Manager com VPC endpoints no Guia do AWS Secrets Manager usuário.

  • Os dados sigilosos são injetados na tarefa quando a mesma é iniciada. Caso o segredo seja subsequentemente atualizado ou alternado, a tarefa não receberá o valor atualizado automaticamente. Você deve iniciar uma nova tarefa para forçar o serviço a iniciá-la com o valor do segredo atualizado.

IAMPermissões necessárias para AWS Batch segredos

Para este atributo, você precisa possuir a função de execução e referenciá-la em sua definição de trabalho. Isso permite que o agente de contêiner puxe os recursos Secrets Manager necessários. Para mais informações, consulte Função de execução do AWS Batch IAM.

Para prover acesso aos segredos Secrets Manager criados por você, adicione manualmente as permissões a seguir como política em linha ao papel de execução. Para obter mais informações, consulte Adicionar e remover IAM políticas no Guia IAM do usuário.

  • secretsmanager:GetSecretValue–- obrigatório caso faça referência a um segredo Secrets Manager.

  • kms:Decrypt—Obrigatório somente se seu segredo usar uma KMS chave personalizada e não a chave padrão. A ARN para sua chave personalizada deve ser adicionada como um recurso.

O exemplo de política em linha a seguir adiciona as permissões obrigatórias.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "kms:Decrypt" ], "Resource": [ "arn:aws:secretsmanager:<region>:<aws_account_id>:secret:<secret_name>", "arn:aws:kms:<region>:<aws_account_id>:key/<key_id>" ] } ] }

Injetando dados sigilosos como uma variável de ambiente

Você pode especificar o seguinte em sua definição de cargo:

  • Objeto secrets contendo o nome da variável de ambiente a ser definido no campo

  • O Amazon Resource Name (ARN) do segredo do Secrets Manager

  • Parâmetros adicionais contendo dados sigilosos a serem apresentados a tarefa

O exemplo a seguir mostra a sintaxe completa a ser especificada para o segredo Secrets Manager.

arn:aws:secretsmanager:region:aws_account_id:secret:secret-name:json-key:version-stage:version-id

A seção a seguir descreve os parâmetros adicionais. Esses parâmetros são opcionais. No entanto, caso opte por não utilizá-los, você precisará incluir dois pontos : para valores padrão. Abaixo, exemplos provendo mais contexto.

json-key

Especifica o nome da chave em um par de chave/ valor, com o valor que deseje definir como o valor da variável de ambiente. Somente valores em JSON formato são suportados. Se você não especificar uma JSON chave, o conteúdo completo do segredo será usado.

version-stage

Especifique o rótulo de preparação da versão do segredo que deseja usar. Caso um rótulo de preparação de versão seja especificado, você não poderá especificar um ID da versão. Se nenhum estágio de versão for especificado, o comportamento padrão será recuperar o segredo com o rótulo de preparação AWSCURRENT.

Rótulos de preparação são usados para monitoramento de diferentes versões de um segredo quando eles forem atualizados ou alternados. Cada versão de um segredo tem um ou mais rótulos de preparação e uma ID. Para obter mais informações, consulte Key Terms and AWS Concepts for Secrets Manager no Guia AWS Secrets Manager do Usuário.

version-id

Especifica o identificador exclusivo da versão do segredo que você deseja usar. Se uma ID da versão for especificada, você não poderá especificar um rótulo de preparação da versão. Se nenhuma ID de versão for especificada, o comportamento padrão será recuperar o segredo com o rótulo de preparação AWSCURRENT.

IDsAs versões são usadas para rastrear diferentes versões de um segredo quando elas são atualizadas ou alteradas. Cada versão de um segredo tem uma ID. Para obter mais informações, consulte Key Terms and AWS Concepts for Secrets Manager no Guia AWS Secrets Manager do Usuário.

Exemplo de definições de contêiner

Os exemplos a seguir mostram maneiras de fazer referência a segredos Secrets Manager nas suas definições de contêiner.

exemplo Referenciando um segredo completo

O seguinte é um trecho de definição de tarefa mostrando formato, ao fazer referência ao texto completo de um segredo Secrets Manager.

{ "containerProperties": [{ "secrets": [{ "name": "environment_variable_name", "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name-AbCdEf" }] }] }
exemplo Referenciando uma chave específica dentro de um segredo

Veja a seguir um exemplo de saída de um get-secret-valuecomando que exibe o conteúdo de um segredo junto com o rótulo de preparação da versão e o ID da versão associado a ele.

{
    "ARN": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf",
    "Name": "appauthexample",
    "VersionId": "871d9eca-18aa-46a9-8785-981dd39ab30c",
    "SecretString": "{\"username1\":\"password1\",\"username2\":\"password2\",\"username3\":\"password3\"}",
    "VersionStages": [
        "AWSCURRENT"
    ],
    "CreatedDate": 1581968848.921
}

Faça referência a uma chave específica da saída anterior em uma definição de contêiner especificando o nome da chave no final doARN.

{ "containerProperties": [{ "secrets": [{ "name": "environment_variable_name", "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf:username1::" }] }] }
exemplo Referenciando uma versão secreta específica

O seguinte é um exemplo de saída de comando describe-secret exibindo o conteúdo não criptografado de um segredo junto aos metadados de todas as versões do segredo.

{
    "ARN": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf",
    "Name": "appauthexample",
    "Description": "Example of a secret containing application authorization data.",
    "RotationEnabled": false,
    "LastChangedDate": 1581968848.926,
    "LastAccessedDate": 1581897600.0,
    "Tags": [],
    "VersionIdsToStages": {
        "871d9eca-18aa-46a9-8785-981dd39ab30c": [
            "AWSCURRENT"
        ],
        "9d4cb84b-ad69-40c0-a0ab-cead36b967e8": [
            "AWSPREVIOUS"
        ]
    }
}

Faça referência a um rótulo de preparação de versão específico da saída anterior em uma definição de contêiner especificando o nome da chave no final do. ARN

{ "containerProperties": [{ "secrets": [{ "name": "environment_variable_name", "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf::AWSPREVIOUS:" }] }] }

Faça referência a um ID de versão específico da saída anterior em uma definição de contêiner especificando o nome da chave no final doARN.

{ "containerProperties": [{ "secrets": [{ "name": "environment_variable_name", "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf::9d4cb84b-ad69-40c0-a0ab-cead36b967e8" }] }] }
exemplo Referenciando uma chave específica e um rótulo de estágio de versão de um segredo

O seguinte é um exemplo de como fazer referência a uma chave específica dentro de um segredo e rótulo de estágio de versão específico.

{ "containerProperties": [{ "secrets": [{ "name": "environment_variable_name", "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf:username1:AWSPREVIOUS:" }] }] }

Para uma chave específica e ID da versão, use a sintaxe a seguir.

{ "containerProperties": [{ "secrets": [{ "name": "environment_variable_name", "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf:username1::9d4cb84b-ad69-40c0-a0ab-cead36b967e8" }] }] }

Injete dados confidenciais em uma configuração de log

Ao especificar um logConfiguration em sua definição de tarefa, você pode especificar secretOptions com o nome da opção do driver de log a ser definida no contêiner e o segredo completo ARN do Secrets Manager contendo os dados confidenciais a serem apresentados ao contêiner.

O seguinte é um trecho de uma definição de trabalho mostrando formato, ao referenciar um segredo Secrets Manager.

{ "containerProperties": [{ "logConfiguration": [{ "logDriver": "splunk", "options": { "splunk-url": "https://cloud.splunk.com:8080" }, "secretOptions": [{ "name": "splunk-token", "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name-AbCdEf" }] }] }] }

Crie um AWS Secrets Manager segredo

Você pode usar o console Secrets Manager para criar um segredo para seus dados sigilosos. Para mais informações, consulte Criando um Segredo Básico no AWS Secrets Manager Guia do Usuário.

Para criar um segredo básico

Use Secrets Manager para criar um segredo para seus dados sigilosos.

  1. Abra o console do Secrets Manager em https://console.aws.amazon.com/secretsmanager/.

  2. Escolha Armazenar Novo Segredo.

  3. Em Selecionar Tipo de Segredo, selecione Outro Tipo de Segredo.

  4. Especifique os detalhes do seu segredo personalizado como pares de Chave e Valor. Por exemplo, você pode especificar uma chave de UserName e, em seguida, fornecer o nome do usuário apropriado como valor. Adicione uma segunda chave com o nome de Password e texto da senha como valor. Você também pode adicionar entradas para um nome de banco de dados, endereço de servidor ou TCP porta. Adicione quantos pares quiser para armazenar as informações obrigatórias.

    Como alternativa, você pode escolher a guia Texto Simples e inserir o valor do segredo como desejar.

  5. Escolha a chave de AWS KMS criptografia que você deseja usar para criptografar o texto protegido no segredo. Caso não escolha uma opção, o Secrets Manager verificará a existência de uma chave padrão para a conta e a utilizará, caso exista. Caso não exista uma chave padrão, o Secrets Manager criará uma automaticamente. Você também pode escolher Adicionar nova chave para criar uma KMS chave personalizada especificamente para esse segredo. Para criar sua própria KMS chave, você deve ter permissões para criar KMS chaves em sua conta.

  6. Escolha Próximo.

  7. Em Nome do Segredo, digite nome e caminho opcionais, como production/MyAwesomeAppSecret ou development/TestSecret, e, em seguida, escolha Avançar. Você pode adicionar opcionalmente uma descrição para ajudá-lo a lembrar o objetivo desse segredo mais tarde.

    O nome secreto deve ser ASCII letras, dígitos ou qualquer um dos seguintes caracteres: /_+ = . @-

  8. (Opcional) Nesse momento, você poderá configurar a rotação para o seu segredo. Para esse procedimento, deixe em Desabilitar Rotação Automática e escolha Avançar.

    Para obter informações sobre como configurar a rotação em segredos novos ou existentes, consulte Como girar seus AWS Secrets Manager segredos.

  9. Analise suas configurações e, em seguida, escolha Armazenar Segredo para salvar tudo que inseriu como novo segredo no Secrets Manager.