你当前正在访问 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