快速入門:使用 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