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á.
Mitigação de riscos do uso da AWS CLI para armazenar segredos do AWS Secrets Manager
Quando você usa a AWS Command Line Interface (AWS CLI) para chamar operações da AWS, você insere esses comandos em um shell de comandos. Por exemplo, você pode usar o prompt de comando do Windows ou o Windows PowerShell, Bash ou Z shell, entre outros. Muitos desses shells de comando incluem funcionalidade desenvolvida para aumentar a produtividade. Mas essa funcionalidade pode ser usada para comprometer seus segredos. Por exemplo, na maioria dos shells, você pode usar a tecla de seta para cima para ver o último comando inserido. O recurso histórico de comandos pode ser explorado por qualquer pessoa que acesse sua sessão não segura. Além disso, outros utilitários que funcionam em segundo plano podem ter acesso aos parâmetros de seus comandos, com o objetivo de ajudar você a realizar as tarefas com mais eficiência. Para mitigar esses riscos, siga as seguintes etapas:
-
Sempre bloqueie seu computador ao sair do console.
-
Desinstale ou desabilite os utilitários do console que você não precisa ou não usa mais.
-
Verifique se o shell ou o programa de acesso remoto, caso esteja usando um, não registra em log os comandos digitados.
-
Use técnicas para passar parâmetros não capturados pelo histórico de comandos do shell. O exemplo a seguir mostra como você pode digitar o texto do segredo em um arquivo de texto, passar o arquivo para o comando do AWS Secrets Manager e destruir o arquivo imediatamente. Isso significa que o histórico típico do shell não captura o texto do segredo.
O exemplo a seguir mostra os comandos típicos do Linux, mas seu shell pode exigir comandos um pouco diferentes:
$
touch secret.txt # Creates an empty text file
$
chmod go-rx secret.txt # Restricts access to the file to only the user
$
cat > secret.txt # Redirects standard input (STDIN) to the text file
ThisIsMyTopSecretPassword^D # Everything the user types from this point up to the CTRL-D (^D) is saved in the file
$
aws secretsmanager create-secret --name TestSecret --secret-string file://secret.txt # The Secrets Manager command takes the --secret-string parameter from the contents of the file
$
shred -u secret.txt # The file is destroyed so it can no longer be accessed.
Depois de executar esses comandos, você poderá usar as setas para cima e para baixo para percorrer o histórico de comandos e ver se o texto do segredo está sendo exibido em alguma linha.
Importante
Por padrão, não é possível executar uma técnica equivalente no Windows, a menos que você reduza primeiro o tamanho do buffer do histórico de comandos para 1.
Para configurar o prompt de comando do Windows para ter apenas 1 buffer de histórico de comando de 1 comando
-
Abra um prompt de comando como administrador (Executar como administrador).
-
Escolha o ícone no canto superior esquerdo e escolha Properties (Propriedades).
-
Na guia Options, defina Buffer Size e Number of Buffers como
1
, e escolha OK. -
Sempre que precisar digitar um comando que você não deseja armazenar no histórico, insira outro comando imediatamente depois dele, como:
echo.
Isso garante que você descarrega o comando sensível.
No shell do Prompt de comando do Windows, você pode fazer download da ferramenta SysInternals SDelete
C:\>
echo. 2> secret.txt # Creates an empty file
C:\>
icacls secret.txt /remove "BUILTIN\Administrators" "NT AUTHORITY/SYSTEM" /inheritance:r # Restricts access to the file to only the owner
C:\>
copy con secret.txt /y # Redirects the keyboard to text file, suppressing prompt to overwrite
THIS IS MY TOP SECRET PASSWORD^Z # Everything the user types from this point up to the CTRL-Z (^Z) is saved in the file
C:\>
aws secretsmanager create-secret --name TestSecret --secret-string file://secret.txt # The Secrets Manager command takes the --secret-string parameter from the contents of the file
C:\>
sdelete secret.txt # The file is destroyed so it can no longer be accessed.