Colocando chaves RSA no cofre de chaves do Azure

14

Como posso armazenar meu par de chaves (normalmente o id_rsa e o id_rsa.pub) no cofre de chaves do azure. Desejo colocar a chave pública no meu serviço GIT e permitir que uma máquina virtual faça o download da chave privada do cofre de chaves do Azure -> Para que ele possa acessar o GIT com segurança.

Tentei criar um par de arquivos PEM, combiná-los em um arquivo pfx e enviá-los como segredo, mas o arquivo que eu voltei parece ser completamente diferente dos arquivos pem.

Também tentei inserir manualmente minha chave secreta no Azure, mas transforma as novas linhas em espaços.

MercilessMaverick
fonte

Respostas:

23

Você pode usar a CLI do Azure para fazer upload id_rsapara o Azure Key Vault.

azure keyvault secret set --name shui --vault-name shui --file ~/.ssh/id_rsa

Você pode usar -hpara obter ajuda.

--file <file-name>                 the file that contains the secret value to be uploaded; cannot be used along with the --value or --json-value flag

Você também pode baixar o segredo do cofre de chaves.

az keyvault secret download --name shui --vault-name shui --file ~/.ssh/id_rsa

Eu comparo as chaves do meu laboratório. Eles são iguais.

Shui shengbao
fonte
Eu realmente aprecio todas as suas respostas aqui, thx!
Reage
Estou feliz em saber que minha resposta é útil para você.
Shui shengbao
Desculpe, eu não sou o OP, apenas li e testei e arquivei como conhecimento útil e senti que lhe devia um voto + comentário :). Desculpas pela confusão.
Reace
> Desculpe, eu não sou o OP, apenas li e testei e arquivei como conhecimento útil e senti que lhe devia um voto + comentário :) Parece engraçado. Comunidade tão amigável.
Net Runner
2
Para sua informação, seguir as maneiras apropriadas de obter segredo getnão funciona mais. az keyvault secret download --name <KeyNameHere> --vault-name <vaultNamehere> --file <filename here>
Gregory Suvalian
12

A resposta anterior de Shengbao Shui mostra o comando para armazenar um segredo usando a CLI 1.0 do Azure (Nó). Para a CLI 2.0 do Azure (Python), use a seguinte sintaxe:

Chave Set / Store:

az keyvault secret set --vault-name 'myvault' -n 'secret-name' -f '~/.ssh/id_rsa'

Argumentos:

Arguments
    --name -n    [Required]: Name of the secret.
    --vault-name [Required]: Name of the key vault.
    --description          : Description of the secret contents (e.g. password, connection string,
                             etc).
    --disabled             : Create secret in disabled state.  Allowed values: false, true.
    --expires              : Expiration UTC datetime  (Y-m-d'T'H:M:S'Z').
    --not-before           : Key not usable before the provided UTC datetime  (Y-m-d'T'H:M:S'Z').
    --tags                 : Space-separated tags in 'key[=value]' format. Use '' to clear existing
                             tags.

Content Source Arguments
    --encoding -e          : Source file encoding. The value is saved as a tag (`file-
                             encoding=<val>`) and used during download to automatically encode the
                             resulting file.  Allowed values: ascii, base64, hex, utf-16be,
                             utf-16le, utf-8.  Default: utf-8.
    --file -f              : Source file for secret. Use in conjunction with '--encoding'.
    --value                : Plain text secret value. Cannot be used with '--file' or '--encoding'.

Global Arguments
    --debug                : Increase logging verbosity to show all debug logs.
    --help -h              : Show this help message and exit.
    --output -o            : Output format.  Allowed values: json, jsonc, table, tsv.  Default:
                             json.
    --query                : JMESPath query string. See http://jmespath.org/ for more information
                             and examples.
    --verbose              : Increase logging verbosity. Use --debug for full debug logs.

Recuperar / Obter Chave:

Salve a chave em um arquivo ~/.ssh/mykeyusando o utilitário jq.

az keyvault secret show --vault-name myvault --name 'secret-name' | jq -r .value > ~/.ssh/mykey

Os arquivos podem ser impressos com uma nova linha à direita, que você pode remover com um liner perl:

perl -pi -e 'chomp if eof' ~/.ssh/mykey

# Set permissions to user-read only
chmod 600 ~/.ssh/mykey

Gere a chave pública a partir do arquivo de chave privada ...

ssh-keygen -y -f ~/.ssh/myfile > ~/.ssh/myfile.pub
Rodovia da Vida
fonte