Colocando chaves RSA no cofre da chave azul

9

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

Eu tentei fazer um par de arquivos PEM e combiná-los em um pfx e fazer o upload que, como um segredo, o arquivo que eu recebo parece ser completamente diferente do arquivo pem.

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

    
por Jordan 04.05.2017 / 08:46

2 respostas

13

Você pode usar a CLI do Azure para carregar id_rsa no Cofre de Chaves do Azure.

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

Você pode usar -h para 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 da chave.

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

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

    
por 04.05.2017 / 09:07
6

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

Definir / armazenar chave:

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/mykey usando 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 verso de perl:

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

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

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

ssh-keygen -y -f ~/.ssh/myfile > ~/.ssh/myfile.pub
    
por 10.03.2018 / 00:53