Event Hubs-geheimen en -certificaten draaien

Voltooid

In deze les ziet u hoe u de geheimen roteert die worden gebruikt door de Event Hubs-resourceprovider.

Geheime roulatie voor resourceproviders voor waarde-toevoegen wordt momenteel alleen ondersteund via PowerShell.

Net als bij de Azure Stack Hub-infrastructuur gebruiken resourceproviders met waarde-toevoegen zowel interne als externe geheimen. Geheimen kunnen meerdere vormen aannemen, waaronder wachtwoorden en de versleutelingssleutels die worden onderhouden door X509-certificaten. Als operator bent u verantwoordelijk voor:

  • Het leveren van bijgewerkte externe geheimen, zoals een nieuw TLS-certificaat dat wordt gebruikt voor het beveiligen van eindpunten van de resourceprovider.
  • Het regelmatig rouleren van geheimen van de resourceprovider beheren.

Ter voorbereiding op het rotatieproces:

  1. Controleer de PKI-certificaatvereisten (Public Key Infrastructure) van Azure Stack Hub voor belangrijke vereiste informatie voordat u uw X509-certificaat aanschaft/verlengt, inclusief details over de vereiste PFX-indeling. Bekijk ook de vereisten die zijn opgegeven in de sectie Optionele PaaS-certificaten voor uw specifieke resourceprovider voor het toevoegen van waarden.
  2. Als u dat nog niet hebt gedaan, installeert u de Az-module van PowerShell voor Azure Stack Hub voordat u doorgaat. Versie 2.0.2-preview of hoger is vereist voor het rouleren van geheimen van Azure Stack Hub. Zie Migreren van AzureRM naar Azure PowerShell Az in Azure Stack Hub voor meer informatie.

Een nieuw TLS-certificaat voorbereiden

Maak of vernieuw vervolgens uw TLS-certificaat voor het beveiligen van de eindpunten van de resourceprovider met waarde toevoegen:

  1. Voer de stappen in CDR's (Certificaatondertekeningsaanvragen genereren) voor certificaatvernieuwing voor uw resourceprovider uit. Hier gebruikt u het hulpprogramma Azure Stack Hub Readiness Checker om de CSR te maken. Zorg ervoor dat u de juiste cmdlet voor uw resourceprovider uitvoert in de stap Certificaataanvragen genereren voor andere Azure Stack Hub-services. Wordt bijvoorbeeld New-AzsHubEventHubsCertificateSigningRequest gebruikt voor Event Hubs. Wanneer u klaar bent, verzendt u de gegenereerde gegevens. REQ-bestand naar uw certificeringsinstantie (CA) voor het nieuwe certificaat.
  2. Nadat u het certificaatbestand van de CA hebt ontvangen, voert u de stappen in Certificaten voorbereiden voor implementatie of rotatie uit. U gebruikt het hulpprogramma Gereedheidscontrole opnieuw om het bestand te verwerken dat wordt geretourneerd door de CA.
  3. Voltooi ten slotte de stappen in PKI-certificaten van Azure Stack Hub valideren. U gebruikt het hulpprogramma Gereedheidscontrole nogmaals om validatietests uit te voeren op uw nieuwe certificaat.

Geheimen draaien

Bepaal ten slotte de meest recente implementatie-eigenschappen van de resourceprovider en gebruik deze om het geheimrotatieproces te voltooien.

Resourceproviders worden als versiepakket geïmplementeerd in uw Azure Stack Hub-omgeving. Aan pakketten wordt een unieke pakket-id toegewezen, in de indeling <product-id>.<installed-version>. Waar <product-id> is een unieke tekenreeks die de resourceprovider vertegenwoordigt en <installed-version> een specifieke versie vertegenwoordigt. De geheimen die aan elk pakket zijn gekoppeld, worden opgeslagen in de Azure Stack Hub Key Vault-service.

Open een PowerShell-console met verhoogde bevoegdheid en voer de volgende stappen uit om de eigenschappen te bepalen die nodig zijn om de geheimen van de resourceprovider te draaien:

  1. Meld u aan bij uw Azure Stack Hub-omgeving met behulp van uw operatorreferenties. Zorg ervoor dat u de PowerShell Az-cmdlets (in plaats van AzureRM) gebruikt en vervang alle tijdelijke aanduidingen, zoals eindpunt-URL's en de naam van de maptenant.

  2. Voer de Get-AzsProductDeployment cmdlet uit om een lijst met de meest recente implementaties van de resourceprovider op te halen. De geretourneerde verzameling bevat een element voor elke geïmplementeerde "value" resourceprovider. Zoek de resourceprovider van belang en noteer de waarden voor deze eigenschappen:

    • "name" - bevat de product-id van de resourceprovider in het tweede segment van de waarde.
    • "properties"."deployment"."version" - bevat het momenteel geïmplementeerde versienummer.
PS C:\WINDOWS\system32> Get-AzsProductDeployment -AsJson
VERBOSE: GET https://adminmanagement.myregion.mycompany.com/subscriptions/ze22ca96-z546-zbc6-z566-z35f68799816/providers/Microsoft.Deployment.Admin/locations/global/productDeployments?api-version=2019-01-01 with 0-char payload
VERBOSE: Received 2656-char response, StatusCode = OK
{
    "value":  [
                  {
                      "id":  "/subscriptions/ze22ca96-z546-zbc6-z566-z35f68799816/providers/Microsoft.Deployment.Admin/locations/global/productDeployments/microsoft.eventhub",
                      "name":  "global/microsoft.eventhub",
                      "type":  "Microsoft.Deployment.Admin/locations/productDeployments",
                      "properties":  {
                                        "status":  "DeploymentSucceeded",
                                        "subscriptionId":  "b37ae55a-a6c6-4474-ba97-81519412adf5",
                                        "deployment":  {
                                                            "version":  "1.2003.0.0",
                                                            "actionPlanInstanceResourceId":"/subscriptions/ze22ca96-z546-zbc6-z566-z35f68799816/providers/Microsoft.Deployment.Admin/locations/global/actionplans/abcdfcd3-fef0-z1a3-z85d-z6ceb0f31e36",
                                                            "parameters":  {

                                                                          }
                                                        },
                                        "lastSuccessfulDeployment":  {
                                                                          "version":  "1.2003.0.0",
                                                                          "actionPlanInstanceResourceId":"/subscriptions/ze22ca96-z546-zbc6-z566-z35f68799816/providers/Microsoft.Deployment.Admin/locations/global/actionplans/abcdfcd3-fef0-z1a3-z85d-z6ceb0f31e36",
                                                                          "parameters":  {

                                                                                        }
                                                                      },
                                        "provisioningState":  "Succeeded"
                                    }
                  },
                  {
                  ...
                  }
              ]
}

  1. Bouw de pakket-id van de resourceprovider door de product-id en versie van de resourceprovider samen te stellen. Als u bijvoorbeeld de waarden gebruikt die in de vorige stap zijn afgeleid, is microsoft.eventhub.1.2003.0.0de Event Hubs RP-pakket-id.
  2. Gebruik de pakket-id die in de vorige stap is afgeleid, Get-AzsProductSecret -PackageId om de lijst met geheime typen op te halen die door de resourceprovider worden gebruikt. Zoek in de geretourneerde value verzameling het element met een waarde voor "Certificate" de "properties"."secretKind" eigenschap. Dit element bevat eigenschappen voor het certificaatgeheim van de RP. Noteer de naam die is toegewezen aan dit certificaatgeheim, dat wordt geïdentificeerd door het laatste segment van de "name" eigenschap, net boven "properties".
PS C:\WINDOWS\system32> Get-AzsProductSecret -PackageId 'microsoft.eventhub.1.2003.0.0' -AsJson
VERBOSE: GET
https://adminmanagement.myregion.mycompany.com/subscriptions/ze22ca96-z546-zbc6-z566-z35f68799816/providers/Microsoft.Deployment.Admin/locations/global/productPackages/microsoft.eventhub.1.2003.0.0/secrets?api-version=2019-01-01 with 0-char payload
VERBOSE: Received 617-char response, StatusCode = OK
{
    "value":  [
                    {
                        "id":  "/subscriptions/ze22ca96-z546-zbc6-z566-z35f68799816/providers/Microsoft.Deployment.Admin/locations/global/productPackages/microsoft.eventhub.1.2003.0.0/secrets/aseh-ssl-gateway-pfx",
                        "name":  "global/microsoft.eventhub.1.2003.0.0/aseh-ssl-gateway-pfx",
                        "type":  "Microsoft.Deployment.Admin/locations/productPackages/secrets",
                        "properties":  {
                                        "secretKind":  "Certificate",
                                        "description":  "Event Hubs gateway SSL certificate.",
                                        "expiresAfter":  "P730D",
                                        "secretDescriptor":  {

                                                                },
                                        "secretState":  {
                                                            "status":  "Deployed",
                                                            "rotationStatus":  "None",
                                                            "expirationDate":  "2022-03-31T00:16:05.3068718Z"
                                                        },
                                        "provisioningState":  "Succeeded"
                                    }
                    },
                    ...
                ]
}

De geheimen draaien

  1. Gebruik de Set-AzsProductSecret cmdlet om uw nieuwe certificaat te importeren in Key Vault, dat wordt gebruikt door het rotatieproces. Vervang de waarden van de tijdelijke aanduidingen voor variabelen dienovereenkomstig voordat u het script uitvoert:
$productId = '<product-id>'
$packageId = $productId + '.' + '<installed-version>'
$certSecretName = '<cert-secret-name>'
$pfxFilePath = '<cert-pfx-file-path>'
$pfxPassword = ConvertTo-SecureString '<pfx-password>' -AsPlainText -Force
Set-AzsProductSecret -PackageId $packageId -SecretName $certSecretName -PfxFileName $pfxFilePath -PfxPassword $pfxPassword -Force

  1. Gebruik ten slotte de cmdlet Invoke-AzsProductRotateSecretsAction om de interne en externe geheimen te roteren:
Invoke-AzsProductRotateSecretsAction -ProductId $productId

U kunt de voortgang van geheimrotatie controleren in de PowerShell-console of in de beheerportal door de resourceprovider in de Marketplace-service te selecteren:

Image of secret rotation process.