Rode segredos de registo de contentores no Azure Stack HubRotate container registry secrets in Azure Stack Hub

Os utilizadores do Azure Stack Hub podem rodar os segredos (certificados, nome de utilizador e palavra-passe) para uma implementação do modelo de registo de contentores.Your Azure Stack Hub users can rotate the secrets (certificates, username, and password) for a container registry template deployment. Pode executar um script para preencher novos valores secretos no Cofre de Chaves do Microsoft Azure e redistribuir a instância do modelo de registo de contentores existente.You can run a script to populate new secret values in Microsoft Azure Key Vault and redeploy the existing Container registry template instance. Os segredos rotativos por si só não requerem uma nova implantação.Rotating secrets by themselves doesn't require a new deployment.

Pré-requisitos para o utilizadorPrerequisites for the user

  • O utilizador terá de instalar os módulos Azure Stack Hub PowerShell.The user will need to have the Azure Stack Hub PowerShell modules installed. Para obter mais informações, consulte Instalar PowerShell para Azure Stack.For more information, see Install PowerShell for Azure Stack.

  • Obtenha os segredos de atualização para o modelo de registo de contentores.Get the update secrets for the container registry template. Pode utilizar um novo certificado SSL ou um novo nome de utilizador e combinação de palavra-passe para aceder ao registo Docker.You can use a new SSL certificate or a new username and password combination for accessing the Docker registry.

  • Encontre os scripts \registry\scripts depois de descarregar o ficheiro zip do repositório gitHub da msazurestackworkloads/azurestack-gallery GitHub.Get the scripts found in \registry\scripts after downloading the zip file from the msazurestackworkloads/azurestack-gallery GitHub repository.

Importar novos segredos para o Cofre-ChaveImport new secrets into Key Vault

Siga as instruções abaixo para definir novos segredos no Cofre de Chaves.Follow the instructions below to set new secrets in Key Vault.

Definir senha de utilizador de registo atualizada para o nome de utilizador existenteSet updated registry user password for existing username

  1. Abra uma solicitação powerShell elevada e, em seguida, corra Import-Module .\\pre-reqs.ps1 a partir da pasta scripts.Open an elevated PowerShell prompt and then run Import-Module .\\pre-reqs.ps1 from the scripts folder.

  2. Para atualizar o valor do utilizador de registo existente, execute o cmdlet:To update the value of the existing registry user, run the cmdlet:

    Set-RegistryAccessSecret -KeyVaultName newregkv `
        -RegistryUserName <username> `
        -RegistryUserPassword <newpassword> `
        -SkipExistCheck $true
    

    Por exemplo, o cmdlet devolve a seguinte saída:For example, the cmdlet returns the following output:

    PS C:\azurestack-gallery-master\registry\Scripts> Set-RegistryAccessSecret -KeyVaultName newregkv `
        -RegistryUserName admin `
        -RegistryUserPassword password1 `
        -SkipExistCheck $true 
    
    Check if key vault secret name (admin) exists.
    Creating key vault secret name (admin) as it does not exist.
    
  3. Para validar que foi introduzido um novo valor para este registo, abra uma solicitação elevada da PowerShell e execute o seguinte cmdlet:To validate that a new value has been entered for this record, open an elevated PowerShell prompt and run the following cmdlet:

    Get-AzureKeyVaultSecret -VaultName newregkv -Name admin -IncludeVersions
    

    Por exemplo, o cmdlet devolve a seguinte saída:For example, the cmdlet returns the following output:

    PS C:\azurestack-gallery-master\registry\Scripts> Get-AzureKeyVaultSecret -VaultName newregkv -Name admin -IncludeVersions
    
    
    Vault Name   : newregkv
    Name         : admin
    Version      : 2a1495372c474cc890c888518f02b19f
    Id           : https://newregkv.vault.shanghai.azurestack.corp.microsoft.com:443/secrets/
                   admin/2a1495372c474cc890c888518f02b19f
    Enabled      : True
    Expires      : 
    Not Before   : 
    Created      : 12/18/2019 7:05:56 PM
    Updated      : 12/18/2019 7:05:56 PM
    Content Type : 
    Tags         : 
    
    Vault Name   : newregkv
    Name         : admin
    Version      : 3fd65c1719c74997984648de18a1fa0e
    Id           : https://newregkv.vault.shanghai.azurestack.corp.microsoft.com:443/secrets/
                   admin/3fd65c1719c74997984648de18a1fa0e
    Enabled      : True
    Expires      : 
    Not Before   : 
    Created      : 12/17/2019 5:05:56 AM
    Updated      : 12/17/2019 5:05:56 AM
    Content Type : user credentials
    Tags         : 
    

Definir novo nome de utilizador e senha de registoSet new Registry username and password

  1. Abra uma solicitação PowerShell elevada e Import-Module .\pre-reqs.ps1 a partir da pasta scripts.Open an elevated PowerShell prompt and Import-Module .\pre-reqs.ps1 from the scripts folder.

  2. Para criar um novo segredo para o novo nome de utilizador e senha, abra uma solicitação elevada do PowerShell e execute o seguinte cmdlet:To create a new secret for the new username and password, open an elevated PowerShell prompt and run the following cmdlet:

    Set-RegistryAccessSecret -KeyVaultName newregkv `
        -RegistryUserName <newusername> `
        -RegistryUserPassword <newpassword> 
    

    Por exemplo, o cmdlet devolve a seguinte saída:For example, the cmdlet returns the following output:

    PS C:\azurestack-gallery-master\registry\Scripts> Set-RegistryAccessSecret -KeyVaultName newregkv `
        -RegistryUserName admin1 `
        -RegistryUserPassword password1
    
    Check if key vault secret name (admin1) exists.
    Creating key vault secret name (admin1) as it does not exist. 
    
  3. Para validar que um novo segredo foi criado, abra uma solicitação elevada do PowerShell e execute o seguinte cmdlet:To validate that a new secret has been created, open an elevated PowerShell prompt and run the following cmdlet:

    Get-AzureKeyVaultSecret -VaultName \<KeyVaultName> -Name \<username>
    

    Por exemplo, o cmdlet devolve a seguinte saída:For example, the cmdlet returns the following output:

    PS C:\azurestack-gallery-master\registry\Scripts> Get-AzureKeyVaultSecret -VaultName newregkv -Name admin1
    
    
    Vault Name   : newregkv
    Name         : admin1
    Version      : 2ae9a7239f4044be82ca9d1e9b80e85a
    Id           : https://newregkv.vault.shanghai.azurestack.corp.microsoft.com:443/secrets/admin1/2ae9a7239f4044be82ca9d1e9b80e85a
    Enabled      : True
    Expires      : 
    Not Before   : 
    Created      : 12/18/2019 11:28:18 PM
    Updated      : 12/18/2019 11:28:18 PM
    Content Type : user credentials
    Tags         : 
    

Importante

Se estiver a criar um novo segredo (username/password combination) terá de eliminar o antigo segredo do Key Vault.If you are creating a new secret (username/password combination) you will need to delete the old Key Vault secret. Se recolocar o modelo de registo de contentores existente sem eliminar o segredo antigo, tanto o antigo e novo nome de utilizador como as combinações de palavras-passe serão válidos para iniciar sessão no registo.If you redeploy the existing container registry template without deleting the old secret both the old and new username and password combinations will be valid for logging into the registry.

Atualize o certificado SSL para o segredo do Cofre chave existenteUpdate the SSL certificate for existing Key Vault secret

  1. Abra uma solicitação de PowerShell elevada e execute o seguinte cmdlet:Open an elevated PowerShell prompt and run the following cmdlet:

    Set-CertificateSecret -KeyVaultName \<keyvaultname> `
     -CertificateSecretName \<originalsecretnameforcertificate> `
    Set-CertificateSecret -KeyVaultName <keyvaultname> `
        -CertificateSecretName <originalsecretnameforcertificate> `
        -CertificateFilePath <pathtonewcertificate> `
        -CertificatePassword <certificatepassword> `
        -SkipExistCheck $true
    

    Por exemplo, o cmdlet devolve a seguinte saída:For example, the cmdlet returns the following output:

    PS C:\azurestack-gallery-master\registry\Scripts> Set-CertificateSecret -KeyVaultName newregkv `
        -CertificateSecretName containersecret `
        -CertificateFilePath C:\crinstall\shanghairegcertnew.pfx `
        -CertificatePassword <certificatepassword> `
        -SkipExistCheck $true
    Check if key vault secret name (containersecret) exists.
    Creating key vault secret name (containersecret) as it does not exist.
    ----------------------------------------------------------------
    PFX KeyVaultResourceId       : /subscriptions/997da68a-xxxx-xxxx-ad3d-ffeac81b02dc/resourceGroups/newregreg/providers/Microsoft.KeyVault/vaults/newregkv
    PFX KeyVaultSecretUrl        : https://newregkv.vault.shanghai.azurestack.corp.microsoft.com:443/secrets/containersecret/a07ece6b9914408e8f20c516e15b66c9
    PFX Certificate Thumbprint   : 31810AA7FEF1173188691FB3F47208E5389FBA61
    ---------------------------------------------------------------- 
    
  2. Utilizará os valores produzidos por esta função ao recolocar o modelo de registo de contentores existente.You will use the values produced by this function when redeploying the existing container registry template.

  3. Para validar que foi criada uma nova versão do segredo existente, abra um pedido elevado de PowerShell e execute o seguinte cmdlet:To validate that a new version of the existing secret was created, open an elevated PowerShell prompt and run the following cmdlet:

    Get-AzureKeyVaultSecret -VaultName <KeyVaultName> -Name <secretname>
    

    Por exemplo, o cmdlet devolve a seguinte saída:For example, the cmdlet returns the following output:

    PS C:\azurestack-gallery-master\registry\Scripts> Get-AzureKeyVaultSecret -VaultName newregkv -Name containersecret -IncludeVersions
    
    
    Vault Name   : newregkv
    Name         : containersecret
    Version      : a07ece6b9914408e8f20c516e15b66c9
    Id           : https://newregkv.vault.shanghai.azurestack.corp.microsoft.com:443/secrets/containersecret/a07ece6b9914408e8f20c516e15b66c9
    Enabled      : True
    Expires      : 
    Not Before   : 
    Created      : 12/18/2019 11:46:28 PM
    Updated      : 12/18/2019 11:46:28 PM
    Content Type : 
    Tags         : 
    
    Vault Name   : newregkv
    Name         : containersecret
    Version      : 0199c7ec1d8d41bb9ddff0f39dca9931
    Id           : https://newregkv.vault.shanghai.azurestack.corp.microsoft.com:443/secrets/containersecret/0199c7ec1d8d41bb9ddff0f39dca9931
    Enabled      : True
    Expires      : 
    Not Before   : 
    Created      : 12/17/2019 5:06:03 AM
    Updated      : 12/17/2019 5:06:03 AM
    Content Type : pfx
    Tags         : 
    

Definir um novo certificado SSL para o modelo de registo de contentoresSet a new SSL certificate for the container registry template

  1. Abra uma solicitação de PowerShell elevada e corra o seguinte cmdlet:Open an elevated PowerShell prompt, and run the following cmdlet:

    Set-CertificateSecret -KeyVaultName <keyvaultname> `
        -CertificateSecretName <newsecretnameforcertificate> `
        -CertificateFilePath <pathtonewcertificate> `
        -CertificatePassword <certificatepassword>
    

    Por exemplo, o cmdlet devolve a seguinte saída:For example, the cmdlet returns the following output:

    PS C:\azurestack-gallery-master\registry\Scripts>    Set-CertificateSecret -KeyVaultName newregkv `
        -CertificateSecretName containersecret121719 `
        -CertificateFilePath C:\crinstall\shanghairegcertnew.pfx `
        -CertificatePassword <certificatepassword> 
    Check if key vault secret name (containersecret121719) exists.
    Creating key vault secret name (containersecret121719) as it does not exist.
    ----------------------------------------------------------------
    PFX KeyVaultResourceId       : /subscriptions/997da68a-xxxx-xxxx-ad3d-ffeac81b02dc/resourc
    eGroups/newregreg/providers/Microsoft.KeyVault/vaults/newregkv
    PFX KeyVaultSecretUrl        : https://newregkv.vault.shanghai.azurestack.corp.microsoft.c
    om:443/secrets/containersecret121719/bb2cfe4df7bc4fbe854a00799afa8566
    PFX Certificate Thumbprint   : 31810AA7FEF1173188691FB3F47208E5389FBA61 
    

Reposicionar o modelo de registo de contentores existenteRedeploy existing container registry template

  1. Abra o portal de utilizadores Azure Stack Hub.Open the Azure Stack Hub user portal.

  2. Navegue para o grupo de recursos que o modelo de registo de contentores VM está implantado.Navigate to the resource group that the container registry template VM is deployed.

    Grupo de recursos

  3. Selecione as implementações em Implementações.Select the deployments under Deployments.

    Implementações

  4. Se girar segredos pela primeira vez, selecione a implementação original.If rotating secrets for the first time, select the original deployment. Se esta não for a primeira vez que gira os segredos, selecione a versão mais recente e, em seguida, selecione Recolocar.If this isn't the first time rotating secrets, select the most recent deployment and then select Redeploy.

    Voltar a implementar

  5. No Modelo de Solução de Implementação, selecione Use Existing Resource Group e selecione o grupo de recursos que foi utilizado para implantar originalmente o modelo de registo de contentores.In Deploy Solution Template , select Use Existing Resource Group and select the resource group that was used to originally deploy the container registry template. Para que uma reafectação seja bem sucedida, deve utilizar o mesmo grupo de recursos.In order for a redeployment to be successful, it must use the same resource group.

    Implementar modelo de solução

  6. Em Parâmetros verifique se os parâmetros coincidem com a implantação original.In Parameters check that the parameters match the original deployment. O iD principal do cliente de serviço e o segredo principal do serviço terão de ser adicionados.The service principal client ID and service principal secret will need to be added.

    • Se estiver apenas a rodar o nome de utilizador e a palavra-passe para o serviço de registo, basta adicionar os parâmetros principais do serviço.If you're only rotating the username and password for the registry service, you just need to add the service principal parameters.

    • Se estiver a rodar o certificado, terá de inserir os novos valores para o PFXKeyVaultSecretURL e PFXThumbprint que foram output a partir da definição dos novos segredos.If you're rotating the certificate, you'll need to input the new values for the PFXKeyVaultSecretURL and PFXThumbprint that were output from setting the new secrets.

    Parâmetros

  7. Selecione OK e, em seguida, Crie.Select OK and then Create. A reafectação prosseguirá.The redeployment will proceed. A funcionalidade do registo continuará a funcionar durante a redistribuição.Registry functionality will continue to function during redeployment.

    • Se estiver a rodar o nome de utilizador e a palavra-passe, terá de autenticar novamente o registo assim que a reafectação estiver concluída.If you are rotating username and password, you will need to authenticate to the registry again once the redeployment is complete.

    • Se estiver a rodar o certificado, não deverá sentir qualquer perda de acesso ao registo.If you are rotating the certificate, you shouldn't experience any loss of access to the registry. Isto pressupõe que está a usar um certificado de um fornecedor de certificados de confiança.This assumes you are using a certificate from a trusted cert provider. Se utilizar um certificado privado, este certificado terá de ser instalado nos clientes para evitar a perda de acesso.If using a private certificate this certificate will need to be installed on clients to prevent loss of access.

Passos seguintesNext steps

Visão geral do Mercado Azure StackAzure Stack Marketplace overview