你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

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

策略签名者证书是带有名为“maa-policyCertificate”的声明的签名 JWT。 声明的值为 JWK,其中包含要添加的受信任签名密钥。 必须用与任何现有策略签名者证书相对应的私钥对 JWT 进行签名。

策略签名者证书的所有语义操作都必须在 PowerShell 之外完成。 就 PowerShell 而言,它是一个简单的字符串。

有关策略签名者证书示例,请参阅策略签名者证书的示例

有关 cmdlet 及其参数的详细信息,请参阅 Azure 证明 PowerShell cmdlet

后续步骤