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.

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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.