更改 Azure 存储帐户 TLS 版本

Change Azure Storage Account TLS versions

是否有人拥有或看到过批量更改 Azure Strorage 帐户 TLS 版本的脚本?我们有数百个存储帐户仍启用了 TLS 1.0 或 1.1,我们希望将它们更改为 1.2。因为手动点击的人太多了,所以真的不是选项..

我现在已经用谷歌搜索并尝试自己编写脚本,但我的头撞墙了。

我已经设法遍历我的所有订阅和存储帐户并将存储帐户名称、资源组和 tls 版本保存到 csv,但现在我需要下一步的帮助:我如何才能将 TLS 版本更改为1.2 如果是 1.0 或 1.1 使用该数据。

改变tls的那一行是(https://docs.microsoft.com/en-us/azure/storage/common/transport-layer-security-configure-minimum-version?tabs=powershell#configure-the-minimum-tls-version-for-a-storage-account)

Set-AzStorageAccount -ResourceGroupName $rgName `
    -Name $accountName `
    -MinimumTlsVersion TLS1_2

我现在的剧本

$Subscriptions = Get-AzSubscription
$data = foreach ($sub in $Subscriptions) {
    # suppress output on this line
    Write-Host Working with Subscription $sub.Name 
    $null = Get-AzSubscription -SubscriptionName $sub.Name | Set-AzContext
    # let Select-Object output the objects that will be collected in variable $data
    Get-AzStorageAccount | Select-Object StorageAccountName, ResourceGroupName,
                                         @{Name = 'TLSVersion'; Expression = {$_.MinimumTlsVersion}}

}

# write a CSV file containing this data
$data | Export-Csv -Path C:\temp\data.csv -NoTypeInformation

提示?

• 非常感谢您准备的用于更改跨各种订阅的多个存储帐户的 TLS 版本的脚本。我还尝试测试用于更改订阅中多个存储帐户的 TLS 版本的特定 cmdlet,因为我没有多个订阅并且效果很好。此外,如果您无法访问多个订阅的资源,则无法执行此脚本。

对于所有订阅,此脚本成功执行所需的最低 Azure 资源管理器角色是 '贡献者',并且 您需要使用此用户 ID 在该订阅中登录,该订阅在管理组中的层次结构高于其他订阅,以便它有权相应地执行和访问这些订阅中的资源。

• 因此,可以成功更改用户 ID 有权访问的任何订阅中存储帐户的 TLS 版本的实际脚本如下所示。此外,它还会导出一个 CSV 文件,其中包含此脚本访问的所有存储帐户的列表:-

   $Subscriptions = Get-AzSubscription
   $data = foreach ($sub in $Subscriptions) {
Write-Host Working with Subscription $sub.Name 
$null = Get-AzSubscription -SubscriptionName $sub.Name | Set-AzContext
Get-AzStorageAccount | Set-AzStorageAccount -MinimumTlsVersion TLS1_2 @{Name = 'TLSVersion'; Expression = {$_.MinimumTlsVersion}}
}
   $data | Export-Csv -Path C:\data.csv -NoTypeInformation ‘

您还可以配置 Azure 策略 以在存储帐户上强制执行 TLS v2.0,以便在存储帐户上强制使用 TLS v2.0,方法是输入以下 JSON 代码作为 Azure 策略分配中的策略。

{
   "policyRule": {
   "if": {
  "allOf": [
    {
      "field": "type",
      "equals": "Microsoft.Storage/storageAccounts"
    },
    {
      "not": {
        "field": "Microsoft.Storage/storageAccounts/minimumTlsVersion",
        "equals": "TLS1_2"
      }
    }
  ]
},
"then": {
  "effect": "deny"
       }
      }
     }

有关这方面的更多详细信息,请参阅下面的文档link:-

https://docs.microsoft.com/en-us/azure/storage/common/transport-layer-security-configure-minimum-version?tabs=powershell#use-azure-policy-to-enforce-the-minimum-tls-version