分享方式:


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

下一步