快速入門:使用 Azure PowerShell 設定 Azure 證明
請遵循下列步驟,使用 Azure PowerShell 建立及設定證明提供者。 如需如何安裝和執行 Azure PowerShell 的資訊,請參閱 Azure PowerShell 概觀。
注意
Az.Attestation PowerShell 模組現在已整合到 Az PowerShell 模組中。 支援證明作業所需的 Az 模組最低版本:
- Az PowerShell 模組 6.5.0
PowerShell 資源庫已淘汰傳輸層安全性 (TLS) 1.0 版和 1.1 版。 建議使用 TLS 1.2 或更新版本。 因此,您可能會收到下列錯誤:
- 警告:無法解析套件來源 ' https://www.powershellgallery.com/api/v2 '
- PackageManagement\Install-Package:找不到指定搜尋準則和模組名稱的相符專案
若要繼續與PowerShell 資源庫互動,請在 Install-Module 命令之前執行下列命令
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
登入 Azure
在 PowerShell 主控台中登入 Azure(沒有提高存取權限)。
Connect-AzAccount
如有需要,請切換至要用於Azure 證明的訂用帳戶。
Set-AzContext -Subscription <subscription id>
註冊 Microsoft.Attestation 資源提供者
在訂用帳戶中註冊 Microsoft.Attestation 資源提供者。 如需 Azure 資源提供者以及如何設定和管理資源提供者的詳細資訊,請參閱 Azure 資源提供者和類型 。 只有訂用帳戶需要註冊資源提供者一次。
Register-AzResourceProvider -ProviderNamespace Microsoft.Attestation
Azure 證明的區域可用性
(Get-AzResourceProvider -ProviderNamespace Microsoft.Attestation)[0].Locations
建立 Azure 資源群組
建立證明提供者的資源群組。 其他 Azure 資源(包括具有用戶端應用程式實例的虛擬機器)可以放在相同的資源群組中。
$location = "uksouth"
$attestationResourceGroup = "<attestation provider resource group name>"
New-AzResourceGroup -Name $attestationResourceGroup -Location $location
注意
在此資源群組中建立證明提供者之後,Microsoft Entra 使用者必須在提供者上具有 證明參與者 角色,才能執行原則設定/原則簽署者憑證管理等作業。 這些許可權也可以與訂用帳戶/資源群組上的擁有者 (萬用字元許可權)/ 參與者 (萬用字元許可權)等 角色一起繼承。
建立和管理證明提供者
New-AzAttestation 會建立證明提供者。
$attestationProvider = "<attestation provider name>"
New-AzAttestationProvider -Name $attestationProvider -ResourceGroupName $attestationResourceGroup -Location $location
PolicySignerCertificateFile 是指定一組受信任簽署金鑰的檔案。 如果為 PolicySignerCertificateFile 參數指定了檔案名,證明提供者只能使用已簽署 JWT 格式的原則進行設定。 否則可以使用文字或未簽署的 JWT 格式來設定原則。
New-AzAttestationProvider -Name $attestationProvider -ResourceGroupName $attestationResourceGroup -Location $location -PolicySignersCertificateFile "C:\test\policySignersCertificates.pem"
如需 PolicySignersCertificateFile 範例,請參閱 原則簽署者憑證 的範例。
Get-AzAttestation 會擷取證明提供者屬性,例如 status 和 AttestURI。 記下 AttestURI,因為稍後會需要它。
Get-AzAttestationProvider -Name $attestationProvider -ResourceGroupName $attestationResourceGroup
上述命令應該會以下列格式產生輸出:
Id:/subscriptions/MySubscriptionID/resourceGroups/MyResourceGroup/providers/Microsoft.Attestation/attestationProviders/MyAttestationProvider
Location: MyLocation
ResourceGroupName: MyResourceGroup
Name: MyAttestationProvider
Status: Ready
TrustModel: AAD
AttestUri: https://MyAttestationProvider.us.attest.azure.net
Tags:
TagsTable:
您可以使用 Remove-AzAttestation Cmdlet 刪除證明提供者。
Remove-AzAttestationProvider -Name $attestationProvider -ResourceGroupName $attestationResourceGroup
原則管理
為了管理原則,Microsoft Entra 使用者需要下列「動作」許可權:
- Microsoft.Attestation/attestationProviders/attestation/read
- Microsoft.Attestation/attestationProviders/attestation/write
- Microsoft.Attestation/attestationProviders/attestation/delete
若要執行這些動作,Microsoft Entra 使用者必須在證明提供者上具有 證明參與者 角色。 這些許可權也可以與訂用帳戶/資源群組上的擁有者 (萬用字元許可權)/ 參與者 (萬用字元許可權)等 角色一起繼承。
為了讀取原則,Microsoft Entra 使用者需要下列「動作」許可權:
- Microsoft.Attestation/attestationProviders/attestation/read
若要執行此動作,Microsoft Entra 使用者必須在證明提供者上具有 證明讀者 角色。 讀取權限也可以與訂用帳戶/資源群組上的讀取者 (萬用字元許可權)等 角色一起繼承。
這些 PowerShell Cmdlet 會為證明提供者提供原則管理(一次一個 TEE)。
Get-AzAttestationPolicy 會傳回指定 TEE 的目前原則。 Cmdlet 會以原則的文字和 JWT 格式顯示原則。
$teeType = "<tee Type>"
Get-AzAttestationPolicy -Name $attestationProvider -ResourceGroupName $attestationResourceGroup -Tee $teeType
支援的 TEE 類型為 「SgxEnclave」、「OpenEnclave」 和 「VbsEnclave」。
Set-AttestationPolicy 會為指定的 TEE 設定新的原則。 Cmdlet 會接受文字或 JWT 格式的原則,並由 PolicyFormat 參數控制。 「Text」 是 PolicyFormat 的預設值。
$policyFormat = "<policy format>"
$policy=Get-Content -path "C:\test\policy.txt" -Raw
Set-AzAttestationPolicy -Name $attestationProvider -ResourceGroupName $attestationResourceGroup -Tee $teeType -Policy $policy -PolicyFormat $policyFormat
如果在建立證明提供者期間提供 PolicySignerCertificateFile,則原則只能以已簽署的 JWT 格式設定。 否則可以使用文字或未簽署的 JWT 格式來設定原則。
JWT 格式的證明原則必須包含名為 「AttestationPolicy」 的宣告。 對於已簽署的原則,JWT 必須使用對應至任何現有原則簽署者憑證的私密金鑰進行簽署。
如需原則範例,請參閱 證明原則 的範例。
Reset-AzAttestationPolicy 會將指定 TEE 的原則重設為預設值。
Reset-AzAttestationPolicy -Name $attestationProvider -ResourceGroupName $attestationResourceGroup -Tee $teeType
原則簽署者憑證管理
這些 PowerShell Cmdlet 會為證明提供者提供原則簽署者憑證管理:
Get-AzAttestationPolicySigners -Name $attestationProvider -ResourceGroupName $attestationResourceGroup
Add-AzAttestationPolicySigner -Name $attestationProvider -ResourceGroupName $attestationResourceGroup -Signer <signer>
Remove-AzAttestationPolicySigner -Name $attestationProvider -ResourceGroupName $attestationResourceGroup -Signer <signer>
原則簽署者憑證是已簽署的 JWT,其宣告名為 「maa-policyCertificate」。 宣告的值是 JWK,其中包含要新增的受信任簽署金鑰。 JWT 必須使用對應至任何現有原則簽署者憑證的私密金鑰進行簽署。
原則簽署者憑證的所有語意操作都必須在 PowerShell 外部完成。 就 PowerShell 而言,它是簡單的字串。
如需原則簽署者憑證範例,請參閱 原則簽署者憑證 的範例。
如需 Cmdlet 及其參數的詳細資訊,請參閱 Azure 證明 PowerShell Cmdlet