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

从 Azure 开发测试实验室中导出或删除个人数据

本文提供从 Azure 开发测试实验室服务中删除和导出个人数据的步骤。

开发测试实验室收集哪些个人数据?

开发测试实验室主要从用户收集两项个人数据, 分别是:用户电子邮件地址和用户对象 ID。 此信息至关重要,使该服务能够为实验室管理员和实验室用户提供服务内功能。

用户电子邮件地址

开发测试实验室使用用户电子邮件地址向实验室用户发送自动关机电子邮件通知。 该电子邮件告知用户其计算机即将关闭。 如果需要,用户可以推迟或跳过关机。 在实验室级别或 VM 级别配置电子邮件地址。

我们为何需要这些个人数据?

开发测试实验室服务需要使用个人数据才能正常运行。 该服务必须使用这些数据来提供关键功能。 如果针对用户电子邮件地址设置了保留策略,则从我们的系统中删除实验室用户的电子邮件地址后,他们不会及时收到自动关机电子邮件通知。 因此,只要用户的资源在实验室中保持活动状态,就需要一直保留此数据。

如何让系统忘记我的个人数据?

作为实验室用户,你可以通过删除实验室中的相应资源来删除你的个人信息。 在用户删除个人数据后,开发测试实验室服务会将已删除的数据匿名化 30 天。

例如,如果你删除了 VM 或移除了电子邮件地址,则删除该资源后,开发测试实验室服务会将此数据匿名化 30 天。 删除后保留 30 天的策略确保了开发测试实验室向实验室管理员提供准确的每月成本预测。

如何请求导出个人数据?

你可以使用 Azure PowerShell 导出个人和实验室使用情况数据。 开发测试实验室将数据导出为 csv 文件,文件名中包含请求导出的日期和时间。

Azure PowerShell

Param (
    [Parameter (Mandatory=$true, HelpMessage="The resource group name of the storage account")]
[string] $resourceGroupName,
	
	[Parameter (Mandatory=$true, HelpMessage="The subscription id of the storage account and DTL")]    
[string] $subscriptionId,

    [Parameter (Mandatory=$true, HelpMessage="The storage account name")]
[string] $storageAccountName,

    [Parameter (Mandatory=$true, HelpMessage="Expire time of the SAS Token")]
[string] $expiryTime,

    [Parameter (Mandatory=$true, HelpMessage="Date to pull data from")][string] $startTime,

    [Parameter (Mandatory=$true, HelpMessage="Name of the lab to export")]
[string] $labName,

    [Parameter (Mandatory=$true, HelpMessage="The desired SKU")]
[string] $desiredSKU,

    [Parameter (Mandatory=$true, HelpMessage="Protocol for SAS token generation")]
[string] $protocol,

    [Parameter (Mandatory=$true, HelpMessage="Permissions given for SAS token")]
[string] $permissions

# Log in 
Connect-AzAccount -UseDeviceAuthentication
 
# Set your subscription
Set-AzContext -SubscriptionId $subscriptionId
 
 
# Create a resource group and storage account
  New-AzStorageAccount -ResourceGroupName $resourceGroupName `
                     -Name $storageAccountName `
                     -Location $location `
                     -SkuName $desiredSKU
 
# Get storage account context
$storageAccountContext = Get-AzStorageAccount -ResourceGroupName $resourceGroupName -AccountName $storageAccountName
$storageAccountKeys = Get-AzStorageAccountKey -ResourceGroupName $resourceGroupName -Name $storageAccountName
 
$Ctx = New-AzureStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKeys[0].Value

# Create blob container
$containerName = "exportlabresources"
New-AzStorageContainer -Name $containerName `
                       -Context $Ctx `
                       -Permission Off

# Get SAS token
$sasToken = New-AzStorageContainerSASToken `
-Context $Ctx `
-Name $containerName `
-StartTime (Get-Date) `
-ExpiryTime $expiryTime `
-Permission $permissions `
-Protocol $protocol

# Make blob endpoint
$blobEndpointWithSas = $storageAccountContext.Context.BlobEndPoint + $containerName+ "?" + $sasToken

# Invoke Export Job
$actionParameters = @{
    'blobStorageAbsoluteSasUri' = $blobEndpointWithSas    
}

$actionParameters.Add('usageStartDate', $startdate.Date.ToString())
 
$resourceId = "/subscriptions/" + $subscriptionId + "/resourceGroups/" + $resourceGroupName + "/providers/Microsoft.DevTestLab/labs/" + $labName + "/"
 
$result = Invoke-AzureRmResourceAction -Action 'ExportResourceUsage' -ResourceId $resourceId -Parameters $actionParameters -Force

上述示例中的关键组件是:

  • Invoke-AzureRmResourceAction 命令。

    Invoke-AzureRmResourceAction -Action 'ExportResourceUsage' -ResourceId $resourceId -Parameters $actionParameters -Force
    
  • 两个操作参数

    • blobStorageAbsoluteSasUri - 具有共享访问签名 (SAS) 令牌的存储帐户 URI。 在 PowerShell 脚本中,可以传递此值,不能传递存储密钥。
    • usageStartDate - 要提取数据的开始日期,结束日期是执行操作的当前日期。 粒度为日级别,因此即使添加了时间信息,也会被忽略。

后续步骤

参阅以下文章: