Obróć wpisy tajne rejestru kontenerów w centrum Azure Stack centrów danych (MDC)Rotate container registry secrets in Azure Stack Hub - Modular Data Center (MDC)

Użytkownicy centrum Azure Stack mogą obrócić wpisy tajne (certyfikaty, nazwy użytkownika i hasła) dla wdrożenia szablonu rejestru kontenerów.Your Azure Stack Hub users can rotate the secrets (certificates, username, and password) for a container registry template deployment. Można uruchomić skrypt, aby wypełnić nowe wartości klucza tajnego w Microsoft Azure Key Vault i ponownie wdrożyć istniejące wystąpienie szablonu rejestru kontenerów.You can run a script to populate new secret values in Microsoft Azure Key Vault and redeploy the existing Container registry template instance. Nie jest wymagane nowe wdrożenie.Rotating secrets by themselves doesn't require a new deployment.

Wymagania wstępne dla użytkownikaPrerequisites for the user

  • Użytkownik musi mieć zainstalowane moduły Azure Stack centrum programu PowerShell.The user will need to have the Azure Stack Hub PowerShell modules installed. Aby uzyskać więcej informacji, zobacz Instalowanie programu PowerShell dla Azure Stack.For more information, see Install PowerShell for Azure Stack.

  • Pobierz klucze tajne aktualizacji dla szablonu rejestru kontenerów.Get the update secrets for the container registry template. Aby uzyskać dostęp do rejestru platformy Docker, można użyć nowego certyfikatu SSL lub nowej kombinacji nazwy użytkownika i hasła.You can use a new SSL certificate or a new username and password combination for accessing the Docker registry.

  • Pobierz skrypty Znalezione w programie \registry\scripts po pobraniu pliku zip z repozytorium GitHub msazurestackworkloads/azurestack-Gallery .Get the scripts found in \registry\scripts after downloading the zip file from the msazurestackworkloads/azurestack-gallery GitHub repository.

Importuj nowe wpisy tajne do Key VaultImport new secrets into Key Vault

Postępuj zgodnie z poniższymi instrukcjami, aby ustawić nowe wpisy tajne w Key Vault.Follow the instructions below to set new secrets in Key Vault.

Ustaw zaktualizowane hasło użytkownika rejestru dla istniejącej nazwy użytkownikaSet updated registry user password for existing username

  1. Otwórz wiersz polecenia programu PowerShell z podwyższonym poziomem uprawnień, a następnie uruchom polecenie Import-Module .\\pre-reqs.ps1 z folderu Scripts.Open an elevated PowerShell prompt and then run Import-Module .\\pre-reqs.ps1 from the scripts folder.

  2. Aby zaktualizować wartość istniejącego użytkownika rejestru, uruchom polecenie cmdlet:To update the value of the existing registry user, run the cmdlet:

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

    Na przykład polecenie cmdlet zwraca następujące dane wyjściowe: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. Aby sprawdzić, czy wprowadzono nową wartość dla tego rekordu, Otwórz wiersz polecenia programu PowerShell z podwyższonym poziomem uprawnień i uruchom następujące polecenie 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
    

    Na przykład polecenie cmdlet zwraca następujące dane wyjściowe: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         : 
    

Ustaw nową nazwę użytkownika i hasło dla rejestruSet new Registry username and password

  1. Otwórz wiersz polecenia programu PowerShell z podwyższonym poziomem uprawnień i Import-Module .\pre-reqs.ps1 z folderu skrypty.Open an elevated PowerShell prompt and Import-Module .\pre-reqs.ps1 from the scripts folder.

  2. Aby utworzyć nowy wpis tajny dla nowej nazwy użytkownika i hasła, Otwórz wiersz polecenia programu PowerShell z podwyższonym poziomem uprawnień i uruchom następujące polecenie 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> 
    

    Na przykład polecenie cmdlet zwraca następujące dane wyjściowe: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. Aby sprawdzić, czy utworzono nowy wpis tajny, Otwórz wiersz polecenia programu PowerShell z podwyższonym poziomem uprawnień i uruchom następujące polecenie 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>
    

    Na przykład polecenie cmdlet zwraca następujące dane wyjściowe: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         : 
    

Ważne

W przypadku tworzenia nowego klucza tajnego (kombinacji nazwy użytkownika/hasła) należy usunąć stary Key Vault klucz tajny.If you are creating a new secret (username/password combination) you will need to delete the old Key Vault secret. Jeśli ponownie wdrożono istniejący szablon rejestru kontenerów bez usuwania starego klucza tajnego, a kombinacje starej i nowej nazwy użytkownika i hasła będą prawidłowe dla logowania do rejestru.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.

Aktualizowanie certyfikatu protokołu SSL dla istniejącego Key Vault klucza tajnegoUpdate the SSL certificate for existing Key Vault secret

  1. Otwórz wiersz polecenia programu PowerShell z podwyższonym poziomem uprawnień i uruchom następujące polecenie 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
    

    Na przykład polecenie cmdlet zwraca następujące dane wyjściowe: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. Podczas ponownego wdrażania istniejącego szablonu rejestru kontenerów będą używane wartości generowane przez tę funkcję.You will use the values produced by this function when redeploying the existing container registry template.

  3. Aby sprawdzić, czy utworzono nową wersję istniejącego wpisu tajnego, Otwórz wiersz polecenia programu PowerShell z podwyższonym poziomem uprawnień i uruchom następujące polecenie 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>
    

    Na przykład polecenie cmdlet zwraca następujące dane wyjściowe: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         : 
    

Ustawianie nowego certyfikatu SSL dla szablonu rejestru kontenerówSet a new SSL certificate for the container registry template

  1. Otwórz wiersz polecenia programu PowerShell z podwyższonym poziomem uprawnień i uruchom następujące polecenie cmdlet:Open an elevated PowerShell prompt, and run the following cmdlet:

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

    Na przykład polecenie cmdlet zwraca następujące dane wyjściowe: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 
    

Wdróż ponownie istniejący szablon rejestru kontenerówRedeploy existing container registry template

  1. Otwórz Portal użytkowników centrum Azure Stack.Open the Azure Stack Hub user portal.

  2. Przejdź do grupy zasobów, w której wdrożono maszynę wirtualną szablonu rejestru kontenerów.Navigate to the resource group that the container registry template VM is deployed.

    Grupa zasobów

  3. Wybierz wdrożenia w obszarze wdrożenia.Select the deployments under Deployments.

    Zrzut ekranu przedstawiający stronę "wdrożenia".

  4. W przypadku rotacji kluczy tajnych po raz pierwszy wybierz oryginalne wdrożenie.If rotating secrets for the first time, select the original deployment. Jeśli nie są to pierwsze rotacje kluczy tajnych, wybierz ostatnie wdrożenie, a następnie wybierz pozycję Wdróż ponownie.If this isn't the first time rotating secrets, select the most recent deployment and then select Redeploy.

    Zrzut ekranu pokazujący stronę "przegląd" z wybraną akcją "redeploy".

  5. W obszarze Wdróż szablon rozwiązania wybierz opcję Użyj istniejącej grupy zasobów i wybierz grupę zasobów, która została użyta do pierwotnego wdrożenia szablonu rejestru kontenerów.In Deploy Solution Template, select Use Existing Resource Group and select the resource group that was used to originally deploy the container registry template. Aby ponowne wdrożenie zakończyło się pomyślnie, musi używać tej samej grupy zasobów.In order for a redeployment to be successful, it must use the same resource group.

    Wdróż szablon rozwiązania

  6. W obszarze Parametry Sprawdź, czy parametry są zgodne z oryginalnym wdrożeniem.In Parameters check that the parameters match the original deployment. Należy dodać identyfikator klienta nazwy głównej usługi i klucz tajny jednostki usługi.The service principal client ID and service principal secret will need to be added.

    • Jeśli przenosisz tylko nazwę użytkownika i hasło do usługi rejestru, wystarczy dodać parametry jednostki usługi.If you're only rotating the username and password for the registry service, you just need to add the service principal parameters.

    • Jeśli zamierzasz obrócić certyfikat, musisz wprowadzić nowe wartości dla PFXKeyVaultSecretURL i PFXThumbprint, które były danymi wyjściowymi z ustawiania nowych wpisów tajnych.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.

    Zrzut ekranu przedstawiający okno "parametry".

  7. Wybierz przycisk OK , a następnie Utwórz.Select OK and then Create. Ponowne wdrożenie będzie kontynuowało pracę.The redeployment will proceed. Funkcja rejestru będzie nadal działać podczas ponownego wdrażania.Registry functionality will continue to function during redeployment.

    • W przypadku obracania nazwy użytkownika i hasła należy ponownie uwierzytelnić się w rejestrze po zakończeniu ponownego wdrożenia.If you are rotating username and password, you will need to authenticate to the registry again once the redeployment is complete.

    • W przypadku obracania certyfikatu nie należy wyłączać dostępu do rejestru.If you are rotating the certificate, you shouldn't experience any loss of access to the registry. Przyjęto założenie, że używasz certyfikatu od zaufanego dostawcy certyfikatów.This assumes you are using a certificate from a trusted cert provider. W przypadku używania certyfikatu prywatnego ten certyfikat musi być zainstalowany na klientach, aby zapobiec utracie dostępu.If using a private certificate this certificate will need to be installed on clients to prevent loss of access.

Następne krokiNext steps

Omówienie witryny Azure Stack MarketplaceAzure Stack Marketplace overview