由于 Key Vault 软删除,Set-AzureRmSqlDatabase 命令在降低 Azure SQL 数据库定价层时失败
Set-AzureRmSqlDatabase command is failing while lowering the Azure SQL DB pricing tier due to key vault soft delete
我正在使用自动 powershell 脚本来降级数据库备份副本的定价层。在提供以下命令时,层级降级失败。如果我理解正确的话,错误是指密钥库的密钥与我的服务器名称相同,因为不存在这样的密钥(因此也不能启用软删除),此命令失败。
当我的应用程序没有设置 key-vault 并且现在似乎失败时,命令已经设置。
使用的命令:
Set-AzureRmSqlDatabase -DatabaseName <*Back-up DB name*> -ServerName <*SQL server name*> -ResourceGroupName <*Resource Group name*> -Edition Standard -RequestedServiceObjectiveName S0
错误:
Set-AzureRmSqlDatabase : 45377: The provided Key Vault uri
'https://****.vault.azure.net/keys/<SERVERNAME>/<Subscription/some
ID> is not valid. Please ensure the key vault has been configured
with soft-delete. (https://aka.ms/sqltdebyoksoftdelete) At line:1
char:2
+ Set-AzureRmSqlDatabase -DatabaseName <Back-up DB name> -ServerName <SQL server name>...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : CloseError: (:) [Set-AzureRmSqlDatabase], CloudException
+ FullyQualifiedErrorId : Microsoft.Azure.Commands.Sql.Database.Cmdlet.SetAzureSqlDatabase
问题:
1.Why Set-AzureRmSqlDatabase 命令在未明确提及时指的是密钥保管库 URI?
2.Is 我们需要在 server/DB 级别设置一个选项,以允许此命令直接读取 server/DB 名称,而不是搜索具有服务器名称的密钥?
这是否与透明数据加密有关?
如果密钥库晚于 application/DB/key-vault 设置,我们是否应该对此命令进行任何更改?
这里有一些个人的看法,供大家参考。
首先,根据我的测试,该命令在我这边运行良好。
注意:在我的测试环境中,它是一个sql服务器和数据库,没有任何其他东西,比如透明数据加密。
Set-AzureRmSqlDatabase -DatabaseName joydatabase -ServerName joydb -ResourceGroupName joywebapp -Edition Standard -RequestedServiceObjectiveName S0
Why Set-AzureRmSqlDatabase command is referring to a key-vault URI, when not mentioned explicitly ?
在我这边,我通过 fiddler 捕获请求,它不是指密钥库 URL,请参考屏幕截图。
Is there a option we need to set at the server/DB level to allow this command to read the server/DB name directly rather than searching for a key with server name?
在我这边,我认为我们不需要这样做。
Is this anywhere related to Transparent data encryption ?
我觉得跟它有关的可能性很大。您可以创建一个新的 sql 服务器和数据库来试一试。这里有一篇关于 azure sql 服务器透明数据加密的文章,你可以参考 it.
Are we suppose to make any changes to this command if the key-vault comes later than the application/DB/key-vault set-up ?
我认为这条命令似乎没有任何改变。
我认为这个问题纯粹与TDE(透明数据加密)有关。由于 Azure SQL 数据库受 TDE 保护,因此预计密钥库也应启用软删除以恢复任何已删除的密钥。
在尝试启用软删除时,我发现我机器上安装的 Azure powershell 不支持软删除 属性.
我可以通过以下步骤解决此问题:
升级的 powershell:
Installation Package
登录您的 Azure 订阅并运行执行此命令
$vault = Get-AzureRmKeyVault -VaultName myvault; $vault.EnableSoftDelete
如果上述方法不起作用 运行 下面的命令。这将找到密钥库的 resourceId,然后将启用软删除 -
($resource = Get-AzureRmResource -ResourceId (Get-AzureRmKeyVault -VaultName "YourKeyVaultNameHere").ResourceId).Properties | Add-Member -
MemberType "NoteProperty" -Name "enableSoftDelete" -Value "true"
Set-AzureRmResource -resourceid $resource.ResourceId -Properties $resource.Properties
- 验证是否通过以下命令启用了 key-vault 软删除
Get-AzureRmKeyVault -VaultName "YourKeyVaultNameHere"
希望这对面临类似问题的人有所帮助。
我正在使用自动 powershell 脚本来降级数据库备份副本的定价层。在提供以下命令时,层级降级失败。如果我理解正确的话,错误是指密钥库的密钥与我的服务器名称相同,因为不存在这样的密钥(因此也不能启用软删除),此命令失败。
当我的应用程序没有设置 key-vault 并且现在似乎失败时,命令已经设置。
使用的命令:
Set-AzureRmSqlDatabase -DatabaseName <*Back-up DB name*> -ServerName <*SQL server name*> -ResourceGroupName <*Resource Group name*> -Edition Standard -RequestedServiceObjectiveName S0
错误:
Set-AzureRmSqlDatabase : 45377: The provided Key Vault uri 'https://****.vault.azure.net/keys/<SERVERNAME>/<Subscription/some ID> is not valid. Please ensure the key vault has been configured with soft-delete. (https://aka.ms/sqltdebyoksoftdelete) At line:1 char:2 + Set-AzureRmSqlDatabase -DatabaseName <Back-up DB name> -ServerName <SQL server name>... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : CloseError: (:) [Set-AzureRmSqlDatabase], CloudException + FullyQualifiedErrorId : Microsoft.Azure.Commands.Sql.Database.Cmdlet.SetAzureSqlDatabase
问题:
1.Why Set-AzureRmSqlDatabase 命令在未明确提及时指的是密钥保管库 URI?
2.Is 我们需要在 server/DB 级别设置一个选项,以允许此命令直接读取 server/DB 名称,而不是搜索具有服务器名称的密钥?
这是否与透明数据加密有关?
如果密钥库晚于 application/DB/key-vault 设置,我们是否应该对此命令进行任何更改?
这里有一些个人的看法,供大家参考。
首先,根据我的测试,该命令在我这边运行良好。
注意:在我的测试环境中,它是一个sql服务器和数据库,没有任何其他东西,比如透明数据加密。
Set-AzureRmSqlDatabase -DatabaseName joydatabase -ServerName joydb -ResourceGroupName joywebapp -Edition Standard -RequestedServiceObjectiveName S0
Why Set-AzureRmSqlDatabase command is referring to a key-vault URI, when not mentioned explicitly ?
在我这边,我通过 fiddler 捕获请求,它不是指密钥库 URL,请参考屏幕截图。
Is there a option we need to set at the server/DB level to allow this command to read the server/DB name directly rather than searching for a key with server name?
在我这边,我认为我们不需要这样做。
Is this anywhere related to Transparent data encryption ?
我觉得跟它有关的可能性很大。您可以创建一个新的 sql 服务器和数据库来试一试。这里有一篇关于 azure sql 服务器透明数据加密的文章,你可以参考 it.
Are we suppose to make any changes to this command if the key-vault comes later than the application/DB/key-vault set-up ?
我认为这条命令似乎没有任何改变。
我认为这个问题纯粹与TDE(透明数据加密)有关。由于 Azure SQL 数据库受 TDE 保护,因此预计密钥库也应启用软删除以恢复任何已删除的密钥。
在尝试启用软删除时,我发现我机器上安装的 Azure powershell 不支持软删除 属性.
我可以通过以下步骤解决此问题:
升级的 powershell: Installation Package
登录您的 Azure 订阅并运行执行此命令
$vault = Get-AzureRmKeyVault -VaultName myvault; $vault.EnableSoftDelete
如果上述方法不起作用 运行 下面的命令。这将找到密钥库的 resourceId,然后将启用软删除 -
($resource = Get-AzureRmResource -ResourceId (Get-AzureRmKeyVault -VaultName "YourKeyVaultNameHere").ResourceId).Properties | Add-Member -
MemberType "NoteProperty" -Name "enableSoftDelete" -Value "true"
Set-AzureRmResource -resourceid $resource.ResourceId -Properties $resource.Properties
- 验证是否通过以下命令启用了 key-vault 软删除
Get-AzureRmKeyVault -VaultName "YourKeyVaultNameHere"
希望这对面临类似问题的人有所帮助。