如何在 Azure Stack Hub 上輪替事件樞的密鑰
本文將說明如何輪替事件中心資源供應者所使用的密鑰。
概觀和必要條件
注意
加值資源提供者的秘密輪替目前僅透過PowerShell支援。 此外,您必須定期主動更換加值 RP 的機密資料,因為系統管理警示目前尚未產生。
如同 Azure Stack Hub 基礎結構,增值資源提供者會同時使用內部和外部秘密。 秘密可以採用多種形式,包括密碼和 X509 憑證所維護的加密密鑰。 身為操作員,您必須負責:
- 提供更新的外部秘密,例如用來保護資源提供者端點的新 TLS 憑證。
- 定期管理資源提供者秘密輪替。
準備輪替程序:
在取得或更新 X509 憑證之前,請先檢閱 Azure Stack Hub 公鑰基礎設施 (PKI) 憑證需求,以便了解重要的先決資訊,包括所需的 PFX 格式的詳細要求。 另請參閱 選擇性 PaaS 憑證一節中指定的需求,以取得您的特定增值資源提供者。
如果您尚未這麼做,請先 安裝適用於 Azure Stack Hub 的 PowerShell Az 模組,再繼續進行。 Azure Stack Hub 秘密輪替需要 2.0.2 版或更新版本。 如需詳細資訊,請參閱 從 AzureRM 遷移至 Azure Stack Hub 中的 Azure PowerShell Az。
準備新的 TLS 憑證
接下來,建立或更新 TLS 憑證,以保護值新增資源提供者端點:
完成為資源提供者進行憑證更新的憑證簽署要求 (CSR) 的步驟 生成。 在這裡,您會使用 Azure Stack Hub 整備檢查程式工具來建立 CSR。 請務必為資源提供者執行正確的 Cmdlet,在「產生其他 Azure Stack Hub 服務的憑證要求」步驟中。 例如,
New-AzsHubEventHubsCertificateSigningRequest
用於事件中樞。 完成後,您會將產生的 .REQ 檔案提交給您的證書頒發機構(CA),以獲得新憑證。從 CA 收到憑證檔案之後,請完成 準備部署憑證或輪替中的步驟。 您再次使用準備檢查工具來處理 CA 傳回的文件。
最後,完成 驗證 Azure Stack Hub PKI 憑證的步驟。 您再次使用就緒檢查工具,對新的憑證執行驗證測試。
輪替機密
最後,判斷資源提供者的最新部署屬性,並使用它們來完成秘密輪替程式。
判斷部署屬性
資源提供者會部署到您的 Azure Stack Hub 環境中,作為版本化的產品套件。 套件會指派唯一的套件識別碼,格式為 '<product-id>.<installed-version>'
。 其中 <product-id>
是代表資源提供者的唯一字串,<installed-version>
代表特定版本。 與每個套件相關聯的秘密會儲存在 Azure Stack Hub Key Vault 服務中。
開啟提升許可權的 PowerShell 控制台,並完成下列步驟,以判斷輪替資源提供者秘密所需的屬性:
使用作員認證登入 Azure Stack Hub 環境。 如需 PowerShell 登入腳本,請參閱 使用 PowerShell 連線到 Azure Stack Hub。 請務必使用 PowerShell Az cmdlet(而不是 AzureRM),並取代所有佔位元值,例如端點的 URL 和租用戶目錄名稱。
執行
Get-AzsProductDeployment
Cmdlet 來擷取最新的資源提供者部署清單。 傳回的"value"
集合包含每個已部署資源提供者的元素。 尋找感興趣的資源提供者,並記下這些屬性的值:-
"name"
- 包含值第二個區段中的資源提供者產品識別碼。 -
"properties"."deployment"."version"
- 包含目前部署的版本號碼。
在以下範例中,請注意集合中第一個元素的 Event Hubs RP 部署,其產品 ID 為
"microsoft.eventhub"
,版本為"1.2003.0.0"
:PS C:\WINDOWS\system32> Get-AzsProductDeployment -AsJson VERBOSE: GET https://adminmanagement.myregion.mycompany.com/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Deployment.Admin/locations/global/productDeployments/microsoft.eventhub", "name": "global/microsoft.eventhub", "type": "Microsoft.Deployment.Admin/locations/productDeployments", "properties": { "status": "DeploymentSucceeded", "subscriptionId": "bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f", "deployment": { "version": "1.2003.0.0", "actionPlanInstanceResourceId":"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Deployment.Admin/locations/global/actionplans/cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a", "parameters": { } }, "lastSuccessfulDeployment": { "version": "1.2003.0.0", "actionPlanInstanceResourceId":"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Deployment.Admin/locations/global/actionplans/cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a", "parameters": { } }, "provisioningState": "Succeeded" } }, { ... } ] }
-
串連資源提供者產品標識碼和版本,以建置資源提供者的套件識別碼。 例如,使用上一個步驟中衍生的值,事件中樞 RP 套件的識別碼為
microsoft.eventhub.1.2003.0.0
。使用上一個步驟中衍生的套件標識符,執行
Get-AzsProductSecret -PackageId
來擷取資源提供者所使用的秘密類型清單。 在傳回的value
集合中,尋找包含"properties"."secretKind"
屬性之"Certificate"
值的 元素。 這個元素包含 RP 憑證密碼的屬性。 記下指派給此憑證密碼的名稱,此密碼是由"name"
屬性的最後一個區段所識別,就在"properties"
上方。在下列範例中,從 Event Hubs RP 傳回的秘密集合中包含一個名為
aseh-ssl-gateway-pfx
的"Certificate"
秘密。PS C:\WINDOWS\system32> Get-AzsProductSecret -PackageId 'microsoft.eventhub.1.2003.0.0' -AsJson VERBOSE: GET https://adminmanagement.myregion.mycompany.com/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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" } }, ... ] }
循環秘密
使用
Set-AzsProductSecret
Cmdlet 將新的憑證匯入 Key Vault,此憑證將由輪替程式使用。 在執行指令碼之前,請替換變數佔位符值。佔位符 描述 範例值 <product-id>
最新資源提供者部署的產品標識碼。 microsoft.eventhub
<installed-version>
最新資源提供者部署的版本。 1.2003.0.0
<cert-secret-name>
用來儲存憑證密碼的名稱。 aseh-ssl-gateway-pfx
<cert-pfx-file-path>
憑證 PFX 檔案的路徑。 C:\dir\eh-cert-file.pfx
<pfx-password>
指派給您 .PFX 檔案的憑證密碼。 strong@CertSecret6
$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
最後,使用
Invoke-AzsProductRotateSecretsAction
Cmdlet 來旋轉內部和外部密碼:備註
完成輪替程序大約需要 3.5 - 4 小時。
Invoke-AzsProductRotateSecretsAction -ProductId $productId
您可以在 PowerShell 控制台或系統管理員入口網站中選取 Marketplace 服務中的資源提供者,來監視秘密輪替進度:
故障排除
秘密輪替應該順利完成,而不會發生錯誤。 如果您在系統管理員入口網站中遇到下列任一條件,開啟支援要求 以取得協助:
- 驗證問題,包括在連接到事件中樞資源提供者時出現的問題。
- 無法升級資源提供者,或編輯組態參數。
- 未顯示使用量計量。
- 不會產生帳單。
- 備份不會發生。
後續步驟
如需輪替 Azure Stack Hub 基礎結構秘密的詳細資訊,請流覽 輪替 Azure Stack Hub 中的秘密。