Certificaten voor een Service Fabric-cluster in Azure toevoegen of verwijderen
Het is raadzaam om vertrouwd te raken met de wijze waarop Service Fabric X.509-certificaten gebruikt en vertrouwd bent met de clusterbeveiligingsscenario's. U moet begrijpen wat een clustercertificaat is en waarvoor wordt gebruikt, voordat u verdergaat.
Het standaardgedrag van de Azure Service Fabrics SDK is het implementeren en gebruiken van het gedefinieerde certificaat met de vervaldatum die het meest in de toekomst verloopt; ongeacht de primaire of secundaire configuratiedefinitie. Terugvallen op het klassieke gedrag is een niet-aanbevolen geavanceerde actie en vereist het instellen van de parameterwaarde UseSecondaryIfNewer op false in uw Fabric.Code
configuratie.
Met Service Fabric kunt u twee clustercertificaten opgeven, een primaire en een secundaire, wanneer u certificaatbeveiliging configureert tijdens het maken van het cluster, naast clientcertificaten. Raadpleeg het maken van een Azure-cluster via de portal of het maken van een Azure-cluster via Azure Resource Manager voor meer informatie over het instellen ervan tijdens het maken van een cluster. Als u slechts één clustercertificaat opgeeft tijdens het maken, wordt dat gebruikt als het primaire certificaat. Nadat het cluster is gemaakt, kunt u een nieuw certificaat toevoegen als secundair certificaat.
Notitie
Voor een beveiligd cluster hebt u altijd ten minste één geldig clustercertificaat (niet ingetrokken en niet verlopen) nodig dat is geïmplementeerd (primair of secundair) (als dat niet het geval is, werkt het cluster niet meer). 90 dagen voordat alle geldige certificaten verlopen, genereert het systeem een waarschuwingstracering en een waarschuwingsstatus-gebeurtenis op het knooppunt. Dit zijn momenteel de enige meldingen die Service Fabric verzendt met betrekking tot het verlopen van certificaten.
Notitie
Het wordt aanbevolen de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Azure PowerShell installeren om aan de slag te gaan. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.
Een secundair clustercertificaat toevoegen met behulp van de portal
Secundair clustercertificaat kan niet worden toegevoegd via Azure Portal; Gebruik Azure Resource Manager.
Een clustercertificaat verwijderen met behulp van de portal
Voor een beveiligd cluster hebt u altijd ten minste één geldig (niet ingetrokken en niet verlopen) certificaat nodig. Het certificaat dat met de meest recente vervaldatum is geïmplementeerd, wordt in gebruik en het verwijderen ervan zorgt ervoor dat uw cluster niet meer functioneert; zorg ervoor dat u alleen het certificaat verwijdert dat is verlopen of een niet-gebruikt certificaat dat het snelst verloopt.
Als u een niet-gebruikt clusterbeveiligingscertificaat wilt verwijderen, gaat u naar de sectie Beveiliging en selecteert u de optie Verwijderen in het contextmenu van het ongebruikte certificaat.
Als u het certificaat wilt verwijderen dat als primair is gemarkeerd, moet u een secundair certificaat met een verlopende datum verder in de toekomst implementeren dan het primaire certificaat, waardoor het gedrag van automatische rollover wordt ingeschakeld; verwijder het primaire certificaat nadat de automatische rollover is voltooid.
Een secundair certificaat toevoegen met Behulp van Azure Resource Manager
Bij deze stappen wordt ervan uitgegaan dat u bekend bent met de werking van Resource Manager en dat u ten minste één Service Fabric-cluster hebt geïmplementeerd met behulp van een Resource Manager-sjabloon en dat u de sjabloon hebt gebruikt om het cluster bij de hand te stellen. Er wordt ook van uitgegaan dat u vertrouwd bent met het gebruik van JSON.
Notitie
Als u op zoek bent naar een voorbeeldsjabloon en parameters die u kunt gebruiken om mee of als uitgangspunt te volgen, downloadt u deze vanuit deze Git-opslagplaats.
Uw Resource Manager-sjabloon bewerken
Voor het gemak van het volgen bevat 5-VM-1-NodeTypes-Secure_Step2.JSON alle bewerkingen die we maken. Het voorbeeld is beschikbaar op git-opslagplaats.
Zorg ervoor dat u alle stappen volgt
Open de Resource Manager-sjabloon die u hebt gebruikt om uw cluster te implementeren. (Als u het voorbeeld uit de vorige opslagplaats hebt gedownload, gebruikt u 5-VM-1-NodeTypes-Secure_Step1.JSON om een beveiligd cluster te implementeren en vervolgens die sjabloon te openen).
Voeg twee nieuwe parameters secCertificateThumbprint en secCertificateUrlValue van het type 'tekenreeks' toe aan de parametersectie van uw sjabloon. U kunt het volgende codefragment kopiëren en toevoegen aan de sjabloon. Afhankelijk van de bron van uw sjabloon hebt u deze mogelijk al gedefinieerd, als dat het goed is om naar de volgende stap te gaan.
"secCertificateThumbprint": { "type": "string", "metadata": { "description": "Certificate Thumbprint" } }, "secCertificateUrlValue": { "type": "string", "metadata": { "description": "Refers to the location URL in your key vault where the certificate was uploaded, it is should be in the format of https://<name of the vault>.vault.azure.net:443/secrets/<exact location>" } },
Breng wijzigingen aan in de resource microsoft.ServiceFabric/clusters : zoek de resourcedefinitie Microsoft.ServiceFabric/clusters in uw sjabloon. Onder eigenschappen van die definitie vindt u de JSON-tag 'Certificaat'. Deze moet er ongeveer uitzien als het volgende JSON-fragment:
"properties": { "certificate": { "thumbprint": "[parameters('certificateThumbprint')]", "x509StoreName": "[parameters('certificateStoreValue')]" }
Voeg een nieuwe tag 'thumbprintSecondary' toe en geef deze de waarde [parameters('secCertificateThumbprint')]".
De resourcedefinitie moet er nu als volgt uitzien (afhankelijk van uw bron van de sjabloon, is deze mogelijk niet precies hetzelfde als het onderstaande codefragment).
"properties": { "certificate": { "thumbprint": "[parameters('certificateThumbprint')]", "thumbprintSecondary": "[parameters('secCertificateThumbprint')]", "x509StoreName": "[parameters('certificateStoreValue')]" }
Als u het certificaat wilt overrollen, geeft u het nieuwe certificaat op als primair en verplaatst u de huidige primaire als secundaire. Dit resulteert in de rollover van uw huidige primaire certificaat naar het nieuwe certificaat in één implementatiestap.
"properties": { "certificate": { "thumbprint": "[parameters('secCertificateThumbprint')]", "thumbprintSecondary": "[parameters('certificateThumbprint')]", "x509StoreName": "[parameters('certificateStoreValue')]" }
Breng wijzigingen aan in alle resourcedefinities Microsoft.Compute/virtualMachineScaleSets: zoek de resourcedefinitie Microsoft.Compute/virtualMachineScaleSets. Schuif naar de 'uitgever': 'Microsoft.Azure.ServiceFabric', onder 'virtualMachineProfile'.
In de instellingen van de Service Fabric-uitgever ziet u ongeveer zoiets als dit.
Voeg de nieuwe certificaatvermeldingen eraan toe
"certificateSecondary": { "thumbprint": "[parameters('secCertificateThumbprint')]", "x509StoreName": "[parameters('certificateStoreValue')]" } },
De eigenschappen moeten er nu als volgt uitzien
Als u het certificaat wilt overrollen, geeft u het nieuwe certificaat op als primair en verplaatst u de huidige primaire als secundaire. Dit resulteert in de rollover van uw huidige certificaat naar het nieuwe certificaat in één implementatiestap.
"certificate": { "thumbprint": "[parameters('secCertificateThumbprint')]", "x509StoreName": "[parameters('certificateStoreValue')]" }, "certificateSecondary": { "thumbprint": "[parameters('certificateThumbprint')]", "x509StoreName": "[parameters('certificateStoreValue')]" } },
De eigenschappen moeten er nu als volgt uitzien
Breng wijzigingen aan in alle resourcedefinities Microsoft.Compute/virtualMachineScaleSets: zoek de resourcedefinitie Microsoft.Compute/virtualMachineScaleSets. Schuif naar de 'vaultCertificates': onder OSProfile. Het ziet er ongeveer als volgt uit.
Voeg de secCertificateUrlValue eraan toe. gebruik het volgende fragment:
{ "certificateStore": "[parameters('certificateStoreValue')]", "certificateUrl": "[parameters('secCertificateUrlValue')]" }
Nu moet de resulterende Json er ongeveer als volgt uitzien.
Notitie
Zorg ervoor dat u stap 4 en 5 voor alle Nodetypes/Microsoft.Compute/virtualMachineScaleSets-resourcedefinities in uw sjabloon hebt herhaald. Als u er een van mist, wordt het certificaat niet geïnstalleerd op die virtuele-machineschaalset en hebt u onvoorspelbare resultaten in uw cluster, inclusief het cluster dat uitvalt (als u geen geldige certificaten hebt die het cluster voor beveiliging kan gebruiken. Dus controleer het nog eens, voordat u verdergaat.
Bewerk het sjabloonbestand om de nieuwe parameters weer te geven die u hierboven hebt toegevoegd
Als u het voorbeeld uit de Git-opslagplaats gebruikt om mee te volgen, kunt u beginnen met het aanbrengen van wijzigingen in het voorbeeld 5-VM-1-NodeTypes-Secure.parameters_Step2.JSON
Bewerk het parameterbestand van de Resource Manager-sjabloon, voeg de twee nieuwe parameters toe voor secCertificateThumbprint en secCertificateUrlValue.
"secCertificateThumbprint": {
"value": "thumbprint value"
},
"secCertificateUrlValue": {
"value": "Refers to the location URL in your key vault where the certificate was uploaded, it is should be in the format of https://<name of the vault>.vault.azure.net:443/secrets/<exact location>"
},
De sjabloon implementeren in Azure
- U bent nu klaar om uw sjabloon te implementeren in Azure. Open een Azure PowerShell versie 1+ opdrachtprompt.
- Meld u aan bij uw Azure-account en selecteer het specifieke Azure-abonnement. Dit is een belangrijke stap voor mensen die toegang hebben tot meer dan één Azure-abonnement.
Connect-AzAccount
Select-AzSubscription -SubscriptionId <Subscription ID>
Test de sjabloon voordat u deze implementeert. Gebruik dezelfde resourcegroep waarop uw cluster momenteel is geïmplementeerd.
Test-AzResourceGroupDeployment -ResourceGroupName <Resource Group that your cluster is currently deployed to> -TemplateFile <PathToTemplate>
Implementeer de sjabloon in uw resourcegroep. Gebruik dezelfde resourcegroep waarop uw cluster momenteel is geïmplementeerd. Voer de opdracht New-AzResourceGroupDeployment uit. U hoeft de modus niet op te geven, omdat de standaardwaarde incrementeel is.
Notitie
Als u de modus instelt op Voltooien, kunt u per ongeluk resources verwijderen die zich niet in uw sjabloon bevinden. Gebruik deze dus niet in dit scenario.
New-AzResourceGroupDeployment -Name ExampleDeployment -ResourceGroupName <Resource Group that your cluster is currently deployed to> -TemplateFile <PathToTemplate>
Hier volgt een ingevuld voorbeeld van dezelfde PowerShell.
$ResourceGroup2 = "chackosecure5"
$TemplateFile = "C:\GitHub\Service-Fabric\ARM Templates\Cert Rollover Sample\5-VM-1-NodeTypes-Secure_Step2.json"
$TemplateParmFile = "C:\GitHub\Service-Fabric\ARM Templates\Cert Rollover Sample\5-VM-1-NodeTypes-Secure.parameters_Step2.json"
New-AzResourceGroupDeployment -ResourceGroupName $ResourceGroup2 -TemplateParameterFile $TemplateParmFile -TemplateUri $TemplateFile -clusterName $ResourceGroup2
Zodra de implementatie is voltooid, maakt u verbinding met uw cluster met behulp van het nieuwe certificaat en voert u enkele query's uit. Als je het kunt doen. Vervolgens kunt u het oude certificaat verwijderen.
Als u een zelfondertekend certificaat gebruikt, vergeet dan niet om ze te importeren in uw lokale certificaatarchief vertrouwde personen.
######## Set up the certs on your local box
Import-PfxCertificate -Exportable -CertStoreLocation Cert:\CurrentUser\TrustedPeople -FilePath c:\Mycertificates\chackdanTestCertificate9.pfx -Password (ConvertTo-SecureString -String abcd123 -AsPlainText -Force)
Import-PfxCertificate -Exportable -CertStoreLocation Cert:\CurrentUser\My -FilePath c:\Mycertificates\chackdanTestCertificate9.pfx -Password (ConvertTo-SecureString -String abcd123 -AsPlainText -Force)
Hier volgt de opdracht om verbinding te maken met een beveiligd cluster
$ClusterName= "chackosecure5.westus.cloudapp.azure.com:19000"
$CertThumbprint= "70EF5E22ADB649799DA3C8B6A6BF7SD1D630F8F3"
Connect-serviceFabricCluster -ConnectionEndpoint $ClusterName -KeepAliveIntervalInSec 10 `
-X509Credential `
-ServerCertThumbprint $CertThumbprint `
-FindType FindByThumbprint `
-FindValue $CertThumbprint `
-StoreLocation CurrentUser `
-StoreName My
Hier volgt de opdracht om de clusterstatus op te halen
Get-ServiceFabricClusterHealth
Clientcertificaten implementeren in het cluster.
U kunt dezelfde stappen gebruiken als in de voorgaande stappen 5 om de certificaten van een sleutelkluis naar de knooppunten te laten implementeren. U hoeft alleen verschillende parameters te definiëren en te gebruiken.
Clientcertificaten toevoegen of verwijderen
Naast de clustercertificaten kunt u clientcertificaten toevoegen om beheerbewerkingen uit te voeren op een Service Fabric-cluster.
U kunt twee soorten clientcertificaten toevoegen: beheerder of alleen-lezen. Deze kunnen vervolgens worden gebruikt om de toegang tot de beheerbewerkingen en querybewerkingen op het cluster te beheren. Standaard worden de clustercertificaten toegevoegd aan de lijst met toegestane beheerderscertificaten.
U kunt een willekeurig aantal clientcertificaten opgeven. Elke toevoeging/verwijdering resulteert in een configuratie-update naar het Service Fabric-cluster.
Clientcertificaten toevoegen - Beheerder of Alleen-lezen via portal
- Navigeer naar de sectie Beveiliging en selecteer de knop + Verificatie boven aan de beveiligingssectie.
- Kies in de sectie Verificatie toevoegen de optie Verificatietype - Alleen-lezen client of Beheerderclient
- Kies nu de autorisatiemethode. Dit geeft aan Service Fabric aan of dit certificaat moet worden opgezoekd met behulp van de onderwerpnaam of de vingerafdruk. Over het algemeen is het geen goede beveiligingspraktijk om de autorisatiemethode van de onderwerpnaam te gebruiken.
Verwijderen van clientcertificaten - Beheerder of Alleen-lezen met behulp van de portal
Als u een secundair certificaat wilt verwijderen voor clusterbeveiliging, gaat u naar de sectie Beveiliging en selecteert u de optie Verwijderen in het contextmenu van het specifieke certificaat.
Toepassingscertificaten toevoegen aan een virtuele-machineschaalset
Als u een certificaat wilt implementeren dat u voor uw toepassingen in uw cluster gebruikt, raadpleegt u dit PowerShell-voorbeeldscript.
Volgende stappen
Lees deze artikelen voor meer informatie over clusterbeheer: