From 746145d5e3c0e164c27c05aeb391d301578a4bcd Mon Sep 17 00:00:00 2001 From: Beisi Zhou Date: Tue, 20 Oct 2020 17:04:00 +0800 Subject: [PATCH 1/8] [KeyVault] Managed HSM (#13259) * Enable MHSM Management via *-AzKeyVault (#12575) * Support creating a MHSM pool. * Supporting querying MHSM objects * Support deleting MHSM * Support updating mhsm * Add test cases * Hide unavailable services * Add test cases * expose EnablePurgeProtection for MHSM * correct indent of ps1xml * upload localfeed * Hide enablePurgeProtection * Update ChangeLog.md and help.md * Modify codes according to comments * Update help.md * Update VaultCreationParameters.cs * Update get-azkeyvault.md * Update KeyVaultManagementTests.ps1 * Record scenario test for Managed Hsm (#12631) * Record scenario tests for managed hsm * add default parameter set for * Re-record scenario tests. * [KeyVault] Update to official SDK (#12767) * local 3.1.0 sdk * Use production key vault mgmt sdk * remove security domain from format xml * combine track 1&2 sdk (#13018) * combine track 1&2 sdk * update azure.core to 1.5.0 * add exception; revert addkeyvaultkey * add dll to psd1 * fix exception * Detach managed hsm from key vault command (#13187) * get managed hsm * new managed hsm * remove managed hsm * update help.md * update managed hsm * add online version for new help.md * Convert mhsm test to liveonly * add test record * Support data plane of managed HSM (#13216) * create managed hsm key * get managed hsm key * remove managed hsm key * update managed hsm key * undo managed hsm key removal * back up and restore managed hsm key * add help.md * import/download managed hsm RSA key * Update help.md * Update changelog.md * suppress signature issues * Update all help markdowns * add logger for track2sdk * add metadata for oct-HSM Co-authored-by: Yeming Liu * Limit KeyType to be required only when create managed HSM key (#13242) * limit KeyType to be required only when create managed HSM key * add pester test * Security domain (#13226) * wip * wip * wip * wip * wip * wip * support securestring * wip * wip * wip * generate docs * docs & error handling * move crypto alg inside security domain * resource strings * remove extra code * write help markdown * resolve relative path to absolute path * suppress signature issues Co-authored-by: Yeming Liu Co-authored-by: Beisi Zhou Co-authored-by: Beisi Zhou * remove pfx file * full backup restore + rbac (#13261) Co-authored-by: Yeming Liu * small fixes changelog; azure.core; sdk version; online version; breaking change csv; shared assembly conflict; failed tests; * license of BouncyCastle.NetCore * remove local feed Co-authored-by: Yeming Liu Co-authored-by: Yeming Liu --- LICENSE.txt | 14 + src/Compute/Compute.Test/Compute.Test.csproj | 2 +- .../EventHub.Test/EventHub.Test.csproj | 2 +- .../HDInsight.Test/HDInsight.Test.csproj | 2 +- .../KeyVault.Test/KeyVault.Test.csproj | 10 +- .../KeyVault.Test/Models/UtilitiesTests.cs | 17 - .../ManagedHsmDatePlaneTests.Tests.ps1 | 172 + .../PesterTests/ManagedHsmDatePlaneTests.ps1 | 40 + .../ManagedHsmManagementTests.cs | 22 + .../ManagedHsmManagementTests.ps1 | 62 + .../ControlPlane/KeyVaultManagementTests.ps1 | 2 +- .../TestDeleteVault.json | 640 +-- .../TestGetVault.json | 662 +-- .../TestListVaults.json | 1336 ++++-- .../TestManagedHsmCRUD.json | 3837 +++++++++++++++++ src/KeyVault/KeyVault.sln | 4 +- src/KeyVault/KeyVault/Az.KeyVault.psd1 | 24 +- src/KeyVault/KeyVault/ChangeLog.md | 3 + .../KeyVault/Commands/AddAzureKeyVaultKey.cs | 9 +- .../Commands/AddAzureManagedHsmKey.cs | 262 ++ .../Commands/BackupAzureManagedHsmKey.cs | 114 + src/KeyVault/KeyVault/Commands/Constants.cs | 9 + .../BackupAzureManagedHsm.cs | 32 + .../FullBackupRestoreCmdletBase.cs | 74 + .../RestoreAzureManagedHsm.cs | 42 + .../KeyVault/Commands/GetAzureKeyVault.cs | 3 +- .../KeyVault/Commands/GetAzureKeyVaultKey.cs | 2 +- .../KeyVault/Commands/GetAzureManagedHsm.cs | 73 + .../Commands/GetAzureManagedHsmKey.cs | 263 ++ .../KeyVault/Commands/NewAzureKeyVault.cs | 7 +- .../KeyVault/Commands/NewAzureManagedHsm.cs | 103 + .../RBAC/GetAzureManagedHsmRoleAssignment.cs | 121 + .../RBAC/GetAzureManagedHsmRoleDefinition.cs | 43 + .../RBAC/NewAzureManagedHsmRoleAssignment.cs | 119 + .../KeyVault/Commands/RBAC/RbacCmdletBase.cs | 63 + .../RemoveAzureManagedHsmRoleAssignment.cs | 171 + .../KeyVault/Commands/RemoveAzureKeyVault.cs | 2 +- .../Commands/RemoveAzureManagedHsm.cs | 130 + .../Commands/RemoveAzureManagedHsmKey.cs | 133 + .../Commands/RestoreAzureManagedHsmKey.cs | 103 + .../Commands/UndoAzureKeyVaultKeyRemoval.cs | 2 +- .../Commands/UndoAzureKeyVaultRemoval.cs | 4 +- .../Commands/UndoAzureManagedHsmKeyRemoval.cs | 71 + .../Commands/UpdateAzureManagedHsm.cs | 85 + .../Commands/UpdateAzureManagedHsmKey.cs | 146 + .../KeyVault/Helpers/UtilityExtensions.cs | 23 + src/KeyVault/KeyVault/KeyVault.csproj | 12 +- src/KeyVault/KeyVault/KeyVault.format.ps1xml | 228 +- .../KeyVault/Models/ByokWebKeyConverter.cs | 36 +- .../KeyVault/Models/DataServiceCredential.cs | 8 +- .../Models/IKeyVaultDataServiceClient.cs | 44 +- .../KeyVault/Models/IWebKeyConverter.cs | 10 +- .../KeyVault/Models/KeyVaultCmdletBase.cs | 40 +- .../Models/KeyVaultDataServiceClient.cs | 480 ++- .../Models/KeyVaultManagementCmdletBase.cs | 35 +- .../KeyVault/Models/ModelExtensions.cs | 67 +- .../KeyVault/Models/PSDeletedKeyVaultKey.cs | 36 + .../PSDeletedKeyVaultKeyIdentityItem.cs | 6 + src/KeyVault/KeyVault/Models/PSKeyVault.cs | 2 +- src/KeyVault/KeyVault/Models/PSKeyVaultKey.cs | 41 +- .../Models/PSKeyVaultKeyIdentityItem.cs | 18 + .../KeyVault/Models/PSKeyVaultPermission.cs | 28 + .../Models/PSKeyVaultRoleAssignment.cs | 80 + .../Models/PSKeyVaultRoleDefinition.cs | 44 + src/KeyVault/KeyVault/Models/PSManagedHsm.cs | 58 + .../KeyVault/Models/PfxWebKeyConverter.cs | 99 +- ....cs => VaultCreationOrUpdateParameters.cs} | 7 +- .../KeyVault/Models/VaultManagementClient.cs | 281 +- .../KeyVault/Models/VaultUriHelper.cs | 19 +- .../KeyVault/Properties/AssemblyInfo.cs | 1 + .../KeyVault/Properties/Resources.Designer.cs | 1314 ++++-- .../KeyVault/Properties/Resources.resx | 86 +- .../Cmdlets/BackupSecurityDomain.cs | 62 + .../Cmdlets/RestoreSecurityDomain.cs | 79 + .../Cmdlets/SecurityDomainCmdlet.cs | 64 + .../SecurityDomain/Common/Constants.cs | 10 + .../Common/IOStreamExtensions.cs | 18 + .../KeyVault/SecurityDomain/Common/Utils.cs | 77 + .../SecurityDomain/Crypto/mod_math.cs | 184 + .../SecurityDomain/Crypto/shared_secret.cs | 130 + .../SecurityDomain/Crypto/test/test.cs | 167 + .../KeyVault/SecurityDomain/Models/CertKey.cs | 85 + .../SecurityDomain/Models/CertKeys.cs | 46 + .../SecurityDomain/Models/DownloadRequest.cs | 19 + .../Models/ISecurityDomainClient.cs | 18 + .../KeyVault/SecurityDomain/Models/JWE.cs | 321 ++ .../KeyVault/SecurityDomain/Models/JWK.cs | 259 ++ .../KeyVault/SecurityDomain/Models/KDF.cs | 136 + .../KeyVault/SecurityDomain/Models/KeyPath.cs | 11 + .../SecurityDomain/Models/SecurityDomain.cs | 85 + .../Models/SecurityDomainClient.cs | 446 ++ .../Models/SecurityDomainRestoreData.cs | 17 + .../Models/SecurityDomainTransferKey.cs | 13 + .../KeyVault/Track2Models/Track2HsmClient.cs | 502 +++ .../Track2KeyVaultDataServiceClient.cs | 496 +++ .../Track2ModelConvertionExtensions.cs | 59 + .../Track2Models/Track2TokenCredential.cs | 28 + .../Track2Models/Track2VaultClient.cs | 82 + .../help/Add-AzKeyVaultNetworkRule.md | 2 +- .../KeyVault/help/Add-AzManagedHsmKey.md | 440 ++ src/KeyVault/KeyVault/help/Az.KeyVault.md | 57 + .../KeyVault/help/Backup-AzManagedHsm.md | 207 + .../KeyVault/help/Backup-AzManagedHsmKey.md | 200 + .../help/Backup-AzManagedHsmSecurityDomain.md | 207 + .../KeyVault/help/Get-AzKeyVaultKey.md | 4 +- .../KeyVault/help/Get-AzManagedHsm.md | 158 + .../KeyVault/help/Get-AzManagedHsmKey.md | 451 ++ .../help/Get-AzManagedHsmRoleAssignment.md | 218 + .../help/Get-AzManagedHsmRoleDefinition.md | 154 + src/KeyVault/KeyVault/help/New-AzKeyVault.md | 5 +- .../KeyVault/help/New-AzManagedHsm.md | 235 + .../help/New-AzManagedHsmRoleAssignment.md | 240 ++ .../KeyVault/help/Remove-AzKeyVault.md | 9 + .../KeyVault/help/Remove-AzManagedHsm.md | 235 + .../KeyVault/help/Remove-AzManagedHsmKey.md | 244 ++ .../help/Remove-AzManagedHsmRoleAssignment.md | 301 ++ .../KeyVault/help/Restore-AzManagedHsm.md | 238 + .../KeyVault/help/Restore-AzManagedHsmKey.md | 199 + .../Restore-AzManagedHsmSecurityDomain.md | 179 + .../help/Undo-AzManagedHsmKeyRemoval.md | 172 + .../KeyVault/help/Update-AzKeyVault.md | 3 +- .../KeyVault/help/Update-AzManagedHsm.md | 217 + .../KeyVault/help/Update-AzManagedHsmKey.md | 293 ++ src/Network/Network.Test/Network.Test.csproj | 2 +- src/Sql/Sql.Test/Sql.Test.csproj | 2 +- tools/Common.Netcore.Dependencies.targets | 32 +- tools/CreateMappings_rules.json | 4 + .../Az.KeyVault/BreakingChangeIssues.csv | 3 +- .../Az.KeyVault/MissingAssemblies.csv | 1 + .../Az.KeyVault/SignatureIssues.csv | 7 + 130 files changed, 18537 insertions(+), 1736 deletions(-) create mode 100644 src/KeyVault/KeyVault.Test/PesterTests/ManagedHsmDatePlaneTests.Tests.ps1 create mode 100644 src/KeyVault/KeyVault.Test/PesterTests/ManagedHsmDatePlaneTests.ps1 create mode 100644 src/KeyVault/KeyVault.Test/ScenarioTests/ManagedHsmManagementTests.cs create mode 100644 src/KeyVault/KeyVault.Test/ScenarioTests/ManagedHsmManagementTests.ps1 create mode 100644 src/KeyVault/KeyVault.Test/SessionRecords/Microsoft.Azure.Commands.KeyVault.Test.ScenarioTests.ManagedHsmManagementTests/TestManagedHsmCRUD.json create mode 100644 src/KeyVault/KeyVault/Commands/AddAzureManagedHsmKey.cs create mode 100644 src/KeyVault/KeyVault/Commands/BackupAzureManagedHsmKey.cs create mode 100644 src/KeyVault/KeyVault/Commands/FullBackupRestore/BackupAzureManagedHsm.cs create mode 100644 src/KeyVault/KeyVault/Commands/FullBackupRestore/FullBackupRestoreCmdletBase.cs create mode 100644 src/KeyVault/KeyVault/Commands/FullBackupRestore/RestoreAzureManagedHsm.cs create mode 100644 src/KeyVault/KeyVault/Commands/GetAzureManagedHsm.cs create mode 100644 src/KeyVault/KeyVault/Commands/GetAzureManagedHsmKey.cs create mode 100644 src/KeyVault/KeyVault/Commands/NewAzureManagedHsm.cs create mode 100644 src/KeyVault/KeyVault/Commands/RBAC/GetAzureManagedHsmRoleAssignment.cs create mode 100644 src/KeyVault/KeyVault/Commands/RBAC/GetAzureManagedHsmRoleDefinition.cs create mode 100644 src/KeyVault/KeyVault/Commands/RBAC/NewAzureManagedHsmRoleAssignment.cs create mode 100644 src/KeyVault/KeyVault/Commands/RBAC/RbacCmdletBase.cs create mode 100644 src/KeyVault/KeyVault/Commands/RBAC/RemoveAzureManagedHsmRoleAssignment.cs create mode 100644 src/KeyVault/KeyVault/Commands/RemoveAzureManagedHsm.cs create mode 100644 src/KeyVault/KeyVault/Commands/RemoveAzureManagedHsmKey.cs create mode 100644 src/KeyVault/KeyVault/Commands/RestoreAzureManagedHsmKey.cs create mode 100644 src/KeyVault/KeyVault/Commands/UndoAzureManagedHsmKeyRemoval.cs create mode 100644 src/KeyVault/KeyVault/Commands/UpdateAzureManagedHsm.cs create mode 100644 src/KeyVault/KeyVault/Commands/UpdateAzureManagedHsmKey.cs create mode 100644 src/KeyVault/KeyVault/Helpers/UtilityExtensions.cs create mode 100644 src/KeyVault/KeyVault/Models/PSKeyVaultPermission.cs create mode 100644 src/KeyVault/KeyVault/Models/PSKeyVaultRoleAssignment.cs create mode 100644 src/KeyVault/KeyVault/Models/PSKeyVaultRoleDefinition.cs create mode 100644 src/KeyVault/KeyVault/Models/PSManagedHsm.cs rename src/KeyVault/KeyVault/Models/{VaultCreationParameters.cs => VaultCreationOrUpdateParameters.cs} (90%) create mode 100644 src/KeyVault/KeyVault/SecurityDomain/Cmdlets/BackupSecurityDomain.cs create mode 100644 src/KeyVault/KeyVault/SecurityDomain/Cmdlets/RestoreSecurityDomain.cs create mode 100644 src/KeyVault/KeyVault/SecurityDomain/Cmdlets/SecurityDomainCmdlet.cs create mode 100644 src/KeyVault/KeyVault/SecurityDomain/Common/Constants.cs create mode 100644 src/KeyVault/KeyVault/SecurityDomain/Common/IOStreamExtensions.cs create mode 100644 src/KeyVault/KeyVault/SecurityDomain/Common/Utils.cs create mode 100644 src/KeyVault/KeyVault/SecurityDomain/Crypto/mod_math.cs create mode 100644 src/KeyVault/KeyVault/SecurityDomain/Crypto/shared_secret.cs create mode 100644 src/KeyVault/KeyVault/SecurityDomain/Crypto/test/test.cs create mode 100644 src/KeyVault/KeyVault/SecurityDomain/Models/CertKey.cs create mode 100644 src/KeyVault/KeyVault/SecurityDomain/Models/CertKeys.cs create mode 100644 src/KeyVault/KeyVault/SecurityDomain/Models/DownloadRequest.cs create mode 100644 src/KeyVault/KeyVault/SecurityDomain/Models/ISecurityDomainClient.cs create mode 100644 src/KeyVault/KeyVault/SecurityDomain/Models/JWE.cs create mode 100644 src/KeyVault/KeyVault/SecurityDomain/Models/JWK.cs create mode 100644 src/KeyVault/KeyVault/SecurityDomain/Models/KDF.cs create mode 100644 src/KeyVault/KeyVault/SecurityDomain/Models/KeyPath.cs create mode 100644 src/KeyVault/KeyVault/SecurityDomain/Models/SecurityDomain.cs create mode 100644 src/KeyVault/KeyVault/SecurityDomain/Models/SecurityDomainClient.cs create mode 100644 src/KeyVault/KeyVault/SecurityDomain/Models/SecurityDomainRestoreData.cs create mode 100644 src/KeyVault/KeyVault/SecurityDomain/Models/SecurityDomainTransferKey.cs create mode 100644 src/KeyVault/KeyVault/Track2Models/Track2HsmClient.cs create mode 100644 src/KeyVault/KeyVault/Track2Models/Track2KeyVaultDataServiceClient.cs create mode 100644 src/KeyVault/KeyVault/Track2Models/Track2ModelConvertionExtensions.cs create mode 100644 src/KeyVault/KeyVault/Track2Models/Track2TokenCredential.cs create mode 100644 src/KeyVault/KeyVault/Track2Models/Track2VaultClient.cs create mode 100644 src/KeyVault/KeyVault/help/Add-AzManagedHsmKey.md create mode 100644 src/KeyVault/KeyVault/help/Backup-AzManagedHsm.md create mode 100644 src/KeyVault/KeyVault/help/Backup-AzManagedHsmKey.md create mode 100644 src/KeyVault/KeyVault/help/Backup-AzManagedHsmSecurityDomain.md create mode 100644 src/KeyVault/KeyVault/help/Get-AzManagedHsm.md create mode 100644 src/KeyVault/KeyVault/help/Get-AzManagedHsmKey.md create mode 100644 src/KeyVault/KeyVault/help/Get-AzManagedHsmRoleAssignment.md create mode 100644 src/KeyVault/KeyVault/help/Get-AzManagedHsmRoleDefinition.md create mode 100644 src/KeyVault/KeyVault/help/New-AzManagedHsm.md create mode 100644 src/KeyVault/KeyVault/help/New-AzManagedHsmRoleAssignment.md create mode 100644 src/KeyVault/KeyVault/help/Remove-AzManagedHsm.md create mode 100644 src/KeyVault/KeyVault/help/Remove-AzManagedHsmKey.md create mode 100644 src/KeyVault/KeyVault/help/Remove-AzManagedHsmRoleAssignment.md create mode 100644 src/KeyVault/KeyVault/help/Restore-AzManagedHsm.md create mode 100644 src/KeyVault/KeyVault/help/Restore-AzManagedHsmKey.md create mode 100644 src/KeyVault/KeyVault/help/Restore-AzManagedHsmSecurityDomain.md create mode 100644 src/KeyVault/KeyVault/help/Undo-AzManagedHsmKeyRemoval.md create mode 100644 src/KeyVault/KeyVault/help/Update-AzManagedHsm.md create mode 100644 src/KeyVault/KeyVault/help/Update-AzManagedHsmKey.md diff --git a/LICENSE.txt b/LICENSE.txt index b9f3180fb9af..c5faa2b78e07 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -223,5 +223,19 @@ Permission is hereby granted, free of charge, to any person obtaining a copy of The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*************** + +The software includes BouncyCastle.NetCore. The MIT License set out below is provided for informational purposes only. It is not the license that governs any part of the software. + +BouncyCastle.NetCore + +LICENSE +Copyright (c) 2000 - 2020 The Legion of the Bouncy Castle Inc. (https://www.bouncycastle.org) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------END OF THIRD PARTY NOTICE---------------------------------------- diff --git a/src/Compute/Compute.Test/Compute.Test.csproj b/src/Compute/Compute.Test/Compute.Test.csproj index ced28e6bb90b..c87d7a90000c 100644 --- a/src/Compute/Compute.Test/Compute.Test.csproj +++ b/src/Compute/Compute.Test/Compute.Test.csproj @@ -13,7 +13,7 @@ - + diff --git a/src/EventHub/EventHub.Test/EventHub.Test.csproj b/src/EventHub/EventHub.Test/EventHub.Test.csproj index d36438dae50f..fcadea5bc766 100644 --- a/src/EventHub/EventHub.Test/EventHub.Test.csproj +++ b/src/EventHub/EventHub.Test/EventHub.Test.csproj @@ -13,7 +13,7 @@ - + diff --git a/src/HDInsight/HDInsight.Test/HDInsight.Test.csproj b/src/HDInsight/HDInsight.Test/HDInsight.Test.csproj index 79bc95e60453..8e6a7eaba5b4 100644 --- a/src/HDInsight/HDInsight.Test/HDInsight.Test.csproj +++ b/src/HDInsight/HDInsight.Test/HDInsight.Test.csproj @@ -14,7 +14,7 @@ - + diff --git a/src/KeyVault/KeyVault.Test/KeyVault.Test.csproj b/src/KeyVault/KeyVault.Test/KeyVault.Test.csproj index 2b8f5bd2860e..ceab5068360a 100644 --- a/src/KeyVault/KeyVault.Test/KeyVault.Test.csproj +++ b/src/KeyVault/KeyVault.Test/KeyVault.Test.csproj @@ -13,7 +13,10 @@ - + + + NU1608 + @@ -23,7 +26,10 @@ - + + + + diff --git a/src/KeyVault/KeyVault.Test/Models/UtilitiesTests.cs b/src/KeyVault/KeyVault.Test/Models/UtilitiesTests.cs index 82eca4adcaa5..b353e3144681 100644 --- a/src/KeyVault/KeyVault.Test/Models/UtilitiesTests.cs +++ b/src/KeyVault/KeyVault.Test/Models/UtilitiesTests.cs @@ -58,22 +58,5 @@ public void GetWebKeyFromByok() Assert.True(webKey.T.SequenceEqual(byokBlob)); Assert.Equal(webKey.Kty, JsonWebKeyType.RsaHsm); } - - [Fact] - [Trait(Category.AcceptanceType, Category.CheckIn)] - public void GetWebKeyFromCertificate() - { - string password = "123"; - // This allows the test to run in Visual Studio and in the console runner. The file will exist in one of the two locations depending on the environment. - var consolePath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? String.Empty, "Resources", "pshtest.pfx"); - var vsPath = Path.Combine(Directory.GetCurrentDirectory(), "Resources", "pshtest.pfx"); - - IWebKeyConverter converters = WebKeyConverterFactory.CreateConverterChain(); - var webKey = converters.ConvertKeyFromFile(new FileInfo(File.Exists(consolePath) ? consolePath : vsPath), password.ConvertToSecureString()); - - Assert.True(webKey.HasPrivateKey()); - Assert.True(webKey.IsValid()); - Assert.Equal(webKey.Kty, JsonWebKeyType.Rsa); - } } } diff --git a/src/KeyVault/KeyVault.Test/PesterTests/ManagedHsmDatePlaneTests.Tests.ps1 b/src/KeyVault/KeyVault.Test/PesterTests/ManagedHsmDatePlaneTests.Tests.ps1 new file mode 100644 index 000000000000..f9f714ede44a --- /dev/null +++ b/src/KeyVault/KeyVault.Test/PesterTests/ManagedHsmDatePlaneTests.Tests.ps1 @@ -0,0 +1,172 @@ +$here = Split-Path -Parent $MyInvocation.MyCommand.Path +$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path) -replace '\.Tests\.', '.' +. "$here\$sut" + +BeforeAll { + . $PSScriptRoot/ManagedHsmDatePlaneTests.ps1 + ImportModules + $hsmName = GetAzManagedHsm +} + +Describe "AddAzManagedHsmKey" { + It "Create a RSA key inside a managed HSM" { + $keyName = GetRandomName -Prefix "key" + $keyType = "RSA" + $rsaKey = Add-AzManagedHsmKey -HsmName $hsmName -Name $keyName -KeyType $keyType + $rsaKey.VaultName | Should -BeExactly $hsmName + $rsaKey.Name | Should -BeExactly $keyName + $rsaKey.Attributes.KeyType | Should -Be "RSA-HSM" + } + + It "Create an EC key with curve P-256 inside a managed HSM" { + $keyName = GetRandomName -Prefix "key" + $keyType = "EC" + $curveName = "P-256" + $rsaKey = Add-AzManagedHsmKey -HsmName $hsmName -Name $keyName -KeyType $keyType -CurveName $curveName + $rsaKey.VaultName | Should -BeExactly $hsmName + $rsaKey.Name | Should -BeExactly $keyName + $rsaKey.Attributes.KeyType | Should -Be "EC-HSM" + $rsaKey.Key.CurveName | Should -Be $curveName + } + + It "Create an oct key inside a managed HSM" { + $keyName = GetRandomName -Prefix "key" + $keyType = "oct" + $rsaKey = Add-AzManagedHsmKey -HsmName $hsmName -Name $keyName -KeyType $keyType + $rsaKey.VaultName | Should -BeExactly $hsmName + $rsaKey.Name | Should -BeExactly $keyName + $rsaKey.Attributes.KeyType | Should -Be "oct-HSM" + } + + It "Create an oct key inside a managed HSM" { + $keyName = GetRandomName -Prefix "key" + $keyType = "oct" + $rsaKey = Add-AzManagedHsmKey -HsmName $hsmName -Name $keyName -KeyType $keyType + $rsaKey.VaultName | Should -BeExactly $hsmName + $rsaKey.Name | Should -BeExactly $keyName + $rsaKey.Attributes.KeyType | Should -Be "oct-HSM" + } + + It "Create a key with non-default values inside a managed HSM" { + $keyName = GetRandomName -Prefix "key" + $keyType = "RSA" + $KeyOps = 'decrypt', 'verify' + # Expires & NotBefore is hard to cmpare, may add in the furture + $Tags = @{'Severity' = 'high'; 'Accounting' = "true"} + + $key = Add-AzManagedHsmKey -HsmName $hsmName -Name $keyName -KeyType $keyType -KeyOps $KeyOps -Disable -Tag $Tags + + $key.Attributes.KeyOps | Should -Be $KeyOps + $key.Tags.Count | Should -Be 2 + $key.Enabled | Should -Be $false + } + + # It "Import a RSA key from pfx file into a managed HSM" { + # $keyName = GetRandomName -Prefix "key" + # $keyFilePath = Join-Path $PSScriptRoot ../Resources/testImportKey.pfx -Resolve + # $keyFilePwd = $null + # $key = Add-AzManagedHsmKey -HsmName bezmhsm -Name $keyName -KeyFilePath $keyFilePath -KeyFilePassword $keyFilePwd + # $key.Name | Should -BeExactly $keyName + # } +} + +Describe "GetAzManagedHsmKey"{ + It "List all the keys in a managed HSM" { + $keyName = GetRandomName -Prefix "key" + Add-AzManagedHsmKey -HsmName $hsmName -Name $keyName -KeyType "RSA" + $keys = Get-AzManagedHsmKey -HsmName $hsmName + $keys.Count | Should -BeGreaterThan 0 + } + + It "Get a specific key in a managed HSM" { + $keyName = GetRandomName -Prefix "key" + $key = Add-AzManagedHsmKey -HsmName $hsmName -Name $keyName -KeyType "RSA" + $got = Get-AzManagedHsmKey -HsmName $hsmName -KeyName $keyName + $got.Id | Should -Be $key.Id + } + + It "List all the keys that have been deleted in a managed HSM" { + $keyName = GetRandomName -Prefix "key" + $key = Add-AzManagedHsmKey -HsmName $hsmName -Name $keyName -KeyType "RSA" + Remove-AzManagedHsmKey -HsmName $hsmName -Name $keyName + $deletedKey = Get-AzManagedHsmKey -HsmName $hsmName -KeyName $keyName -InRemovedState + $deletedKey.Id | Should -Be $key.Id + } + + It "Download a key from a managed HSM" { + $keyName = GetRandomName -Prefix "key" + Add-AzManagedHsmKey -HsmName $hsmName -Name $keyName -KeyType "RSA" + $filePath = "$PSScriptRoot\public.pem" + Get-AzManagedHsmKey -HsmName $hsmName -KeyName $keyName -OutFile $filePath + $filePath | Should -Exist + } +} + +Describe "RemoveAzManagedHsmKey"{ + It "Remove a key from a managed HSM" { + $keyName = GetRandomName -Prefix "key" + $key = Add-AzManagedHsmKey -HsmName $hsmName -Name $keyName -KeyType "RSA" + $deletedKey = Remove-AzManagedHsmKey -HsmName $hsmName -Name $keyName -Force -PassThru + $deletedKey.Id | Should -Be $key.Id + } + + It "Purge a deleted key from a managed HSM" { + $keyName = GetRandomName -Prefix "key" + Add-AzManagedHsmKey -HsmName $hsmName -Name $keyName -KeyType "RSA" + Remove-AzManagedHsmKey -HsmName $hsmName -Name $keyName -Force -PassThru + Remove-AzManagedHsmKey -HsmName $hsmName -Name $keyName -InRemovedState -Force -PassThru + $deletedKey = Get-AzManagedHsmKey -HsmName $hsmName -Name $keyName -InRemovedState + $deletedKey | Should -Be $null + } + + It "Remove keys by using piping" { + Get-AzManagedHsmKey -HsmName $hsmName | Remove-AzManagedHsmKey -Force + $keys = Get-AzManagedHsmKey -HsmName $hsmName + $keys.Count | Should -Be 0 + } +} + +Describe "UpdateAzManagedHsmKey"{ + It "Enable a key and set tags" { + $keyName = GetRandomName -Prefix "key" + $key = Add-AzManagedHsmKey -HsmName $hsmName -Name $keyName -KeyType "RSA" -Disable + $Tags = @{'Severity' = 'high'; 'Accounting' = 'true'} + + $updatedKey = Update-AzManagedHsmKey -HsmName $hsmName -Name $keyName -Enable $True -Tag $Tags -PassThru + + $updatedKey.Id | Should -Be $key.Id + $updatedKey.Enabled | Should -Be $True + $updatedKey.Tags.Count | Should -Be 2 + } +} + +Describe "UndoAzManagedHsmKeyRemoval"{ + It "Undo a key removal" { + $keyName = GetRandomName -Prefix "key" + $key = Add-AzManagedHsmKey -HsmName $hsmName -Name $keyName -KeyType "RSA" + $deletedKey = Remove-AzManagedHsmKey -HsmName $hsmName -Name $keyName -Force -PassThru + $recoveredKey = $deletedKey | Undo-AzManagedHsmKeyRemoval + $recoveredKey.Id | Should -Be $key.Id + } +} + +Describe "BackupAndRetoreAzManagedHsmKey"{ + It "Backup and retore a key" { + $keyName = GetRandomName -Prefix "key" + $key = Add-AzManagedHsmKey -HsmName $hsmName -Name $keyName -KeyType "RSA" + $filePath = "$PSScriptRoot/backupkey.blob" + $key | Backup-AzManagedHsmKey -OutputFile $filePath -Force + $filePath | Should -Exist + + Remove-AzManagedHsmKey -HsmName $hsmName -Name $keyName -Force + Remove-AzManagedHsmKey -HsmName $hsmName -Name $keyName -InRemovedState -Force + $restoredKey = Restore-AzManagedHsmKey -HsmName $hsmName -InputFile $filePath + $restoredKey.Id | Should -Be $key.Id + } +} + +# to do: manually remove all stuffs in resource group +# AfterAll { + # $hsm = Get-AzManagedHsm -Name $hsmName + # Remove-AzResourceGroup -Name $hsm.ResourceGroupName -Force +# } \ No newline at end of file diff --git a/src/KeyVault/KeyVault.Test/PesterTests/ManagedHsmDatePlaneTests.ps1 b/src/KeyVault/KeyVault.Test/PesterTests/ManagedHsmDatePlaneTests.ps1 new file mode 100644 index 000000000000..2a8e8c802a22 --- /dev/null +++ b/src/KeyVault/KeyVault.Test/PesterTests/ManagedHsmDatePlaneTests.ps1 @@ -0,0 +1,40 @@ +function GetAzManagedHsm{ + Param( + [parameter(Mandatory=$false)] + [String] + $HsmName, + [parameter(Mandatory=$false)] + [String] + $ResourceGroupName, + [parameter(Mandatory=$false)] + [String] + $Location, + [parameter(Mandatory=$false)] + [String[]] + $Administrator + ) + $hsmName = GetRandomName -Prefix "hsm" + $resourceGroupName = GetRandomName -Prefix "rg" + $Location = "eastus2euap" + $administrator = "c1be1392-39b8-4521-aafc-819a47008545" + $hsm = New-AzManagedHsm -Name $HsmName -ResourceGroupName $ResourceGroupName -Location $r -Administrator $Administrator + return $hsm +} + +function GetRandomName{ + Param( + [parameter(Mandatory=$false)] + [String] + $Prefix + ) + $randomNum = Get-Random -Minimum 100 -Maximum 99999 + return "$Prefix$randomNum" +} + +function ImportModules{ + $psd1Path = Join-Path $PSScriptRoot "../../../../artifacts/Debug/" -Resolve + $accountsPsd1 = Join-Path $psd1Path "./Az.Accounts/Az.Accounts.psd1" -Resolve + $keyVaultPsd1 = Join-Path $psd1Path "./Az.KeyVault/Az.KeyVault.psd1" -Resolve + Import-Module $accountsPsd1 + Import-Module $keyVaultPsd1 +} \ No newline at end of file diff --git a/src/KeyVault/KeyVault.Test/ScenarioTests/ManagedHsmManagementTests.cs b/src/KeyVault/KeyVault.Test/ScenarioTests/ManagedHsmManagementTests.cs new file mode 100644 index 000000000000..df879c904be6 --- /dev/null +++ b/src/KeyVault/KeyVault.Test/ScenarioTests/ManagedHsmManagementTests.cs @@ -0,0 +1,22 @@ +using Microsoft.WindowsAzure.Commands.ScenarioTest; +using System; +using System.Collections.Generic; +using System.Text; +using Xunit; + +namespace Microsoft.Azure.Commands.KeyVault.Test.ScenarioTests +{ + public class ManagedHsmManagementTests: KeyVaultTestRunner + { + public ManagedHsmManagementTests(Xunit.Abstractions.ITestOutputHelper output) : base(output) + { + } + + [Fact] + [Trait(Category.AcceptanceType, Category.CheckIn)] + public void TestManagedHsmCRUD() + { + TestRunner.RunTestScript("Test-ManagedHsmCRUD"); + } + } +} diff --git a/src/KeyVault/KeyVault.Test/ScenarioTests/ManagedHsmManagementTests.ps1 b/src/KeyVault/KeyVault.Test/ScenarioTests/ManagedHsmManagementTests.ps1 new file mode 100644 index 000000000000..2c10a18ddceb --- /dev/null +++ b/src/KeyVault/KeyVault.Test/ScenarioTests/ManagedHsmManagementTests.ps1 @@ -0,0 +1,62 @@ +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ---------------------------------------------------------------------------------- + +<# +.SYNOPSIS +Tests CRUD for Managed Hsm. +#> +function Test-ManagedHsmCRUD { + $rgName = getAssetName + $rgLocation = Get-Location "Microsoft.Resources" "resourceGroups" "West US" + $hsmName = getAssetName + $hsmLocation = Get-Location "Microsoft.KeyVault" "managedHSMs" "East US 2" + $administrator = "c1be1392-39b8-4521-aafc-819a47008545" + New-AzResourceGroup -Name $rgName -Location $rgLocation + + try { + # Test create a default managed HSM + $hsm = New-AzManagedHsm -Name $hsmName -ResourceGroupName $rgName -Location $hsmLocation -Administrator $administrator + Assert-AreEqual $hsmName $hsm.Name + Assert-AreEqual $rgName $hsm.ResourceGroupName + Assert-AreEqual $hsmLocation $hsm.Location + Assert-AreEqual 1 $hsm.InitialAdminObjectIds.Count + Assert-True { $hsm.InitialAdminObjectIds.Contains($administrator) } + Assert-AreEqual "StandardB1" $hsm.Sku + + # Default retention days + Assert-AreEqual 90 $hsm.SoftDeleteRetentionInDays "By default SoftDeleteRetentionInDays should be 90" + + # Test get managed HSM + $got = Get-AzManagedHsm -Name $hsmName + Assert-NotNull $got + Assert-AreEqual $hsmName $got.Name + Assert-AreEqual $rgName $got.ResourceGroupName + Assert-AreEqual $hsmLocation $got.Location + + # Test throws for existing managed HSM + Assert-Throws { New-AzManagedHsm -Name $hsmName -ResourceGroupName $rgName -Location $hsmLocation -Administrator $administrator } + + # Test remove managed HSM + Remove-AzManagedHsm -InputObject $got -Force + $deletedMhsm = Get-AzManagedHsm -Name $hsmName -ResourceGroupName $rgName + Assert-Null $deletedMhsm + + # Test throws for resourcegroup nonexistent + Assert-Throws { New-AzManagedHsm -Name (getAssetName) -ResourceGroupName (getAssetName) -Location $hsmLocation -Administrator $administrator } + } + + finally { + Remove-AzResourceGroup -Name $rgName -Force + } +} diff --git a/src/KeyVault/KeyVault.Test/Scripts/ControlPlane/KeyVaultManagementTests.ps1 b/src/KeyVault/KeyVault.Test/Scripts/ControlPlane/KeyVaultManagementTests.ps1 index 12e183b3ff56..b65d42b9cb9c 100644 --- a/src/KeyVault/KeyVault.Test/Scripts/ControlPlane/KeyVaultManagementTests.ps1 +++ b/src/KeyVault/KeyVault.Test/Scripts/ControlPlane/KeyVaultManagementTests.ps1 @@ -804,4 +804,4 @@ function Test-UpdateKeyVault { finally { $rg | Remove-AzResourceGroup -Force } -} \ No newline at end of file +} diff --git a/src/KeyVault/KeyVault.Test/SessionRecords/Microsoft.Azure.Commands.KeyVault.Test.ScenarioTests.KeyVaultManagementTests/TestDeleteVault.json b/src/KeyVault/KeyVault.Test/SessionRecords/Microsoft.Azure.Commands.KeyVault.Test.ScenarioTests.KeyVaultManagementTests/TestDeleteVault.json index adfdc9ee743d..36bab34cab74 100644 --- a/src/KeyVault/KeyVault.Test/SessionRecords/Microsoft.Azure.Commands.KeyVault.Test.ScenarioTests.KeyVaultManagementTests/TestDeleteVault.json +++ b/src/KeyVault/KeyVault.Test/SessionRecords/Microsoft.Azure.Commands.KeyVault.Test.ScenarioTests.KeyVaultManagementTests/TestDeleteVault.json @@ -7,16 +7,16 @@ "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "e943f67c-d16f-490d-b9af-d1ee420c2f1d" + "2f140ec1-d166-4b8c-ab4a-07c4743fa1ca" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -27,16 +27,16 @@ "no-cache" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11997" + "11998" ], "x-ms-request-id": [ - "567cb0dc-c91f-48b2-917e-81224b00fe64" + "efe97184-f68a-4e41-a75f-9b9f83831e77" ], "x-ms-correlation-request-id": [ - "567cb0dc-c91f-48b2-917e-81224b00fe64" + "efe97184-f68a-4e41-a75f-9b9f83831e77" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T084828Z:567cb0dc-c91f-48b2-917e-81224b00fe64" + "KOREASOUTH:20200810T062530Z:efe97184-f68a-4e41-a75f-9b9f83831e77" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -45,7 +45,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 08:48:28 GMT" + "Mon, 10 Aug 2020 06:25:29 GMT" ], "Content-Type": [ "application/json; charset=utf-8" @@ -54,10 +54,10 @@ "-1" ], "Content-Length": [ - "249" + "10938" ] }, - "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/providers/Microsoft.Resources\",\r\n \"namespace\": \"Microsoft.Resources\",\r\n \"authorization\": {\r\n \"applicationId\": \"3b990c8b-9607-4c2a-8b04-1d41985facca\"\r\n },\r\n \"resourceTypes\": [],\r\n \"registrationState\": \"Registered\"\r\n}", + "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/providers/Microsoft.Resources\",\r\n \"namespace\": \"Microsoft.Resources\",\r\n \"authorization\": {\r\n \"applicationId\": \"3b990c8b-9607-4c2a-8b04-1d41985facca\"\r\n },\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"tenants\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2020-01-01\",\r\n \"2019-09-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"operationresults\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"notifyResourceJobs\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"tags\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-10-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\"\r\n ],\r\n \"capabilities\": \"SupportsExtension\"\r\n },\r\n {\r\n \"resourceType\": \"checkPolicyCompliance\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"providers\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"checkresourcename\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"calculateTemplateHash\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"resources\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"subscriptions\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-10-01\",\r\n \"2019-09-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"subscriptions/resources\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"subscriptions/providers\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"subscriptions/operationresults\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"resourceGroups\",\r\n \"locations\": [\r\n \"Central US\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US\",\r\n \"East US 2\",\r\n \"West US\",\r\n \"West US 2\",\r\n \"North Central US\",\r\n \"South Central US\",\r\n \"West Central US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Brazil South\",\r\n \"Australia Southeast\",\r\n \"Australia East\",\r\n \"West India\",\r\n \"South India\",\r\n \"Central India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"South Africa North\",\r\n \"UAE North\",\r\n \"Australia Central\",\r\n \"Switzerland North\",\r\n \"Germany West Central\",\r\n \"Norway East\",\r\n \"East US 2 EUAP\",\r\n \"Central US EUAP\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"subscriptions/resourceGroups\",\r\n \"locations\": [\r\n \"Central US\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US\",\r\n \"East US 2\",\r\n \"West US\",\r\n \"West US 2\",\r\n \"North Central US\",\r\n \"South Central US\",\r\n \"West Central US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Brazil South\",\r\n \"Australia Southeast\",\r\n \"Australia East\",\r\n \"West India\",\r\n \"South India\",\r\n \"Central India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"South Africa North\",\r\n \"UAE North\",\r\n \"Australia Central\",\r\n \"Switzerland North\",\r\n \"Germany West Central\",\r\n \"Norway East\",\r\n \"East US 2 EUAP\",\r\n \"Central US EUAP\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"subscriptions/resourcegroups/resources\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"subscriptions/locations\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"subscriptions/tagnames\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"subscriptions/tagNames/tagValues\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"deployments\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2020-06-01\",\r\n \"2019-09-01\",\r\n \"2019-08-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"deployments/operations\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2020-06-01\",\r\n \"2019-09-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"links\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ],\r\n \"capabilities\": \"SupportsExtension\"\r\n },\r\n {\r\n \"resourceType\": \"operations\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2015-01-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"deploymentScripts\",\r\n \"locations\": [\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"Australia East\",\r\n \"Brazil South\",\r\n \"Canada Central\",\r\n \"East US 2\",\r\n \"East US\",\r\n \"Central US\",\r\n \"North Central US\",\r\n \"UK South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"Japan East\",\r\n \"Korea Central\",\r\n \"North Europe\",\r\n \"West Central US\",\r\n \"West Europe\",\r\n \"West US 2\",\r\n \"West US\",\r\n \"South Central US\",\r\n \"Canada East\",\r\n \"Central US EUAP\",\r\n \"East US 2 EUAP\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-10-01-preview\"\r\n ],\r\n \"capabilities\": \"None\"\r\n },\r\n {\r\n \"resourceType\": \"deploymentScripts/logs\",\r\n \"locations\": [\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"Australia East\",\r\n \"Brazil South\",\r\n \"Canada Central\",\r\n \"East US 2\",\r\n \"East US\",\r\n \"Central US\",\r\n \"North Central US\",\r\n \"UK South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"Japan East\",\r\n \"Korea Central\",\r\n \"North Europe\",\r\n \"West Central US\",\r\n \"West Europe\",\r\n \"West US 2\",\r\n \"West US\",\r\n \"South Central US\",\r\n \"Canada East\",\r\n \"Central US EUAP\",\r\n \"East US 2 EUAP\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-10-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations/deploymentScriptOperationResults\",\r\n \"locations\": [\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"Australia East\",\r\n \"Brazil South\",\r\n \"Canada Central\",\r\n \"East US 2\",\r\n \"East US\",\r\n \"Central US\",\r\n \"North Central US\",\r\n \"UK South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"Japan East\",\r\n \"Korea Central\",\r\n \"North Europe\",\r\n \"West Central US\",\r\n \"West Europe\",\r\n \"West US 2\",\r\n \"West US\",\r\n \"South Central US\",\r\n \"Canada East\",\r\n \"Central US EUAP\",\r\n \"East US 2 EUAP\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-10-01-preview\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"Registered\"\r\n}", "StatusCode": 200 }, { @@ -67,16 +67,16 @@ "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "7fdf7666-d313-4af1-addc-e21ecc6db5cb" + "e5ed1190-2ee5-43fe-99ae-4657832740a6" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -87,16 +87,16 @@ "no-cache" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11996" + "11997" ], "x-ms-request-id": [ - "383a39ab-8bdb-4ffd-87ad-3d03fccf8fc2" + "36509a50-084e-4c45-a060-8852268f412b" ], "x-ms-correlation-request-id": [ - "383a39ab-8bdb-4ffd-87ad-3d03fccf8fc2" + "36509a50-084e-4c45-a060-8852268f412b" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T084829Z:383a39ab-8bdb-4ffd-87ad-3d03fccf8fc2" + "KOREASOUTH:20200810T062530Z:36509a50-084e-4c45-a060-8852268f412b" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -105,7 +105,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 08:48:28 GMT" + "Mon, 10 Aug 2020 06:25:30 GMT" ], "Content-Type": [ "application/json; charset=utf-8" @@ -114,29 +114,29 @@ "-1" ], "Content-Length": [ - "5958" + "7541" ] }, - "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/providers/Microsoft.KeyVault\",\r\n \"namespace\": \"Microsoft.KeyVault\",\r\n \"authorizations\": [\r\n {\r\n \"applicationId\": \"cfa8b339-82a2-471a-a3c9-0fc0be7a4093\",\r\n \"roleDefinitionId\": \"1cf9858a-28a2-4228-abba-94e606305b95\"\r\n },\r\n {\r\n \"applicationId\": \"589d5083-6f11-4d30-a62a-a4b316a14abf\"\r\n }\r\n ],\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"vaults\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"Australia Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"Switzerland North\",\r\n \"Germany West Central\",\r\n \"Norway East\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\",\r\n \"2015-06-01\"\r\n ],\r\n \"capabilities\": \"CrossResourceGroupResourceMove, CrossSubscriptionResourceMove\"\r\n },\r\n {\r\n \"resourceType\": \"vaults/secrets\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"Australia Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"Switzerland North\",\r\n \"Germany West Central\",\r\n \"Norway East\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\",\r\n \"2015-06-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"vaults/accessPolicies\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"Australia Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"Switzerland North\",\r\n \"Germany West Central\",\r\n \"Norway East\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\",\r\n \"2015-06-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"operations\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\",\r\n \"2015-06-01\",\r\n \"2014-12-19-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"checkNameAvailability\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\",\r\n \"2015-06-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"deletedVaults\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"Australia Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"Switzerland North\",\r\n \"Germany West Central\",\r\n \"Norway East\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations/deletedVaults\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"Australia Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"Switzerland North\",\r\n \"Germany West Central\",\r\n \"Norway East\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations/deleteVirtualNetworkOrSubnets\",\r\n \"locations\": [\r\n \"East US\",\r\n \"North Central US\",\r\n \"West Europe\",\r\n \"North Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Australia Central\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"Switzerland North\",\r\n \"Germany West Central\",\r\n \"Norway East\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations/operationResults\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"Australia Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"Switzerland North\",\r\n \"Germany West Central\",\r\n \"Norway East\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"vaults/eventGridFilters\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"Australia Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"Switzerland North\",\r\n \"Germany West Central\",\r\n \"Norway East\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"Registered\"\r\n}", + "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/providers/Microsoft.KeyVault\",\r\n \"namespace\": \"Microsoft.KeyVault\",\r\n \"authorizations\": [\r\n {\r\n \"applicationId\": \"cfa8b339-82a2-471a-a3c9-0fc0be7a4093\",\r\n \"roleDefinitionId\": \"1cf9858a-28a2-4228-abba-94e606305b95\"\r\n },\r\n {\r\n \"applicationId\": \"589d5083-6f11-4d30-a62a-a4b316a14abf\"\r\n }\r\n ],\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"operations\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\",\r\n \"2015-06-01\",\r\n \"2014-12-19-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"checkNameAvailability\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\",\r\n \"2015-06-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"vaults\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"East US 2 EUAP\",\r\n \"Central US EUAP\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"France South\",\r\n \"Australia Central\",\r\n \"Australia Central 2\",\r\n \"UAE Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"South Africa West\",\r\n \"Switzerland North\",\r\n \"Switzerland West\",\r\n \"Germany North\",\r\n \"Germany West Central\",\r\n \"Norway East\",\r\n \"Norway West\",\r\n \"Brazil Southeast\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\",\r\n \"2015-06-01\"\r\n ],\r\n \"capabilities\": \"CrossResourceGroupResourceMove, CrossSubscriptionResourceMove\"\r\n },\r\n {\r\n \"resourceType\": \"vaults/secrets\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"East US 2 EUAP\",\r\n \"Central US EUAP\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"France South\",\r\n \"Australia Central\",\r\n \"Australia Central 2\",\r\n \"UAE Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"South Africa West\",\r\n \"Switzerland North\",\r\n \"Switzerland West\",\r\n \"Germany North\",\r\n \"Germany West Central\",\r\n \"Norway East\",\r\n \"Norway West\",\r\n \"Brazil Southeast\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\",\r\n \"2015-06-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"vaults/accessPolicies\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"East US 2 EUAP\",\r\n \"Central US EUAP\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"France South\",\r\n \"Australia Central\",\r\n \"Australia Central 2\",\r\n \"UAE Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"South Africa West\",\r\n \"Switzerland North\",\r\n \"Switzerland West\",\r\n \"Germany North\",\r\n \"Germany West Central\",\r\n \"Norway East\",\r\n \"Norway West\",\r\n \"Brazil Southeast\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\",\r\n \"2015-06-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"deletedVaults\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"East US 2 EUAP\",\r\n \"Central US EUAP\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"France South\",\r\n \"Australia Central\",\r\n \"Australia Central 2\",\r\n \"UAE Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"South Africa West\",\r\n \"Switzerland North\",\r\n \"Switzerland West\",\r\n \"Germany North\",\r\n \"Germany West Central\",\r\n \"Norway East\",\r\n \"Norway West\",\r\n \"Brazil Southeast\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations/deletedVaults\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"East US 2 EUAP\",\r\n \"Central US EUAP\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"France South\",\r\n \"Australia Central\",\r\n \"Australia Central 2\",\r\n \"UAE Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"South Africa West\",\r\n \"Switzerland North\",\r\n \"Switzerland West\",\r\n \"Germany North\",\r\n \"Germany West Central\",\r\n \"Norway East\",\r\n \"Norway West\",\r\n \"Brazil Southeast\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations/deleteVirtualNetworkOrSubnets\",\r\n \"locations\": [\r\n \"East US\",\r\n \"North Central US\",\r\n \"West Europe\",\r\n \"North Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Australia Central\",\r\n \"Australia Central 2\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"Central US EUAP\",\r\n \"East US 2 EUAP\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"France South\",\r\n \"UAE Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"South Africa West\",\r\n \"Switzerland North\",\r\n \"Switzerland West\",\r\n \"Germany North\",\r\n \"Germany West Central\",\r\n \"Norway East\",\r\n \"Norway West\",\r\n \"Brazil Southeast\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations/operationResults\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"East US 2 EUAP\",\r\n \"Central US EUAP\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"France South\",\r\n \"Australia Central\",\r\n \"Australia Central 2\",\r\n \"UAE Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"South Africa West\",\r\n \"Switzerland North\",\r\n \"Switzerland West\",\r\n \"Germany North\",\r\n \"Germany West Central\",\r\n \"Norway East\",\r\n \"Norway West\",\r\n \"Brazil Southeast\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"vaults/eventGridFilters\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"East US 2 EUAP\",\r\n \"Central US EUAP\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"France South\",\r\n \"Australia Central\",\r\n \"Australia Central 2\",\r\n \"UAE Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"South Africa West\",\r\n \"Switzerland North\",\r\n \"Switzerland West\",\r\n \"Germany North\",\r\n \"Germany West Central\",\r\n \"Norway East\",\r\n \"Norway West\",\r\n \"Brazil Southeast\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"managedHSMs\",\r\n \"locations\": [\r\n \"Central US EUAP\",\r\n \"East US 2\"\r\n ],\r\n \"apiVersions\": [\r\n \"2020-04-01-preview\"\r\n ],\r\n \"capabilities\": \"CrossResourceGroupResourceMove, CrossSubscriptionResourceMove\"\r\n }\r\n ],\r\n \"registrationState\": \"Registered\"\r\n}", "StatusCode": 200 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourcegroups/ps6549?api-version=2016-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlZ3JvdXBzL3BzNjU0OT9hcGktdmVyc2lvbj0yMDE2LTA5LTAx", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourcegroups/ps9236?api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlZ3JvdXBzL3BzOTIzNj9hcGktdmVyc2lvbj0yMDE2LTA5LTAx", "RequestMethod": "PUT", "RequestBody": "{\r\n \"location\": \"West US\"\r\n}", "RequestHeaders": { "x-ms-client-request-id": [ - "40cea752-f718-42b6-9f8b-0718cc90f436" + "d7555d28-b34d-4aa3-a7cd-2f904242a096" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ], "Content-Type": [ "application/json; charset=utf-8" @@ -153,16 +153,16 @@ "no-cache" ], "x-ms-ratelimit-remaining-subscription-writes": [ - "1199" + "1198" ], "x-ms-request-id": [ - "8e124519-f82d-48fc-a9ce-bddc1879330d" + "68246abe-2251-419a-8c32-ada5ee2ccfdd" ], "x-ms-correlation-request-id": [ - "8e124519-f82d-48fc-a9ce-bddc1879330d" + "68246abe-2251-419a-8c32-ada5ee2ccfdd" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T084832Z:8e124519-f82d-48fc-a9ce-bddc1879330d" + "KOREASOUTH:20200810T062532Z:68246abe-2251-419a-8c32-ada5ee2ccfdd" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -171,7 +171,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 08:48:31 GMT" + "Mon, 10 Aug 2020 06:25:32 GMT" ], "Content-Length": [ "165" @@ -183,7 +183,7 @@ "-1" ] }, - "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6549\",\r\n \"name\": \"ps6549\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\"\r\n }\r\n}", + "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps9236\",\r\n \"name\": \"ps9236\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\"\r\n }\r\n}", "StatusCode": 201 }, { @@ -193,16 +193,16 @@ "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "4130ee9d-fc54-42b7-a6b9-483d2b0a9604" + "72d6cca5-f485-4657-bf99-935788f5a602" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -213,16 +213,16 @@ "no-cache" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11995" + "11996" ], "x-ms-request-id": [ - "ad51bd2f-1811-49ec-8726-c06b56b8df20" + "847af8b4-0552-4c74-bec6-38fe93c7504e" ], "x-ms-correlation-request-id": [ - "ad51bd2f-1811-49ec-8726-c06b56b8df20" + "847af8b4-0552-4c74-bec6-38fe93c7504e" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T084832Z:ad51bd2f-1811-49ec-8726-c06b56b8df20" + "KOREASOUTH:20200810T062533Z:847af8b4-0552-4c74-bec6-38fe93c7504e" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -231,7 +231,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 08:48:31 GMT" + "Mon, 10 Aug 2020 06:25:32 GMT" ], "Content-Type": [ "application/json; charset=utf-8" @@ -240,10 +240,10 @@ "-1" ], "Content-Length": [ - "1170" + "274" ] }, - "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps267\",\r\n \"name\": \"ps267\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps4721\",\r\n \"name\": \"ps4721\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {\r\n \"asdf\": \"qwerty\"\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps5726\",\r\n \"name\": \"ps5726\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/pshtestrg329/providers/Microsoft.KeyVault/vaults/pshtestvault5414\",\r\n \"name\": \"pshtestvault5414\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"northcentralus\",\r\n \"tags\": {\r\n \"testtag\": \"testvalue\"\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/pshtestrg8052/providers/Microsoft.KeyVault/vaults/pshtestvault5807\",\r\n \"name\": \"pshtestvault5807\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"northcentralus\",\r\n \"tags\": {\r\n \"testtag\": \"testvalue\"\r\n }\r\n }\r\n ]\r\n}", + "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/pshtestrg1183/providers/Microsoft.KeyVault/vaults/pshtestvault2216\",\r\n \"name\": \"pshtestvault2216\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"northcentralus\",\r\n \"tags\": {\r\n \"testtag\": \"testvalue\"\r\n }\r\n }\r\n ]\r\n}", "StatusCode": 200 }, { @@ -253,16 +253,16 @@ "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "b04a20c0-49bb-40d9-a466-ba471297af15" + "ed7e5298-0094-4a78-8095-6a8ee869dbd9" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -273,16 +273,16 @@ "no-cache" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11993" + "11995" ], "x-ms-request-id": [ - "823d4244-cbbf-40e1-ac5f-14a145a34bce" + "91707cf1-8f88-4f3f-a0ad-f7ff5c3cfae0" ], "x-ms-correlation-request-id": [ - "823d4244-cbbf-40e1-ac5f-14a145a34bce" + "91707cf1-8f88-4f3f-a0ad-f7ff5c3cfae0" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T084910Z:823d4244-cbbf-40e1-ac5f-14a145a34bce" + "KOREASOUTH:20200810T062610Z:91707cf1-8f88-4f3f-a0ad-f7ff5c3cfae0" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -291,7 +291,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 08:49:10 GMT" + "Mon, 10 Aug 2020 06:26:09 GMT" ], "Content-Type": [ "application/json; charset=utf-8" @@ -300,10 +300,10 @@ "-1" ], "Content-Length": [ - "1375" + "218" ] }, - "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6549/providers/Microsoft.KeyVault/vaults/ps578\",\r\n \"name\": \"ps578\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps267\",\r\n \"name\": \"ps267\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps4721\",\r\n \"name\": \"ps4721\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {\r\n \"asdf\": \"qwerty\"\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps5726\",\r\n \"name\": \"ps5726\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/pshtestrg329/providers/Microsoft.KeyVault/vaults/pshtestvault5414\",\r\n \"name\": \"pshtestvault5414\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"northcentralus\",\r\n \"tags\": {\r\n \"testtag\": \"testvalue\"\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/pshtestrg8052/providers/Microsoft.KeyVault/vaults/pshtestvault5807\",\r\n \"name\": \"pshtestvault5807\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"northcentralus\",\r\n \"tags\": {\r\n \"testtag\": \"testvalue\"\r\n }\r\n }\r\n ]\r\n}", + "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps9236/providers/Microsoft.KeyVault/vaults/ps5623\",\r\n \"name\": \"ps5623\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n }\r\n ]\r\n}", "StatusCode": 200 }, { @@ -313,16 +313,16 @@ "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "9192eeb2-91f2-4d9e-88c2-c33ec9e85321" + "9950d493-f79e-4d7f-8cc2-d326ef9b91c7" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -333,16 +333,16 @@ "no-cache" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11991" + "11994" ], "x-ms-request-id": [ - "a2851c04-be54-4dae-9a85-fc17a69703fc" + "ec7ca5de-4342-4f88-8293-83c733c0ab91" ], "x-ms-correlation-request-id": [ - "a2851c04-be54-4dae-9a85-fc17a69703fc" + "ec7ca5de-4342-4f88-8293-83c733c0ab91" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T084913Z:a2851c04-be54-4dae-9a85-fc17a69703fc" + "KOREASOUTH:20200810T062615Z:ec7ca5de-4342-4f88-8293-83c733c0ab91" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -351,7 +351,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 08:49:13 GMT" + "Mon, 10 Aug 2020 06:26:14 GMT" ], "Content-Type": [ "application/json; charset=utf-8" @@ -360,10 +360,10 @@ "-1" ], "Content-Length": [ - "1170" + "12" ] }, - "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps267\",\r\n \"name\": \"ps267\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps4721\",\r\n \"name\": \"ps4721\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {\r\n \"asdf\": \"qwerty\"\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps5726\",\r\n \"name\": \"ps5726\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/pshtestrg329/providers/Microsoft.KeyVault/vaults/pshtestvault5414\",\r\n \"name\": \"pshtestvault5414\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"northcentralus\",\r\n \"tags\": {\r\n \"testtag\": \"testvalue\"\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/pshtestrg8052/providers/Microsoft.KeyVault/vaults/pshtestvault5807\",\r\n \"name\": \"pshtestvault5807\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"northcentralus\",\r\n \"tags\": {\r\n \"testtag\": \"testvalue\"\r\n }\r\n }\r\n ]\r\n}", + "ResponseBody": "{\r\n \"value\": []\r\n}", "StatusCode": 200 }, { @@ -373,16 +373,16 @@ "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "94828553-68fc-4b33-9f96-d991ac23308f" + "22196341-ed93-4d4d-a50b-b9905799ffa5" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -393,16 +393,16 @@ "no-cache" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11990" + "11993" ], "x-ms-request-id": [ - "51faf9eb-41c9-4b08-bd97-92a62ad8030d" + "4aeca9ed-5c17-49fb-a963-076bfafb25ca" ], "x-ms-correlation-request-id": [ - "51faf9eb-41c9-4b08-bd97-92a62ad8030d" + "4aeca9ed-5c17-49fb-a963-076bfafb25ca" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T084916Z:51faf9eb-41c9-4b08-bd97-92a62ad8030d" + "KOREASOUTH:20200810T062618Z:4aeca9ed-5c17-49fb-a963-076bfafb25ca" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -411,7 +411,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 08:49:16 GMT" + "Mon, 10 Aug 2020 06:26:17 GMT" ], "Content-Type": [ "application/json; charset=utf-8" @@ -420,10 +420,10 @@ "-1" ], "Content-Length": [ - "1375" + "218" ] }, - "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6549/providers/Microsoft.KeyVault/vaults/ps578\",\r\n \"name\": \"ps578\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps267\",\r\n \"name\": \"ps267\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps4721\",\r\n \"name\": \"ps4721\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {\r\n \"asdf\": \"qwerty\"\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps5726\",\r\n \"name\": \"ps5726\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/pshtestrg329/providers/Microsoft.KeyVault/vaults/pshtestvault5414\",\r\n \"name\": \"pshtestvault5414\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"northcentralus\",\r\n \"tags\": {\r\n \"testtag\": \"testvalue\"\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/pshtestrg8052/providers/Microsoft.KeyVault/vaults/pshtestvault5807\",\r\n \"name\": \"pshtestvault5807\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"northcentralus\",\r\n \"tags\": {\r\n \"testtag\": \"testvalue\"\r\n }\r\n }\r\n ]\r\n}", + "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps9236/providers/Microsoft.KeyVault/vaults/ps5623\",\r\n \"name\": \"ps5623\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n }\r\n ]\r\n}", "StatusCode": 200 }, { @@ -433,16 +433,16 @@ "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "743ff0d2-2ffa-4acc-bec2-641328cb91cc" + "6aea4e80-b64f-4e6c-a887-7e7907d2803b" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -453,16 +453,16 @@ "no-cache" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11987" + "11992" ], "x-ms-request-id": [ - "73a9af1e-1eb4-4122-97b1-f3b13cf93092" + "8c896512-7928-4494-8173-03685f2680f2" ], "x-ms-correlation-request-id": [ - "73a9af1e-1eb4-4122-97b1-f3b13cf93092" + "8c896512-7928-4494-8173-03685f2680f2" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T084919Z:73a9af1e-1eb4-4122-97b1-f3b13cf93092" + "KOREASOUTH:20200810T062622Z:8c896512-7928-4494-8173-03685f2680f2" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -471,7 +471,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 08:49:18 GMT" + "Mon, 10 Aug 2020 06:26:22 GMT" ], "Content-Type": [ "application/json; charset=utf-8" @@ -480,10 +480,10 @@ "-1" ], "Content-Length": [ - "1170" + "12" ] }, - "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps267\",\r\n \"name\": \"ps267\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps4721\",\r\n \"name\": \"ps4721\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {\r\n \"asdf\": \"qwerty\"\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps5726\",\r\n \"name\": \"ps5726\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/pshtestrg329/providers/Microsoft.KeyVault/vaults/pshtestvault5414\",\r\n \"name\": \"pshtestvault5414\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"northcentralus\",\r\n \"tags\": {\r\n \"testtag\": \"testvalue\"\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/pshtestrg8052/providers/Microsoft.KeyVault/vaults/pshtestvault5807\",\r\n \"name\": \"pshtestvault5807\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"northcentralus\",\r\n \"tags\": {\r\n \"testtag\": \"testvalue\"\r\n }\r\n }\r\n ]\r\n}", + "ResponseBody": "{\r\n \"value\": []\r\n}", "StatusCode": 200 }, { @@ -493,16 +493,16 @@ "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "354c435d-a197-4659-a16f-061a71245eb3" + "2b500a3f-e414-4aa6-b1cb-38db052e4b28" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Graph.RBAC.Version1.6.GraphRbacManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Graph.RBAC.Version1.6.GraphRbacManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -513,19 +513,22 @@ "no-cache" ], "ocp-aad-diagnostics-server-name": [ - "zdYNvqMJxEPyFzVra9+PAtJ7QJl7nmvli7HmfEnDvgs=" + "PbX093wGQg+nS0LnpNbvwtdcYd1FNfPNf3t/DYElju0=" ], "request-id": [ - "8cd3c334-cf78-4e52-b297-b98f61f8fa98" + "a6c26f1b-71f6-4707-a39c-ec5840d6cb58" ], "client-request-id": [ - "354c435d-a197-4659-a16f-061a71245eb3" + "2b500a3f-e414-4aa6-b1cb-38db052e4b28" ], "x-ms-dirapi-data-contract-version": [ "1.6" ], "ocp-aad-session-key": [ - "_Y79WgzJj1mLxiwHIO6dsQRW0iMzYRPbhDEq9jzIx3tA4H7Lp51jjNXy8Uthu9jHre98QmsYUd-hVV5V8mBQQ0nLOYi4WRITp4R4VSzPJvk4UckOm2tnesQeCOLwtTh_.ZI-sjIeUFAVjPgg2XbF9TCLD8SQQuHhL0BSShqL6-hE" + "D4OoOBMaFu_B174RcTyu9aszXkI83a763Y5R8xX4ypEQ6gcA6mkYsSWn_KDmVsGONsL-5tnJrNv-4UsO5zmVeppwPgSR5-fmIavTQGxH5NSt7AYA-NYToWoA9s1EeZpN.VX6LS1sSk5SuyDCPNQJxgkwElHffUUmNgvy2DT_CN50" + ], + "x-ms-resource-unit": [ + "2" ], "DataServiceVersion": [ "3.0;" @@ -543,10 +546,10 @@ "ASP.NET" ], "Duration": [ - "332497" + "418293" ], "Date": [ - "Tue, 31 Mar 2020 08:48:32 GMT" + "Mon, 10 Aug 2020 06:25:32 GMT" ], "Content-Type": [ "application/json; odata=minimalmetadata; streaming=true; charset=utf-8" @@ -558,7 +561,7 @@ "219" ] }, - "ResponseBody": "{\r\n \"odata.error\": {\r\n \"code\": \"Authorization_RequestDenied\",\r\n \"message\": {\r\n \"lang\": \"en\",\r\n \"value\": \"Insufficient privileges to complete the operation.\"\r\n },\r\n \"requestId\": \"8cd3c334-cf78-4e52-b297-b98f61f8fa98\",\r\n \"date\": \"2020-03-31T08:48:32\"\r\n }\r\n}", + "ResponseBody": "{\r\n \"odata.error\": {\r\n \"code\": \"Authorization_RequestDenied\",\r\n \"message\": {\r\n \"lang\": \"en\",\r\n \"value\": \"Insufficient privileges to complete the operation.\"\r\n },\r\n \"requestId\": \"a6c26f1b-71f6-4707-a39c-ec5840d6cb58\",\r\n \"date\": \"2020-08-10T06:25:33\"\r\n }\r\n}", "StatusCode": 403 }, { @@ -568,16 +571,16 @@ "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "cf3e0caa-0675-41be-8dd8-1a0bbb6ae7c7" + "65d49d33-a52b-4e0f-9966-a8f8633ca5de" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Graph.RBAC.Version1.6.GraphRbacManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Graph.RBAC.Version1.6.GraphRbacManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -588,19 +591,22 @@ "no-cache" ], "ocp-aad-diagnostics-server-name": [ - "vY6PEmGgtTtXMC69EjFpJ5eVpCutiqshiE4gwBLq+5s=" + "9J2kqSfQFChQGTqgUTLaYafjNcy05J9iPyG5EVtU9lE=" ], "request-id": [ - "394b40ca-3157-428a-8d5a-f131dea180db" + "90e4e62d-ba56-4c54-856a-1fffb15f62a1" ], "client-request-id": [ - "cf3e0caa-0675-41be-8dd8-1a0bbb6ae7c7" + "65d49d33-a52b-4e0f-9966-a8f8633ca5de" ], "x-ms-dirapi-data-contract-version": [ "1.6" ], "ocp-aad-session-key": [ - "-V5sUg9wtPlPIsKia-uoDdnxuj3ioqNvJegBvpZ0dfw9finHVF1wmAFPfjeOrFpX6uEF-6Rs3gGwVOAt8RkLPLR_YNT4e6YEQjkp_xxi3CKAQpWUcf414c3jzfe6LF68.4vFUGgkPETTHcrcaFwoX5IsgBy31xRZK2g3cX4pByes" + "HHe_tG6oTkiSHYuL46hbRuk2A-7iCpn6MiDdzVxxTOEwfalubqq8PiaeNnEzDAtNXYxw6hY-OT5Mnu91QHOVBQvJppLzxiBJMXMhfbACBvAHViksWVv1a99POJOH9yGK.b6x3goyviQkZ_YTdn3zyH-jwZESgOxQMm8zxxAuLQbc" + ], + "x-ms-resource-unit": [ + "2" ], "DataServiceVersion": [ "3.0;" @@ -618,10 +624,10 @@ "ASP.NET" ], "Duration": [ - "365550" + "313245" ], "Date": [ - "Tue, 31 Mar 2020 08:49:13 GMT" + "Mon, 10 Aug 2020 06:26:15 GMT" ], "Content-Type": [ "application/json; odata=minimalmetadata; streaming=true; charset=utf-8" @@ -633,32 +639,32 @@ "219" ] }, - "ResponseBody": "{\r\n \"odata.error\": {\r\n \"code\": \"Authorization_RequestDenied\",\r\n \"message\": {\r\n \"lang\": \"en\",\r\n \"value\": \"Insufficient privileges to complete the operation.\"\r\n },\r\n \"requestId\": \"394b40ca-3157-428a-8d5a-f131dea180db\",\r\n \"date\": \"2020-03-31T08:49:13\"\r\n }\r\n}", + "ResponseBody": "{\r\n \"odata.error\": {\r\n \"code\": \"Authorization_RequestDenied\",\r\n \"message\": {\r\n \"lang\": \"en\",\r\n \"value\": \"Insufficient privileges to complete the operation.\"\r\n },\r\n \"requestId\": \"90e4e62d-ba56-4c54-856a-1fffb15f62a1\",\r\n \"date\": \"2020-08-10T06:26:15\"\r\n }\r\n}", "StatusCode": 403 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6549/providers/Microsoft.KeyVault/vaults/ps578?api-version=2019-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzNjU0OS9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L3ZhdWx0cy9wczU3OD9hcGktdmVyc2lvbj0yMDE5LTA5LTAx", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps9236/providers/Microsoft.KeyVault/vaults/ps5623?api-version=2019-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzOTIzNi9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L3ZhdWx0cy9wczU2MjM/YXBpLXZlcnNpb249MjAxOS0wOS0wMQ==", "RequestMethod": "PUT", - "RequestBody": "{\r\n \"location\": \"West US\",\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"sku\": {\r\n \"name\": \"standard\",\r\n \"family\": \"A\"\r\n },\r\n \"accessPolicies\": [],\r\n \"vaultUri\": \"\",\r\n \"enabledForDeployment\": false,\r\n \"enabledForDiskEncryption\": false,\r\n \"enabledForTemplateDeployment\": false,\r\n \"enableSoftDelete\": true,\r\n \"enablePurgeProtection\": true,\r\n \"networkAcls\": {\r\n \"bypass\": \"AzureServices\",\r\n \"defaultAction\": \"Allow\"\r\n }\r\n }\r\n}", + "RequestBody": "{\r\n \"location\": \"West US\",\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"sku\": {\r\n \"name\": \"standard\",\r\n \"family\": \"A\"\r\n },\r\n \"accessPolicies\": [],\r\n \"vaultUri\": \"\",\r\n \"enabledForDeployment\": false,\r\n \"enabledForDiskEncryption\": false,\r\n \"enabledForTemplateDeployment\": false,\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"networkAcls\": {\r\n \"bypass\": \"AzureServices\",\r\n \"defaultAction\": \"Allow\"\r\n }\r\n }\r\n}", "RequestHeaders": { "x-ms-client-request-id": [ - "f3f7edec-b7eb-4b49-9d44-ddfb41c693d2" + "74480d7e-80b3-47f7-a4a2-10fe00622353" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.0.0" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.1.0.0" ], "Content-Type": [ "application/json; charset=utf-8" ], "Content-Length": [ - "511" + "513" ] }, "ResponseHeaders": { @@ -669,10 +675,10 @@ "no-cache" ], "x-ms-keyvault-service-version": [ - "1.1.0.276" + "1.1.16.0" ], "x-ms-request-id": [ - "63b542a9-787a-4521-8a0b-0e093f723e1b" + "dfba58e8-c27f-4e15-a015-9b801f4faae2" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -693,16 +699,16 @@ "1198" ], "x-ms-correlation-request-id": [ - "ae4d0180-44cb-40f4-985c-2fd6f3969c28" + "33fa852e-707b-4f22-a24c-c10b05ba2637" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T084840Z:ae4d0180-44cb-40f4-985c-2fd6f3969c28" + "KOREASOUTH:20200810T062540Z:33fa852e-707b-4f22-a24c-c10b05ba2637" ], "Date": [ - "Tue, 31 Mar 2020 08:48:39 GMT" + "Mon, 10 Aug 2020 06:25:39 GMT" ], "Content-Length": [ - "561" + "566" ], "Content-Type": [ "application/json; charset=utf-8" @@ -711,32 +717,32 @@ "-1" ] }, - "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6549/providers/Microsoft.KeyVault/vaults/ps578\",\r\n \"name\": \"ps578\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"West US\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"sku\": {\r\n \"family\": \"A\",\r\n \"name\": \"standard\"\r\n },\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"accessPolicies\": [],\r\n \"enabledForDeployment\": false,\r\n \"enabledForDiskEncryption\": false,\r\n \"enabledForTemplateDeployment\": false,\r\n \"enableSoftDelete\": true,\r\n \"enablePurgeProtection\": true,\r\n \"vaultUri\": \"https://ps578.vault.azure.net\",\r\n \"provisioningState\": \"RegisteringDns\"\r\n }\r\n}", + "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps9236/providers/Microsoft.KeyVault/vaults/ps5623\",\r\n \"name\": \"ps5623\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"West US\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"sku\": {\r\n \"family\": \"A\",\r\n \"name\": \"standard\"\r\n },\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"accessPolicies\": [],\r\n \"enabledForDeployment\": false,\r\n \"enabledForDiskEncryption\": false,\r\n \"enabledForTemplateDeployment\": false,\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"vaultUri\": \"https://ps5623.vault.azure.net\",\r\n \"provisioningState\": \"RegisteringDns\"\r\n }\r\n}", "StatusCode": 200 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6549/providers/Microsoft.KeyVault/vaults/ps578?api-version=2019-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzNjU0OS9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L3ZhdWx0cy9wczU3OD9hcGktdmVyc2lvbj0yMDE5LTA5LTAx", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps9236/providers/Microsoft.KeyVault/vaults/ps5623?api-version=2019-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzOTIzNi9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L3ZhdWx0cy9wczU2MjM/YXBpLXZlcnNpb249MjAxOS0wOS0wMQ==", "RequestMethod": "PUT", - "RequestBody": "{\r\n \"location\": \"West US\",\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"sku\": {\r\n \"name\": \"standard\",\r\n \"family\": \"A\"\r\n },\r\n \"accessPolicies\": [],\r\n \"vaultUri\": \"\",\r\n \"enabledForDeployment\": false,\r\n \"enabledForDiskEncryption\": false,\r\n \"enabledForTemplateDeployment\": false,\r\n \"enableSoftDelete\": true,\r\n \"enablePurgeProtection\": true,\r\n \"networkAcls\": {\r\n \"bypass\": \"AzureServices\",\r\n \"defaultAction\": \"Allow\"\r\n }\r\n }\r\n}", + "RequestBody": "{\r\n \"location\": \"West US\",\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"sku\": {\r\n \"name\": \"standard\",\r\n \"family\": \"A\"\r\n },\r\n \"accessPolicies\": [],\r\n \"vaultUri\": \"\",\r\n \"enabledForDeployment\": false,\r\n \"enabledForDiskEncryption\": false,\r\n \"enabledForTemplateDeployment\": false,\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"networkAcls\": {\r\n \"bypass\": \"AzureServices\",\r\n \"defaultAction\": \"Allow\"\r\n }\r\n }\r\n}", "RequestHeaders": { "x-ms-client-request-id": [ - "f894bed2-f1f2-4861-9ef6-7a0a6b41c401" + "749ae488-4d4a-45de-93ae-162b6df3a762" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.0.0" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.1.0.0" ], "Content-Type": [ "application/json; charset=utf-8" ], "Content-Length": [ - "511" + "513" ] }, "ResponseHeaders": { @@ -747,10 +753,10 @@ "no-cache" ], "x-ms-keyvault-service-version": [ - "1.1.0.276" + "1.1.16.0" ], "x-ms-request-id": [ - "5ae22dc5-a918-48de-817f-e65de3e3377e" + "38db4b95-7fac-41de-a315-bbc78c7f5fb1" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -771,16 +777,16 @@ "1197" ], "x-ms-correlation-request-id": [ - "99c6c57f-b166-449d-a6d3-94227315d231" + "bd191c95-7791-4d92-8ab5-ebf726cc443e" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T084916Z:99c6c57f-b166-449d-a6d3-94227315d231" + "KOREASOUTH:20200810T062618Z:bd191c95-7791-4d92-8ab5-ebf726cc443e" ], "Date": [ - "Tue, 31 Mar 2020 08:49:16 GMT" + "Mon, 10 Aug 2020 06:26:17 GMT" ], "Content-Length": [ - "557" + "562" ], "Content-Type": [ "application/json; charset=utf-8" @@ -789,20 +795,20 @@ "-1" ] }, - "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6549/providers/Microsoft.KeyVault/vaults/ps578\",\r\n \"name\": \"ps578\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"West US\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"sku\": {\r\n \"family\": \"A\",\r\n \"name\": \"standard\"\r\n },\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"accessPolicies\": [],\r\n \"enabledForDeployment\": false,\r\n \"enabledForDiskEncryption\": false,\r\n \"enabledForTemplateDeployment\": false,\r\n \"enableSoftDelete\": true,\r\n \"enablePurgeProtection\": true,\r\n \"vaultUri\": \"https://ps578.vault.azure.net/\",\r\n \"provisioningState\": \"Succeeded\"\r\n }\r\n}", + "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps9236/providers/Microsoft.KeyVault/vaults/ps5623\",\r\n \"name\": \"ps5623\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"West US\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"sku\": {\r\n \"family\": \"A\",\r\n \"name\": \"standard\"\r\n },\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"accessPolicies\": [],\r\n \"enabledForDeployment\": false,\r\n \"enabledForDiskEncryption\": false,\r\n \"enabledForTemplateDeployment\": false,\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"vaultUri\": \"https://ps5623.vault.azure.net/\",\r\n \"provisioningState\": \"Succeeded\"\r\n }\r\n}", "StatusCode": 200 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6549/providers/Microsoft.KeyVault/vaults/ps578?api-version=2019-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzNjU0OS9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L3ZhdWx0cy9wczU3OD9hcGktdmVyc2lvbj0yMDE5LTA5LTAx", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps9236/providers/Microsoft.KeyVault/vaults/ps5623?api-version=2019-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzOTIzNi9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L3ZhdWx0cy9wczU2MjM/YXBpLXZlcnNpb249MjAxOS0wOS0wMQ==", "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.0.0" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.1.0.0" ] }, "ResponseHeaders": { @@ -813,10 +819,10 @@ "no-cache" ], "x-ms-keyvault-service-version": [ - "1.1.0.276" + "1.1.16.0" ], "x-ms-request-id": [ - "a42062bb-1335-4fbf-bf3d-3305533d6974" + "1c079a30-a339-4d68-849a-fd1ef3bce5d2" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -834,19 +840,19 @@ "ASP.NET" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11994" + "11992" ], "x-ms-correlation-request-id": [ - "f309671f-548a-41a8-ba7e-be34446e4c0e" + "ed1a353b-9148-4ef8-aaa8-4a86d7135fa4" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T084910Z:f309671f-548a-41a8-ba7e-be34446e4c0e" + "KOREASOUTH:20200810T062610Z:ed1a353b-9148-4ef8-aaa8-4a86d7135fa4" ], "Date": [ - "Tue, 31 Mar 2020 08:49:10 GMT" + "Mon, 10 Aug 2020 06:26:10 GMT" ], "Content-Length": [ - "557" + "562" ], "Content-Type": [ "application/json; charset=utf-8" @@ -855,26 +861,26 @@ "-1" ] }, - "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6549/providers/Microsoft.KeyVault/vaults/ps578\",\r\n \"name\": \"ps578\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"West US\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"sku\": {\r\n \"family\": \"A\",\r\n \"name\": \"standard\"\r\n },\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"accessPolicies\": [],\r\n \"enabledForDeployment\": false,\r\n \"enabledForDiskEncryption\": false,\r\n \"enabledForTemplateDeployment\": false,\r\n \"enableSoftDelete\": true,\r\n \"enablePurgeProtection\": true,\r\n \"vaultUri\": \"https://ps578.vault.azure.net/\",\r\n \"provisioningState\": \"Succeeded\"\r\n }\r\n}", + "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps9236/providers/Microsoft.KeyVault/vaults/ps5623\",\r\n \"name\": \"ps5623\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"West US\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"sku\": {\r\n \"family\": \"A\",\r\n \"name\": \"standard\"\r\n },\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"accessPolicies\": [],\r\n \"enabledForDeployment\": false,\r\n \"enabledForDiskEncryption\": false,\r\n \"enabledForTemplateDeployment\": false,\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"vaultUri\": \"https://ps5623.vault.azure.net/\",\r\n \"provisioningState\": \"Succeeded\"\r\n }\r\n}", "StatusCode": 200 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6549/providers/Microsoft.KeyVault/vaults/ps578?api-version=2019-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzNjU0OS9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L3ZhdWx0cy9wczU3OD9hcGktdmVyc2lvbj0yMDE5LTA5LTAx", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps9236/providers/Microsoft.KeyVault/vaults/ps5623?api-version=2019-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzOTIzNi9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L3ZhdWx0cy9wczU2MjM/YXBpLXZlcnNpb249MjAxOS0wOS0wMQ==", "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "2f9a7207-68b5-4a35-a43c-879a0c56e771" + "1624c399-9ad3-4869-9156-cb97f4bd8cd9" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.0.0" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.1.0.0" ] }, "ResponseHeaders": { @@ -888,13 +894,13 @@ "gateway" ], "x-ms-request-id": [ - "8da64074-d86c-4960-8682-ce73ce418859" + "b78d299d-2ae7-46ae-9653-2a52af38d913" ], "x-ms-correlation-request-id": [ - "8da64074-d86c-4960-8682-ce73ce418859" + "b78d299d-2ae7-46ae-9653-2a52af38d913" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T084913Z:8da64074-d86c-4960-8682-ce73ce418859" + "KOREASOUTH:20200810T062614Z:b78d299d-2ae7-46ae-9653-2a52af38d913" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -903,7 +909,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 08:49:13 GMT" + "Mon, 10 Aug 2020 06:26:14 GMT" ], "Content-Type": [ "application/json; charset=utf-8" @@ -912,29 +918,29 @@ "-1" ], "Content-Length": [ - "141" + "210" ] }, - "ResponseBody": "{\r\n \"error\": {\r\n \"code\": \"ResourceNotFound\",\r\n \"message\": \"The Resource 'Microsoft.KeyVault/vaults/ps578' under resource group 'ps6549' was not found.\"\r\n }\r\n}", + "ResponseBody": "{\r\n \"error\": {\r\n \"code\": \"ResourceNotFound\",\r\n \"message\": \"The Resource 'Microsoft.KeyVault/vaults/ps5623' under resource group 'ps9236' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"\r\n }\r\n}", "StatusCode": 404 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6549/providers/Microsoft.KeyVault/vaults/ps578?api-version=2019-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzNjU0OS9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L3ZhdWx0cy9wczU3OD9hcGktdmVyc2lvbj0yMDE5LTA5LTAx", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps9236/providers/Microsoft.KeyVault/vaults/ps5623?api-version=2019-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzOTIzNi9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L3ZhdWx0cy9wczU2MjM/YXBpLXZlcnNpb249MjAxOS0wOS0wMQ==", "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "c59c44f4-d577-44d5-9fcf-3d20a97841ec" + "16878ebc-fb0a-4139-9789-76d49fd0a348" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.0.0" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.1.0.0" ] }, "ResponseHeaders": { @@ -945,10 +951,10 @@ "no-cache" ], "x-ms-keyvault-service-version": [ - "1.1.0.276" + "1.1.16.0" ], "x-ms-request-id": [ - "0ddef46f-bb13-4787-ba08-84d0c53083ca" + "0d89ab0d-3202-41cf-a4ff-16df1665c2aa" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -969,16 +975,16 @@ "11989" ], "x-ms-correlation-request-id": [ - "6d4f2af7-eaaa-45e8-96d5-887a090b459f" + "4ad32fed-fc6e-4f9e-a005-19ea1bde0796" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T084916Z:6d4f2af7-eaaa-45e8-96d5-887a090b459f" + "KOREASOUTH:20200810T062618Z:4ad32fed-fc6e-4f9e-a005-19ea1bde0796" ], "Date": [ - "Tue, 31 Mar 2020 08:49:16 GMT" + "Mon, 10 Aug 2020 06:26:18 GMT" ], "Content-Length": [ - "557" + "562" ], "Content-Type": [ "application/json; charset=utf-8" @@ -987,26 +993,26 @@ "-1" ] }, - "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6549/providers/Microsoft.KeyVault/vaults/ps578\",\r\n \"name\": \"ps578\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"West US\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"sku\": {\r\n \"family\": \"A\",\r\n \"name\": \"standard\"\r\n },\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"accessPolicies\": [],\r\n \"enabledForDeployment\": false,\r\n \"enabledForDiskEncryption\": false,\r\n \"enabledForTemplateDeployment\": false,\r\n \"enableSoftDelete\": true,\r\n \"enablePurgeProtection\": true,\r\n \"vaultUri\": \"https://ps578.vault.azure.net/\",\r\n \"provisioningState\": \"Succeeded\"\r\n }\r\n}", + "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps9236/providers/Microsoft.KeyVault/vaults/ps5623\",\r\n \"name\": \"ps5623\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"West US\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"sku\": {\r\n \"family\": \"A\",\r\n \"name\": \"standard\"\r\n },\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"accessPolicies\": [],\r\n \"enabledForDeployment\": false,\r\n \"enabledForDiskEncryption\": false,\r\n \"enabledForTemplateDeployment\": false,\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"vaultUri\": \"https://ps5623.vault.azure.net/\",\r\n \"provisioningState\": \"Succeeded\"\r\n }\r\n}", "StatusCode": 200 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6549/providers/Microsoft.KeyVault/vaults/ps578?api-version=2019-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzNjU0OS9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L3ZhdWx0cy9wczU3OD9hcGktdmVyc2lvbj0yMDE5LTA5LTAx", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps9236/providers/Microsoft.KeyVault/vaults/ps5623?api-version=2019-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzOTIzNi9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L3ZhdWx0cy9wczU2MjM/YXBpLXZlcnNpb249MjAxOS0wOS0wMQ==", "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "9f897626-4af0-4576-be75-1941c5ce1b3a" + "1987f3e3-a625-41ad-a916-97040a89d9fd" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.0.0" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.1.0.0" ] }, "ResponseHeaders": { @@ -1020,13 +1026,13 @@ "gateway" ], "x-ms-request-id": [ - "b733907a-9561-43a1-a4df-4330dbcb7cb9" + "52dcf424-85e8-4e76-9c5c-2dc8ba3646fd" ], "x-ms-correlation-request-id": [ - "b733907a-9561-43a1-a4df-4330dbcb7cb9" + "52dcf424-85e8-4e76-9c5c-2dc8ba3646fd" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T084919Z:b733907a-9561-43a1-a4df-4330dbcb7cb9" + "KOREASOUTH:20200810T062621Z:52dcf424-85e8-4e76-9c5c-2dc8ba3646fd" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -1035,7 +1041,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 08:49:18 GMT" + "Mon, 10 Aug 2020 06:26:21 GMT" ], "Content-Type": [ "application/json; charset=utf-8" @@ -1044,29 +1050,29 @@ "-1" ], "Content-Length": [ - "141" + "210" ] }, - "ResponseBody": "{\r\n \"error\": {\r\n \"code\": \"ResourceNotFound\",\r\n \"message\": \"The Resource 'Microsoft.KeyVault/vaults/ps578' under resource group 'ps6549' was not found.\"\r\n }\r\n}", + "ResponseBody": "{\r\n \"error\": {\r\n \"code\": \"ResourceNotFound\",\r\n \"message\": \"The Resource 'Microsoft.KeyVault/vaults/ps5623' under resource group 'ps9236' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"\r\n }\r\n}", "StatusCode": 404 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6549/providers/Microsoft.KeyVault/vaults/ps578?api-version=2019-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzNjU0OS9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L3ZhdWx0cy9wczU3OD9hcGktdmVyc2lvbj0yMDE5LTA5LTAx", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps9236/providers/Microsoft.KeyVault/vaults/ps5623?api-version=2019-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzOTIzNi9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L3ZhdWx0cy9wczU2MjM/YXBpLXZlcnNpb249MjAxOS0wOS0wMQ==", "RequestMethod": "DELETE", "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "53c60422-f2aa-4887-83a9-3e8a09148c27" + "c9606cb5-efac-4b79-b09f-62dd5de34702" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.0.0" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.1.0.0" ] }, "ResponseHeaders": { @@ -1077,10 +1083,10 @@ "no-cache" ], "x-ms-keyvault-service-version": [ - "1.1.0.276" + "1.1.16.0" ], "x-ms-request-id": [ - "d2bb3e37-e257-43a4-b74e-a971b7959e1d" + "1cb581b3-8505-4cf4-892b-f027e89da4d4" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -1098,16 +1104,16 @@ "ASP.NET" ], "x-ms-ratelimit-remaining-subscription-deletes": [ - "14999" + "14998" ], "x-ms-correlation-request-id": [ - "a4cbae56-bb69-4736-9d2d-3e6b56dc8c93" + "0092d954-8081-4a26-b19f-9a8a8a80e273" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T084913Z:a4cbae56-bb69-4736-9d2d-3e6b56dc8c93" + "KOREASOUTH:20200810T062614Z:0092d954-8081-4a26-b19f-9a8a8a80e273" ], "Date": [ - "Tue, 31 Mar 2020 08:49:12 GMT" + "Mon, 10 Aug 2020 06:26:14 GMT" ], "Expires": [ "-1" @@ -1120,22 +1126,22 @@ "StatusCode": 200 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6549/providers/Microsoft.KeyVault/vaults/ps578?api-version=2019-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzNjU0OS9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L3ZhdWx0cy9wczU3OD9hcGktdmVyc2lvbj0yMDE5LTA5LTAx", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps9236/providers/Microsoft.KeyVault/vaults/ps5623?api-version=2019-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzOTIzNi9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L3ZhdWx0cy9wczU2MjM/YXBpLXZlcnNpb249MjAxOS0wOS0wMQ==", "RequestMethod": "DELETE", "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "785ba70d-5f48-4f3a-b088-2d3ad7ed4e87" + "83442cda-d7be-4c34-a313-b71cd82bfcee" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.0.0" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.1.0.0" ] }, "ResponseHeaders": { @@ -1146,10 +1152,10 @@ "no-cache" ], "x-ms-keyvault-service-version": [ - "1.1.0.276" + "1.1.16.0" ], "x-ms-request-id": [ - "7ce266aa-91c4-476a-bc1c-50da2f3088b7" + "fa59614e-adab-4d2a-8fbb-5949d568cc2d" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -1167,16 +1173,16 @@ "ASP.NET" ], "x-ms-ratelimit-remaining-subscription-deletes": [ - "14998" + "14997" ], "x-ms-correlation-request-id": [ - "22441098-8999-4f28-bf11-e042c716c2db" + "5e63c653-1bc5-4cb0-b817-ee36c6e4baec" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T084918Z:22441098-8999-4f28-bf11-e042c716c2db" + "KOREASOUTH:20200810T062621Z:5e63c653-1bc5-4cb0-b817-ee36c6e4baec" ], "Date": [ - "Tue, 31 Mar 2020 08:49:18 GMT" + "Mon, 10 Aug 2020 06:26:20 GMT" ], "Expires": [ "-1" @@ -1189,22 +1195,22 @@ "StatusCode": 200 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourcegroups/ps6549?api-version=2016-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlZ3JvdXBzL3BzNjU0OT9hcGktdmVyc2lvbj0yMDE2LTA5LTAx", - "RequestMethod": "DELETE", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps9236/providers/Microsoft.KeyVault/managedHSMs/ps5623?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzOTIzNi9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNTYyMz9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "ac662c3e-8470-4e4b-baba-8c8eb53c9bed" + "6e218bfe-95df-4460-85d2-a5479d92df03" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.1.0.0" ] }, "ResponseHeaders": { @@ -1214,23 +1220,17 @@ "Pragma": [ "no-cache" ], - "Location": [ - "https://management.azure.com/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzY1NDktV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01" - ], - "Retry-After": [ - "15" - ], - "x-ms-ratelimit-remaining-subscription-deletes": [ - "14997" + "x-ms-failure-cause": [ + "gateway" ], "x-ms-request-id": [ - "be282606-a664-4501-b32c-94f3a6205fb8" + "b6000fb5-aa43-4455-97f7-1531e504b44d" ], "x-ms-correlation-request-id": [ - "be282606-a664-4501-b32c-94f3a6205fb8" + "b6000fb5-aa43-4455-97f7-1531e504b44d" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T084923Z:be282606-a664-4501-b32c-94f3a6205fb8" + "KOREASOUTH:20200810T062615Z:b6000fb5-aa43-4455-97f7-1531e504b44d" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -1239,29 +1239,38 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 08:49:22 GMT" + "Mon, 10 Aug 2020 06:26:14 GMT" + ], + "Content-Type": [ + "application/json; charset=utf-8" ], "Expires": [ "-1" ], "Content-Length": [ - "0" + "215" ] }, - "ResponseBody": "", - "StatusCode": 202 + "ResponseBody": "{\r\n \"error\": {\r\n \"code\": \"ResourceNotFound\",\r\n \"message\": \"The Resource 'Microsoft.KeyVault/managedHSMs/ps5623' under resource group 'ps9236' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"\r\n }\r\n}", + "StatusCode": 404 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzY1NDktV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpZMU5Ea3RWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps9236/providers/Microsoft.KeyVault/managedHSMs/ps5623?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzOTIzNi9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNTYyMz9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { + "x-ms-client-request-id": [ + "3095bc71-ad28-4d5e-aec4-f4e1c36e6f95" + ], + "Accept-Language": [ + "en-US" + ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.1.0.0" ] }, "ResponseHeaders": { @@ -1271,23 +1280,17 @@ "Pragma": [ "no-cache" ], - "Location": [ - "https://management.azure.com/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzY1NDktV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01" - ], - "Retry-After": [ - "15" - ], - "x-ms-ratelimit-remaining-subscription-reads": [ - "11986" + "x-ms-failure-cause": [ + "gateway" ], "x-ms-request-id": [ - "6a10563e-0ad4-4993-aeea-a0f24b5e45f9" + "443a431a-0303-409a-848d-53ebab4ee27d" ], "x-ms-correlation-request-id": [ - "6a10563e-0ad4-4993-aeea-a0f24b5e45f9" + "443a431a-0303-409a-848d-53ebab4ee27d" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T084938Z:6a10563e-0ad4-4993-aeea-a0f24b5e45f9" + "KOREASOUTH:20200810T062622Z:443a431a-0303-409a-848d-53ebab4ee27d" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -1296,29 +1299,38 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 08:49:38 GMT" + "Mon, 10 Aug 2020 06:26:21 GMT" + ], + "Content-Type": [ + "application/json; charset=utf-8" ], "Expires": [ "-1" ], "Content-Length": [ - "0" + "215" ] }, - "ResponseBody": "", - "StatusCode": 202 + "ResponseBody": "{\r\n \"error\": {\r\n \"code\": \"ResourceNotFound\",\r\n \"message\": \"The Resource 'Microsoft.KeyVault/managedHSMs/ps5623' under resource group 'ps9236' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"\r\n }\r\n}", + "StatusCode": 404 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzY1NDktV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpZMU5Ea3RWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", - "RequestMethod": "GET", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourcegroups/ps9236?api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlZ3JvdXBzL3BzOTIzNj9hcGktdmVyc2lvbj0yMDE2LTA5LTAx", + "RequestMethod": "DELETE", "RequestBody": "", "RequestHeaders": { + "x-ms-client-request-id": [ + "36635295-a3f4-4840-9c72-183561c07711" + ], + "Accept-Language": [ + "en-US" + ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -1329,22 +1341,22 @@ "no-cache" ], "Location": [ - "https://management.azure.com/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzY1NDktV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01" + "https://management.azure.com/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzkyMzYtV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01" ], "Retry-After": [ "15" ], - "x-ms-ratelimit-remaining-subscription-reads": [ - "11985" + "x-ms-ratelimit-remaining-subscription-deletes": [ + "14999" ], "x-ms-request-id": [ - "5242291a-47b3-4519-b277-c23ec2582727" + "f273cbb2-7260-46a2-ac0f-0503027aaab5" ], "x-ms-correlation-request-id": [ - "5242291a-47b3-4519-b277-c23ec2582727" + "f273cbb2-7260-46a2-ac0f-0503027aaab5" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T084953Z:5242291a-47b3-4519-b277-c23ec2582727" + "KOREASOUTH:20200810T062625Z:f273cbb2-7260-46a2-ac0f-0503027aaab5" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -1353,7 +1365,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 08:49:53 GMT" + "Mon, 10 Aug 2020 06:26:25 GMT" ], "Expires": [ "-1" @@ -1366,16 +1378,16 @@ "StatusCode": 202 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzY1NDktV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpZMU5Ea3RWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzkyMzYtV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpreU16WXRWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -1386,22 +1398,22 @@ "no-cache" ], "Location": [ - "https://management.azure.com/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzY1NDktV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01" + "https://management.azure.com/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzkyMzYtV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01" ], "Retry-After": [ "15" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11984" + "11991" ], "x-ms-request-id": [ - "70a899c1-a90d-463f-a575-d37c052fedea" + "9162b013-3391-445a-9708-85ef9b048f2e" ], "x-ms-correlation-request-id": [ - "70a899c1-a90d-463f-a575-d37c052fedea" + "9162b013-3391-445a-9708-85ef9b048f2e" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T085009Z:70a899c1-a90d-463f-a575-d37c052fedea" + "KOREASOUTH:20200810T062641Z:9162b013-3391-445a-9708-85ef9b048f2e" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -1410,7 +1422,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 08:50:08 GMT" + "Mon, 10 Aug 2020 06:26:40 GMT" ], "Expires": [ "-1" @@ -1423,16 +1435,16 @@ "StatusCode": 202 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzY1NDktV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpZMU5Ea3RWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzkyMzYtV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpreU16WXRWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -1443,22 +1455,22 @@ "no-cache" ], "Location": [ - "https://management.azure.com/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzY1NDktV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01" + "https://management.azure.com/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzkyMzYtV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01" ], "Retry-After": [ "15" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11983" + "11990" ], "x-ms-request-id": [ - "6fb2394c-91ae-4c46-a5a5-a04258aa6bc2" + "044a5157-10b1-4f4a-b1c5-cd815e6307c1" ], "x-ms-correlation-request-id": [ - "6fb2394c-91ae-4c46-a5a5-a04258aa6bc2" + "044a5157-10b1-4f4a-b1c5-cd815e6307c1" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T085024Z:6fb2394c-91ae-4c46-a5a5-a04258aa6bc2" + "KOREASOUTH:20200810T062656Z:044a5157-10b1-4f4a-b1c5-cd815e6307c1" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -1467,7 +1479,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 08:50:24 GMT" + "Mon, 10 Aug 2020 06:26:56 GMT" ], "Expires": [ "-1" @@ -1480,16 +1492,16 @@ "StatusCode": 202 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzY1NDktV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpZMU5Ea3RWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzkyMzYtV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpreU16WXRWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -1500,16 +1512,16 @@ "no-cache" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11982" + "11989" ], "x-ms-request-id": [ - "a29ee7b4-402b-4a39-96bd-2cbd491d6a67" + "8fbf164b-71e4-4e9c-ba9d-d1b7b4a11b9f" ], "x-ms-correlation-request-id": [ - "a29ee7b4-402b-4a39-96bd-2cbd491d6a67" + "8fbf164b-71e4-4e9c-ba9d-d1b7b4a11b9f" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T085040Z:a29ee7b4-402b-4a39-96bd-2cbd491d6a67" + "KOREASOUTH:20200810T062711Z:8fbf164b-71e4-4e9c-ba9d-d1b7b4a11b9f" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -1518,7 +1530,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 08:50:40 GMT" + "Mon, 10 Aug 2020 06:27:11 GMT" ], "Expires": [ "-1" @@ -1531,16 +1543,16 @@ "StatusCode": 200 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzY1NDktV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpZMU5Ea3RWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzkyMzYtV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpreU16WXRWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -1551,16 +1563,16 @@ "no-cache" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11981" + "11988" ], "x-ms-request-id": [ - "a7fedcda-05da-414b-a2d2-210796fbfdef" + "41d91fff-a8e7-4f79-a00f-5780eee85f9f" ], "x-ms-correlation-request-id": [ - "a7fedcda-05da-414b-a2d2-210796fbfdef" + "41d91fff-a8e7-4f79-a00f-5780eee85f9f" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T085040Z:a7fedcda-05da-414b-a2d2-210796fbfdef" + "KOREASOUTH:20200810T062712Z:41d91fff-a8e7-4f79-a00f-5780eee85f9f" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -1569,7 +1581,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 08:50:40 GMT" + "Mon, 10 Aug 2020 06:27:11 GMT" ], "Expires": [ "-1" @@ -1584,8 +1596,8 @@ ], "Names": { "Test-DeleteVaultByName": [ - "ps6549", - "ps578" + "ps9236", + "ps5623" ] }, "Variables": { diff --git a/src/KeyVault/KeyVault.Test/SessionRecords/Microsoft.Azure.Commands.KeyVault.Test.ScenarioTests.KeyVaultManagementTests/TestGetVault.json b/src/KeyVault/KeyVault.Test/SessionRecords/Microsoft.Azure.Commands.KeyVault.Test.ScenarioTests.KeyVaultManagementTests/TestGetVault.json index 17f673f4a581..3397ce1d36ef 100644 --- a/src/KeyVault/KeyVault.Test/SessionRecords/Microsoft.Azure.Commands.KeyVault.Test.ScenarioTests.KeyVaultManagementTests/TestGetVault.json +++ b/src/KeyVault/KeyVault.Test/SessionRecords/Microsoft.Azure.Commands.KeyVault.Test.ScenarioTests.KeyVaultManagementTests/TestGetVault.json @@ -7,16 +7,16 @@ "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "778cfdec-b9d0-412e-aee3-984102b53a2e" + "4c7945ac-69f9-4262-840e-01187153196d" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -27,16 +27,16 @@ "no-cache" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11998" + "11986" ], "x-ms-request-id": [ - "54dc309d-22b7-44b5-b83d-519a3b7eb7ed" + "5b33f13c-13dd-4994-a816-93bf9a9af906" ], "x-ms-correlation-request-id": [ - "54dc309d-22b7-44b5-b83d-519a3b7eb7ed" + "5b33f13c-13dd-4994-a816-93bf9a9af906" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T085614Z:54dc309d-22b7-44b5-b83d-519a3b7eb7ed" + "KOREASOUTH:20200810T062843Z:5b33f13c-13dd-4994-a816-93bf9a9af906" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -45,7 +45,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 08:56:14 GMT" + "Mon, 10 Aug 2020 06:28:42 GMT" ], "Content-Type": [ "application/json; charset=utf-8" @@ -54,10 +54,10 @@ "-1" ], "Content-Length": [ - "249" + "10938" ] }, - "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/providers/Microsoft.Resources\",\r\n \"namespace\": \"Microsoft.Resources\",\r\n \"authorization\": {\r\n \"applicationId\": \"3b990c8b-9607-4c2a-8b04-1d41985facca\"\r\n },\r\n \"resourceTypes\": [],\r\n \"registrationState\": \"Registered\"\r\n}", + "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/providers/Microsoft.Resources\",\r\n \"namespace\": \"Microsoft.Resources\",\r\n \"authorization\": {\r\n \"applicationId\": \"3b990c8b-9607-4c2a-8b04-1d41985facca\"\r\n },\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"tenants\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2020-01-01\",\r\n \"2019-09-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"operationresults\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"notifyResourceJobs\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"tags\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-10-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\"\r\n ],\r\n \"capabilities\": \"SupportsExtension\"\r\n },\r\n {\r\n \"resourceType\": \"checkPolicyCompliance\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"providers\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"checkresourcename\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"calculateTemplateHash\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"resources\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"subscriptions\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-10-01\",\r\n \"2019-09-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"subscriptions/resources\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"subscriptions/providers\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"subscriptions/operationresults\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"resourceGroups\",\r\n \"locations\": [\r\n \"Central US\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US\",\r\n \"East US 2\",\r\n \"West US\",\r\n \"West US 2\",\r\n \"North Central US\",\r\n \"South Central US\",\r\n \"West Central US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Brazil South\",\r\n \"Australia Southeast\",\r\n \"Australia East\",\r\n \"West India\",\r\n \"South India\",\r\n \"Central India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"South Africa North\",\r\n \"UAE North\",\r\n \"Australia Central\",\r\n \"Switzerland North\",\r\n \"Germany West Central\",\r\n \"Norway East\",\r\n \"East US 2 EUAP\",\r\n \"Central US EUAP\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"subscriptions/resourceGroups\",\r\n \"locations\": [\r\n \"Central US\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US\",\r\n \"East US 2\",\r\n \"West US\",\r\n \"West US 2\",\r\n \"North Central US\",\r\n \"South Central US\",\r\n \"West Central US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Brazil South\",\r\n \"Australia Southeast\",\r\n \"Australia East\",\r\n \"West India\",\r\n \"South India\",\r\n \"Central India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"South Africa North\",\r\n \"UAE North\",\r\n \"Australia Central\",\r\n \"Switzerland North\",\r\n \"Germany West Central\",\r\n \"Norway East\",\r\n \"East US 2 EUAP\",\r\n \"Central US EUAP\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"subscriptions/resourcegroups/resources\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"subscriptions/locations\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"subscriptions/tagnames\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"subscriptions/tagNames/tagValues\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"deployments\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2020-06-01\",\r\n \"2019-09-01\",\r\n \"2019-08-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"deployments/operations\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2020-06-01\",\r\n \"2019-09-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"links\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ],\r\n \"capabilities\": \"SupportsExtension\"\r\n },\r\n {\r\n \"resourceType\": \"operations\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2015-01-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"deploymentScripts\",\r\n \"locations\": [\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"Australia East\",\r\n \"Brazil South\",\r\n \"Canada Central\",\r\n \"East US 2\",\r\n \"East US\",\r\n \"Central US\",\r\n \"North Central US\",\r\n \"UK South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"Japan East\",\r\n \"Korea Central\",\r\n \"North Europe\",\r\n \"West Central US\",\r\n \"West Europe\",\r\n \"West US 2\",\r\n \"West US\",\r\n \"South Central US\",\r\n \"Canada East\",\r\n \"Central US EUAP\",\r\n \"East US 2 EUAP\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-10-01-preview\"\r\n ],\r\n \"capabilities\": \"None\"\r\n },\r\n {\r\n \"resourceType\": \"deploymentScripts/logs\",\r\n \"locations\": [\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"Australia East\",\r\n \"Brazil South\",\r\n \"Canada Central\",\r\n \"East US 2\",\r\n \"East US\",\r\n \"Central US\",\r\n \"North Central US\",\r\n \"UK South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"Japan East\",\r\n \"Korea Central\",\r\n \"North Europe\",\r\n \"West Central US\",\r\n \"West Europe\",\r\n \"West US 2\",\r\n \"West US\",\r\n \"South Central US\",\r\n \"Canada East\",\r\n \"Central US EUAP\",\r\n \"East US 2 EUAP\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-10-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations/deploymentScriptOperationResults\",\r\n \"locations\": [\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"Australia East\",\r\n \"Brazil South\",\r\n \"Canada Central\",\r\n \"East US 2\",\r\n \"East US\",\r\n \"Central US\",\r\n \"North Central US\",\r\n \"UK South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"Japan East\",\r\n \"Korea Central\",\r\n \"North Europe\",\r\n \"West Central US\",\r\n \"West Europe\",\r\n \"West US 2\",\r\n \"West US\",\r\n \"South Central US\",\r\n \"Canada East\",\r\n \"Central US EUAP\",\r\n \"East US 2 EUAP\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-10-01-preview\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"Registered\"\r\n}", "StatusCode": 200 }, { @@ -67,16 +67,16 @@ "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "41e9abd6-6ccb-46be-96a5-9f314cbb4d52" + "0adff04e-cc42-41ca-b99b-16348324b93b" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -87,16 +87,16 @@ "no-cache" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11997" + "11985" ], "x-ms-request-id": [ - "f156a0f9-3bcc-4fd7-8bad-779238582814" + "066d3117-7c1d-4bdb-91ed-ac9e1a342430" ], "x-ms-correlation-request-id": [ - "f156a0f9-3bcc-4fd7-8bad-779238582814" + "066d3117-7c1d-4bdb-91ed-ac9e1a342430" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T085614Z:f156a0f9-3bcc-4fd7-8bad-779238582814" + "KOREASOUTH:20200810T062843Z:066d3117-7c1d-4bdb-91ed-ac9e1a342430" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -105,7 +105,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 08:56:14 GMT" + "Mon, 10 Aug 2020 06:28:43 GMT" ], "Content-Type": [ "application/json; charset=utf-8" @@ -114,29 +114,29 @@ "-1" ], "Content-Length": [ - "5958" + "7541" ] }, - "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/providers/Microsoft.KeyVault\",\r\n \"namespace\": \"Microsoft.KeyVault\",\r\n \"authorizations\": [\r\n {\r\n \"applicationId\": \"cfa8b339-82a2-471a-a3c9-0fc0be7a4093\",\r\n \"roleDefinitionId\": \"1cf9858a-28a2-4228-abba-94e606305b95\"\r\n },\r\n {\r\n \"applicationId\": \"589d5083-6f11-4d30-a62a-a4b316a14abf\"\r\n }\r\n ],\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"vaults\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"Australia Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"Switzerland North\",\r\n \"Germany West Central\",\r\n \"Norway East\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\",\r\n \"2015-06-01\"\r\n ],\r\n \"capabilities\": \"CrossResourceGroupResourceMove, CrossSubscriptionResourceMove\"\r\n },\r\n {\r\n \"resourceType\": \"vaults/secrets\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"Australia Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"Switzerland North\",\r\n \"Germany West Central\",\r\n \"Norway East\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\",\r\n \"2015-06-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"vaults/accessPolicies\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"Australia Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"Switzerland North\",\r\n \"Germany West Central\",\r\n \"Norway East\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\",\r\n \"2015-06-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"operations\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\",\r\n \"2015-06-01\",\r\n \"2014-12-19-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"checkNameAvailability\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\",\r\n \"2015-06-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"deletedVaults\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"Australia Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"Switzerland North\",\r\n \"Germany West Central\",\r\n \"Norway East\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations/deletedVaults\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"Australia Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"Switzerland North\",\r\n \"Germany West Central\",\r\n \"Norway East\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations/deleteVirtualNetworkOrSubnets\",\r\n \"locations\": [\r\n \"East US\",\r\n \"North Central US\",\r\n \"West Europe\",\r\n \"North Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Australia Central\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"Switzerland North\",\r\n \"Germany West Central\",\r\n \"Norway East\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations/operationResults\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"Australia Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"Switzerland North\",\r\n \"Germany West Central\",\r\n \"Norway East\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"vaults/eventGridFilters\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"Australia Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"Switzerland North\",\r\n \"Germany West Central\",\r\n \"Norway East\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"Registered\"\r\n}", + "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/providers/Microsoft.KeyVault\",\r\n \"namespace\": \"Microsoft.KeyVault\",\r\n \"authorizations\": [\r\n {\r\n \"applicationId\": \"cfa8b339-82a2-471a-a3c9-0fc0be7a4093\",\r\n \"roleDefinitionId\": \"1cf9858a-28a2-4228-abba-94e606305b95\"\r\n },\r\n {\r\n \"applicationId\": \"589d5083-6f11-4d30-a62a-a4b316a14abf\"\r\n }\r\n ],\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"operations\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\",\r\n \"2015-06-01\",\r\n \"2014-12-19-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"checkNameAvailability\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\",\r\n \"2015-06-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"vaults\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"East US 2 EUAP\",\r\n \"Central US EUAP\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"France South\",\r\n \"Australia Central\",\r\n \"Australia Central 2\",\r\n \"UAE Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"South Africa West\",\r\n \"Switzerland North\",\r\n \"Switzerland West\",\r\n \"Germany North\",\r\n \"Germany West Central\",\r\n \"Norway East\",\r\n \"Norway West\",\r\n \"Brazil Southeast\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\",\r\n \"2015-06-01\"\r\n ],\r\n \"capabilities\": \"CrossResourceGroupResourceMove, CrossSubscriptionResourceMove\"\r\n },\r\n {\r\n \"resourceType\": \"vaults/secrets\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"East US 2 EUAP\",\r\n \"Central US EUAP\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"France South\",\r\n \"Australia Central\",\r\n \"Australia Central 2\",\r\n \"UAE Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"South Africa West\",\r\n \"Switzerland North\",\r\n \"Switzerland West\",\r\n \"Germany North\",\r\n \"Germany West Central\",\r\n \"Norway East\",\r\n \"Norway West\",\r\n \"Brazil Southeast\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\",\r\n \"2015-06-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"vaults/accessPolicies\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"East US 2 EUAP\",\r\n \"Central US EUAP\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"France South\",\r\n \"Australia Central\",\r\n \"Australia Central 2\",\r\n \"UAE Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"South Africa West\",\r\n \"Switzerland North\",\r\n \"Switzerland West\",\r\n \"Germany North\",\r\n \"Germany West Central\",\r\n \"Norway East\",\r\n \"Norway West\",\r\n \"Brazil Southeast\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\",\r\n \"2015-06-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"deletedVaults\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"East US 2 EUAP\",\r\n \"Central US EUAP\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"France South\",\r\n \"Australia Central\",\r\n \"Australia Central 2\",\r\n \"UAE Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"South Africa West\",\r\n \"Switzerland North\",\r\n \"Switzerland West\",\r\n \"Germany North\",\r\n \"Germany West Central\",\r\n \"Norway East\",\r\n \"Norway West\",\r\n \"Brazil Southeast\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations/deletedVaults\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"East US 2 EUAP\",\r\n \"Central US EUAP\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"France South\",\r\n \"Australia Central\",\r\n \"Australia Central 2\",\r\n \"UAE Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"South Africa West\",\r\n \"Switzerland North\",\r\n \"Switzerland West\",\r\n \"Germany North\",\r\n \"Germany West Central\",\r\n \"Norway East\",\r\n \"Norway West\",\r\n \"Brazil Southeast\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations/deleteVirtualNetworkOrSubnets\",\r\n \"locations\": [\r\n \"East US\",\r\n \"North Central US\",\r\n \"West Europe\",\r\n \"North Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Australia Central\",\r\n \"Australia Central 2\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"Central US EUAP\",\r\n \"East US 2 EUAP\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"France South\",\r\n \"UAE Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"South Africa West\",\r\n \"Switzerland North\",\r\n \"Switzerland West\",\r\n \"Germany North\",\r\n \"Germany West Central\",\r\n \"Norway East\",\r\n \"Norway West\",\r\n \"Brazil Southeast\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations/operationResults\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"East US 2 EUAP\",\r\n \"Central US EUAP\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"France South\",\r\n \"Australia Central\",\r\n \"Australia Central 2\",\r\n \"UAE Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"South Africa West\",\r\n \"Switzerland North\",\r\n \"Switzerland West\",\r\n \"Germany North\",\r\n \"Germany West Central\",\r\n \"Norway East\",\r\n \"Norway West\",\r\n \"Brazil Southeast\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"vaults/eventGridFilters\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"East US 2 EUAP\",\r\n \"Central US EUAP\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"France South\",\r\n \"Australia Central\",\r\n \"Australia Central 2\",\r\n \"UAE Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"South Africa West\",\r\n \"Switzerland North\",\r\n \"Switzerland West\",\r\n \"Germany North\",\r\n \"Germany West Central\",\r\n \"Norway East\",\r\n \"Norway West\",\r\n \"Brazil Southeast\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"managedHSMs\",\r\n \"locations\": [\r\n \"Central US EUAP\",\r\n \"East US 2\"\r\n ],\r\n \"apiVersions\": [\r\n \"2020-04-01-preview\"\r\n ],\r\n \"capabilities\": \"CrossResourceGroupResourceMove, CrossSubscriptionResourceMove\"\r\n }\r\n ],\r\n \"registrationState\": \"Registered\"\r\n}", "StatusCode": 200 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourcegroups/ps7732?api-version=2016-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlZ3JvdXBzL3BzNzczMj9hcGktdmVyc2lvbj0yMDE2LTA5LTAx", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourcegroups/ps8689?api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlZ3JvdXBzL3BzODY4OT9hcGktdmVyc2lvbj0yMDE2LTA5LTAx", "RequestMethod": "PUT", "RequestBody": "{\r\n \"location\": \"West US\"\r\n}", "RequestHeaders": { "x-ms-client-request-id": [ - "598b9697-f242-417f-a01a-4ba972204a0a" + "0b970310-8804-4e99-8c4a-15b703e245c6" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ], "Content-Type": [ "application/json; charset=utf-8" @@ -153,16 +153,16 @@ "no-cache" ], "x-ms-ratelimit-remaining-subscription-writes": [ - "1198" + "1196" ], "x-ms-request-id": [ - "cbe7c9b5-1914-4d1c-a834-8657f0dc3c5d" + "2c53298f-ddb3-4c23-bc5a-787c0cceb59c" ], "x-ms-correlation-request-id": [ - "cbe7c9b5-1914-4d1c-a834-8657f0dc3c5d" + "2c53298f-ddb3-4c23-bc5a-787c0cceb59c" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T085618Z:cbe7c9b5-1914-4d1c-a834-8657f0dc3c5d" + "KOREASOUTH:20200810T062845Z:2c53298f-ddb3-4c23-bc5a-787c0cceb59c" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -171,7 +171,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 08:56:18 GMT" + "Mon, 10 Aug 2020 06:28:44 GMT" ], "Content-Length": [ "165" @@ -183,7 +183,7 @@ "-1" ] }, - "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7732\",\r\n \"name\": \"ps7732\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\"\r\n }\r\n}", + "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps8689\",\r\n \"name\": \"ps8689\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\"\r\n }\r\n}", "StatusCode": 201 }, { @@ -193,16 +193,16 @@ "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "9ace07f1-e1f6-4ebf-b41b-51cae9520a87" + "a85f8177-9ef3-462a-8275-4cd06ebd164d" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -213,16 +213,16 @@ "no-cache" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11996" + "11984" ], "x-ms-request-id": [ - "9b08cec5-846c-47b9-91af-2ee9d0dec3ba" + "d7cdc6d2-f126-435c-bf98-ba4404dfa293" ], "x-ms-correlation-request-id": [ - "9b08cec5-846c-47b9-91af-2ee9d0dec3ba" + "d7cdc6d2-f126-435c-bf98-ba4404dfa293" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T085618Z:9b08cec5-846c-47b9-91af-2ee9d0dec3ba" + "KOREASOUTH:20200810T062845Z:d7cdc6d2-f126-435c-bf98-ba4404dfa293" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -231,7 +231,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 08:56:18 GMT" + "Mon, 10 Aug 2020 06:28:45 GMT" ], "Content-Type": [ "application/json; charset=utf-8" @@ -240,10 +240,10 @@ "-1" ], "Content-Length": [ - "1170" + "274" ] }, - "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps267\",\r\n \"name\": \"ps267\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps4721\",\r\n \"name\": \"ps4721\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {\r\n \"asdf\": \"qwerty\"\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps5726\",\r\n \"name\": \"ps5726\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/pshtestrg329/providers/Microsoft.KeyVault/vaults/pshtestvault5414\",\r\n \"name\": \"pshtestvault5414\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"northcentralus\",\r\n \"tags\": {\r\n \"testtag\": \"testvalue\"\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/pshtestrg7941/providers/Microsoft.KeyVault/vaults/pshtestvault2685\",\r\n \"name\": \"pshtestvault2685\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"northcentralus\",\r\n \"tags\": {\r\n \"testtag\": \"testvalue\"\r\n }\r\n }\r\n ]\r\n}", + "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/pshtestrg3785/providers/Microsoft.KeyVault/vaults/pshtestvault8327\",\r\n \"name\": \"pshtestvault8327\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"northcentralus\",\r\n \"tags\": {\r\n \"testtag\": \"testvalue\"\r\n }\r\n }\r\n ]\r\n}", "StatusCode": 200 }, { @@ -253,16 +253,16 @@ "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "9e2f2183-d7da-4de6-a55d-d69a59e02256" + "2f7c0fac-5421-41f6-9faa-4579c286eea4" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -273,16 +273,16 @@ "no-cache" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11995" + "11983" ], "x-ms-request-id": [ - "f9f3d311-d188-45d7-bfbd-9169812978eb" + "5ba24915-fddc-45f8-9a9d-72fd0222cbb3" ], "x-ms-correlation-request-id": [ - "f9f3d311-d188-45d7-bfbd-9169812978eb" + "5ba24915-fddc-45f8-9a9d-72fd0222cbb3" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T085656Z:f9f3d311-d188-45d7-bfbd-9169812978eb" + "KOREASOUTH:20200810T062923Z:5ba24915-fddc-45f8-9a9d-72fd0222cbb3" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -291,7 +291,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 08:56:56 GMT" + "Mon, 10 Aug 2020 06:29:23 GMT" ], "Content-Type": [ "application/json; charset=utf-8" @@ -300,10 +300,10 @@ "-1" ], "Content-Length": [ - "1375" + "216" ] }, - "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps267\",\r\n \"name\": \"ps267\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps4721\",\r\n \"name\": \"ps4721\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {\r\n \"asdf\": \"qwerty\"\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps5726\",\r\n \"name\": \"ps5726\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7732/providers/Microsoft.KeyVault/vaults/ps690\",\r\n \"name\": \"ps690\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/pshtestrg329/providers/Microsoft.KeyVault/vaults/pshtestvault5414\",\r\n \"name\": \"pshtestvault5414\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"northcentralus\",\r\n \"tags\": {\r\n \"testtag\": \"testvalue\"\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/pshtestrg7941/providers/Microsoft.KeyVault/vaults/pshtestvault2685\",\r\n \"name\": \"pshtestvault2685\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"northcentralus\",\r\n \"tags\": {\r\n \"testtag\": \"testvalue\"\r\n }\r\n }\r\n ]\r\n}", + "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps8689/providers/Microsoft.KeyVault/vaults/ps410\",\r\n \"name\": \"ps410\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n }\r\n ]\r\n}", "StatusCode": 200 }, { @@ -313,16 +313,16 @@ "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "e39c6fb7-cb6a-4181-9f2c-39bb9af24908" + "f2eb3c48-8314-4925-953f-dfa23af4ada4" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -333,16 +333,16 @@ "no-cache" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11994" + "11982" ], "x-ms-request-id": [ - "d562d574-b8c4-447a-a5d1-d1db76343aeb" + "c803a1ed-0f04-4106-a063-04c9d553898b" ], "x-ms-correlation-request-id": [ - "d562d574-b8c4-447a-a5d1-d1db76343aeb" + "c803a1ed-0f04-4106-a063-04c9d553898b" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T085657Z:d562d574-b8c4-447a-a5d1-d1db76343aeb" + "KOREASOUTH:20200810T062924Z:c803a1ed-0f04-4106-a063-04c9d553898b" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -351,7 +351,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 08:56:56 GMT" + "Mon, 10 Aug 2020 06:29:23 GMT" ], "Content-Type": [ "application/json; charset=utf-8" @@ -360,10 +360,10 @@ "-1" ], "Content-Length": [ - "1375" + "216" ] }, - "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps267\",\r\n \"name\": \"ps267\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps4721\",\r\n \"name\": \"ps4721\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {\r\n \"asdf\": \"qwerty\"\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps5726\",\r\n \"name\": \"ps5726\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7732/providers/Microsoft.KeyVault/vaults/ps690\",\r\n \"name\": \"ps690\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/pshtestrg329/providers/Microsoft.KeyVault/vaults/pshtestvault5414\",\r\n \"name\": \"pshtestvault5414\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"northcentralus\",\r\n \"tags\": {\r\n \"testtag\": \"testvalue\"\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/pshtestrg7941/providers/Microsoft.KeyVault/vaults/pshtestvault2685\",\r\n \"name\": \"pshtestvault2685\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"northcentralus\",\r\n \"tags\": {\r\n \"testtag\": \"testvalue\"\r\n }\r\n }\r\n ]\r\n}", + "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps8689/providers/Microsoft.KeyVault/vaults/ps410\",\r\n \"name\": \"ps410\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n }\r\n ]\r\n}", "StatusCode": 200 }, { @@ -373,16 +373,16 @@ "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "cf38c233-fed2-4946-9377-fb488ae73027" + "92523284-f964-4bd2-94b0-2f57a70c0d4b" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Graph.RBAC.Version1.6.GraphRbacManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Graph.RBAC.Version1.6.GraphRbacManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -393,19 +393,22 @@ "no-cache" ], "ocp-aad-diagnostics-server-name": [ - "UGURGCoIXEqCNOXVDccGeYNc2SPaXu5HS1ihFki7adk=" + "GYtrl7n5z84eTj2S4sd74eB78FIUomXxNU+Efgry7Z0=" ], "request-id": [ - "1a6c9f1d-8b72-4314-a2f9-3d373ab5a501" + "6233e91a-814b-46d0-9937-f818a92f78f3" ], "client-request-id": [ - "cf38c233-fed2-4946-9377-fb488ae73027" + "92523284-f964-4bd2-94b0-2f57a70c0d4b" ], "x-ms-dirapi-data-contract-version": [ "1.6" ], "ocp-aad-session-key": [ - "KrHuE5W4vP9O9Eq_3WyDXy4kpwVo4xEHPaUa7IkloLTN9OOo4WFE85e5mtYloQKLy97ceL_tMhIAFfk3szOHLDlkZXEo5ACx-qJYat5cB0QOX2r8A0B6TZ2oidDAEdqb.-KfVrRu8_L5BARitU1GgUrQERrBs4aBL5Vi-a1AgnoE" + "4NLOfHXljWgfKfB7Nw3PpHbkeBs7osBCmjs0urns7oPDQVkle0UCFVNSveU6mbeKzZIiGgpun8mk9YyvxTuAmMXjud2kF86ImQRHFQjtqSzXvpXKqak8hPA0WiBGYzek.UiGbNQSp1WJ1sR1WTcp1R1_dTv5WdDFtILaUu1qe4Cw" + ], + "x-ms-resource-unit": [ + "2" ], "DataServiceVersion": [ "3.0;" @@ -423,10 +426,10 @@ "ASP.NET" ], "Duration": [ - "334702" + "295351" ], "Date": [ - "Tue, 31 Mar 2020 08:56:18 GMT" + "Mon, 10 Aug 2020 06:28:45 GMT" ], "Content-Type": [ "application/json; odata=minimalmetadata; streaming=true; charset=utf-8" @@ -438,32 +441,32 @@ "219" ] }, - "ResponseBody": "{\r\n \"odata.error\": {\r\n \"code\": \"Authorization_RequestDenied\",\r\n \"message\": {\r\n \"lang\": \"en\",\r\n \"value\": \"Insufficient privileges to complete the operation.\"\r\n },\r\n \"requestId\": \"1a6c9f1d-8b72-4314-a2f9-3d373ab5a501\",\r\n \"date\": \"2020-03-31T08:56:19\"\r\n }\r\n}", + "ResponseBody": "{\r\n \"odata.error\": {\r\n \"code\": \"Authorization_RequestDenied\",\r\n \"message\": {\r\n \"lang\": \"en\",\r\n \"value\": \"Insufficient privileges to complete the operation.\"\r\n },\r\n \"requestId\": \"6233e91a-814b-46d0-9937-f818a92f78f3\",\r\n \"date\": \"2020-08-10T06:28:45\"\r\n }\r\n}", "StatusCode": 403 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7732/providers/Microsoft.KeyVault/vaults/ps690?api-version=2019-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzNzczMi9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L3ZhdWx0cy9wczY5MD9hcGktdmVyc2lvbj0yMDE5LTA5LTAx", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps8689/providers/Microsoft.KeyVault/vaults/ps410?api-version=2019-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzODY4OS9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L3ZhdWx0cy9wczQxMD9hcGktdmVyc2lvbj0yMDE5LTA5LTAx", "RequestMethod": "PUT", - "RequestBody": "{\r\n \"location\": \"West US\",\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"sku\": {\r\n \"name\": \"standard\",\r\n \"family\": \"A\"\r\n },\r\n \"accessPolicies\": [],\r\n \"vaultUri\": \"\",\r\n \"enabledForDeployment\": false,\r\n \"enabledForDiskEncryption\": false,\r\n \"enabledForTemplateDeployment\": false,\r\n \"enableSoftDelete\": true,\r\n \"enablePurgeProtection\": true,\r\n \"networkAcls\": {\r\n \"bypass\": \"AzureServices\",\r\n \"defaultAction\": \"Allow\"\r\n }\r\n }\r\n}", + "RequestBody": "{\r\n \"location\": \"West US\",\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"sku\": {\r\n \"name\": \"standard\",\r\n \"family\": \"A\"\r\n },\r\n \"accessPolicies\": [],\r\n \"vaultUri\": \"\",\r\n \"enabledForDeployment\": false,\r\n \"enabledForDiskEncryption\": false,\r\n \"enabledForTemplateDeployment\": false,\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"networkAcls\": {\r\n \"bypass\": \"AzureServices\",\r\n \"defaultAction\": \"Allow\"\r\n }\r\n }\r\n}", "RequestHeaders": { "x-ms-client-request-id": [ - "27fca4ac-e9dc-40a8-a56c-e103bd53bf6a" + "502e7a10-3677-465d-942a-8b6a2139aba9" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.0.0" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.1.0.0" ], "Content-Type": [ "application/json; charset=utf-8" ], "Content-Length": [ - "511" + "513" ] }, "ResponseHeaders": { @@ -474,10 +477,10 @@ "no-cache" ], "x-ms-keyvault-service-version": [ - "1.1.0.276" + "1.1.16.0" ], "x-ms-request-id": [ - "a236c82d-0a58-495d-b3f7-222f82fa496b" + "9d12df04-9eb7-4801-aa15-c0e17b39a94c" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -495,19 +498,19 @@ "ASP.NET" ], "x-ms-ratelimit-remaining-subscription-writes": [ - "1199" + "1196" ], "x-ms-correlation-request-id": [ - "3bcb5b3b-4722-44d1-9b9b-f9eac9032d5c" + "d37bf457-9a45-41b8-8bc7-4d197cc59f69" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T085626Z:3bcb5b3b-4722-44d1-9b9b-f9eac9032d5c" + "KOREASOUTH:20200810T062853Z:d37bf457-9a45-41b8-8bc7-4d197cc59f69" ], "Date": [ - "Tue, 31 Mar 2020 08:56:25 GMT" + "Mon, 10 Aug 2020 06:28:52 GMT" ], "Content-Length": [ - "561" + "563" ], "Content-Type": [ "application/json; charset=utf-8" @@ -516,20 +519,20 @@ "-1" ] }, - "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7732/providers/Microsoft.KeyVault/vaults/ps690\",\r\n \"name\": \"ps690\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"West US\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"sku\": {\r\n \"family\": \"A\",\r\n \"name\": \"standard\"\r\n },\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"accessPolicies\": [],\r\n \"enabledForDeployment\": false,\r\n \"enabledForDiskEncryption\": false,\r\n \"enabledForTemplateDeployment\": false,\r\n \"enableSoftDelete\": true,\r\n \"enablePurgeProtection\": true,\r\n \"vaultUri\": \"https://ps690.vault.azure.net\",\r\n \"provisioningState\": \"RegisteringDns\"\r\n }\r\n}", + "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps8689/providers/Microsoft.KeyVault/vaults/ps410\",\r\n \"name\": \"ps410\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"West US\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"sku\": {\r\n \"family\": \"A\",\r\n \"name\": \"standard\"\r\n },\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"accessPolicies\": [],\r\n \"enabledForDeployment\": false,\r\n \"enabledForDiskEncryption\": false,\r\n \"enabledForTemplateDeployment\": false,\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"vaultUri\": \"https://ps410.vault.azure.net\",\r\n \"provisioningState\": \"RegisteringDns\"\r\n }\r\n}", "StatusCode": 200 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7732/providers/Microsoft.KeyVault/vaults/ps690?api-version=2019-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzNzczMi9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L3ZhdWx0cy9wczY5MD9hcGktdmVyc2lvbj0yMDE5LTA5LTAx", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps8689/providers/Microsoft.KeyVault/vaults/ps410?api-version=2019-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzODY4OS9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L3ZhdWx0cy9wczQxMD9hcGktdmVyc2lvbj0yMDE5LTA5LTAx", "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.0.0" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.1.0.0" ] }, "ResponseHeaders": { @@ -540,10 +543,10 @@ "no-cache" ], "x-ms-keyvault-service-version": [ - "1.1.0.276" + "1.1.16.0" ], "x-ms-request-id": [ - "d58c3900-78a9-41d9-a7f4-1ff66e1d03db" + "548f2c02-2e89-4a29-b12b-814d0f4a7d78" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -561,19 +564,19 @@ "ASP.NET" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11999" + "11986" ], "x-ms-correlation-request-id": [ - "2b9ae647-59d6-44f0-be5a-240788d25b23" + "9c75ddcd-b41e-4d28-b425-e13cc4d357d2" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T085656Z:2b9ae647-59d6-44f0-be5a-240788d25b23" + "KOREASOUTH:20200810T062923Z:9c75ddcd-b41e-4d28-b425-e13cc4d357d2" ], "Date": [ - "Tue, 31 Mar 2020 08:56:56 GMT" + "Mon, 10 Aug 2020 06:29:22 GMT" ], "Content-Length": [ - "557" + "559" ], "Content-Type": [ "application/json; charset=utf-8" @@ -582,26 +585,26 @@ "-1" ] }, - "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7732/providers/Microsoft.KeyVault/vaults/ps690\",\r\n \"name\": \"ps690\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"West US\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"sku\": {\r\n \"family\": \"A\",\r\n \"name\": \"standard\"\r\n },\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"accessPolicies\": [],\r\n \"enabledForDeployment\": false,\r\n \"enabledForDiskEncryption\": false,\r\n \"enabledForTemplateDeployment\": false,\r\n \"enableSoftDelete\": true,\r\n \"enablePurgeProtection\": true,\r\n \"vaultUri\": \"https://ps690.vault.azure.net/\",\r\n \"provisioningState\": \"Succeeded\"\r\n }\r\n}", + "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps8689/providers/Microsoft.KeyVault/vaults/ps410\",\r\n \"name\": \"ps410\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"West US\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"sku\": {\r\n \"family\": \"A\",\r\n \"name\": \"standard\"\r\n },\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"accessPolicies\": [],\r\n \"enabledForDeployment\": false,\r\n \"enabledForDiskEncryption\": false,\r\n \"enabledForTemplateDeployment\": false,\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"vaultUri\": \"https://ps410.vault.azure.net/\",\r\n \"provisioningState\": \"Succeeded\"\r\n }\r\n}", "StatusCode": 200 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7732/providers/Microsoft.KeyVault/vaults/ps690?api-version=2019-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzNzczMi9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L3ZhdWx0cy9wczY5MD9hcGktdmVyc2lvbj0yMDE5LTA5LTAx", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps8689/providers/Microsoft.KeyVault/vaults/ps410?api-version=2019-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzODY4OS9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L3ZhdWx0cy9wczQxMD9hcGktdmVyc2lvbj0yMDE5LTA5LTAx", "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "b7b2c32f-db8a-4594-9150-b62abcca477d" + "00c822e3-faa1-4878-9024-f7b906406fd4" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.0.0" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.1.0.0" ] }, "ResponseHeaders": { @@ -612,10 +615,10 @@ "no-cache" ], "x-ms-keyvault-service-version": [ - "1.1.0.276" + "1.1.16.0" ], "x-ms-request-id": [ - "3128becf-83a8-44fb-ad1d-d3773cffaa68" + "4fadac4d-1f41-4ba8-9f91-37eef014da44" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -633,19 +636,19 @@ "ASP.NET" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11998" + "11985" ], "x-ms-correlation-request-id": [ - "75b0f243-405b-465e-bee1-3249f30fd6c8" + "51af74ee-2312-4309-be8a-bb344902f874" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T085656Z:75b0f243-405b-465e-bee1-3249f30fd6c8" + "KOREASOUTH:20200810T062923Z:51af74ee-2312-4309-be8a-bb344902f874" ], "Date": [ - "Tue, 31 Mar 2020 08:56:56 GMT" + "Mon, 10 Aug 2020 06:29:23 GMT" ], "Content-Length": [ - "557" + "559" ], "Content-Type": [ "application/json; charset=utf-8" @@ -654,26 +657,26 @@ "-1" ] }, - "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7732/providers/Microsoft.KeyVault/vaults/ps690\",\r\n \"name\": \"ps690\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"West US\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"sku\": {\r\n \"family\": \"A\",\r\n \"name\": \"standard\"\r\n },\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"accessPolicies\": [],\r\n \"enabledForDeployment\": false,\r\n \"enabledForDiskEncryption\": false,\r\n \"enabledForTemplateDeployment\": false,\r\n \"enableSoftDelete\": true,\r\n \"enablePurgeProtection\": true,\r\n \"vaultUri\": \"https://ps690.vault.azure.net/\",\r\n \"provisioningState\": \"Succeeded\"\r\n }\r\n}", + "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps8689/providers/Microsoft.KeyVault/vaults/ps410\",\r\n \"name\": \"ps410\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"West US\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"sku\": {\r\n \"family\": \"A\",\r\n \"name\": \"standard\"\r\n },\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"accessPolicies\": [],\r\n \"enabledForDeployment\": false,\r\n \"enabledForDiskEncryption\": false,\r\n \"enabledForTemplateDeployment\": false,\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"vaultUri\": \"https://ps410.vault.azure.net/\",\r\n \"provisioningState\": \"Succeeded\"\r\n }\r\n}", "StatusCode": 200 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7732/providers/Microsoft.KeyVault/vaults/ps690?api-version=2019-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzNzczMi9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L3ZhdWx0cy9wczY5MD9hcGktdmVyc2lvbj0yMDE5LTA5LTAx", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps8689/providers/Microsoft.KeyVault/vaults/ps410?api-version=2019-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzODY4OS9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L3ZhdWx0cy9wczQxMD9hcGktdmVyc2lvbj0yMDE5LTA5LTAx", "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "986b8b21-09a4-40d3-9629-5a1cc5f1a7bd" + "92a61587-c309-4479-9e54-4c2c6006a88e" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.0.0" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.1.0.0" ] }, "ResponseHeaders": { @@ -684,10 +687,10 @@ "no-cache" ], "x-ms-keyvault-service-version": [ - "1.1.0.276" + "1.1.16.0" ], "x-ms-request-id": [ - "a982d044-9e97-49ee-b496-170a1f93e049" + "6fc782f9-3b0f-4171-982e-bb247ee7e947" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -705,19 +708,19 @@ "ASP.NET" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11997" + "11984" ], "x-ms-correlation-request-id": [ - "ea5f7af5-c79e-45b2-8b3f-4f0b419a3ed6" + "e3331b4c-7f84-4519-89b0-617ea42acc24" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T085656Z:ea5f7af5-c79e-45b2-8b3f-4f0b419a3ed6" + "KOREASOUTH:20200810T062924Z:e3331b4c-7f84-4519-89b0-617ea42acc24" ], "Date": [ - "Tue, 31 Mar 2020 08:56:56 GMT" + "Mon, 10 Aug 2020 06:29:23 GMT" ], "Content-Length": [ - "557" + "559" ], "Content-Type": [ "application/json; charset=utf-8" @@ -726,26 +729,26 @@ "-1" ] }, - "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7732/providers/Microsoft.KeyVault/vaults/ps690\",\r\n \"name\": \"ps690\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"West US\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"sku\": {\r\n \"family\": \"A\",\r\n \"name\": \"standard\"\r\n },\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"accessPolicies\": [],\r\n \"enabledForDeployment\": false,\r\n \"enabledForDiskEncryption\": false,\r\n \"enabledForTemplateDeployment\": false,\r\n \"enableSoftDelete\": true,\r\n \"enablePurgeProtection\": true,\r\n \"vaultUri\": \"https://ps690.vault.azure.net/\",\r\n \"provisioningState\": \"Succeeded\"\r\n }\r\n}", + "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps8689/providers/Microsoft.KeyVault/vaults/ps410\",\r\n \"name\": \"ps410\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"West US\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"sku\": {\r\n \"family\": \"A\",\r\n \"name\": \"standard\"\r\n },\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"accessPolicies\": [],\r\n \"enabledForDeployment\": false,\r\n \"enabledForDiskEncryption\": false,\r\n \"enabledForTemplateDeployment\": false,\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"vaultUri\": \"https://ps410.vault.azure.net/\",\r\n \"provisioningState\": \"Succeeded\"\r\n }\r\n}", "StatusCode": 200 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7732/providers/Microsoft.KeyVault/vaults/PS690?api-version=2019-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzNzczMi9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L3ZhdWx0cy9QUzY5MD9hcGktdmVyc2lvbj0yMDE5LTA5LTAx", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps8689/providers/Microsoft.KeyVault/vaults/PS410?api-version=2019-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzODY4OS9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L3ZhdWx0cy9QUzQxMD9hcGktdmVyc2lvbj0yMDE5LTA5LTAx", "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "3e0342a6-3962-4853-be03-528a9d01c24b" + "5a2db30d-3fd1-4003-9d4f-3d94f92f8881" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.0.0" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.1.0.0" ] }, "ResponseHeaders": { @@ -756,10 +759,10 @@ "no-cache" ], "x-ms-keyvault-service-version": [ - "1.1.0.276" + "1.1.16.0" ], "x-ms-request-id": [ - "7d477d42-a313-4c63-8261-aa451719f646" + "f8ccd9df-0a96-4cc2-b90d-e6656f635193" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -777,19 +780,19 @@ "ASP.NET" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11996" + "11983" ], "x-ms-correlation-request-id": [ - "ca88a8be-7ee9-46e8-8a38-c98d13c36245" + "5362db45-1e14-4242-9dbb-b327e313eddb" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T085657Z:ca88a8be-7ee9-46e8-8a38-c98d13c36245" + "KOREASOUTH:20200810T062924Z:5362db45-1e14-4242-9dbb-b327e313eddb" ], "Date": [ - "Tue, 31 Mar 2020 08:56:57 GMT" + "Mon, 10 Aug 2020 06:29:24 GMT" ], "Content-Length": [ - "557" + "559" ], "Content-Type": [ "application/json; charset=utf-8" @@ -798,26 +801,26 @@ "-1" ] }, - "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7732/providers/Microsoft.KeyVault/vaults/ps690\",\r\n \"name\": \"ps690\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"West US\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"sku\": {\r\n \"family\": \"A\",\r\n \"name\": \"standard\"\r\n },\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"accessPolicies\": [],\r\n \"enabledForDeployment\": false,\r\n \"enabledForDiskEncryption\": false,\r\n \"enabledForTemplateDeployment\": false,\r\n \"enableSoftDelete\": true,\r\n \"enablePurgeProtection\": true,\r\n \"vaultUri\": \"https://ps690.vault.azure.net/\",\r\n \"provisioningState\": \"Succeeded\"\r\n }\r\n}", + "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps8689/providers/Microsoft.KeyVault/vaults/ps410\",\r\n \"name\": \"ps410\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"West US\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"sku\": {\r\n \"family\": \"A\",\r\n \"name\": \"standard\"\r\n },\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"accessPolicies\": [],\r\n \"enabledForDeployment\": false,\r\n \"enabledForDiskEncryption\": false,\r\n \"enabledForTemplateDeployment\": false,\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"vaultUri\": \"https://ps410.vault.azure.net/\",\r\n \"provisioningState\": \"Succeeded\"\r\n }\r\n}", "StatusCode": 200 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps901/providers/Microsoft.KeyVault/vaults/ps690?api-version=2019-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzOTAxL3Byb3ZpZGVycy9NaWNyb3NvZnQuS2V5VmF1bHQvdmF1bHRzL3BzNjkwP2FwaS12ZXJzaW9uPTIwMTktMDktMDE=", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6609/providers/Microsoft.KeyVault/vaults/ps410?api-version=2019-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzNjYwOS9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L3ZhdWx0cy9wczQxMD9hcGktdmVyc2lvbj0yMDE5LTA5LTAx", "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "0907a04d-4ffa-4558-8a11-7a293bd672b3" + "38c3e2b8-cd5d-4218-8289-e363de0eaec7" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.0.0" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.1.0.0" ] }, "ResponseHeaders": { @@ -831,13 +834,13 @@ "gateway" ], "x-ms-request-id": [ - "488a2340-24ef-4c8d-b42b-044b3570afbe" + "e4dbd83f-da66-47b9-9c93-cc13825dfc56" ], "x-ms-correlation-request-id": [ - "488a2340-24ef-4c8d-b42b-044b3570afbe" + "e4dbd83f-da66-47b9-9c93-cc13825dfc56" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T085657Z:488a2340-24ef-4c8d-b42b-044b3570afbe" + "KOREASOUTH:20200810T062924Z:e4dbd83f-da66-47b9-9c93-cc13825dfc56" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -846,7 +849,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 08:56:57 GMT" + "Mon, 10 Aug 2020 06:29:24 GMT" ], "Content-Type": [ "application/json; charset=utf-8" @@ -855,29 +858,29 @@ "-1" ], "Content-Length": [ - "97" + "98" ] }, - "ResponseBody": "{\r\n \"error\": {\r\n \"code\": \"ResourceGroupNotFound\",\r\n \"message\": \"Resource group 'ps901' could not be found.\"\r\n }\r\n}", + "ResponseBody": "{\r\n \"error\": {\r\n \"code\": \"ResourceGroupNotFound\",\r\n \"message\": \"Resource group 'ps6609' could not be found.\"\r\n }\r\n}", "StatusCode": 404 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7732/providers/Microsoft.KeyVault/vaults/ps1138?api-version=2019-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzNzczMi9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L3ZhdWx0cy9wczExMzg/YXBpLXZlcnNpb249MjAxOS0wOS0wMQ==", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6609/providers/Microsoft.KeyVault/managedHSMs/ps410?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzNjYwOS9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNDEwP2FwaS12ZXJzaW9uPTIwMjAtMDQtMDEtcHJldmlldw==", "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "3ae1da70-8a10-4d30-9a03-3ae7c4ec7b68" + "e95294cf-1f89-4109-b2a9-6668f4f558a8" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.0.0" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.1.0.0" ] }, "ResponseHeaders": { @@ -891,13 +894,13 @@ "gateway" ], "x-ms-request-id": [ - "250b1e10-d59f-4f27-a4dd-72a86080c0c9" + "ba0c8404-a3b1-4474-b821-01b166e12484" ], "x-ms-correlation-request-id": [ - "250b1e10-d59f-4f27-a4dd-72a86080c0c9" + "ba0c8404-a3b1-4474-b821-01b166e12484" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T085657Z:250b1e10-d59f-4f27-a4dd-72a86080c0c9" + "KOREASOUTH:20200810T062924Z:ba0c8404-a3b1-4474-b821-01b166e12484" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -906,7 +909,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 08:56:57 GMT" + "Mon, 10 Aug 2020 06:29:24 GMT" ], "Content-Type": [ "application/json; charset=utf-8" @@ -915,29 +918,29 @@ "-1" ], "Content-Length": [ - "142" + "98" ] }, - "ResponseBody": "{\r\n \"error\": {\r\n \"code\": \"ResourceNotFound\",\r\n \"message\": \"The Resource 'Microsoft.KeyVault/vaults/ps1138' under resource group 'ps7732' was not found.\"\r\n }\r\n}", + "ResponseBody": "{\r\n \"error\": {\r\n \"code\": \"ResourceGroupNotFound\",\r\n \"message\": \"Resource group 'ps6609' could not be found.\"\r\n }\r\n}", "StatusCode": 404 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourcegroups/ps7732?api-version=2016-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlZ3JvdXBzL3BzNzczMj9hcGktdmVyc2lvbj0yMDE2LTA5LTAx", - "RequestMethod": "DELETE", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps8689/providers/Microsoft.KeyVault/vaults/ps1942?api-version=2019-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzODY4OS9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L3ZhdWx0cy9wczE5NDI/YXBpLXZlcnNpb249MjAxOS0wOS0wMQ==", + "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "b6dec73b-ac67-4fcf-af47-5a64aaba694b" + "f1102e69-3ab2-4625-b03d-1be20c7fa1f1" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.1.0.0" ] }, "ResponseHeaders": { @@ -947,23 +950,77 @@ "Pragma": [ "no-cache" ], - "Location": [ - "https://management.azure.com/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzc3MzItV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01" + "x-ms-failure-cause": [ + "gateway" ], - "Retry-After": [ - "15" + "x-ms-request-id": [ + "fa955d85-3356-4d14-b016-d0b78116d443" ], - "x-ms-ratelimit-remaining-subscription-deletes": [ - "14999" + "x-ms-correlation-request-id": [ + "fa955d85-3356-4d14-b016-d0b78116d443" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200810T062925Z:fa955d85-3356-4d14-b016-d0b78116d443" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Mon, 10 Aug 2020 06:29:24 GMT" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Content-Length": [ + "210" + ] + }, + "ResponseBody": "{\r\n \"error\": {\r\n \"code\": \"ResourceNotFound\",\r\n \"message\": \"The Resource 'Microsoft.KeyVault/vaults/ps1942' under resource group 'ps8689' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"\r\n }\r\n}", + "StatusCode": 404 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps8689/providers/Microsoft.KeyVault/managedHSMs/ps1942?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzODY4OS9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzMTk0Mj9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "ee692486-2215-4334-be8e-7ed5548c0631" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.1.0.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-failure-cause": [ + "gateway" ], "x-ms-request-id": [ - "314aedf7-9c05-4dcf-ba8a-451bef5c1f68" + "2ba67add-4096-4533-aa72-4f68c40c41d7" ], "x-ms-correlation-request-id": [ - "314aedf7-9c05-4dcf-ba8a-451bef5c1f68" + "2ba67add-4096-4533-aa72-4f68c40c41d7" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T085701Z:314aedf7-9c05-4dcf-ba8a-451bef5c1f68" + "KOREASOUTH:20200810T062925Z:2ba67add-4096-4533-aa72-4f68c40c41d7" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -972,29 +1029,38 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 08:57:00 GMT" + "Mon, 10 Aug 2020 06:29:24 GMT" + ], + "Content-Type": [ + "application/json; charset=utf-8" ], "Expires": [ "-1" ], "Content-Length": [ - "0" + "215" ] }, - "ResponseBody": "", - "StatusCode": 202 + "ResponseBody": "{\r\n \"error\": {\r\n \"code\": \"ResourceNotFound\",\r\n \"message\": \"The Resource 'Microsoft.KeyVault/managedHSMs/ps1942' under resource group 'ps8689' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"\r\n }\r\n}", + "StatusCode": 404 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzc3MzItV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpjM016SXRWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", - "RequestMethod": "GET", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourcegroups/ps8689?api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlZ3JvdXBzL3BzODY4OT9hcGktdmVyc2lvbj0yMDE2LTA5LTAx", + "RequestMethod": "DELETE", "RequestBody": "", "RequestHeaders": { + "x-ms-client-request-id": [ + "92719d68-1756-4514-a2c1-339c84b210ce" + ], + "Accept-Language": [ + "en-US" + ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -1005,22 +1071,22 @@ "no-cache" ], "Location": [ - "https://management.azure.com/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzc3MzItV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01" + "https://management.azure.com/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzg2ODktV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01" ], "Retry-After": [ "15" ], - "x-ms-ratelimit-remaining-subscription-reads": [ - "11993" + "x-ms-ratelimit-remaining-subscription-deletes": [ + "14996" ], "x-ms-request-id": [ - "5f0211d8-5b3d-43b6-b199-55d9fa4d121a" + "62c49595-e9e0-497d-9f35-0cb68dab85bc" ], "x-ms-correlation-request-id": [ - "5f0211d8-5b3d-43b6-b199-55d9fa4d121a" + "62c49595-e9e0-497d-9f35-0cb68dab85bc" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T085716Z:5f0211d8-5b3d-43b6-b199-55d9fa4d121a" + "KOREASOUTH:20200810T062928Z:62c49595-e9e0-497d-9f35-0cb68dab85bc" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -1029,7 +1095,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 08:57:15 GMT" + "Mon, 10 Aug 2020 06:29:27 GMT" ], "Expires": [ "-1" @@ -1042,16 +1108,16 @@ "StatusCode": 202 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzc3MzItV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpjM016SXRWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzg2ODktV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpnMk9Ea3RWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -1062,22 +1128,22 @@ "no-cache" ], "Location": [ - "https://management.azure.com/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzc3MzItV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01" + "https://management.azure.com/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzg2ODktV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01" ], "Retry-After": [ "15" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11992" + "11981" ], "x-ms-request-id": [ - "ba63ec0a-5a2f-4305-8a32-50a19edc079d" + "62c8d957-bfe5-4ef7-b027-5cc4dc7b1e86" ], "x-ms-correlation-request-id": [ - "ba63ec0a-5a2f-4305-8a32-50a19edc079d" + "62c8d957-bfe5-4ef7-b027-5cc4dc7b1e86" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T085731Z:ba63ec0a-5a2f-4305-8a32-50a19edc079d" + "KOREASOUTH:20200810T062943Z:62c8d957-bfe5-4ef7-b027-5cc4dc7b1e86" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -1086,7 +1152,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 08:57:31 GMT" + "Mon, 10 Aug 2020 06:29:43 GMT" ], "Expires": [ "-1" @@ -1099,16 +1165,16 @@ "StatusCode": 202 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzc3MzItV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpjM016SXRWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzg2ODktV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpnMk9Ea3RWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -1119,22 +1185,22 @@ "no-cache" ], "Location": [ - "https://management.azure.com/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzc3MzItV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01" + "https://management.azure.com/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzg2ODktV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01" ], "Retry-After": [ "15" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11991" + "11980" ], "x-ms-request-id": [ - "6dd50dbe-7b98-452d-9cd5-88c8092d4ad9" + "f78b544f-9b4c-4f97-ac54-0c1969b9f459" ], "x-ms-correlation-request-id": [ - "6dd50dbe-7b98-452d-9cd5-88c8092d4ad9" + "f78b544f-9b4c-4f97-ac54-0c1969b9f459" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T085747Z:6dd50dbe-7b98-452d-9cd5-88c8092d4ad9" + "KOREASOUTH:20200810T062959Z:f78b544f-9b4c-4f97-ac54-0c1969b9f459" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -1143,7 +1209,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 08:57:46 GMT" + "Mon, 10 Aug 2020 06:29:59 GMT" ], "Expires": [ "-1" @@ -1156,16 +1222,16 @@ "StatusCode": 202 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzc3MzItV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpjM016SXRWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzg2ODktV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpnMk9Ea3RWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -1176,22 +1242,22 @@ "no-cache" ], "Location": [ - "https://management.azure.com/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzc3MzItV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01" + "https://management.azure.com/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzg2ODktV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01" ], "Retry-After": [ "15" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11990" + "11980" ], "x-ms-request-id": [ - "3befa360-6e3e-443e-998a-f2581fea8433" + "4fb1e4e1-8903-4665-955a-b42dc9aafac8" ], "x-ms-correlation-request-id": [ - "3befa360-6e3e-443e-998a-f2581fea8433" + "4fb1e4e1-8903-4665-955a-b42dc9aafac8" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T085802Z:3befa360-6e3e-443e-998a-f2581fea8433" + "KOREASOUTH:20200810T063014Z:4fb1e4e1-8903-4665-955a-b42dc9aafac8" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -1200,7 +1266,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 08:58:02 GMT" + "Mon, 10 Aug 2020 06:30:14 GMT" ], "Expires": [ "-1" @@ -1213,16 +1279,16 @@ "StatusCode": 202 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzc3MzItV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpjM016SXRWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzg2ODktV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpnMk9Ea3RWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -1233,22 +1299,22 @@ "no-cache" ], "Location": [ - "https://management.azure.com/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzc3MzItV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01" + "https://management.azure.com/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzg2ODktV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01" ], "Retry-After": [ "15" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11989" + "11979" ], "x-ms-request-id": [ - "d4b9ef67-671d-48af-8f73-ef1550609610" + "bb7acee0-b014-4e23-a1c3-dfe3284c7531" ], "x-ms-correlation-request-id": [ - "d4b9ef67-671d-48af-8f73-ef1550609610" + "bb7acee0-b014-4e23-a1c3-dfe3284c7531" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T085818Z:d4b9ef67-671d-48af-8f73-ef1550609610" + "KOREASOUTH:20200810T063030Z:bb7acee0-b014-4e23-a1c3-dfe3284c7531" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -1257,7 +1323,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 08:58:17 GMT" + "Mon, 10 Aug 2020 06:30:29 GMT" ], "Expires": [ "-1" @@ -1270,16 +1336,16 @@ "StatusCode": 202 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzc3MzItV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpjM016SXRWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzg2ODktV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpnMk9Ea3RWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -1290,22 +1356,22 @@ "no-cache" ], "Location": [ - "https://management.azure.com/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzc3MzItV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01" + "https://management.azure.com/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzg2ODktV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01" ], "Retry-After": [ "15" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11988" + "11978" ], "x-ms-request-id": [ - "bd7ee39c-62ad-4ee3-9695-a24d2b0cbabf" + "9081fa5e-7d27-4f7a-b9e6-a13713170a1e" ], "x-ms-correlation-request-id": [ - "bd7ee39c-62ad-4ee3-9695-a24d2b0cbabf" + "9081fa5e-7d27-4f7a-b9e6-a13713170a1e" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T085833Z:bd7ee39c-62ad-4ee3-9695-a24d2b0cbabf" + "KOREASOUTH:20200810T063045Z:9081fa5e-7d27-4f7a-b9e6-a13713170a1e" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -1314,7 +1380,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 08:58:33 GMT" + "Mon, 10 Aug 2020 06:30:45 GMT" ], "Expires": [ "-1" @@ -1327,16 +1393,16 @@ "StatusCode": 202 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzc3MzItV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpjM016SXRWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzg2ODktV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpnMk9Ea3RWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -1347,22 +1413,22 @@ "no-cache" ], "Location": [ - "https://management.azure.com/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzc3MzItV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01" + "https://management.azure.com/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzg2ODktV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01" ], "Retry-After": [ "15" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11987" + "11977" ], "x-ms-request-id": [ - "0ccc7b48-694e-4acd-8edc-473c961f2314" + "54481ca8-4b69-49b1-be1e-ed350737c43c" ], "x-ms-correlation-request-id": [ - "0ccc7b48-694e-4acd-8edc-473c961f2314" + "54481ca8-4b69-49b1-be1e-ed350737c43c" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T085849Z:0ccc7b48-694e-4acd-8edc-473c961f2314" + "KOREASOUTH:20200810T063100Z:54481ca8-4b69-49b1-be1e-ed350737c43c" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -1371,7 +1437,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 08:58:48 GMT" + "Mon, 10 Aug 2020 06:31:00 GMT" ], "Expires": [ "-1" @@ -1384,16 +1450,16 @@ "StatusCode": 202 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzc3MzItV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpjM016SXRWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzg2ODktV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpnMk9Ea3RWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -1404,16 +1470,16 @@ "no-cache" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11986" + "11976" ], "x-ms-request-id": [ - "1272eca2-3d01-4b6d-bb70-085739ad26ce" + "df395d58-d8d6-4ee1-9eda-578fde3d89a7" ], "x-ms-correlation-request-id": [ - "1272eca2-3d01-4b6d-bb70-085739ad26ce" + "df395d58-d8d6-4ee1-9eda-578fde3d89a7" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T085904Z:1272eca2-3d01-4b6d-bb70-085739ad26ce" + "KOREASOUTH:20200810T063116Z:df395d58-d8d6-4ee1-9eda-578fde3d89a7" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -1422,7 +1488,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 08:59:03 GMT" + "Mon, 10 Aug 2020 06:31:15 GMT" ], "Expires": [ "-1" @@ -1435,16 +1501,16 @@ "StatusCode": 200 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzc3MzItV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpjM016SXRWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzg2ODktV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpnMk9Ea3RWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -1455,16 +1521,16 @@ "no-cache" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11985" + "11975" ], "x-ms-request-id": [ - "4f574717-8927-4bb6-8f49-1e03cbe24e89" + "8dfc6400-5d13-4a75-8d79-d328734f76d4" ], "x-ms-correlation-request-id": [ - "4f574717-8927-4bb6-8f49-1e03cbe24e89" + "8dfc6400-5d13-4a75-8d79-d328734f76d4" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T085904Z:4f574717-8927-4bb6-8f49-1e03cbe24e89" + "KOREASOUTH:20200810T063116Z:8dfc6400-5d13-4a75-8d79-d328734f76d4" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -1473,7 +1539,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 08:59:04 GMT" + "Mon, 10 Aug 2020 06:31:15 GMT" ], "Expires": [ "-1" @@ -1488,16 +1554,16 @@ ], "Names": { "Test-GetVault": [ - "ps7732", - "ps690", - "ps1138", - "ps901" + "ps8689", + "ps410", + "ps1942", + "ps6609" ] }, "Variables": { - "ResourceGroupName": "pshtestrg7941", + "ResourceGroupName": "pshtestrg3785", "Location": "northcentralus", - "PreCreatedVault": "pshtestvault2685", + "PreCreatedVault": "pshtestvault8327", "SubscriptionId": "c9cbd920-c00c-427c-852b-8aaf38badaeb", "TenantId": "72f988bf-86f1-41af-91ab-2d7cd011db47" } diff --git a/src/KeyVault/KeyVault.Test/SessionRecords/Microsoft.Azure.Commands.KeyVault.Test.ScenarioTests.KeyVaultManagementTests/TestListVaults.json b/src/KeyVault/KeyVault.Test/SessionRecords/Microsoft.Azure.Commands.KeyVault.Test.ScenarioTests.KeyVaultManagementTests/TestListVaults.json index d391dcddf7f9..17150caf1b63 100644 --- a/src/KeyVault/KeyVault.Test/SessionRecords/Microsoft.Azure.Commands.KeyVault.Test.ScenarioTests.KeyVaultManagementTests/TestListVaults.json +++ b/src/KeyVault/KeyVault.Test/SessionRecords/Microsoft.Azure.Commands.KeyVault.Test.ScenarioTests.KeyVaultManagementTests/TestListVaults.json @@ -7,16 +7,16 @@ "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "b044a06f-6329-47ba-8e50-62ed11d61bc3" + "361205fc-3d74-4924-a4db-f11ebbdb73da" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -27,16 +27,16 @@ "no-cache" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11996" + "11978" ], "x-ms-request-id": [ - "34a0724d-2a2e-4bf3-9b7c-bc3deaeb3b82" + "b45db92c-6eae-4e08-8c08-8f6042ca40fb" ], "x-ms-correlation-request-id": [ - "34a0724d-2a2e-4bf3-9b7c-bc3deaeb3b82" + "b45db92c-6eae-4e08-8c08-8f6042ca40fb" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T090003Z:34a0724d-2a2e-4bf3-9b7c-bc3deaeb3b82" + "KOREASOUTH:20200810T064041Z:b45db92c-6eae-4e08-8c08-8f6042ca40fb" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -45,7 +45,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 09:00:02 GMT" + "Mon, 10 Aug 2020 06:40:41 GMT" ], "Content-Type": [ "application/json; charset=utf-8" @@ -54,10 +54,10 @@ "-1" ], "Content-Length": [ - "249" + "10938" ] }, - "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/providers/Microsoft.Resources\",\r\n \"namespace\": \"Microsoft.Resources\",\r\n \"authorization\": {\r\n \"applicationId\": \"3b990c8b-9607-4c2a-8b04-1d41985facca\"\r\n },\r\n \"resourceTypes\": [],\r\n \"registrationState\": \"Registered\"\r\n}", + "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/providers/Microsoft.Resources\",\r\n \"namespace\": \"Microsoft.Resources\",\r\n \"authorization\": {\r\n \"applicationId\": \"3b990c8b-9607-4c2a-8b04-1d41985facca\"\r\n },\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"tenants\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2020-01-01\",\r\n \"2019-09-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"operationresults\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"notifyResourceJobs\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"tags\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-10-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\"\r\n ],\r\n \"capabilities\": \"SupportsExtension\"\r\n },\r\n {\r\n \"resourceType\": \"checkPolicyCompliance\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"providers\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"checkresourcename\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"calculateTemplateHash\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"resources\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"subscriptions\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-10-01\",\r\n \"2019-09-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"subscriptions/resources\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"subscriptions/providers\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"subscriptions/operationresults\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"resourceGroups\",\r\n \"locations\": [\r\n \"Central US\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US\",\r\n \"East US 2\",\r\n \"West US\",\r\n \"West US 2\",\r\n \"North Central US\",\r\n \"South Central US\",\r\n \"West Central US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Brazil South\",\r\n \"Australia Southeast\",\r\n \"Australia East\",\r\n \"West India\",\r\n \"South India\",\r\n \"Central India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"South Africa North\",\r\n \"UAE North\",\r\n \"Australia Central\",\r\n \"Switzerland North\",\r\n \"Germany West Central\",\r\n \"Norway East\",\r\n \"East US 2 EUAP\",\r\n \"Central US EUAP\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"subscriptions/resourceGroups\",\r\n \"locations\": [\r\n \"Central US\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US\",\r\n \"East US 2\",\r\n \"West US\",\r\n \"West US 2\",\r\n \"North Central US\",\r\n \"South Central US\",\r\n \"West Central US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Brazil South\",\r\n \"Australia Southeast\",\r\n \"Australia East\",\r\n \"West India\",\r\n \"South India\",\r\n \"Central India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"South Africa North\",\r\n \"UAE North\",\r\n \"Australia Central\",\r\n \"Switzerland North\",\r\n \"Germany West Central\",\r\n \"Norway East\",\r\n \"East US 2 EUAP\",\r\n \"Central US EUAP\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"subscriptions/resourcegroups/resources\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"subscriptions/locations\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"subscriptions/tagnames\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"subscriptions/tagNames/tagValues\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"deployments\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2020-06-01\",\r\n \"2019-09-01\",\r\n \"2019-08-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"deployments/operations\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2020-06-01\",\r\n \"2019-09-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"links\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ],\r\n \"capabilities\": \"SupportsExtension\"\r\n },\r\n {\r\n \"resourceType\": \"operations\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2015-01-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"deploymentScripts\",\r\n \"locations\": [\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"Australia East\",\r\n \"Brazil South\",\r\n \"Canada Central\",\r\n \"East US 2\",\r\n \"East US\",\r\n \"Central US\",\r\n \"North Central US\",\r\n \"UK South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"Japan East\",\r\n \"Korea Central\",\r\n \"North Europe\",\r\n \"West Central US\",\r\n \"West Europe\",\r\n \"West US 2\",\r\n \"West US\",\r\n \"South Central US\",\r\n \"Canada East\",\r\n \"Central US EUAP\",\r\n \"East US 2 EUAP\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-10-01-preview\"\r\n ],\r\n \"capabilities\": \"None\"\r\n },\r\n {\r\n \"resourceType\": \"deploymentScripts/logs\",\r\n \"locations\": [\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"Australia East\",\r\n \"Brazil South\",\r\n \"Canada Central\",\r\n \"East US 2\",\r\n \"East US\",\r\n \"Central US\",\r\n \"North Central US\",\r\n \"UK South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"Japan East\",\r\n \"Korea Central\",\r\n \"North Europe\",\r\n \"West Central US\",\r\n \"West Europe\",\r\n \"West US 2\",\r\n \"West US\",\r\n \"South Central US\",\r\n \"Canada East\",\r\n \"Central US EUAP\",\r\n \"East US 2 EUAP\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-10-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations/deploymentScriptOperationResults\",\r\n \"locations\": [\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"Australia East\",\r\n \"Brazil South\",\r\n \"Canada Central\",\r\n \"East US 2\",\r\n \"East US\",\r\n \"Central US\",\r\n \"North Central US\",\r\n \"UK South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"Japan East\",\r\n \"Korea Central\",\r\n \"North Europe\",\r\n \"West Central US\",\r\n \"West Europe\",\r\n \"West US 2\",\r\n \"West US\",\r\n \"South Central US\",\r\n \"Canada East\",\r\n \"Central US EUAP\",\r\n \"East US 2 EUAP\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-10-01-preview\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"Registered\"\r\n}", "StatusCode": 200 }, { @@ -67,16 +67,16 @@ "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "d4712df2-64ac-4a8c-8786-772d9918044d" + "50af0ba6-795c-4fde-87bd-b0f3f7b4b3b4" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -87,16 +87,16 @@ "no-cache" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11995" + "11977" ], "x-ms-request-id": [ - "ae552186-551a-41b0-b329-995f23f41c8d" + "c652e000-e81a-4017-bc26-bbb9d49a60da" ], "x-ms-correlation-request-id": [ - "ae552186-551a-41b0-b329-995f23f41c8d" + "c652e000-e81a-4017-bc26-bbb9d49a60da" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T090003Z:ae552186-551a-41b0-b329-995f23f41c8d" + "KOREASOUTH:20200810T064042Z:c652e000-e81a-4017-bc26-bbb9d49a60da" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -105,7 +105,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 09:00:02 GMT" + "Mon, 10 Aug 2020 06:40:41 GMT" ], "Content-Type": [ "application/json; charset=utf-8" @@ -114,29 +114,29 @@ "-1" ], "Content-Length": [ - "5958" + "7541" ] }, - "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/providers/Microsoft.KeyVault\",\r\n \"namespace\": \"Microsoft.KeyVault\",\r\n \"authorizations\": [\r\n {\r\n \"applicationId\": \"cfa8b339-82a2-471a-a3c9-0fc0be7a4093\",\r\n \"roleDefinitionId\": \"1cf9858a-28a2-4228-abba-94e606305b95\"\r\n },\r\n {\r\n \"applicationId\": \"589d5083-6f11-4d30-a62a-a4b316a14abf\"\r\n }\r\n ],\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"vaults\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"Australia Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"Switzerland North\",\r\n \"Germany West Central\",\r\n \"Norway East\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\",\r\n \"2015-06-01\"\r\n ],\r\n \"capabilities\": \"CrossResourceGroupResourceMove, CrossSubscriptionResourceMove\"\r\n },\r\n {\r\n \"resourceType\": \"vaults/secrets\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"Australia Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"Switzerland North\",\r\n \"Germany West Central\",\r\n \"Norway East\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\",\r\n \"2015-06-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"vaults/accessPolicies\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"Australia Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"Switzerland North\",\r\n \"Germany West Central\",\r\n \"Norway East\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\",\r\n \"2015-06-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"operations\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\",\r\n \"2015-06-01\",\r\n \"2014-12-19-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"checkNameAvailability\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\",\r\n \"2015-06-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"deletedVaults\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"Australia Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"Switzerland North\",\r\n \"Germany West Central\",\r\n \"Norway East\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations/deletedVaults\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"Australia Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"Switzerland North\",\r\n \"Germany West Central\",\r\n \"Norway East\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations/deleteVirtualNetworkOrSubnets\",\r\n \"locations\": [\r\n \"East US\",\r\n \"North Central US\",\r\n \"West Europe\",\r\n \"North Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Australia Central\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"Switzerland North\",\r\n \"Germany West Central\",\r\n \"Norway East\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations/operationResults\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"Australia Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"Switzerland North\",\r\n \"Germany West Central\",\r\n \"Norway East\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"vaults/eventGridFilters\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"Australia Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"Switzerland North\",\r\n \"Germany West Central\",\r\n \"Norway East\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"Registered\"\r\n}", + "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/providers/Microsoft.KeyVault\",\r\n \"namespace\": \"Microsoft.KeyVault\",\r\n \"authorizations\": [\r\n {\r\n \"applicationId\": \"cfa8b339-82a2-471a-a3c9-0fc0be7a4093\",\r\n \"roleDefinitionId\": \"1cf9858a-28a2-4228-abba-94e606305b95\"\r\n },\r\n {\r\n \"applicationId\": \"589d5083-6f11-4d30-a62a-a4b316a14abf\"\r\n }\r\n ],\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"operations\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\",\r\n \"2015-06-01\",\r\n \"2014-12-19-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"checkNameAvailability\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\",\r\n \"2015-06-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"vaults\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"East US 2 EUAP\",\r\n \"Central US EUAP\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"France South\",\r\n \"Australia Central\",\r\n \"Australia Central 2\",\r\n \"UAE Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"South Africa West\",\r\n \"Switzerland North\",\r\n \"Switzerland West\",\r\n \"Germany North\",\r\n \"Germany West Central\",\r\n \"Norway East\",\r\n \"Norway West\",\r\n \"Brazil Southeast\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\",\r\n \"2015-06-01\"\r\n ],\r\n \"capabilities\": \"CrossResourceGroupResourceMove, CrossSubscriptionResourceMove\"\r\n },\r\n {\r\n \"resourceType\": \"vaults/secrets\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"East US 2 EUAP\",\r\n \"Central US EUAP\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"France South\",\r\n \"Australia Central\",\r\n \"Australia Central 2\",\r\n \"UAE Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"South Africa West\",\r\n \"Switzerland North\",\r\n \"Switzerland West\",\r\n \"Germany North\",\r\n \"Germany West Central\",\r\n \"Norway East\",\r\n \"Norway West\",\r\n \"Brazil Southeast\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\",\r\n \"2015-06-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"vaults/accessPolicies\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"East US 2 EUAP\",\r\n \"Central US EUAP\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"France South\",\r\n \"Australia Central\",\r\n \"Australia Central 2\",\r\n \"UAE Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"South Africa West\",\r\n \"Switzerland North\",\r\n \"Switzerland West\",\r\n \"Germany North\",\r\n \"Germany West Central\",\r\n \"Norway East\",\r\n \"Norway West\",\r\n \"Brazil Southeast\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\",\r\n \"2015-06-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"deletedVaults\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"East US 2 EUAP\",\r\n \"Central US EUAP\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"France South\",\r\n \"Australia Central\",\r\n \"Australia Central 2\",\r\n \"UAE Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"South Africa West\",\r\n \"Switzerland North\",\r\n \"Switzerland West\",\r\n \"Germany North\",\r\n \"Germany West Central\",\r\n \"Norway East\",\r\n \"Norway West\",\r\n \"Brazil Southeast\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations/deletedVaults\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"East US 2 EUAP\",\r\n \"Central US EUAP\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"France South\",\r\n \"Australia Central\",\r\n \"Australia Central 2\",\r\n \"UAE Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"South Africa West\",\r\n \"Switzerland North\",\r\n \"Switzerland West\",\r\n \"Germany North\",\r\n \"Germany West Central\",\r\n \"Norway East\",\r\n \"Norway West\",\r\n \"Brazil Southeast\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations/deleteVirtualNetworkOrSubnets\",\r\n \"locations\": [\r\n \"East US\",\r\n \"North Central US\",\r\n \"West Europe\",\r\n \"North Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Australia Central\",\r\n \"Australia Central 2\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"Central US EUAP\",\r\n \"East US 2 EUAP\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"France South\",\r\n \"UAE Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"South Africa West\",\r\n \"Switzerland North\",\r\n \"Switzerland West\",\r\n \"Germany North\",\r\n \"Germany West Central\",\r\n \"Norway East\",\r\n \"Norway West\",\r\n \"Brazil Southeast\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations/operationResults\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"East US 2 EUAP\",\r\n \"Central US EUAP\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"France South\",\r\n \"Australia Central\",\r\n \"Australia Central 2\",\r\n \"UAE Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"South Africa West\",\r\n \"Switzerland North\",\r\n \"Switzerland West\",\r\n \"Germany North\",\r\n \"Germany West Central\",\r\n \"Norway East\",\r\n \"Norway West\",\r\n \"Brazil Southeast\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"vaults/eventGridFilters\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"East US 2 EUAP\",\r\n \"Central US EUAP\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"France South\",\r\n \"Australia Central\",\r\n \"Australia Central 2\",\r\n \"UAE Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"South Africa West\",\r\n \"Switzerland North\",\r\n \"Switzerland West\",\r\n \"Germany North\",\r\n \"Germany West Central\",\r\n \"Norway East\",\r\n \"Norway West\",\r\n \"Brazil Southeast\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"managedHSMs\",\r\n \"locations\": [\r\n \"Central US EUAP\",\r\n \"East US 2\"\r\n ],\r\n \"apiVersions\": [\r\n \"2020-04-01-preview\"\r\n ],\r\n \"capabilities\": \"CrossResourceGroupResourceMove, CrossSubscriptionResourceMove\"\r\n }\r\n ],\r\n \"registrationState\": \"Registered\"\r\n}", "StatusCode": 200 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourcegroups/ps6387?api-version=2016-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlZ3JvdXBzL3BzNjM4Nz9hcGktdmVyc2lvbj0yMDE2LTA5LTAx", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourcegroups/ps5160?api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlZ3JvdXBzL3BzNTE2MD9hcGktdmVyc2lvbj0yMDE2LTA5LTAx", "RequestMethod": "PUT", "RequestBody": "{\r\n \"location\": \"West US\"\r\n}", "RequestHeaders": { "x-ms-client-request-id": [ - "84b99b97-04e0-4a7e-85ca-870d125ed6ff" + "63dd3aa1-4f7c-4035-b5f0-af1d9d3eec8b" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ], "Content-Type": [ "application/json; charset=utf-8" @@ -153,16 +153,16 @@ "no-cache" ], "x-ms-ratelimit-remaining-subscription-writes": [ - "1198" + "1195" ], "x-ms-request-id": [ - "243dff5c-073e-49f9-934d-4f1a863329fc" + "927a5997-5058-43be-af52-4a24e2a806b1" ], "x-ms-correlation-request-id": [ - "243dff5c-073e-49f9-934d-4f1a863329fc" + "927a5997-5058-43be-af52-4a24e2a806b1" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T090007Z:243dff5c-073e-49f9-934d-4f1a863329fc" + "KOREASOUTH:20200810T064043Z:927a5997-5058-43be-af52-4a24e2a806b1" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -171,7 +171,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 09:00:06 GMT" + "Mon, 10 Aug 2020 06:40:43 GMT" ], "Content-Length": [ "165" @@ -183,7 +183,7 @@ "-1" ] }, - "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6387\",\r\n \"name\": \"ps6387\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\"\r\n }\r\n}", + "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps5160\",\r\n \"name\": \"ps5160\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\"\r\n }\r\n}", "StatusCode": 201 }, { @@ -193,16 +193,16 @@ "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "2cb0f84c-0f5d-45a2-80f6-ba2e516efbe4" + "e6d6de0a-11c2-436c-b720-6092f220ed80" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -213,16 +213,16 @@ "no-cache" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11994" + "11976" ], "x-ms-request-id": [ - "c7e1d805-96af-4c8e-a606-0e049f73af39" + "a6c0d0ec-dca7-4e25-afeb-ed908ec86c46" ], "x-ms-correlation-request-id": [ - "c7e1d805-96af-4c8e-a606-0e049f73af39" + "a6c0d0ec-dca7-4e25-afeb-ed908ec86c46" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T090007Z:c7e1d805-96af-4c8e-a606-0e049f73af39" + "KOREASOUTH:20200810T064043Z:a6c0d0ec-dca7-4e25-afeb-ed908ec86c46" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -231,7 +231,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 09:00:06 GMT" + "Mon, 10 Aug 2020 06:40:43 GMT" ], "Content-Type": [ "application/json; charset=utf-8" @@ -240,10 +240,10 @@ "-1" ], "Content-Length": [ - "1170" + "274" ] }, - "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps267\",\r\n \"name\": \"ps267\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps4721\",\r\n \"name\": \"ps4721\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {\r\n \"asdf\": \"qwerty\"\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps5726\",\r\n \"name\": \"ps5726\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/pshtestrg1927/providers/Microsoft.KeyVault/vaults/pshtestvault6960\",\r\n \"name\": \"pshtestvault6960\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"northcentralus\",\r\n \"tags\": {\r\n \"testtag\": \"testvalue\"\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/pshtestrg329/providers/Microsoft.KeyVault/vaults/pshtestvault5414\",\r\n \"name\": \"pshtestvault5414\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"northcentralus\",\r\n \"tags\": {\r\n \"testtag\": \"testvalue\"\r\n }\r\n }\r\n ]\r\n}", + "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/pshtestrg1924/providers/Microsoft.KeyVault/vaults/pshtestvault1990\",\r\n \"name\": \"pshtestvault1990\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"northcentralus\",\r\n \"tags\": {\r\n \"testtag\": \"testvalue\"\r\n }\r\n }\r\n ]\r\n}", "StatusCode": 200 }, { @@ -253,16 +253,16 @@ "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "dca4481f-76a3-4705-909f-a4cb2609904c" + "2e650db7-6362-44bd-a4db-5a6759e65488" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -273,16 +273,16 @@ "no-cache" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11993" + "11975" ], "x-ms-request-id": [ - "6986def4-2ea5-4aff-9b8b-059f67fd8f5f" + "6b9a0c2a-6dfb-4798-a9ba-67e18d06d6b2" ], "x-ms-correlation-request-id": [ - "6986def4-2ea5-4aff-9b8b-059f67fd8f5f" + "6b9a0c2a-6dfb-4798-a9ba-67e18d06d6b2" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T090045Z:6986def4-2ea5-4aff-9b8b-059f67fd8f5f" + "KOREASOUTH:20200810T064121Z:6b9a0c2a-6dfb-4798-a9ba-67e18d06d6b2" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -291,7 +291,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 09:00:45 GMT" + "Mon, 10 Aug 2020 06:41:20 GMT" ], "Content-Type": [ "application/json; charset=utf-8" @@ -300,10 +300,10 @@ "-1" ], "Content-Length": [ - "1375" + "218" ] }, - "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6387/providers/Microsoft.KeyVault/vaults/ps168\",\r\n \"name\": \"ps168\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps267\",\r\n \"name\": \"ps267\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps4721\",\r\n \"name\": \"ps4721\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {\r\n \"asdf\": \"qwerty\"\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps5726\",\r\n \"name\": \"ps5726\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/pshtestrg1927/providers/Microsoft.KeyVault/vaults/pshtestvault6960\",\r\n \"name\": \"pshtestvault6960\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"northcentralus\",\r\n \"tags\": {\r\n \"testtag\": \"testvalue\"\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/pshtestrg329/providers/Microsoft.KeyVault/vaults/pshtestvault5414\",\r\n \"name\": \"pshtestvault5414\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"northcentralus\",\r\n \"tags\": {\r\n \"testtag\": \"testvalue\"\r\n }\r\n }\r\n ]\r\n}", + "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps5160/providers/Microsoft.KeyVault/vaults/ps1685\",\r\n \"name\": \"ps1685\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n }\r\n ]\r\n}", "StatusCode": 200 }, { @@ -313,16 +313,16 @@ "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "6ff8dc18-a1bd-4617-948c-8e236086a187" + "d280cbbe-6929-4f8e-bd7a-c3e4f0cdb759" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -333,16 +333,16 @@ "no-cache" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11992" + "11974" ], "x-ms-request-id": [ - "3b29eb5a-c804-4b8a-980b-07dabd593444" + "fdb44d30-f6f8-4430-8b4d-51fbb58a24f0" ], "x-ms-correlation-request-id": [ - "3b29eb5a-c804-4b8a-980b-07dabd593444" + "fdb44d30-f6f8-4430-8b4d-51fbb58a24f0" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T090120Z:3b29eb5a-c804-4b8a-980b-07dabd593444" + "KOREASOUTH:20200810T064154Z:fdb44d30-f6f8-4430-8b4d-51fbb58a24f0" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -351,7 +351,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 09:01:19 GMT" + "Mon, 10 Aug 2020 06:41:54 GMT" ], "Content-Type": [ "application/json; charset=utf-8" @@ -360,10 +360,10 @@ "-1" ], "Content-Length": [ - "1338" + "444" ] }, - "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6387/providers/Microsoft.KeyVault/vaults/ps168\",\r\n \"name\": \"ps168\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6387/providers/Microsoft.KeyVault/vaults/ps8289\",\r\n \"name\": \"ps8289\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {\r\n \"abcdefg\": \"bcdefgh\"\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps267\",\r\n \"name\": \"ps267\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps4721\",\r\n \"name\": \"ps4721\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {\r\n \"asdf\": \"qwerty\"\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps5726\",\r\n \"name\": \"ps5726\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/pshtestrg329/providers/Microsoft.KeyVault/vaults/pshtestvault5414\",\r\n \"name\": \"pshtestvault5414\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"northcentralus\",\r\n \"tags\": {\r\n \"testtag\": \"testvalue\"\r\n }\r\n }\r\n ]\r\n}", + "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps5160/providers/Microsoft.KeyVault/vaults/ps1685\",\r\n \"name\": \"ps1685\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps5160/providers/Microsoft.KeyVault/vaults/ps7285\",\r\n \"name\": \"ps7285\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {\r\n \"abcdefg\": \"bcdefgh\"\r\n }\r\n }\r\n ]\r\n}", "StatusCode": 200 }, { @@ -373,16 +373,16 @@ "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "4e9924fa-9d89-41ca-911d-33473d1f3d64" + "1c1e3561-b39b-4395-8078-57cf113656e8" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -393,16 +393,16 @@ "no-cache" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11991" + "11972" ], "x-ms-request-id": [ - "c59726b0-35f6-42d2-8c43-65c02752bee6" + "9f8f71b2-ae67-4f57-be64-fdc40efd85d7" ], "x-ms-correlation-request-id": [ - "c59726b0-35f6-42d2-8c43-65c02752bee6" + "9f8f71b2-ae67-4f57-be64-fdc40efd85d7" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T090120Z:c59726b0-35f6-42d2-8c43-65c02752bee6" + "KOREASOUTH:20200810T064154Z:9f8f71b2-ae67-4f57-be64-fdc40efd85d7" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -411,7 +411,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 09:01:19 GMT" + "Mon, 10 Aug 2020 06:41:54 GMT" ], "Content-Type": [ "application/json; charset=utf-8" @@ -420,10 +420,10 @@ "-1" ], "Content-Length": [ - "1338" + "444" ] }, - "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6387/providers/Microsoft.KeyVault/vaults/ps168\",\r\n \"name\": \"ps168\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6387/providers/Microsoft.KeyVault/vaults/ps8289\",\r\n \"name\": \"ps8289\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {\r\n \"abcdefg\": \"bcdefgh\"\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps267\",\r\n \"name\": \"ps267\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps4721\",\r\n \"name\": \"ps4721\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {\r\n \"asdf\": \"qwerty\"\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps5726\",\r\n \"name\": \"ps5726\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/pshtestrg329/providers/Microsoft.KeyVault/vaults/pshtestvault5414\",\r\n \"name\": \"pshtestvault5414\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"northcentralus\",\r\n \"tags\": {\r\n \"testtag\": \"testvalue\"\r\n }\r\n }\r\n ]\r\n}", + "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps5160/providers/Microsoft.KeyVault/vaults/ps1685\",\r\n \"name\": \"ps1685\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps5160/providers/Microsoft.KeyVault/vaults/ps7285\",\r\n \"name\": \"ps7285\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {\r\n \"abcdefg\": \"bcdefgh\"\r\n }\r\n }\r\n ]\r\n}", "StatusCode": 200 }, { @@ -433,16 +433,16 @@ "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "1f7cb620-2683-49d1-b4c3-f5b2bae60196" + "195f098d-e083-40b2-916d-7b9767077643" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -453,16 +453,16 @@ "no-cache" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11988" + "11966" ], "x-ms-request-id": [ - "d06d2557-1330-434a-b879-834014afbf69" + "861646d5-b360-4023-afb9-cce10f0ab149" ], "x-ms-correlation-request-id": [ - "d06d2557-1330-434a-b879-834014afbf69" + "861646d5-b360-4023-afb9-cce10f0ab149" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T090120Z:d06d2557-1330-434a-b879-834014afbf69" + "KOREASOUTH:20200810T064155Z:861646d5-b360-4023-afb9-cce10f0ab149" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -471,7 +471,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 09:01:20 GMT" + "Mon, 10 Aug 2020 06:41:55 GMT" ], "Content-Type": [ "application/json; charset=utf-8" @@ -480,10 +480,10 @@ "-1" ], "Content-Length": [ - "1338" + "444" ] }, - "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6387/providers/Microsoft.KeyVault/vaults/ps168\",\r\n \"name\": \"ps168\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6387/providers/Microsoft.KeyVault/vaults/ps8289\",\r\n \"name\": \"ps8289\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {\r\n \"abcdefg\": \"bcdefgh\"\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps267\",\r\n \"name\": \"ps267\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps4721\",\r\n \"name\": \"ps4721\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {\r\n \"asdf\": \"qwerty\"\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps5726\",\r\n \"name\": \"ps5726\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/pshtestrg329/providers/Microsoft.KeyVault/vaults/pshtestvault5414\",\r\n \"name\": \"pshtestvault5414\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"northcentralus\",\r\n \"tags\": {\r\n \"testtag\": \"testvalue\"\r\n }\r\n }\r\n ]\r\n}", + "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps5160/providers/Microsoft.KeyVault/vaults/ps1685\",\r\n \"name\": \"ps1685\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps5160/providers/Microsoft.KeyVault/vaults/ps7285\",\r\n \"name\": \"ps7285\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {\r\n \"abcdefg\": \"bcdefgh\"\r\n }\r\n }\r\n ]\r\n}", "StatusCode": 200 }, { @@ -493,16 +493,16 @@ "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "5d45c919-4c03-439f-9bda-9ee43ff46558" + "07dc1e9b-1663-459b-a1c6-19dbd8bf589f" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -513,16 +513,16 @@ "no-cache" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11987" + "11964" ], "x-ms-request-id": [ - "b2524ed7-c93b-4dea-bb96-5de6c6384278" + "0d6763b8-f1b9-4cba-828e-d4ec72d20b98" ], "x-ms-correlation-request-id": [ - "b2524ed7-c93b-4dea-bb96-5de6c6384278" + "0d6763b8-f1b9-4cba-828e-d4ec72d20b98" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T090121Z:b2524ed7-c93b-4dea-bb96-5de6c6384278" + "KOREASOUTH:20200810T064156Z:0d6763b8-f1b9-4cba-828e-d4ec72d20b98" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -531,7 +531,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 09:01:20 GMT" + "Mon, 10 Aug 2020 06:41:55 GMT" ], "Content-Type": [ "application/json; charset=utf-8" @@ -540,10 +540,10 @@ "-1" ], "Content-Length": [ - "1338" + "444" ] }, - "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6387/providers/Microsoft.KeyVault/vaults/ps168\",\r\n \"name\": \"ps168\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6387/providers/Microsoft.KeyVault/vaults/ps8289\",\r\n \"name\": \"ps8289\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {\r\n \"abcdefg\": \"bcdefgh\"\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps267\",\r\n \"name\": \"ps267\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps4721\",\r\n \"name\": \"ps4721\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {\r\n \"asdf\": \"qwerty\"\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps5726\",\r\n \"name\": \"ps5726\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/pshtestrg329/providers/Microsoft.KeyVault/vaults/pshtestvault5414\",\r\n \"name\": \"pshtestvault5414\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"northcentralus\",\r\n \"tags\": {\r\n \"testtag\": \"testvalue\"\r\n }\r\n }\r\n ]\r\n}", + "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps5160/providers/Microsoft.KeyVault/vaults/ps1685\",\r\n \"name\": \"ps1685\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps5160/providers/Microsoft.KeyVault/vaults/ps7285\",\r\n \"name\": \"ps7285\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {\r\n \"abcdefg\": \"bcdefgh\"\r\n }\r\n }\r\n ]\r\n}", "StatusCode": 200 }, { @@ -553,16 +553,16 @@ "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "61feccd1-c515-4707-ac26-780f61788005" + "d6fb19b0-f868-4730-91ce-178d90dcec58" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -573,16 +573,16 @@ "no-cache" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11986" + "11962" ], "x-ms-request-id": [ - "3ea994cf-f027-49ee-918d-aeeceba82d70" + "e8a47a70-d59c-42a3-bba4-8314a489961d" ], "x-ms-correlation-request-id": [ - "3ea994cf-f027-49ee-918d-aeeceba82d70" + "e8a47a70-d59c-42a3-bba4-8314a489961d" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T090121Z:3ea994cf-f027-49ee-918d-aeeceba82d70" + "KOREASOUTH:20200810T064156Z:e8a47a70-d59c-42a3-bba4-8314a489961d" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -591,7 +591,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 09:01:20 GMT" + "Mon, 10 Aug 2020 06:41:55 GMT" ], "Content-Type": [ "application/json; charset=utf-8" @@ -600,10 +600,10 @@ "-1" ], "Content-Length": [ - "1338" + "444" ] }, - "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6387/providers/Microsoft.KeyVault/vaults/ps168\",\r\n \"name\": \"ps168\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6387/providers/Microsoft.KeyVault/vaults/ps8289\",\r\n \"name\": \"ps8289\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {\r\n \"abcdefg\": \"bcdefgh\"\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps267\",\r\n \"name\": \"ps267\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps4721\",\r\n \"name\": \"ps4721\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {\r\n \"asdf\": \"qwerty\"\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps5726\",\r\n \"name\": \"ps5726\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/pshtestrg329/providers/Microsoft.KeyVault/vaults/pshtestvault5414\",\r\n \"name\": \"pshtestvault5414\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"northcentralus\",\r\n \"tags\": {\r\n \"testtag\": \"testvalue\"\r\n }\r\n }\r\n ]\r\n}", + "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps5160/providers/Microsoft.KeyVault/vaults/ps1685\",\r\n \"name\": \"ps1685\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps5160/providers/Microsoft.KeyVault/vaults/ps7285\",\r\n \"name\": \"ps7285\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {\r\n \"abcdefg\": \"bcdefgh\"\r\n }\r\n }\r\n ]\r\n}", "StatusCode": 200 }, { @@ -613,16 +613,16 @@ "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "84001921-b5fa-4b41-a306-91cfd8cff704" + "9034ece9-846e-4448-a2dd-14f1749321bc" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -633,16 +633,16 @@ "no-cache" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11985" + "11960" ], "x-ms-request-id": [ - "7a29c3ec-5c11-48b7-94fc-dc1fc07dbf45" + "f2628c4c-3184-4210-b626-ae257c9f83fd" ], "x-ms-correlation-request-id": [ - "7a29c3ec-5c11-48b7-94fc-dc1fc07dbf45" + "f2628c4c-3184-4210-b626-ae257c9f83fd" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T090121Z:7a29c3ec-5c11-48b7-94fc-dc1fc07dbf45" + "KOREASOUTH:20200810T064156Z:f2628c4c-3184-4210-b626-ae257c9f83fd" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -651,7 +651,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 09:01:20 GMT" + "Mon, 10 Aug 2020 06:41:56 GMT" ], "Content-Type": [ "application/json; charset=utf-8" @@ -660,10 +660,10 @@ "-1" ], "Content-Length": [ - "1338" + "444" ] }, - "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6387/providers/Microsoft.KeyVault/vaults/ps168\",\r\n \"name\": \"ps168\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6387/providers/Microsoft.KeyVault/vaults/ps8289\",\r\n \"name\": \"ps8289\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {\r\n \"abcdefg\": \"bcdefgh\"\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps267\",\r\n \"name\": \"ps267\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps4721\",\r\n \"name\": \"ps4721\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {\r\n \"asdf\": \"qwerty\"\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps5726\",\r\n \"name\": \"ps5726\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/pshtestrg329/providers/Microsoft.KeyVault/vaults/pshtestvault5414\",\r\n \"name\": \"pshtestvault5414\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"northcentralus\",\r\n \"tags\": {\r\n \"testtag\": \"testvalue\"\r\n }\r\n }\r\n ]\r\n}", + "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps5160/providers/Microsoft.KeyVault/vaults/ps1685\",\r\n \"name\": \"ps1685\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps5160/providers/Microsoft.KeyVault/vaults/ps7285\",\r\n \"name\": \"ps7285\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {\r\n \"abcdefg\": \"bcdefgh\"\r\n }\r\n }\r\n ]\r\n}", "StatusCode": 200 }, { @@ -673,16 +673,16 @@ "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "44b0b76c-eed1-4ea2-b19d-1bc9fe61ac69" + "4fb53d8d-423c-4ac1-ba49-d5b2f3d1084e" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -693,16 +693,16 @@ "no-cache" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11984" + "11958" ], "x-ms-request-id": [ - "0b675877-fbb9-436b-926c-4f571740e608" + "d76646d7-887c-4f06-8f71-19c52541cd3c" ], "x-ms-correlation-request-id": [ - "0b675877-fbb9-436b-926c-4f571740e608" + "d76646d7-887c-4f06-8f71-19c52541cd3c" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T090121Z:0b675877-fbb9-436b-926c-4f571740e608" + "KOREASOUTH:20200810T064156Z:d76646d7-887c-4f06-8f71-19c52541cd3c" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -711,7 +711,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 09:01:20 GMT" + "Mon, 10 Aug 2020 06:41:56 GMT" ], "Content-Type": [ "application/json; charset=utf-8" @@ -720,10 +720,10 @@ "-1" ], "Content-Length": [ - "1338" + "444" ] }, - "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6387/providers/Microsoft.KeyVault/vaults/ps168\",\r\n \"name\": \"ps168\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6387/providers/Microsoft.KeyVault/vaults/ps8289\",\r\n \"name\": \"ps8289\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {\r\n \"abcdefg\": \"bcdefgh\"\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps267\",\r\n \"name\": \"ps267\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps4721\",\r\n \"name\": \"ps4721\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {\r\n \"asdf\": \"qwerty\"\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps5726\",\r\n \"name\": \"ps5726\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/pshtestrg329/providers/Microsoft.KeyVault/vaults/pshtestvault5414\",\r\n \"name\": \"pshtestvault5414\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"northcentralus\",\r\n \"tags\": {\r\n \"testtag\": \"testvalue\"\r\n }\r\n }\r\n ]\r\n}", + "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps5160/providers/Microsoft.KeyVault/vaults/ps1685\",\r\n \"name\": \"ps1685\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps5160/providers/Microsoft.KeyVault/vaults/ps7285\",\r\n \"name\": \"ps7285\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {\r\n \"abcdefg\": \"bcdefgh\"\r\n }\r\n }\r\n ]\r\n}", "StatusCode": 200 }, { @@ -733,16 +733,16 @@ "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "7d8893d4-4407-4e05-ae74-0b4253cc698d" + "f88970cc-f44c-4e7f-8f03-d706bd01b3ba" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -753,16 +753,16 @@ "no-cache" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11983" + "11956" ], "x-ms-request-id": [ - "5636d2f7-90dc-43b7-a6a2-fe4124858568" + "ecc9996e-4731-4ffd-b834-cc01637242cf" ], "x-ms-correlation-request-id": [ - "5636d2f7-90dc-43b7-a6a2-fe4124858568" + "ecc9996e-4731-4ffd-b834-cc01637242cf" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T090121Z:5636d2f7-90dc-43b7-a6a2-fe4124858568" + "KOREASOUTH:20200810T064157Z:ecc9996e-4731-4ffd-b834-cc01637242cf" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -771,7 +771,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 09:01:20 GMT" + "Mon, 10 Aug 2020 06:41:56 GMT" ], "Content-Type": [ "application/json; charset=utf-8" @@ -780,10 +780,10 @@ "-1" ], "Content-Length": [ - "1338" + "444" ] }, - "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6387/providers/Microsoft.KeyVault/vaults/ps168\",\r\n \"name\": \"ps168\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6387/providers/Microsoft.KeyVault/vaults/ps8289\",\r\n \"name\": \"ps8289\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {\r\n \"abcdefg\": \"bcdefgh\"\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps267\",\r\n \"name\": \"ps267\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps4721\",\r\n \"name\": \"ps4721\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {\r\n \"asdf\": \"qwerty\"\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7548/providers/Microsoft.KeyVault/vaults/ps5726\",\r\n \"name\": \"ps5726\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/pshtestrg329/providers/Microsoft.KeyVault/vaults/pshtestvault5414\",\r\n \"name\": \"pshtestvault5414\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"northcentralus\",\r\n \"tags\": {\r\n \"testtag\": \"testvalue\"\r\n }\r\n }\r\n ]\r\n}", + "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps5160/providers/Microsoft.KeyVault/vaults/ps1685\",\r\n \"name\": \"ps1685\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps5160/providers/Microsoft.KeyVault/vaults/ps7285\",\r\n \"name\": \"ps7285\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {\r\n \"abcdefg\": \"bcdefgh\"\r\n }\r\n }\r\n ]\r\n}", "StatusCode": 200 }, { @@ -793,16 +793,16 @@ "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "6d7c1cbd-367a-4daf-88f1-bfbab5a05a87" + "0ae50a65-3334-4a0c-aa99-2ffd3e6a5e1e" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Graph.RBAC.Version1.6.GraphRbacManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Graph.RBAC.Version1.6.GraphRbacManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -813,19 +813,22 @@ "no-cache" ], "ocp-aad-diagnostics-server-name": [ - "TS734Rl6ng795Izu9y0PY2DAdtYu6I2GKPGIZyN4T6E=" + "BcM9BIlMb+ZClxdtmrIet155TCJPXStgRNy3Xs9WKzc=" ], "request-id": [ - "bbfa2c9b-7a0b-4ac4-98dd-ec9bf25a93a0" + "370fd80b-127e-44ba-b1ef-3a9f499e7a70" ], "client-request-id": [ - "6d7c1cbd-367a-4daf-88f1-bfbab5a05a87" + "0ae50a65-3334-4a0c-aa99-2ffd3e6a5e1e" ], "x-ms-dirapi-data-contract-version": [ "1.6" ], "ocp-aad-session-key": [ - "Se-bZHfW5_n99tSpFa2o8RKlQ6LXv_jR4H2-bzD70vNnBUyZt2WilDAdiy4LlDq1iX4wySRlh_7lvjFp5WqE7GkZwcthiCpZmcmtTT_bg3Y4yn8Pzlsw9LvJLJj5l32x.49lt993roxvNq38KxaHGo9AscBevjgvORyQU--ZsrGs" + "S9YjvMN3RgiA3te4s0VJ8WdMj9Pk8fWOQnlqhA8MXk7fvCrSNwt0Px7RaDJ4356FW8WN8GwRmqAyKqsi4gtMqHsb3mq2EkK8864_dF9mZgyXU4yyNyEmaFBhxsOTX_2W.2I6wtbIxdx46-2n_Ju9AGNv_QRXkmG3tLB7AutCe6hQ" + ], + "x-ms-resource-unit": [ + "2" ], "DataServiceVersion": [ "3.0;" @@ -843,10 +846,10 @@ "ASP.NET" ], "Duration": [ - "329454" + "287589" ], "Date": [ - "Tue, 31 Mar 2020 09:00:07 GMT" + "Mon, 10 Aug 2020 06:40:43 GMT" ], "Content-Type": [ "application/json; odata=minimalmetadata; streaming=true; charset=utf-8" @@ -858,7 +861,7 @@ "219" ] }, - "ResponseBody": "{\r\n \"odata.error\": {\r\n \"code\": \"Authorization_RequestDenied\",\r\n \"message\": {\r\n \"lang\": \"en\",\r\n \"value\": \"Insufficient privileges to complete the operation.\"\r\n },\r\n \"requestId\": \"bbfa2c9b-7a0b-4ac4-98dd-ec9bf25a93a0\",\r\n \"date\": \"2020-03-31T09:00:07\"\r\n }\r\n}", + "ResponseBody": "{\r\n \"odata.error\": {\r\n \"code\": \"Authorization_RequestDenied\",\r\n \"message\": {\r\n \"lang\": \"en\",\r\n \"value\": \"Insufficient privileges to complete the operation.\"\r\n },\r\n \"requestId\": \"370fd80b-127e-44ba-b1ef-3a9f499e7a70\",\r\n \"date\": \"2020-08-10T06:40:44\"\r\n }\r\n}", "StatusCode": 403 }, { @@ -868,16 +871,16 @@ "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "4d397b9c-b1de-40bd-b029-6c27d82a2bc8" + "c525ef3f-0caa-4cea-9739-88d360f16201" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Graph.RBAC.Version1.6.GraphRbacManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Graph.RBAC.Version1.6.GraphRbacManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -888,19 +891,22 @@ "no-cache" ], "ocp-aad-diagnostics-server-name": [ - "b203fb3/+XasVkOtCF6NEf3BQWXCRQPvel0BUEMaHtU=" + "RoSyBIIaN30hAmu9SEgI7ZBNQXuy33sdsgZZFASGMzU=" ], "request-id": [ - "0e78a8dd-ba36-4f14-a197-cbfd000cd79a" + "71f8567a-8f11-436d-90ca-33203fa516e7" ], "client-request-id": [ - "4d397b9c-b1de-40bd-b029-6c27d82a2bc8" + "c525ef3f-0caa-4cea-9739-88d360f16201" ], "x-ms-dirapi-data-contract-version": [ "1.6" ], "ocp-aad-session-key": [ - "RxCBWxOi4xmMsRf0zep_wlHSUDeiC33rUp0YXrBc-uMlkijdKZ7Mb7WoVoDl4HMs5-DWYD4uO-ED8OooPljLNwGywEWqnLF9OnKUVHYuwBcakQUgFZnQe-RsscZ3jwIK.MJ0K9ECXAi9Yn1_3ranYgqjDbZNH-GnWgEi-KN9YC70" + "jUmWt8ZxJ_awKPr1ift0VgYGq9foImkGQpjDregE6TO3X4FMn74oOBKbBRPKz1cbd3inKtA4oSRmgc7AlnSFv9f1sLTs7vA8KFekXVtTfAIF992HH56sm56x5TLg6YJ0.NuzVFAqp5oMpzRBA4qGYbAxOlhVU4l8PrVuk_EwfKPA" + ], + "x-ms-resource-unit": [ + "2" ], "DataServiceVersion": [ "3.0;" @@ -918,10 +924,10 @@ "ASP.NET" ], "Duration": [ - "367962" + "394441" ], "Date": [ - "Tue, 31 Mar 2020 09:00:44 GMT" + "Mon, 10 Aug 2020 06:41:20 GMT" ], "Content-Type": [ "application/json; odata=minimalmetadata; streaming=true; charset=utf-8" @@ -933,32 +939,32 @@ "219" ] }, - "ResponseBody": "{\r\n \"odata.error\": {\r\n \"code\": \"Authorization_RequestDenied\",\r\n \"message\": {\r\n \"lang\": \"en\",\r\n \"value\": \"Insufficient privileges to complete the operation.\"\r\n },\r\n \"requestId\": \"0e78a8dd-ba36-4f14-a197-cbfd000cd79a\",\r\n \"date\": \"2020-03-31T09:00:45\"\r\n }\r\n}", + "ResponseBody": "{\r\n \"odata.error\": {\r\n \"code\": \"Authorization_RequestDenied\",\r\n \"message\": {\r\n \"lang\": \"en\",\r\n \"value\": \"Insufficient privileges to complete the operation.\"\r\n },\r\n \"requestId\": \"71f8567a-8f11-436d-90ca-33203fa516e7\",\r\n \"date\": \"2020-08-10T06:41:21\"\r\n }\r\n}", "StatusCode": 403 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6387/providers/Microsoft.KeyVault/vaults/ps168?api-version=2019-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzNjM4Ny9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L3ZhdWx0cy9wczE2OD9hcGktdmVyc2lvbj0yMDE5LTA5LTAx", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps5160/providers/Microsoft.KeyVault/vaults/ps1685?api-version=2019-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzNTE2MC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L3ZhdWx0cy9wczE2ODU/YXBpLXZlcnNpb249MjAxOS0wOS0wMQ==", "RequestMethod": "PUT", - "RequestBody": "{\r\n \"location\": \"West US\",\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"sku\": {\r\n \"name\": \"standard\",\r\n \"family\": \"A\"\r\n },\r\n \"accessPolicies\": [],\r\n \"vaultUri\": \"\",\r\n \"enabledForDeployment\": false,\r\n \"enabledForDiskEncryption\": false,\r\n \"enabledForTemplateDeployment\": false,\r\n \"enableSoftDelete\": true,\r\n \"enablePurgeProtection\": true,\r\n \"networkAcls\": {\r\n \"bypass\": \"AzureServices\",\r\n \"defaultAction\": \"Allow\"\r\n }\r\n }\r\n}", + "RequestBody": "{\r\n \"location\": \"West US\",\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"sku\": {\r\n \"name\": \"standard\",\r\n \"family\": \"A\"\r\n },\r\n \"accessPolicies\": [],\r\n \"vaultUri\": \"\",\r\n \"enabledForDeployment\": false,\r\n \"enabledForDiskEncryption\": false,\r\n \"enabledForTemplateDeployment\": false,\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"networkAcls\": {\r\n \"bypass\": \"AzureServices\",\r\n \"defaultAction\": \"Allow\"\r\n }\r\n }\r\n}", "RequestHeaders": { "x-ms-client-request-id": [ - "6faa78dc-91a4-49a5-8178-a6924acdf290" + "e1d1c2b7-3e85-463d-b536-f0295e99c8ac" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.0.0" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.1.0.0" ], "Content-Type": [ "application/json; charset=utf-8" ], "Content-Length": [ - "511" + "513" ] }, "ResponseHeaders": { @@ -969,10 +975,10 @@ "no-cache" ], "x-ms-keyvault-service-version": [ - "1.1.0.276" + "1.1.16.0" ], "x-ms-request-id": [ - "f58a8d55-07f1-4388-8835-bbf1b7faae8a" + "109c4a9c-4efb-4602-a230-97ff3628f09e" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -990,19 +996,19 @@ "ASP.NET" ], "x-ms-ratelimit-remaining-subscription-writes": [ - "1199" + "1196" ], "x-ms-correlation-request-id": [ - "34b7adeb-f813-43fe-9443-806af43b971c" + "a71aeef3-9d02-463d-9abd-bf3166e910f9" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T090014Z:34b7adeb-f813-43fe-9443-806af43b971c" + "KOREASOUTH:20200810T064050Z:a71aeef3-9d02-463d-9abd-bf3166e910f9" ], "Date": [ - "Tue, 31 Mar 2020 09:00:14 GMT" + "Mon, 10 Aug 2020 06:40:50 GMT" ], "Content-Length": [ - "561" + "566" ], "Content-Type": [ "application/json; charset=utf-8" @@ -1011,20 +1017,20 @@ "-1" ] }, - "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6387/providers/Microsoft.KeyVault/vaults/ps168\",\r\n \"name\": \"ps168\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"West US\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"sku\": {\r\n \"family\": \"A\",\r\n \"name\": \"standard\"\r\n },\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"accessPolicies\": [],\r\n \"enabledForDeployment\": false,\r\n \"enabledForDiskEncryption\": false,\r\n \"enabledForTemplateDeployment\": false,\r\n \"enableSoftDelete\": true,\r\n \"enablePurgeProtection\": true,\r\n \"vaultUri\": \"https://ps168.vault.azure.net\",\r\n \"provisioningState\": \"RegisteringDns\"\r\n }\r\n}", + "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps5160/providers/Microsoft.KeyVault/vaults/ps1685\",\r\n \"name\": \"ps1685\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"West US\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"sku\": {\r\n \"family\": \"A\",\r\n \"name\": \"standard\"\r\n },\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"accessPolicies\": [],\r\n \"enabledForDeployment\": false,\r\n \"enabledForDiskEncryption\": false,\r\n \"enabledForTemplateDeployment\": false,\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"vaultUri\": \"https://ps1685.vault.azure.net\",\r\n \"provisioningState\": \"RegisteringDns\"\r\n }\r\n}", "StatusCode": 200 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6387/providers/Microsoft.KeyVault/vaults/ps168?api-version=2019-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzNjM4Ny9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L3ZhdWx0cy9wczE2OD9hcGktdmVyc2lvbj0yMDE5LTA5LTAx", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps5160/providers/Microsoft.KeyVault/vaults/ps1685?api-version=2019-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzNTE2MC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L3ZhdWx0cy9wczE2ODU/YXBpLXZlcnNpb249MjAxOS0wOS0wMQ==", "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.0.0" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.1.0.0" ] }, "ResponseHeaders": { @@ -1035,10 +1041,10 @@ "no-cache" ], "x-ms-keyvault-service-version": [ - "1.1.0.276" + "1.1.16.0" ], "x-ms-request-id": [ - "5ddc1c7a-9ce1-4e64-8b09-19b5a47f4c27" + "a43be145-c19a-4593-b4a1-77dfd2ca974d" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -1056,19 +1062,19 @@ "ASP.NET" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11999" + "11992" ], "x-ms-correlation-request-id": [ - "81db6c3e-185b-493e-8200-e764eacdf91e" + "8179ccda-1771-4649-8c15-b0741b39f9d7" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T090045Z:81db6c3e-185b-493e-8200-e764eacdf91e" + "KOREASOUTH:20200810T064120Z:8179ccda-1771-4649-8c15-b0741b39f9d7" ], "Date": [ - "Tue, 31 Mar 2020 09:00:44 GMT" + "Mon, 10 Aug 2020 06:41:20 GMT" ], "Content-Length": [ - "557" + "562" ], "Content-Type": [ "application/json; charset=utf-8" @@ -1077,32 +1083,32 @@ "-1" ] }, - "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6387/providers/Microsoft.KeyVault/vaults/ps168\",\r\n \"name\": \"ps168\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"West US\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"sku\": {\r\n \"family\": \"A\",\r\n \"name\": \"standard\"\r\n },\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"accessPolicies\": [],\r\n \"enabledForDeployment\": false,\r\n \"enabledForDiskEncryption\": false,\r\n \"enabledForTemplateDeployment\": false,\r\n \"enableSoftDelete\": true,\r\n \"enablePurgeProtection\": true,\r\n \"vaultUri\": \"https://ps168.vault.azure.net/\",\r\n \"provisioningState\": \"Succeeded\"\r\n }\r\n}", + "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps5160/providers/Microsoft.KeyVault/vaults/ps1685\",\r\n \"name\": \"ps1685\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"West US\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"sku\": {\r\n \"family\": \"A\",\r\n \"name\": \"standard\"\r\n },\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"accessPolicies\": [],\r\n \"enabledForDeployment\": false,\r\n \"enabledForDiskEncryption\": false,\r\n \"enabledForTemplateDeployment\": false,\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"vaultUri\": \"https://ps1685.vault.azure.net/\",\r\n \"provisioningState\": \"Succeeded\"\r\n }\r\n}", "StatusCode": 200 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6387/providers/Microsoft.KeyVault/vaults/ps8289?api-version=2019-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzNjM4Ny9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L3ZhdWx0cy9wczgyODk/YXBpLXZlcnNpb249MjAxOS0wOS0wMQ==", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps5160/providers/Microsoft.KeyVault/vaults/ps7285?api-version=2019-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzNTE2MC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L3ZhdWx0cy9wczcyODU/YXBpLXZlcnNpb249MjAxOS0wOS0wMQ==", "RequestMethod": "PUT", - "RequestBody": "{\r\n \"location\": \"West US\",\r\n \"tags\": {\r\n \"abcdefg\": \"bcdefgh\"\r\n },\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"sku\": {\r\n \"name\": \"standard\",\r\n \"family\": \"A\"\r\n },\r\n \"accessPolicies\": [],\r\n \"vaultUri\": \"\",\r\n \"enabledForDeployment\": false,\r\n \"enabledForDiskEncryption\": false,\r\n \"enabledForTemplateDeployment\": false,\r\n \"enableSoftDelete\": true,\r\n \"enablePurgeProtection\": true,\r\n \"networkAcls\": {\r\n \"bypass\": \"AzureServices\",\r\n \"defaultAction\": \"Allow\"\r\n }\r\n }\r\n}", + "RequestBody": "{\r\n \"location\": \"West US\",\r\n \"tags\": {\r\n \"abcdefg\": \"bcdefgh\"\r\n },\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"sku\": {\r\n \"name\": \"standard\",\r\n \"family\": \"A\"\r\n },\r\n \"accessPolicies\": [],\r\n \"vaultUri\": \"\",\r\n \"enabledForDeployment\": false,\r\n \"enabledForDiskEncryption\": false,\r\n \"enabledForTemplateDeployment\": false,\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"networkAcls\": {\r\n \"bypass\": \"AzureServices\",\r\n \"defaultAction\": \"Allow\"\r\n }\r\n }\r\n}", "RequestHeaders": { "x-ms-client-request-id": [ - "1294bb1c-1f96-4041-9408-8f9ad47d30c4" + "6a82ce3a-d4d1-4007-9ab0-32b9262f50a9" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.0.0" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.1.0.0" ], "Content-Type": [ "application/json; charset=utf-8" ], "Content-Length": [ - "556" + "558" ] }, "ResponseHeaders": { @@ -1113,10 +1119,10 @@ "no-cache" ], "x-ms-keyvault-service-version": [ - "1.1.0.276" + "1.1.16.0" ], "x-ms-request-id": [ - "db831014-9e06-4a37-9696-86d2248ee30d" + "076dacfd-b3d0-49a0-8d51-b84922dd75af" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -1134,19 +1140,19 @@ "ASP.NET" ], "x-ms-ratelimit-remaining-subscription-writes": [ - "1198" + "1195" ], "x-ms-correlation-request-id": [ - "1cea0a52-bb86-4e3a-9578-67a1cccca2b8" + "aa430da7-6a32-4433-9663-05d5d0d5f111" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T090050Z:1cea0a52-bb86-4e3a-9578-67a1cccca2b8" + "KOREASOUTH:20200810T064124Z:aa430da7-6a32-4433-9663-05d5d0d5f111" ], "Date": [ - "Tue, 31 Mar 2020 09:00:50 GMT" + "Mon, 10 Aug 2020 06:41:23 GMT" ], "Content-Length": [ - "583" + "585" ], "Content-Type": [ "application/json; charset=utf-8" @@ -1155,20 +1161,20 @@ "-1" ] }, - "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6387/providers/Microsoft.KeyVault/vaults/ps8289\",\r\n \"name\": \"ps8289\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"West US\",\r\n \"tags\": {\r\n \"abcdefg\": \"bcdefgh\"\r\n },\r\n \"properties\": {\r\n \"sku\": {\r\n \"family\": \"A\",\r\n \"name\": \"standard\"\r\n },\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"accessPolicies\": [],\r\n \"enabledForDeployment\": false,\r\n \"enabledForDiskEncryption\": false,\r\n \"enabledForTemplateDeployment\": false,\r\n \"enableSoftDelete\": true,\r\n \"enablePurgeProtection\": true,\r\n \"vaultUri\": \"https://ps8289.vault.azure.net\",\r\n \"provisioningState\": \"RegisteringDns\"\r\n }\r\n}", + "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps5160/providers/Microsoft.KeyVault/vaults/ps7285\",\r\n \"name\": \"ps7285\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"West US\",\r\n \"tags\": {\r\n \"abcdefg\": \"bcdefgh\"\r\n },\r\n \"properties\": {\r\n \"sku\": {\r\n \"family\": \"A\",\r\n \"name\": \"standard\"\r\n },\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"accessPolicies\": [],\r\n \"enabledForDeployment\": false,\r\n \"enabledForDiskEncryption\": false,\r\n \"enabledForTemplateDeployment\": false,\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"vaultUri\": \"https://ps7285.vault.azure.net\",\r\n \"provisioningState\": \"RegisteringDns\"\r\n }\r\n}", "StatusCode": 200 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6387/providers/Microsoft.KeyVault/vaults/ps8289?api-version=2019-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzNjM4Ny9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L3ZhdWx0cy9wczgyODk/YXBpLXZlcnNpb249MjAxOS0wOS0wMQ==", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps5160/providers/Microsoft.KeyVault/vaults/ps7285?api-version=2019-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzNTE2MC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L3ZhdWx0cy9wczcyODU/YXBpLXZlcnNpb249MjAxOS0wOS0wMQ==", "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.0.0" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.1.0.0" ] }, "ResponseHeaders": { @@ -1179,10 +1185,10 @@ "no-cache" ], "x-ms-keyvault-service-version": [ - "1.1.0.276" + "1.1.16.0" ], "x-ms-request-id": [ - "2de1656c-dfb3-46c0-b557-e20e688a7a43" + "8ba4133c-9f41-4144-8118-70bd91d08c4d" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -1190,9 +1196,6 @@ "X-Content-Type-Options": [ "nosniff" ], - "x-ms-ratelimit-remaining-subscription-reads": [ - "11998" - ], "Server": [ "Microsoft-IIS/10.0" ], @@ -1202,45 +1205,468 @@ "X-Powered-By": [ "ASP.NET" ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11991" + ], + "x-ms-correlation-request-id": [ + "2a9f21c0-14a6-4f85-a6d6-eca7d534da34" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200810T064154Z:2a9f21c0-14a6-4f85-a6d6-eca7d534da34" + ], + "Date": [ + "Mon, 10 Aug 2020 06:41:54 GMT" + ], + "Content-Length": [ + "581" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps5160/providers/Microsoft.KeyVault/vaults/ps7285\",\r\n \"name\": \"ps7285\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"West US\",\r\n \"tags\": {\r\n \"abcdefg\": \"bcdefgh\"\r\n },\r\n \"properties\": {\r\n \"sku\": {\r\n \"family\": \"A\",\r\n \"name\": \"standard\"\r\n },\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"accessPolicies\": [],\r\n \"enabledForDeployment\": false,\r\n \"enabledForDiskEncryption\": false,\r\n \"enabledForTemplateDeployment\": false,\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"vaultUri\": \"https://ps7285.vault.azure.net/\",\r\n \"provisioningState\": \"Succeeded\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resources?$filter=resourceType%20eq%20'Microsoft.KeyVault%2FmanagedHSMs'&api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlcz8kZmlsdGVyPXJlc291cmNlVHlwZSUyMGVxJTIwJ01pY3Jvc29mdC5LZXlWYXVsdCUyRm1hbmFnZWRIU01zJyZhcGktdmVyc2lvbj0yMDE2LTA5LTAx", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "c819989c-1b93-43b0-9581-3427116ec65c" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11973" + ], + "x-ms-request-id": [ + "3232dcbc-5ad2-434f-9182-0d54ad48455f" + ], + "x-ms-correlation-request-id": [ + "3232dcbc-5ad2-434f-9182-0d54ad48455f" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200810T064154Z:3232dcbc-5ad2-434f-9182-0d54ad48455f" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Mon, 10 Aug 2020 06:41:54 GMT" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Content-Length": [ + "12" + ] + }, + "ResponseBody": "{\r\n \"value\": []\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resources?$filter=resourceType%20eq%20'Microsoft.KeyVault%2FmanagedHSMs'&api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlcz8kZmlsdGVyPXJlc291cmNlVHlwZSUyMGVxJTIwJ01pY3Jvc29mdC5LZXlWYXVsdCUyRm1hbmFnZWRIU01zJyZhcGktdmVyc2lvbj0yMDE2LTA5LTAx", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "e077f947-4efb-4b2f-9ef6-607069830aa3" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11971" + ], + "x-ms-request-id": [ + "b9b300ed-a9a3-408b-8c73-1f7fe332a39c" + ], + "x-ms-correlation-request-id": [ + "b9b300ed-a9a3-408b-8c73-1f7fe332a39c" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200810T064155Z:b9b300ed-a9a3-408b-8c73-1f7fe332a39c" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Mon, 10 Aug 2020 06:41:54 GMT" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Content-Length": [ + "12" + ] + }, + "ResponseBody": "{\r\n \"value\": []\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resources?$filter=resourceType%20eq%20'Microsoft.KeyVault%2FmanagedHSMs'&api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlcz8kZmlsdGVyPXJlc291cmNlVHlwZSUyMGVxJTIwJ01pY3Jvc29mdC5LZXlWYXVsdCUyRm1hbmFnZWRIU01zJyZhcGktdmVyc2lvbj0yMDE2LTA5LTAx", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "054f0600-29c2-4a87-8dd5-c592d434ebf9" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11965" + ], + "x-ms-request-id": [ + "9656354e-65a3-4a2c-bc9c-e7b9886a0bb7" + ], + "x-ms-correlation-request-id": [ + "9656354e-65a3-4a2c-bc9c-e7b9886a0bb7" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200810T064156Z:9656354e-65a3-4a2c-bc9c-e7b9886a0bb7" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Mon, 10 Aug 2020 06:41:55 GMT" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Content-Length": [ + "12" + ] + }, + "ResponseBody": "{\r\n \"value\": []\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resources?$filter=resourceType%20eq%20'Microsoft.KeyVault%2FmanagedHSMs'&api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlcz8kZmlsdGVyPXJlc291cmNlVHlwZSUyMGVxJTIwJ01pY3Jvc29mdC5LZXlWYXVsdCUyRm1hbmFnZWRIU01zJyZhcGktdmVyc2lvbj0yMDE2LTA5LTAx", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "f2abc351-ecd9-42b4-ab34-568212e3d93e" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11963" + ], + "x-ms-request-id": [ + "9c3398e3-ab17-454b-bb1f-f17281dffc8d" + ], + "x-ms-correlation-request-id": [ + "9c3398e3-ab17-454b-bb1f-f17281dffc8d" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200810T064156Z:9c3398e3-ab17-454b-bb1f-f17281dffc8d" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Mon, 10 Aug 2020 06:41:55 GMT" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Content-Length": [ + "12" + ] + }, + "ResponseBody": "{\r\n \"value\": []\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resources?$filter=resourceType%20eq%20'Microsoft.KeyVault%2FmanagedHSMs'&api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlcz8kZmlsdGVyPXJlc291cmNlVHlwZSUyMGVxJTIwJ01pY3Jvc29mdC5LZXlWYXVsdCUyRm1hbmFnZWRIU01zJyZhcGktdmVyc2lvbj0yMDE2LTA5LTAx", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "b6f05d35-1882-4639-b765-ff12944f8a12" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11961" + ], + "x-ms-request-id": [ + "9c6bb2ab-477a-42d2-97d1-b3603cc535e2" + ], + "x-ms-correlation-request-id": [ + "9c6bb2ab-477a-42d2-97d1-b3603cc535e2" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200810T064156Z:9c6bb2ab-477a-42d2-97d1-b3603cc535e2" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Mon, 10 Aug 2020 06:41:55 GMT" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Content-Length": [ + "12" + ] + }, + "ResponseBody": "{\r\n \"value\": []\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resources?$filter=resourceType%20eq%20'Microsoft.KeyVault%2FmanagedHSMs'&api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlcz8kZmlsdGVyPXJlc291cmNlVHlwZSUyMGVxJTIwJ01pY3Jvc29mdC5LZXlWYXVsdCUyRm1hbmFnZWRIU01zJyZhcGktdmVyc2lvbj0yMDE2LTA5LTAx", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "be30d2aa-42ca-4500-bb6b-8f799ecf81c0" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11959" + ], + "x-ms-request-id": [ + "ff674293-1c7f-4764-bdd1-bd27a93b9e2f" + ], "x-ms-correlation-request-id": [ - "993974af-4660-4549-8162-1aca1cd932ba" + "ff674293-1c7f-4764-bdd1-bd27a93b9e2f" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T090120Z:993974af-4660-4549-8162-1aca1cd932ba" + "KOREASOUTH:20200810T064156Z:ff674293-1c7f-4764-bdd1-bd27a93b9e2f" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 09:01:20 GMT" + "Mon, 10 Aug 2020 06:41:56 GMT" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" ], "Content-Length": [ - "579" + "12" + ] + }, + "ResponseBody": "{\r\n \"value\": []\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resources?$filter=resourceType%20eq%20'Microsoft.KeyVault%2FmanagedHSMs'&api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlcz8kZmlsdGVyPXJlc291cmNlVHlwZSUyMGVxJTIwJ01pY3Jvc29mdC5LZXlWYXVsdCUyRm1hbmFnZWRIU01zJyZhcGktdmVyc2lvbj0yMDE2LTA5LTAx", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "1f5c7318-5996-49cc-b286-9bca825c832e" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11957" + ], + "x-ms-request-id": [ + "7fd04dcc-9f2f-4e65-8a3e-e5028b73f6f4" + ], + "x-ms-correlation-request-id": [ + "7fd04dcc-9f2f-4e65-8a3e-e5028b73f6f4" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200810T064157Z:7fd04dcc-9f2f-4e65-8a3e-e5028b73f6f4" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Mon, 10 Aug 2020 06:41:56 GMT" ], "Content-Type": [ "application/json; charset=utf-8" ], "Expires": [ "-1" + ], + "Content-Length": [ + "12" ] }, - "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6387/providers/Microsoft.KeyVault/vaults/ps8289\",\r\n \"name\": \"ps8289\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"West US\",\r\n \"tags\": {\r\n \"abcdefg\": \"bcdefgh\"\r\n },\r\n \"properties\": {\r\n \"sku\": {\r\n \"family\": \"A\",\r\n \"name\": \"standard\"\r\n },\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"accessPolicies\": [],\r\n \"enabledForDeployment\": false,\r\n \"enabledForDiskEncryption\": false,\r\n \"enabledForTemplateDeployment\": false,\r\n \"enableSoftDelete\": true,\r\n \"enablePurgeProtection\": true,\r\n \"vaultUri\": \"https://ps8289.vault.azure.net/\",\r\n \"provisioningState\": \"Succeeded\"\r\n }\r\n}", + "ResponseBody": "{\r\n \"value\": []\r\n}", "StatusCode": 200 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6387/resources?$filter=resourceType%20eq%20'Microsoft.KeyVault%2Fvaults'&api-version=2016-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzNjM4Ny9yZXNvdXJjZXM/JGZpbHRlcj1yZXNvdXJjZVR5cGUlMjBlcSUyMCdNaWNyb3NvZnQuS2V5VmF1bHQlMkZ2YXVsdHMnJmFwaS12ZXJzaW9uPTIwMTYtMDktMDE=", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resources?$filter=resourceType%20eq%20'Microsoft.KeyVault%2FmanagedHSMs'&api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlcz8kZmlsdGVyPXJlc291cmNlVHlwZSUyMGVxJTIwJ01pY3Jvc29mdC5LZXlWYXVsdCUyRm1hbmFnZWRIU01zJyZhcGktdmVyc2lvbj0yMDE2LTA5LTAx", "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "dd51d418-a390-449e-ac6d-d263e6975389" + "d8b6e375-ee07-441a-b1c0-f03181ca0d1e" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -1251,16 +1677,16 @@ "no-cache" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11990" + "11955" ], "x-ms-request-id": [ - "3824a4eb-3504-4c43-afd2-9bb42055115c" + "ebe4f2ed-0d7d-4e6a-9a81-622ac5fe21d1" ], "x-ms-correlation-request-id": [ - "3824a4eb-3504-4c43-afd2-9bb42055115c" + "ebe4f2ed-0d7d-4e6a-9a81-622ac5fe21d1" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T090120Z:3824a4eb-3504-4c43-afd2-9bb42055115c" + "KOREASOUTH:20200810T064157Z:ebe4f2ed-0d7d-4e6a-9a81-622ac5fe21d1" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -1269,7 +1695,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 09:01:20 GMT" + "Mon, 10 Aug 2020 06:41:56 GMT" ], "Content-Type": [ "application/json; charset=utf-8" @@ -1278,29 +1704,29 @@ "-1" ], "Content-Length": [ - "442" + "12" ] }, - "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6387/providers/Microsoft.KeyVault/vaults/ps168\",\r\n \"name\": \"ps168\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6387/providers/Microsoft.KeyVault/vaults/ps8289\",\r\n \"name\": \"ps8289\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {\r\n \"abcdefg\": \"bcdefgh\"\r\n }\r\n }\r\n ]\r\n}", + "ResponseBody": "{\r\n \"value\": []\r\n}", "StatusCode": 200 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6387/resources?$filter=resourceType%20eq%20'Microsoft.KeyVault%2Fvaults'&api-version=2016-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzNjM4Ny9yZXNvdXJjZXM/JGZpbHRlcj1yZXNvdXJjZVR5cGUlMjBlcSUyMCdNaWNyb3NvZnQuS2V5VmF1bHQlMkZ2YXVsdHMnJmFwaS12ZXJzaW9uPTIwMTYtMDktMDE=", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps5160/resources?$filter=resourceType%20eq%20'Microsoft.KeyVault%2Fvaults'&api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzNTE2MC9yZXNvdXJjZXM/JGZpbHRlcj1yZXNvdXJjZVR5cGUlMjBlcSUyMCdNaWNyb3NvZnQuS2V5VmF1bHQlMkZ2YXVsdHMnJmFwaS12ZXJzaW9uPTIwMTYtMDktMDE=", "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "ab73fa58-3a5c-4277-bf08-3a3556e249fb" + "99a3b338-25d9-4937-9e5f-3b5d43717331" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -1311,16 +1737,16 @@ "no-cache" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11989" + "11970" ], "x-ms-request-id": [ - "4e9e84f1-acda-4910-b34d-5649b5ebc9ba" + "a511791a-a71f-466e-97d2-e5a4c36708dd" ], "x-ms-correlation-request-id": [ - "4e9e84f1-acda-4910-b34d-5649b5ebc9ba" + "a511791a-a71f-466e-97d2-e5a4c36708dd" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T090120Z:4e9e84f1-acda-4910-b34d-5649b5ebc9ba" + "KOREASOUTH:20200810T064155Z:a511791a-a71f-466e-97d2-e5a4c36708dd" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -1329,7 +1755,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 09:01:20 GMT" + "Mon, 10 Aug 2020 06:41:54 GMT" ], "Content-Type": [ "application/json; charset=utf-8" @@ -1338,29 +1764,209 @@ "-1" ], "Content-Length": [ - "442" + "444" ] }, - "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6387/providers/Microsoft.KeyVault/vaults/ps168\",\r\n \"name\": \"ps168\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6387/providers/Microsoft.KeyVault/vaults/ps8289\",\r\n \"name\": \"ps8289\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {\r\n \"abcdefg\": \"bcdefgh\"\r\n }\r\n }\r\n ]\r\n}", + "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps5160/providers/Microsoft.KeyVault/vaults/ps1685\",\r\n \"name\": \"ps1685\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps5160/providers/Microsoft.KeyVault/vaults/ps7285\",\r\n \"name\": \"ps7285\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {\r\n \"abcdefg\": \"bcdefgh\"\r\n }\r\n }\r\n ]\r\n}", "StatusCode": 200 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps7579/resources?$filter=resourceType%20eq%20'Microsoft.KeyVault%2Fvaults'&api-version=2016-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzNzU3OS9yZXNvdXJjZXM/JGZpbHRlcj1yZXNvdXJjZVR5cGUlMjBlcSUyMCdNaWNyb3NvZnQuS2V5VmF1bHQlMkZ2YXVsdHMnJmFwaS12ZXJzaW9uPTIwMTYtMDktMDE=", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps5160/resources?$filter=resourceType%20eq%20'Microsoft.KeyVault%2Fvaults'&api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzNTE2MC9yZXNvdXJjZXM/JGZpbHRlcj1yZXNvdXJjZVR5cGUlMjBlcSUyMCdNaWNyb3NvZnQuS2V5VmF1bHQlMkZ2YXVsdHMnJmFwaS12ZXJzaW9uPTIwMTYtMDktMDE=", "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "23b3355d-3446-4a0d-8820-82b91033e08d" + "4611f1de-1358-43d7-8814-efe5ba00b3d8" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11968" + ], + "x-ms-request-id": [ + "25fbf5f4-8e76-4d21-90f5-e198935e69db" + ], + "x-ms-correlation-request-id": [ + "25fbf5f4-8e76-4d21-90f5-e198935e69db" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200810T064155Z:25fbf5f4-8e76-4d21-90f5-e198935e69db" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Mon, 10 Aug 2020 06:41:55 GMT" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Content-Length": [ + "444" + ] + }, + "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps5160/providers/Microsoft.KeyVault/vaults/ps1685\",\r\n \"name\": \"ps1685\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {}\r\n },\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps5160/providers/Microsoft.KeyVault/vaults/ps7285\",\r\n \"name\": \"ps7285\",\r\n \"type\": \"Microsoft.KeyVault/vaults\",\r\n \"location\": \"westus\",\r\n \"tags\": {\r\n \"abcdefg\": \"bcdefgh\"\r\n }\r\n }\r\n ]\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps5160/resources?$filter=resourceType%20eq%20'Microsoft.KeyVault%2FmanagedHSMs'&api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzNTE2MC9yZXNvdXJjZXM/JGZpbHRlcj1yZXNvdXJjZVR5cGUlMjBlcSUyMCdNaWNyb3NvZnQuS2V5VmF1bHQlMkZtYW5hZ2VkSFNNcycmYXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "c1f36af7-3347-4432-bfe6-0dd38c1a8d0b" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11969" + ], + "x-ms-request-id": [ + "497121a9-a53c-499e-82f2-ee1c7f6a0901" + ], + "x-ms-correlation-request-id": [ + "497121a9-a53c-499e-82f2-ee1c7f6a0901" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200810T064155Z:497121a9-a53c-499e-82f2-ee1c7f6a0901" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Mon, 10 Aug 2020 06:41:54 GMT" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Content-Length": [ + "12" + ] + }, + "ResponseBody": "{\r\n \"value\": []\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps5160/resources?$filter=resourceType%20eq%20'Microsoft.KeyVault%2FmanagedHSMs'&api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzNTE2MC9yZXNvdXJjZXM/JGZpbHRlcj1yZXNvdXJjZVR5cGUlMjBlcSUyMCdNaWNyb3NvZnQuS2V5VmF1bHQlMkZtYW5hZ2VkSFNNcycmYXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "684e51e7-d207-45b5-882f-0c08ff9c9fa2" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11967" + ], + "x-ms-request-id": [ + "028a549e-76a8-469a-b1da-64cc86e3c46e" + ], + "x-ms-correlation-request-id": [ + "028a549e-76a8-469a-b1da-64cc86e3c46e" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200810T064155Z:028a549e-76a8-469a-b1da-64cc86e3c46e" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Mon, 10 Aug 2020 06:41:55 GMT" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Content-Length": [ + "12" + ] + }, + "ResponseBody": "{\r\n \"value\": []\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps8249/resources?$filter=resourceType%20eq%20'Microsoft.KeyVault%2Fvaults'&api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzODI0OS9yZXNvdXJjZXM/JGZpbHRlcj1yZXNvdXJjZVR5cGUlMjBlcSUyMCdNaWNyb3NvZnQuS2V5VmF1bHQlMkZ2YXVsdHMnJmFwaS12ZXJzaW9uPTIwMTYtMDktMDE=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "cd7c9250-6310-463f-b93c-0da0809bbb0b" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -1374,16 +1980,16 @@ "gateway" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11982" + "11954" ], "x-ms-request-id": [ - "bbfb70ee-e8d0-455e-802c-68cedb2d3834" + "770809b3-dd96-48c1-85a2-ab48d40e7af1" ], "x-ms-correlation-request-id": [ - "bbfb70ee-e8d0-455e-802c-68cedb2d3834" + "770809b3-dd96-48c1-85a2-ab48d40e7af1" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T090121Z:bbfb70ee-e8d0-455e-802c-68cedb2d3834" + "KOREASOUTH:20200810T064157Z:770809b3-dd96-48c1-85a2-ab48d40e7af1" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -1392,7 +1998,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 09:01:21 GMT" + "Mon, 10 Aug 2020 06:41:56 GMT" ], "Content-Type": [ "application/json; charset=utf-8" @@ -1404,26 +2010,26 @@ "98" ] }, - "ResponseBody": "{\r\n \"error\": {\r\n \"code\": \"ResourceGroupNotFound\",\r\n \"message\": \"Resource group 'ps7579' could not be found.\"\r\n }\r\n}", + "ResponseBody": "{\r\n \"error\": {\r\n \"code\": \"ResourceGroupNotFound\",\r\n \"message\": \"Resource group 'ps8249' could not be found.\"\r\n }\r\n}", "StatusCode": 404 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourcegroups/ps6387?api-version=2016-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlZ3JvdXBzL3BzNjM4Nz9hcGktdmVyc2lvbj0yMDE2LTA5LTAx", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourcegroups/ps5160?api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlZ3JvdXBzL3BzNTE2MD9hcGktdmVyc2lvbj0yMDE2LTA5LTAx", "RequestMethod": "DELETE", "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "9d519d96-36a9-494b-a677-d082d897fdc2" + "1e5c0b16-4fac-483e-97af-1fad9b209e90" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -1434,7 +2040,7 @@ "no-cache" ], "Location": [ - "https://management.azure.com/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzYzODctV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01" + "https://management.azure.com/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzUxNjAtV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01" ], "Retry-After": [ "15" @@ -1443,13 +2049,13 @@ "14998" ], "x-ms-request-id": [ - "d83ddee0-be40-4d61-8916-c28d69b4d3e2" + "1f89f312-9c0f-458c-8d90-70e5a594a8e7" ], "x-ms-correlation-request-id": [ - "d83ddee0-be40-4d61-8916-c28d69b4d3e2" + "1f89f312-9c0f-458c-8d90-70e5a594a8e7" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T090126Z:d83ddee0-be40-4d61-8916-c28d69b4d3e2" + "KOREASOUTH:20200810T064200Z:1f89f312-9c0f-458c-8d90-70e5a594a8e7" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -1458,7 +2064,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 09:01:25 GMT" + "Mon, 10 Aug 2020 06:41:59 GMT" ], "Expires": [ "-1" @@ -1471,16 +2077,16 @@ "StatusCode": 202 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzYzODctV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpZek9EY3RWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzUxNjAtV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpVeE5qQXRWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -1491,22 +2097,22 @@ "no-cache" ], "Location": [ - "https://management.azure.com/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzYzODctV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01" + "https://management.azure.com/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzUxNjAtV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01" ], "Retry-After": [ "15" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11981" + "11953" ], "x-ms-request-id": [ - "83dcdf4e-84f7-4c2d-bfcd-2cc40b9575b0" + "5b89ffab-ece0-4596-bf09-3ed15e4afca5" ], "x-ms-correlation-request-id": [ - "83dcdf4e-84f7-4c2d-bfcd-2cc40b9575b0" + "5b89ffab-ece0-4596-bf09-3ed15e4afca5" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T090141Z:83dcdf4e-84f7-4c2d-bfcd-2cc40b9575b0" + "KOREASOUTH:20200810T064215Z:5b89ffab-ece0-4596-bf09-3ed15e4afca5" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -1515,7 +2121,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 09:01:41 GMT" + "Mon, 10 Aug 2020 06:42:15 GMT" ], "Expires": [ "-1" @@ -1528,16 +2134,16 @@ "StatusCode": 202 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzYzODctV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpZek9EY3RWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzUxNjAtV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpVeE5qQXRWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -1548,22 +2154,22 @@ "no-cache" ], "Location": [ - "https://management.azure.com/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzYzODctV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01" + "https://management.azure.com/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzUxNjAtV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01" ], "Retry-After": [ "15" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11980" + "11952" ], "x-ms-request-id": [ - "e851ba35-9f10-4ddf-9e72-99a09dd0f25e" + "f3440761-f346-432f-8aed-f38ef6651410" ], "x-ms-correlation-request-id": [ - "e851ba35-9f10-4ddf-9e72-99a09dd0f25e" + "f3440761-f346-432f-8aed-f38ef6651410" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T090157Z:e851ba35-9f10-4ddf-9e72-99a09dd0f25e" + "KOREASOUTH:20200810T064231Z:f3440761-f346-432f-8aed-f38ef6651410" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -1572,7 +2178,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 09:01:56 GMT" + "Mon, 10 Aug 2020 06:42:30 GMT" ], "Expires": [ "-1" @@ -1585,16 +2191,16 @@ "StatusCode": 202 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzYzODctV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpZek9EY3RWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzUxNjAtV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpVeE5qQXRWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -1605,22 +2211,22 @@ "no-cache" ], "Location": [ - "https://management.azure.com/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzYzODctV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01" + "https://management.azure.com/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzUxNjAtV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01" ], "Retry-After": [ "15" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11979" + "11951" ], "x-ms-request-id": [ - "a7a5fa63-65b1-4777-97e9-66f401e42d11" + "b30c9d3c-0588-441d-ae58-cb8650ac56b5" ], "x-ms-correlation-request-id": [ - "a7a5fa63-65b1-4777-97e9-66f401e42d11" + "b30c9d3c-0588-441d-ae58-cb8650ac56b5" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T090212Z:a7a5fa63-65b1-4777-97e9-66f401e42d11" + "KOREASOUTH:20200810T064246Z:b30c9d3c-0588-441d-ae58-cb8650ac56b5" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -1629,7 +2235,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 09:02:12 GMT" + "Mon, 10 Aug 2020 06:42:46 GMT" ], "Expires": [ "-1" @@ -1642,16 +2248,16 @@ "StatusCode": 202 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzYzODctV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpZek9EY3RWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzUxNjAtV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpVeE5qQXRWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -1662,22 +2268,22 @@ "no-cache" ], "Location": [ - "https://management.azure.com/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzYzODctV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01" + "https://management.azure.com/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzUxNjAtV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01" ], "Retry-After": [ "15" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11978" + "11950" ], "x-ms-request-id": [ - "26b6e6b8-fe13-408a-94cd-c9df83486428" + "ba1d1e80-98dc-4842-b3ef-07690d720e4d" ], "x-ms-correlation-request-id": [ - "26b6e6b8-fe13-408a-94cd-c9df83486428" + "ba1d1e80-98dc-4842-b3ef-07690d720e4d" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T090228Z:26b6e6b8-fe13-408a-94cd-c9df83486428" + "KOREASOUTH:20200810T064302Z:ba1d1e80-98dc-4842-b3ef-07690d720e4d" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -1686,7 +2292,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 09:02:27 GMT" + "Mon, 10 Aug 2020 06:43:01 GMT" ], "Expires": [ "-1" @@ -1699,16 +2305,16 @@ "StatusCode": 202 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzYzODctV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpZek9EY3RWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzUxNjAtV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpVeE5qQXRWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -1719,22 +2325,22 @@ "no-cache" ], "Location": [ - "https://management.azure.com/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzYzODctV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01" + "https://management.azure.com/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzUxNjAtV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01" ], "Retry-After": [ "15" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11977" + "11949" ], "x-ms-request-id": [ - "72a9f640-ada6-44b1-91c4-2584a9baf196" + "0cab683f-05cb-451a-a337-da1da269d377" ], "x-ms-correlation-request-id": [ - "72a9f640-ada6-44b1-91c4-2584a9baf196" + "0cab683f-05cb-451a-a337-da1da269d377" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T090243Z:72a9f640-ada6-44b1-91c4-2584a9baf196" + "KOREASOUTH:20200810T064317Z:0cab683f-05cb-451a-a337-da1da269d377" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -1743,7 +2349,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 09:02:43 GMT" + "Mon, 10 Aug 2020 06:43:16 GMT" ], "Expires": [ "-1" @@ -1756,16 +2362,16 @@ "StatusCode": 202 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzYzODctV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpZek9EY3RWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzUxNjAtV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpVeE5qQXRWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -1776,22 +2382,22 @@ "no-cache" ], "Location": [ - "https://management.azure.com/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzYzODctV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01" + "https://management.azure.com/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzUxNjAtV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01" ], "Retry-After": [ "15" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11976" + "11948" ], "x-ms-request-id": [ - "92a4b6ea-9dd3-4d36-9d1c-580f6a277750" + "886e3689-fb9a-4e74-a952-027fd8acf38e" ], "x-ms-correlation-request-id": [ - "92a4b6ea-9dd3-4d36-9d1c-580f6a277750" + "886e3689-fb9a-4e74-a952-027fd8acf38e" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T090259Z:92a4b6ea-9dd3-4d36-9d1c-580f6a277750" + "KOREASOUTH:20200810T064332Z:886e3689-fb9a-4e74-a952-027fd8acf38e" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -1800,7 +2406,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 09:02:58 GMT" + "Mon, 10 Aug 2020 06:43:32 GMT" ], "Expires": [ "-1" @@ -1813,16 +2419,16 @@ "StatusCode": 202 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzYzODctV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpZek9EY3RWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzUxNjAtV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpVeE5qQXRWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -1833,16 +2439,16 @@ "no-cache" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11975" + "11947" ], "x-ms-request-id": [ - "605113e0-239e-4296-9c9a-79e1f40065a7" + "defe1857-1087-4a3c-b522-aed6f9a64c62" ], "x-ms-correlation-request-id": [ - "605113e0-239e-4296-9c9a-79e1f40065a7" + "defe1857-1087-4a3c-b522-aed6f9a64c62" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T090314Z:605113e0-239e-4296-9c9a-79e1f40065a7" + "KOREASOUTH:20200810T064348Z:defe1857-1087-4a3c-b522-aed6f9a64c62" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -1851,7 +2457,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 09:03:13 GMT" + "Mon, 10 Aug 2020 06:43:47 GMT" ], "Expires": [ "-1" @@ -1864,16 +2470,16 @@ "StatusCode": 200 }, { - "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzYzODctV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpZek9EY3RWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzUxNjAtV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpVeE5qQXRWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", "RequestMethod": "GET", "RequestBody": "", "RequestHeaders": { "User-Agent": [ - "FxVersion/4.6.28516.03", + "FxVersion/4.6.29017.01", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.11" + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" ] }, "ResponseHeaders": { @@ -1884,16 +2490,16 @@ "no-cache" ], "x-ms-ratelimit-remaining-subscription-reads": [ - "11974" + "11946" ], "x-ms-request-id": [ - "77f1d987-34b5-4217-8acd-f634a3be2d2e" + "1f777cb0-3a39-4832-9bb8-e3c8db5b81a9" ], "x-ms-correlation-request-id": [ - "77f1d987-34b5-4217-8acd-f634a3be2d2e" + "1f777cb0-3a39-4832-9bb8-e3c8db5b81a9" ], "x-ms-routing-request-id": [ - "SOUTHEASTASIA:20200331T090314Z:77f1d987-34b5-4217-8acd-f634a3be2d2e" + "KOREASOUTH:20200810T064348Z:1f777cb0-3a39-4832-9bb8-e3c8db5b81a9" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" @@ -1902,7 +2508,7 @@ "nosniff" ], "Date": [ - "Tue, 31 Mar 2020 09:03:14 GMT" + "Mon, 10 Aug 2020 06:43:47 GMT" ], "Expires": [ "-1" @@ -1917,10 +2523,10 @@ ], "Names": { "Test-ListVaults": [ - "ps6387", - "ps168", - "ps8289", - "ps7579" + "ps5160", + "ps1685", + "ps7285", + "ps8249" ] }, "Variables": { diff --git a/src/KeyVault/KeyVault.Test/SessionRecords/Microsoft.Azure.Commands.KeyVault.Test.ScenarioTests.ManagedHsmManagementTests/TestManagedHsmCRUD.json b/src/KeyVault/KeyVault.Test/SessionRecords/Microsoft.Azure.Commands.KeyVault.Test.ScenarioTests.ManagedHsmManagementTests/TestManagedHsmCRUD.json new file mode 100644 index 000000000000..47c2316257d1 --- /dev/null +++ b/src/KeyVault/KeyVault.Test/SessionRecords/Microsoft.Azure.Commands.KeyVault.Test.ScenarioTests.ManagedHsmManagementTests/TestManagedHsmCRUD.json @@ -0,0 +1,3837 @@ +{ + "Entries": [ + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/providers/Microsoft.Resources?api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Byb3ZpZGVycy9NaWNyb3NvZnQuUmVzb3VyY2VzP2FwaS12ZXJzaW9uPTIwMTYtMDktMDE=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "044ea8f4-dfc5-4f67-9e25-2890762932b1" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11958" + ], + "x-ms-request-id": [ + "58b88c94-6f89-4a68-9026-23eba4a6986b" + ], + "x-ms-correlation-request-id": [ + "58b88c94-6f89-4a68-9026-23eba4a6986b" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T135447Z:58b88c94-6f89-4a68-9026-23eba4a6986b" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Fri, 07 Aug 2020 13:54:46 GMT" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Content-Length": [ + "10938" + ] + }, + "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/providers/Microsoft.Resources\",\r\n \"namespace\": \"Microsoft.Resources\",\r\n \"authorization\": {\r\n \"applicationId\": \"3b990c8b-9607-4c2a-8b04-1d41985facca\"\r\n },\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"tenants\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2020-01-01\",\r\n \"2019-09-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"operationresults\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"notifyResourceJobs\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"tags\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-10-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\"\r\n ],\r\n \"capabilities\": \"SupportsExtension\"\r\n },\r\n {\r\n \"resourceType\": \"checkPolicyCompliance\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"providers\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"checkresourcename\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"calculateTemplateHash\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"resources\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"subscriptions\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-10-01\",\r\n \"2019-09-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"subscriptions/resources\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"subscriptions/providers\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"subscriptions/operationresults\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"resourceGroups\",\r\n \"locations\": [\r\n \"Central US\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US\",\r\n \"East US 2\",\r\n \"West US\",\r\n \"West US 2\",\r\n \"North Central US\",\r\n \"South Central US\",\r\n \"West Central US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Brazil South\",\r\n \"Australia Southeast\",\r\n \"Australia East\",\r\n \"West India\",\r\n \"South India\",\r\n \"Central India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"South Africa North\",\r\n \"UAE North\",\r\n \"Australia Central\",\r\n \"Switzerland North\",\r\n \"Germany West Central\",\r\n \"Norway East\",\r\n \"East US 2 EUAP\",\r\n \"Central US EUAP\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"subscriptions/resourceGroups\",\r\n \"locations\": [\r\n \"Central US\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US\",\r\n \"East US 2\",\r\n \"West US\",\r\n \"West US 2\",\r\n \"North Central US\",\r\n \"South Central US\",\r\n \"West Central US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Brazil South\",\r\n \"Australia Southeast\",\r\n \"Australia East\",\r\n \"West India\",\r\n \"South India\",\r\n \"Central India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"South Africa North\",\r\n \"UAE North\",\r\n \"Australia Central\",\r\n \"Switzerland North\",\r\n \"Germany West Central\",\r\n \"Norway East\",\r\n \"East US 2 EUAP\",\r\n \"Central US EUAP\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"subscriptions/resourcegroups/resources\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"subscriptions/locations\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"subscriptions/tagnames\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"subscriptions/tagNames/tagValues\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"deployments\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2020-06-01\",\r\n \"2019-09-01\",\r\n \"2019-08-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"deployments/operations\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2020-06-01\",\r\n \"2019-09-01\",\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"links\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-05-01\",\r\n \"2019-04-01\",\r\n \"2019-03-01\",\r\n \"2018-11-01\",\r\n \"2018-09-01\",\r\n \"2018-08-01\",\r\n \"2018-07-01\",\r\n \"2018-05-01\",\r\n \"2018-02-01\",\r\n \"2018-01-01\",\r\n \"2017-08-01\",\r\n \"2017-06-01\",\r\n \"2017-05-10\",\r\n \"2017-05-01\",\r\n \"2017-03-01\",\r\n \"2016-09-01\",\r\n \"2016-07-01\",\r\n \"2016-06-01\",\r\n \"2016-02-01\",\r\n \"2015-11-01\",\r\n \"2015-01-01\",\r\n \"2014-04-01-preview\"\r\n ],\r\n \"capabilities\": \"SupportsExtension\"\r\n },\r\n {\r\n \"resourceType\": \"operations\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2015-01-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"deploymentScripts\",\r\n \"locations\": [\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"Australia East\",\r\n \"Brazil South\",\r\n \"Canada Central\",\r\n \"East US 2\",\r\n \"East US\",\r\n \"Central US\",\r\n \"North Central US\",\r\n \"UK South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"Japan East\",\r\n \"Korea Central\",\r\n \"North Europe\",\r\n \"West Central US\",\r\n \"West Europe\",\r\n \"West US 2\",\r\n \"West US\",\r\n \"South Central US\",\r\n \"Canada East\",\r\n \"Central US EUAP\",\r\n \"East US 2 EUAP\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-10-01-preview\"\r\n ],\r\n \"capabilities\": \"None\"\r\n },\r\n {\r\n \"resourceType\": \"deploymentScripts/logs\",\r\n \"locations\": [\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"Australia East\",\r\n \"Brazil South\",\r\n \"Canada Central\",\r\n \"East US 2\",\r\n \"East US\",\r\n \"Central US\",\r\n \"North Central US\",\r\n \"UK South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"Japan East\",\r\n \"Korea Central\",\r\n \"North Europe\",\r\n \"West Central US\",\r\n \"West Europe\",\r\n \"West US 2\",\r\n \"West US\",\r\n \"South Central US\",\r\n \"Canada East\",\r\n \"Central US EUAP\",\r\n \"East US 2 EUAP\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-10-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations/deploymentScriptOperationResults\",\r\n \"locations\": [\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"Australia East\",\r\n \"Brazil South\",\r\n \"Canada Central\",\r\n \"East US 2\",\r\n \"East US\",\r\n \"Central US\",\r\n \"North Central US\",\r\n \"UK South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"Japan East\",\r\n \"Korea Central\",\r\n \"North Europe\",\r\n \"West Central US\",\r\n \"West Europe\",\r\n \"West US 2\",\r\n \"West US\",\r\n \"South Central US\",\r\n \"Canada East\",\r\n \"Central US EUAP\",\r\n \"East US 2 EUAP\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-10-01-preview\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"Registered\"\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/providers/Microsoft.KeyVault?api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Byb3ZpZGVycy9NaWNyb3NvZnQuS2V5VmF1bHQ/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "5cba9702-a619-4d5e-ba1e-90ac2dcd3221" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11954" + ], + "x-ms-request-id": [ + "e137593e-d00c-4d5f-9e59-205fb64f491a" + ], + "x-ms-correlation-request-id": [ + "e137593e-d00c-4d5f-9e59-205fb64f491a" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T135448Z:e137593e-d00c-4d5f-9e59-205fb64f491a" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Fri, 07 Aug 2020 13:54:47 GMT" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Content-Length": [ + "7541" + ] + }, + "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/providers/Microsoft.KeyVault\",\r\n \"namespace\": \"Microsoft.KeyVault\",\r\n \"authorizations\": [\r\n {\r\n \"applicationId\": \"cfa8b339-82a2-471a-a3c9-0fc0be7a4093\",\r\n \"roleDefinitionId\": \"1cf9858a-28a2-4228-abba-94e606305b95\"\r\n },\r\n {\r\n \"applicationId\": \"589d5083-6f11-4d30-a62a-a4b316a14abf\"\r\n }\r\n ],\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"operations\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\",\r\n \"2015-06-01\",\r\n \"2014-12-19-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"checkNameAvailability\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\",\r\n \"2015-06-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations\",\r\n \"locations\": [],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"vaults\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"East US 2 EUAP\",\r\n \"Central US EUAP\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"France South\",\r\n \"Australia Central\",\r\n \"Australia Central 2\",\r\n \"UAE Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"South Africa West\",\r\n \"Switzerland North\",\r\n \"Switzerland West\",\r\n \"Germany North\",\r\n \"Germany West Central\",\r\n \"Norway East\",\r\n \"Norway West\",\r\n \"Brazil Southeast\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\",\r\n \"2015-06-01\"\r\n ],\r\n \"capabilities\": \"CrossResourceGroupResourceMove, CrossSubscriptionResourceMove\"\r\n },\r\n {\r\n \"resourceType\": \"vaults/secrets\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"East US 2 EUAP\",\r\n \"Central US EUAP\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"France South\",\r\n \"Australia Central\",\r\n \"Australia Central 2\",\r\n \"UAE Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"South Africa West\",\r\n \"Switzerland North\",\r\n \"Switzerland West\",\r\n \"Germany North\",\r\n \"Germany West Central\",\r\n \"Norway East\",\r\n \"Norway West\",\r\n \"Brazil Southeast\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\",\r\n \"2015-06-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"vaults/accessPolicies\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"East US 2 EUAP\",\r\n \"Central US EUAP\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"France South\",\r\n \"Australia Central\",\r\n \"Australia Central 2\",\r\n \"UAE Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"South Africa West\",\r\n \"Switzerland North\",\r\n \"Switzerland West\",\r\n \"Germany North\",\r\n \"Germany West Central\",\r\n \"Norway East\",\r\n \"Norway West\",\r\n \"Brazil Southeast\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\",\r\n \"2015-06-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"deletedVaults\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"East US 2 EUAP\",\r\n \"Central US EUAP\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"France South\",\r\n \"Australia Central\",\r\n \"Australia Central 2\",\r\n \"UAE Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"South Africa West\",\r\n \"Switzerland North\",\r\n \"Switzerland West\",\r\n \"Germany North\",\r\n \"Germany West Central\",\r\n \"Norway East\",\r\n \"Norway West\",\r\n \"Brazil Southeast\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations/deletedVaults\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"East US 2 EUAP\",\r\n \"Central US EUAP\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"France South\",\r\n \"Australia Central\",\r\n \"Australia Central 2\",\r\n \"UAE Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"South Africa West\",\r\n \"Switzerland North\",\r\n \"Switzerland West\",\r\n \"Germany North\",\r\n \"Germany West Central\",\r\n \"Norway East\",\r\n \"Norway West\",\r\n \"Brazil Southeast\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations/deleteVirtualNetworkOrSubnets\",\r\n \"locations\": [\r\n \"East US\",\r\n \"North Central US\",\r\n \"West Europe\",\r\n \"North Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Australia Central\",\r\n \"Australia Central 2\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"Central US EUAP\",\r\n \"East US 2 EUAP\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"France South\",\r\n \"UAE Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"South Africa West\",\r\n \"Switzerland North\",\r\n \"Switzerland West\",\r\n \"Germany North\",\r\n \"Germany West Central\",\r\n \"Norway East\",\r\n \"Norway West\",\r\n \"Brazil Southeast\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations/operationResults\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"East US 2 EUAP\",\r\n \"Central US EUAP\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"France South\",\r\n \"Australia Central\",\r\n \"Australia Central 2\",\r\n \"UAE Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"South Africa West\",\r\n \"Switzerland North\",\r\n \"Switzerland West\",\r\n \"Germany North\",\r\n \"Germany West Central\",\r\n \"Norway East\",\r\n \"Norway West\",\r\n \"Brazil Southeast\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\",\r\n \"2016-10-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"vaults/eventGridFilters\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"East US 2\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Australia East\",\r\n \"Australia Southeast\",\r\n \"Brazil South\",\r\n \"Central India\",\r\n \"South India\",\r\n \"West India\",\r\n \"Canada Central\",\r\n \"Canada East\",\r\n \"UK South\",\r\n \"UK West\",\r\n \"West Central US\",\r\n \"West US 2\",\r\n \"East US 2 EUAP\",\r\n \"Central US EUAP\",\r\n \"Korea Central\",\r\n \"Korea South\",\r\n \"France Central\",\r\n \"France South\",\r\n \"Australia Central\",\r\n \"Australia Central 2\",\r\n \"UAE Central\",\r\n \"UAE North\",\r\n \"South Africa North\",\r\n \"South Africa West\",\r\n \"Switzerland North\",\r\n \"Switzerland West\",\r\n \"Germany North\",\r\n \"Germany West Central\",\r\n \"Norway East\",\r\n \"Norway West\",\r\n \"Brazil Southeast\"\r\n ],\r\n \"apiVersions\": [\r\n \"2019-09-01\",\r\n \"2018-02-14-preview\",\r\n \"2018-02-14\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"managedHSMs\",\r\n \"locations\": [\r\n \"Central US EUAP\",\r\n \"East US 2\"\r\n ],\r\n \"apiVersions\": [\r\n \"2020-04-01-preview\"\r\n ],\r\n \"capabilities\": \"CrossResourceGroupResourceMove, CrossSubscriptionResourceMove\"\r\n }\r\n ],\r\n \"registrationState\": \"Registered\"\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourcegroups/ps1804?api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlZ3JvdXBzL3BzMTgwND9hcGktdmVyc2lvbj0yMDE2LTA5LTAx", + "RequestMethod": "PUT", + "RequestBody": "{\r\n \"location\": \"West US\"\r\n}", + "RequestHeaders": { + "x-ms-client-request-id": [ + "6a2f7c24-d4fd-43d1-a2f1-188dd8693615" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Content-Length": [ + "29" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-ratelimit-remaining-subscription-writes": [ + "1196" + ], + "x-ms-request-id": [ + "96ce579b-d4f6-4eb3-abd1-3b73960de7f9" + ], + "x-ms-correlation-request-id": [ + "96ce579b-d4f6-4eb3-abd1-3b73960de7f9" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T135450Z:96ce579b-d4f6-4eb3-abd1-3b73960de7f9" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Fri, 07 Aug 2020 13:54:49 GMT" + ], + "Content-Length": [ + "165" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804\",\r\n \"name\": \"ps1804\",\r\n \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\"\r\n }\r\n}", + "StatusCode": 201 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resources?$filter=resourceType%20eq%20'Microsoft.KeyVault%2FmanagedHSMs'&api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlcz8kZmlsdGVyPXJlc291cmNlVHlwZSUyMGVxJTIwJ01pY3Jvc29mdC5LZXlWYXVsdCUyRm1hbmFnZWRIU01zJyZhcGktdmVyc2lvbj0yMDE2LTA5LTAx", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "286b7290-3d55-48a6-ab10-2f081e2478f4" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11928" + ], + "x-ms-request-id": [ + "c11293c2-3a64-4f79-86cf-f76e2c49516a" + ], + "x-ms-correlation-request-id": [ + "c11293c2-3a64-4f79-86cf-f76e2c49516a" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T135450Z:c11293c2-3a64-4f79-86cf-f76e2c49516a" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Fri, 07 Aug 2020 13:54:50 GMT" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Content-Length": [ + "271" + ] + }, + "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps6584/providers/Microsoft.KeyVault/managedHSMs/ps2629\",\r\n \"name\": \"ps2629\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"sku\": {\r\n \"name\": \"Standard_B1\",\r\n \"family\": \"B\"\r\n },\r\n \"location\": \"eastus2\",\r\n \"tags\": {}\r\n }\r\n ]\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resources?$filter=resourceType%20eq%20'Microsoft.KeyVault%2FmanagedHSMs'&api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlcz8kZmlsdGVyPXJlc291cmNlVHlwZSUyMGVxJTIwJ01pY3Jvc29mdC5LZXlWYXVsdCUyRm1hbmFnZWRIU01zJyZhcGktdmVyc2lvbj0yMDE2LTA5LTAx", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "d8d87603-d4b5-4dec-88e4-63823e415b79" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11974" + ], + "x-ms-request-id": [ + "a2fdef25-b365-4199-85a6-e210bf6f9b13" + ], + "x-ms-correlation-request-id": [ + "a2fdef25-b365-4199-85a6-e210bf6f9b13" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T141652Z:a2fdef25-b365-4199-85a6-e210bf6f9b13" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Fri, 07 Aug 2020 14:16:52 GMT" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Content-Length": [ + "271" + ] + }, + "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"sku\": {\r\n \"name\": \"Standard_B1\",\r\n \"family\": \"B\"\r\n },\r\n \"location\": \"eastus2\",\r\n \"tags\": {}\r\n }\r\n ]\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "PUT", + "RequestBody": "{\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"hsmPoolUri\": \"\",\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90\r\n },\r\n \"location\": \"East US 2\",\r\n \"sku\": {\r\n \"name\": \"Standard_B1\",\r\n \"family\": \"B\"\r\n }\r\n}", + "RequestHeaders": { + "x-ms-client-request-id": [ + "392444bc-d633-4c0c-9860-361d4da0fa28" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Content-Length": [ + "355" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "033b0d1a-2c29-4aea-853f-d3e80fa27ffa" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-subscription-writes": [ + "1198" + ], + "x-ms-correlation-request-id": [ + "699b6ec8-82fc-4319-80aa-6b68a4e5d25c" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T135459Z:699b6ec8-82fc-4319-80aa-6b68a4e5d25c" + ], + "Date": [ + "Fri, 07 Aug 2020 13:54:59 GMT" + ], + "Content-Length": [ + "658" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Provisioning\",\r\n \"statusMessage\": \"Resource creation in progress. Allocating hardware...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "f7eeb16c-079c-4a64-b7f9-adea45a20450" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11991" + ], + "x-ms-correlation-request-id": [ + "1cf89228-c4a9-46c0-800c-5ac29ddedc8d" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T135530Z:1cf89228-c4a9-46c0-800c-5ac29ddedc8d" + ], + "Date": [ + "Fri, 07 Aug 2020 13:55:29 GMT" + ], + "Content-Length": [ + "659" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Provisioning\",\r\n \"statusMessage\": \"Resource creation in progress. Allocating hardware...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "0b018bc7-28aa-4f57-a434-4da910fe0b25" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11990" + ], + "x-ms-correlation-request-id": [ + "2e3a1df2-013b-4fd4-9dac-e24e994b546c" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T135600Z:2e3a1df2-013b-4fd4-9dac-e24e994b546c" + ], + "Date": [ + "Fri, 07 Aug 2020 13:55:59 GMT" + ], + "Content-Length": [ + "659" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Provisioning\",\r\n \"statusMessage\": \"Resource creation in progress. Allocating hardware...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "a1a2c434-ebdf-4987-a70a-26acf5548d6a" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11989" + ], + "x-ms-correlation-request-id": [ + "e010bbd6-52bd-4a6d-afc1-7d549b0fea49" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T135631Z:e010bbd6-52bd-4a6d-afc1-7d549b0fea49" + ], + "Date": [ + "Fri, 07 Aug 2020 13:56:30 GMT" + ], + "Content-Length": [ + "659" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Provisioning\",\r\n \"statusMessage\": \"Resource creation in progress. Allocating hardware...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "dc7374c1-bd12-4863-8ad7-f37fc88fedd9" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11988" + ], + "x-ms-correlation-request-id": [ + "61afc518-9221-4ac1-b2e8-7c85b910d9ee" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T135701Z:61afc518-9221-4ac1-b2e8-7c85b910d9ee" + ], + "Date": [ + "Fri, 07 Aug 2020 13:57:00 GMT" + ], + "Content-Length": [ + "659" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Provisioning\",\r\n \"statusMessage\": \"Resource creation in progress. Allocating hardware...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "8dc4f693-59ab-43fe-ace9-875d265e6616" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11987" + ], + "x-ms-correlation-request-id": [ + "4b116059-fba5-4799-ae3d-2c121661b311" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T135731Z:4b116059-fba5-4799-ae3d-2c121661b311" + ], + "Date": [ + "Fri, 07 Aug 2020 13:57:31 GMT" + ], + "Content-Length": [ + "659" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Provisioning\",\r\n \"statusMessage\": \"Resource creation in progress. Allocating hardware...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "d3c158a6-d26e-435c-9609-a7259cb42b2e" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11985" + ], + "x-ms-correlation-request-id": [ + "28f85dae-ca74-46fb-9096-b23c60ea8184" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T135802Z:28f85dae-ca74-46fb-9096-b23c60ea8184" + ], + "Date": [ + "Fri, 07 Aug 2020 13:58:02 GMT" + ], + "Content-Length": [ + "659" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Provisioning\",\r\n \"statusMessage\": \"Resource creation in progress. Allocating hardware...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "ea9e9a12-3052-447f-a7ec-fadaacf27bdf" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11984" + ], + "x-ms-correlation-request-id": [ + "a15626e8-0ec4-43c2-939c-c187ba4eeb6c" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T135832Z:a15626e8-0ec4-43c2-939c-c187ba4eeb6c" + ], + "Date": [ + "Fri, 07 Aug 2020 13:58:32 GMT" + ], + "Content-Length": [ + "659" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Provisioning\",\r\n \"statusMessage\": \"Resource creation in progress. Allocating hardware...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "74a51b3f-84fa-4937-b98f-0c4420dfc0a8" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11983" + ], + "x-ms-correlation-request-id": [ + "1cce5e51-ebfb-4c0d-8cef-1e1e5614c8c1" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T135903Z:1cce5e51-ebfb-4c0d-8cef-1e1e5614c8c1" + ], + "Date": [ + "Fri, 07 Aug 2020 13:59:02 GMT" + ], + "Content-Length": [ + "659" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Provisioning\",\r\n \"statusMessage\": \"Resource creation in progress. Allocating hardware...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "184a6f3e-5c2c-4071-90f8-f8678467ff1a" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11982" + ], + "x-ms-correlation-request-id": [ + "7dd160c5-521c-484c-ab8e-952339c52a81" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T135933Z:7dd160c5-521c-484c-ab8e-952339c52a81" + ], + "Date": [ + "Fri, 07 Aug 2020 13:59:33 GMT" + ], + "Content-Length": [ + "659" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Provisioning\",\r\n \"statusMessage\": \"Resource creation in progress. Allocating hardware...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "f8d3f02f-a693-4240-bab2-d1295267837a" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11981" + ], + "x-ms-correlation-request-id": [ + "9078712b-3b57-4fd3-81c6-725178691244" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T140004Z:9078712b-3b57-4fd3-81c6-725178691244" + ], + "Date": [ + "Fri, 07 Aug 2020 14:00:03 GMT" + ], + "Content-Length": [ + "659" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Provisioning\",\r\n \"statusMessage\": \"Resource creation in progress. Allocating hardware...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "76d56f80-c0a6-4e87-a82c-ec409c46f422" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11980" + ], + "x-ms-correlation-request-id": [ + "65086d45-d20b-48bc-b095-7f0cb1f5d70f" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T140034Z:65086d45-d20b-48bc-b095-7f0cb1f5d70f" + ], + "Date": [ + "Fri, 07 Aug 2020 14:00:33 GMT" + ], + "Content-Length": [ + "659" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Provisioning\",\r\n \"statusMessage\": \"Resource creation in progress. Allocating hardware...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "eb25868e-7197-4b1e-b618-e270b962cbe1" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11979" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-correlation-request-id": [ + "60b6bbae-6b62-4b28-891f-52c9435b9ef6" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T140105Z:60b6bbae-6b62-4b28-891f-52c9435b9ef6" + ], + "Date": [ + "Fri, 07 Aug 2020 14:01:05 GMT" + ], + "Content-Length": [ + "659" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Provisioning\",\r\n \"statusMessage\": \"Resource creation in progress. Allocating hardware...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "46ca2e67-f4c9-4036-8208-dbc5fa3930d8" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11978" + ], + "x-ms-correlation-request-id": [ + "234b2d0b-93d0-4769-ab52-944bddf6644c" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T140136Z:234b2d0b-93d0-4769-ab52-944bddf6644c" + ], + "Date": [ + "Fri, 07 Aug 2020 14:01:36 GMT" + ], + "Content-Length": [ + "659" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Provisioning\",\r\n \"statusMessage\": \"Resource creation in progress. Allocating hardware...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "0bf36b60-7590-4875-a8f4-5473b8ea192a" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11977" + ], + "x-ms-correlation-request-id": [ + "0315aa9d-97ce-4495-8db3-84e2974990f2" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T140207Z:0315aa9d-97ce-4495-8db3-84e2974990f2" + ], + "Date": [ + "Fri, 07 Aug 2020 14:02:06 GMT" + ], + "Content-Length": [ + "659" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Provisioning\",\r\n \"statusMessage\": \"Resource creation in progress. Allocating hardware...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "2ea4bba0-f70f-4a41-831b-ba0c0462de77" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11976" + ], + "x-ms-correlation-request-id": [ + "91260ac5-10f1-410e-8fee-3730d17d942d" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T140237Z:91260ac5-10f1-410e-8fee-3730d17d942d" + ], + "Date": [ + "Fri, 07 Aug 2020 14:02:37 GMT" + ], + "Content-Length": [ + "659" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Provisioning\",\r\n \"statusMessage\": \"Resource creation in progress. Allocating hardware...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "de5e8914-2da8-4ff1-95fe-a56f8519c1ef" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11975" + ], + "x-ms-correlation-request-id": [ + "79e8024b-12eb-43b0-a238-198bbc11b572" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T140308Z:79e8024b-12eb-43b0-a238-198bbc11b572" + ], + "Date": [ + "Fri, 07 Aug 2020 14:03:07 GMT" + ], + "Content-Length": [ + "656" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Provisioning\",\r\n \"statusMessage\": \"Resource creation in progress. Starting service...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "fdb686bc-e132-41a5-b92e-dbe7320c812a" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11974" + ], + "x-ms-correlation-request-id": [ + "98b87b94-64ee-4cc5-87e4-e19a15b60d5a" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T140338Z:98b87b94-64ee-4cc5-87e4-e19a15b60d5a" + ], + "Date": [ + "Fri, 07 Aug 2020 14:03:38 GMT" + ], + "Content-Length": [ + "656" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Provisioning\",\r\n \"statusMessage\": \"Resource creation in progress. Starting service...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "62dbf7d3-d8b7-47d4-a07d-e857ca262048" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11973" + ], + "x-ms-correlation-request-id": [ + "d9fc32ff-0854-49e4-af8c-5cc2e39daa97" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T140408Z:d9fc32ff-0854-49e4-af8c-5cc2e39daa97" + ], + "Date": [ + "Fri, 07 Aug 2020 14:04:08 GMT" + ], + "Content-Length": [ + "656" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Provisioning\",\r\n \"statusMessage\": \"Resource creation in progress. Starting service...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "b7048b45-0489-4f75-b58f-6985587d07cb" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11972" + ], + "x-ms-correlation-request-id": [ + "70f4ae33-7128-4292-b7d4-b4893bf30c1f" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T140439Z:70f4ae33-7128-4292-b7d4-b4893bf30c1f" + ], + "Date": [ + "Fri, 07 Aug 2020 14:04:38 GMT" + ], + "Content-Length": [ + "656" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Provisioning\",\r\n \"statusMessage\": \"Resource creation in progress. Starting service...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "7ba1e825-2e48-45b9-8ee1-d5221a6a4501" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11974" + ], + "x-ms-correlation-request-id": [ + "f94f61c3-98ff-4580-b9cc-a90fda396acb" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T140509Z:f94f61c3-98ff-4580-b9cc-a90fda396acb" + ], + "Date": [ + "Fri, 07 Aug 2020 14:05:09 GMT" + ], + "Content-Length": [ + "656" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Provisioning\",\r\n \"statusMessage\": \"Resource creation in progress. Starting service...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "734bd07f-350e-48b8-8a61-28acaa06ab72" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11973" + ], + "x-ms-correlation-request-id": [ + "88e8f139-e7d4-4f52-a49d-e481abf84a7c" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T140540Z:88e8f139-e7d4-4f52-a49d-e481abf84a7c" + ], + "Date": [ + "Fri, 07 Aug 2020 14:05:39 GMT" + ], + "Content-Length": [ + "656" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Provisioning\",\r\n \"statusMessage\": \"Resource creation in progress. Starting service...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "d06afd63-21f1-407e-bef1-6b9ec52e8930" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11972" + ], + "x-ms-correlation-request-id": [ + "4f42e450-f4a3-400f-a9f5-bbceeb81cf45" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T140610Z:4f42e450-f4a3-400f-a9f5-bbceeb81cf45" + ], + "Date": [ + "Fri, 07 Aug 2020 14:06:10 GMT" + ], + "Content-Length": [ + "656" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Provisioning\",\r\n \"statusMessage\": \"Resource creation in progress. Starting service...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "472d0fe0-ba39-40e7-a841-449eda09f444" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11971" + ], + "x-ms-correlation-request-id": [ + "6ad83cf3-72b3-483b-b2e0-278111a55527" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T140641Z:6ad83cf3-72b3-483b-b2e0-278111a55527" + ], + "Date": [ + "Fri, 07 Aug 2020 14:06:40 GMT" + ], + "Content-Length": [ + "656" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Provisioning\",\r\n \"statusMessage\": \"Resource creation in progress. Starting service...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "cab9e77f-c7c5-4c84-b379-35554989cf79" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11970" + ], + "x-ms-correlation-request-id": [ + "b24c590e-a030-407b-a655-014dacf5ca43" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T140711Z:b24c590e-a030-407b-a655-014dacf5ca43" + ], + "Date": [ + "Fri, 07 Aug 2020 14:07:10 GMT" + ], + "Content-Length": [ + "656" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Provisioning\",\r\n \"statusMessage\": \"Resource creation in progress. Starting service...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "2c84d85e-5c15-47e8-b211-a1014908b0c3" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11969" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-correlation-request-id": [ + "bfa1f412-0ae6-44bf-a82d-554b5c1e6569" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T140741Z:bfa1f412-0ae6-44bf-a82d-554b5c1e6569" + ], + "Date": [ + "Fri, 07 Aug 2020 14:07:41 GMT" + ], + "Content-Length": [ + "656" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Provisioning\",\r\n \"statusMessage\": \"Resource creation in progress. Starting service...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "91d06774-0154-45ad-89d1-4a57f983b69f" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11968" + ], + "x-ms-correlation-request-id": [ + "25eb8e8c-670a-4162-8989-604aba304a69" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T140813Z:25eb8e8c-670a-4162-8989-604aba304a69" + ], + "Date": [ + "Fri, 07 Aug 2020 14:08:12 GMT" + ], + "Content-Length": [ + "656" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Provisioning\",\r\n \"statusMessage\": \"Resource creation in progress. Starting service...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "024e1031-5314-4476-bf0f-f7fea5276f35" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11967" + ], + "x-ms-correlation-request-id": [ + "ae626b6e-9e40-442f-bf6f-fb2acac5e40f" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T140844Z:ae626b6e-9e40-442f-bf6f-fb2acac5e40f" + ], + "Date": [ + "Fri, 07 Aug 2020 14:08:44 GMT" + ], + "Content-Length": [ + "656" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Provisioning\",\r\n \"statusMessage\": \"Resource creation in progress. Starting service...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "351f8095-4166-4a1c-9609-fbe52dcd04d6" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11966" + ], + "x-ms-correlation-request-id": [ + "bae33368-64d1-4883-b0f8-75184df6aa91" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T140914Z:bae33368-64d1-4883-b0f8-75184df6aa91" + ], + "Date": [ + "Fri, 07 Aug 2020 14:09:14 GMT" + ], + "Content-Length": [ + "656" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Provisioning\",\r\n \"statusMessage\": \"Resource creation in progress. Starting service...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "e7485a4f-a92e-46e8-a3fc-1a1e3b00af5d" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11965" + ], + "x-ms-correlation-request-id": [ + "d46dd322-2141-477e-8555-a43dfbe62eb0" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T140944Z:d46dd322-2141-477e-8555-a43dfbe62eb0" + ], + "Date": [ + "Fri, 07 Aug 2020 14:09:44 GMT" + ], + "Content-Length": [ + "656" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Provisioning\",\r\n \"statusMessage\": \"Resource creation in progress. Starting service...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "69b3a8af-d9cc-4074-86e3-8f87f1555c37" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11969" + ], + "x-ms-correlation-request-id": [ + "29d14fb0-80da-491b-8dc1-5c951909b714" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T141015Z:29d14fb0-80da-491b-8dc1-5c951909b714" + ], + "Date": [ + "Fri, 07 Aug 2020 14:10:15 GMT" + ], + "Content-Length": [ + "656" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Provisioning\",\r\n \"statusMessage\": \"Resource creation in progress. Starting service...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "8eab2c43-1bb8-451d-9cd5-9ede76ebb3f1" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11968" + ], + "x-ms-correlation-request-id": [ + "1999b0ee-b45b-44bb-a688-9f331301aa11" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T141045Z:1999b0ee-b45b-44bb-a688-9f331301aa11" + ], + "Date": [ + "Fri, 07 Aug 2020 14:10:45 GMT" + ], + "Content-Length": [ + "656" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Provisioning\",\r\n \"statusMessage\": \"Resource creation in progress. Starting service...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "a74c8fb6-32d9-4552-81d0-6b32c14f8055" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11967" + ], + "x-ms-correlation-request-id": [ + "b508db8b-26f0-4cc2-b5dd-2d639de3c937" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T141116Z:b508db8b-26f0-4cc2-b5dd-2d639de3c937" + ], + "Date": [ + "Fri, 07 Aug 2020 14:11:15 GMT" + ], + "Content-Length": [ + "656" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Provisioning\",\r\n \"statusMessage\": \"Resource creation in progress. Starting service...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "6f2ff0e3-d14d-4258-a635-75a7114c3f18" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11966" + ], + "x-ms-correlation-request-id": [ + "e4324c91-5bee-45f0-b3d2-eb44590bd247" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T141146Z:e4324c91-5bee-45f0-b3d2-eb44590bd247" + ], + "Date": [ + "Fri, 07 Aug 2020 14:11:46 GMT" + ], + "Content-Length": [ + "656" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Provisioning\",\r\n \"statusMessage\": \"Resource creation in progress. Starting service...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "137c2116-1e28-4006-8b84-d6e6c8073daf" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11965" + ], + "x-ms-correlation-request-id": [ + "daae4303-3581-42ed-bc69-bbf013d15bcf" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T141217Z:daae4303-3581-42ed-bc69-bbf013d15bcf" + ], + "Date": [ + "Fri, 07 Aug 2020 14:12:16 GMT" + ], + "Content-Length": [ + "656" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Provisioning\",\r\n \"statusMessage\": \"Resource creation in progress. Starting service...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "2f1ebf8f-fc38-4b30-989f-aec033fc7ec4" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11964" + ], + "x-ms-correlation-request-id": [ + "fdbf906c-55d5-4e15-95ed-f4fb84b139cd" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T141247Z:fdbf906c-55d5-4e15-95ed-f4fb84b139cd" + ], + "Date": [ + "Fri, 07 Aug 2020 14:12:46 GMT" + ], + "Content-Length": [ + "656" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Provisioning\",\r\n \"statusMessage\": \"Resource creation in progress. Starting service...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "a63d6636-0f49-462f-801c-5fa5df1b71d2" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11963" + ], + "x-ms-correlation-request-id": [ + "08e6aac9-9201-4029-9bdb-2c241688a392" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T141318Z:08e6aac9-9201-4029-9bdb-2c241688a392" + ], + "Date": [ + "Fri, 07 Aug 2020 14:13:17 GMT" + ], + "Content-Length": [ + "656" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Provisioning\",\r\n \"statusMessage\": \"Resource creation in progress. Starting service...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "b8bcb7c4-6b70-4d2f-97a0-2a9c494f901f" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11962" + ], + "x-ms-correlation-request-id": [ + "db5fbffe-9461-4646-9dec-925ae0d78e92" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T141348Z:db5fbffe-9461-4646-9dec-925ae0d78e92" + ], + "Date": [ + "Fri, 07 Aug 2020 14:13:47 GMT" + ], + "Content-Length": [ + "656" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Provisioning\",\r\n \"statusMessage\": \"Resource creation in progress. Starting service...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "b7d9f1ab-cde4-4df6-8639-d99c58ea1cc3" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11961" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-correlation-request-id": [ + "2204d9ee-3755-4594-9eee-7e950def33c5" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T141419Z:2204d9ee-3755-4594-9eee-7e950def33c5" + ], + "Date": [ + "Fri, 07 Aug 2020 14:14:18 GMT" + ], + "Content-Length": [ + "656" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Provisioning\",\r\n \"statusMessage\": \"Resource creation in progress. Starting service...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "6f4baa0a-a187-4485-a89c-3bf5cfd52061" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11960" + ], + "x-ms-correlation-request-id": [ + "14ecf256-3886-4a51-9180-8231254baf2e" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T141450Z:14ecf256-3886-4a51-9180-8231254baf2e" + ], + "Date": [ + "Fri, 07 Aug 2020 14:14:49 GMT" + ], + "Content-Length": [ + "656" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Provisioning\",\r\n \"statusMessage\": \"Resource creation in progress. Starting service...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "14f68469-cdd0-4073-88f0-eee8ab508f80" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11959" + ], + "x-ms-correlation-request-id": [ + "07aeb338-2111-4427-9e10-e28f43053f72" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T141520Z:07aeb338-2111-4427-9e10-e28f43053f72" + ], + "Date": [ + "Fri, 07 Aug 2020 14:15:20 GMT" + ], + "Content-Length": [ + "656" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Provisioning\",\r\n \"statusMessage\": \"Resource creation in progress. Starting service...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "adcd6278-23d3-4c5b-b81d-a1e2b34767e5" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11958" + ], + "x-ms-correlation-request-id": [ + "c19ae55d-1049-4aa1-80c3-618a53383531" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T141551Z:c19ae55d-1049-4aa1-80c3-618a53383531" + ], + "Date": [ + "Fri, 07 Aug 2020 14:15:50 GMT" + ], + "Content-Length": [ + "656" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Provisioning\",\r\n \"statusMessage\": \"Resource creation in progress. Starting service...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "a0637d95-d8ff-4961-b59a-dd266f2a61d0" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11957" + ], + "x-ms-correlation-request-id": [ + "48ae4f11-c96a-4c7d-8b19-9c719297e6aa" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T141621Z:48ae4f11-c96a-4c7d-8b19-9c719297e6aa" + ], + "Date": [ + "Fri, 07 Aug 2020 14:16:21 GMT" + ], + "Content-Length": [ + "656" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Provisioning\",\r\n \"statusMessage\": \"Resource creation in progress. Starting service...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "1d3ff95f-d3c0-4617-ba92-1d380c823002" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11956" + ], + "x-ms-correlation-request-id": [ + "1a569649-d193-48dd-80fb-003f2f6d80a1" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T141652Z:1a569649-d193-48dd-80fb-003f2f6d80a1" + ], + "Date": [ + "Fri, 07 Aug 2020 14:16:51 GMT" + ], + "Content-Length": [ + "653" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Succeeded\",\r\n \"statusMessage\": \"Resource creation in progress. Starting service...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "70841a11-512c-4c3f-9cba-2f246f2f76d7" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "b2860ce5-309c-4ea6-aa48-62df3f4f5c53" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11955" + ], + "x-ms-correlation-request-id": [ + "9bac0148-dd00-4a66-8f85-d9cb1f132481" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T141653Z:9bac0148-dd00-4a66-8f85-d9cb1f132481" + ], + "Date": [ + "Fri, 07 Aug 2020 14:16:52 GMT" + ], + "Content-Length": [ + "653" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"sku\": {\r\n \"family\": \"B\",\r\n \"name\": \"Standard_B1\"\r\n },\r\n \"id\": \"/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411\",\r\n \"name\": \"ps7411\",\r\n \"type\": \"Microsoft.KeyVault/managedHSMs\",\r\n \"location\": \"East US 2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"tenantId\": \"72f988bf-86f1-41af-91ab-2d7cd011db47\",\r\n \"securityDomainId\": \"00000000-0000-0000-0000-000000000000\",\r\n \"hsmUri\": \"https://ps7411.managedhsm.azure.net/\",\r\n \"initialAdminObjectIds\": [\r\n \"c1be1392-39b8-4521-aafc-819a47008545\"\r\n ],\r\n \"enableSoftDelete\": true,\r\n \"softDeleteRetentionInDays\": 90,\r\n \"provisioningState\": \"Succeeded\",\r\n \"statusMessage\": \"Resource creation in progress. Starting service...\"\r\n }\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "a7e5d9f6-ff5f-42f1-9d8e-14f9cd3c1b49" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-failure-cause": [ + "gateway" + ], + "x-ms-request-id": [ + "a087ba8b-7a6a-441e-aa4c-f268df5dd686" + ], + "x-ms-correlation-request-id": [ + "a087ba8b-7a6a-441e-aa4c-f268df5dd686" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T141701Z:a087ba8b-7a6a-441e-aa4c-f268df5dd686" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Fri, 07 Aug 2020 14:17:00 GMT" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Content-Length": [ + "215" + ] + }, + "ResponseBody": "{\r\n \"error\": {\r\n \"code\": \"ResourceNotFound\",\r\n \"message\": \"The Resource 'Microsoft.KeyVault/managedHSMs/ps7411' under resource group 'ps1804' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"\r\n }\r\n}", + "StatusCode": 404 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resources?$filter=resourceType%20eq%20'Microsoft.KeyVault%2Fvaults'&api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlcz8kZmlsdGVyPXJlc291cmNlVHlwZSUyMGVxJTIwJ01pY3Jvc29mdC5LZXlWYXVsdCUyRnZhdWx0cycmYXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "e23863d1-3dd0-47f9-8ea9-4a26521a4ee7" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11975" + ], + "x-ms-request-id": [ + "a760e6b1-6604-432b-983d-f7b0b4a84a1c" + ], + "x-ms-correlation-request-id": [ + "a760e6b1-6604-432b-983d-f7b0b4a84a1c" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T141652Z:a760e6b1-6604-432b-983d-f7b0b4a84a1c" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Fri, 07 Aug 2020 14:16:52 GMT" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Content-Length": [ + "12" + ] + }, + "ResponseBody": "{\r\n \"value\": []\r\n}", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/managedHSMs/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L21hbmFnZWRIU01zL3BzNzQxMT9hcGktdmVyc2lvbj0yMDIwLTA0LTAxLXByZXZpZXc=", + "RequestMethod": "DELETE", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "0b29371e-6f2b-4768-a649-38d6fd88f2fd" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-keyvault-service-version": [ + "1.1.16.0" + ], + "x-ms-request-id": [ + "9730fc41-1eca-4136-bb43-abee6355f065" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-subscription-deletes": [ + "14998" + ], + "x-ms-correlation-request-id": [ + "d04ea25d-b82c-4f3c-8c92-89334ea85936" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T141700Z:d04ea25d-b82c-4f3c-8c92-89334ea85936" + ], + "Date": [ + "Fri, 07 Aug 2020 14:17:00 GMT" + ], + "Expires": [ + "-1" + ], + "Content-Length": [ + "0" + ] + }, + "ResponseBody": "", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourceGroups/ps1804/providers/Microsoft.KeyVault/vaults/ps7411?api-version=2020-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlR3JvdXBzL3BzMTgwNC9wcm92aWRlcnMvTWljcm9zb2Z0LktleVZhdWx0L3ZhdWx0cy9wczc0MTE/YXBpLXZlcnNpb249MjAyMC0wNC0wMS1wcmV2aWV3", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "086eb3ad-45a1-47af-b845-e9608724e4df" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.KeyVault.KeyVaultManagementClient/3.0.1.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-failure-cause": [ + "gateway" + ], + "x-ms-request-id": [ + "65595357-72e0-4a9f-8e04-b07d8dac10be" + ], + "x-ms-correlation-request-id": [ + "65595357-72e0-4a9f-8e04-b07d8dac10be" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T141700Z:65595357-72e0-4a9f-8e04-b07d8dac10be" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Fri, 07 Aug 2020 14:17:00 GMT" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Content-Length": [ + "210" + ] + }, + "ResponseBody": "{\r\n \"error\": {\r\n \"code\": \"ResourceNotFound\",\r\n \"message\": \"The Resource 'Microsoft.KeyVault/vaults/ps7411' under resource group 'ps1804' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"\r\n }\r\n}", + "StatusCode": 404 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/resourcegroups/ps1804?api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL3Jlc291cmNlZ3JvdXBzL3BzMTgwND9hcGktdmVyc2lvbj0yMDE2LTA5LTAx", + "RequestMethod": "DELETE", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "3be8e49d-f933-486e-b370-8fcc1c9b0d9c" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "Location": [ + "https://management.azure.com/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzE4MDQtV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01" + ], + "Retry-After": [ + "15" + ], + "x-ms-ratelimit-remaining-subscription-deletes": [ + "14998" + ], + "x-ms-request-id": [ + "0b90d2a1-ac40-4bc7-b645-648658d73fb9" + ], + "x-ms-correlation-request-id": [ + "0b90d2a1-ac40-4bc7-b645-648658d73fb9" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T141704Z:0b90d2a1-ac40-4bc7-b645-648658d73fb9" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Fri, 07 Aug 2020 14:17:03 GMT" + ], + "Expires": [ + "-1" + ], + "Content-Length": [ + "0" + ] + }, + "ResponseBody": "", + "StatusCode": 202 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzE4MDQtV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpFNE1EUXRWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "Location": [ + "https://management.azure.com/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzE4MDQtV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01" + ], + "Retry-After": [ + "15" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11956" + ], + "x-ms-request-id": [ + "1747ecf8-f48f-4d70-9dfc-330b1ad54883" + ], + "x-ms-correlation-request-id": [ + "1747ecf8-f48f-4d70-9dfc-330b1ad54883" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T141719Z:1747ecf8-f48f-4d70-9dfc-330b1ad54883" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Fri, 07 Aug 2020 14:17:19 GMT" + ], + "Expires": [ + "-1" + ], + "Content-Length": [ + "0" + ] + }, + "ResponseBody": "", + "StatusCode": 202 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzE4MDQtV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpFNE1EUXRWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "Location": [ + "https://management.azure.com/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzE4MDQtV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01" + ], + "Retry-After": [ + "15" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11955" + ], + "x-ms-request-id": [ + "1c79d2e2-c6ba-4b9c-9f8e-aff4b8e4556f" + ], + "x-ms-correlation-request-id": [ + "1c79d2e2-c6ba-4b9c-9f8e-aff4b8e4556f" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T141735Z:1c79d2e2-c6ba-4b9c-9f8e-aff4b8e4556f" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Fri, 07 Aug 2020 14:17:34 GMT" + ], + "Expires": [ + "-1" + ], + "Content-Length": [ + "0" + ] + }, + "ResponseBody": "", + "StatusCode": 202 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzE4MDQtV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpFNE1EUXRWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11954" + ], + "x-ms-request-id": [ + "03b607e7-3dd6-4e37-94a5-03514ffe601c" + ], + "x-ms-correlation-request-id": [ + "03b607e7-3dd6-4e37-94a5-03514ffe601c" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T141750Z:03b607e7-3dd6-4e37-94a5-03514ffe601c" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Fri, 07 Aug 2020 14:17:50 GMT" + ], + "Expires": [ + "-1" + ], + "Content-Length": [ + "0" + ] + }, + "ResponseBody": "", + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/c9cbd920-c00c-427c-852b-8aaf38badaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1QUzE4MDQtV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2016-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYzljYmQ5MjAtYzAwYy00MjdjLTg1MmItOGFhZjM4YmFkYWViL29wZXJhdGlvbnJlc3VsdHMvZXlKcWIySkpaQ0k2SWxKRlUwOVZVa05GUjFKUFZWQkVSVXhGVkVsUFRrcFBRaTFRVXpFNE1EUXRWMFZUVkZWVElpd2lhbTlpVEc5allYUnBiMjRpT2lKM1pYTjBkWE1pZlE/YXBpLXZlcnNpb249MjAxNi0wOS0wMQ==", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "FxVersion/4.6.29017.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.18363.", + "Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient/1.3.21" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "11953" + ], + "x-ms-request-id": [ + "069b1288-92b8-40fc-8e18-e3b3349e50af" + ], + "x-ms-correlation-request-id": [ + "069b1288-92b8-40fc-8e18-e3b3349e50af" + ], + "x-ms-routing-request-id": [ + "KOREASOUTH:20200807T141751Z:069b1288-92b8-40fc-8e18-e3b3349e50af" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Date": [ + "Fri, 07 Aug 2020 14:17:51 GMT" + ], + "Expires": [ + "-1" + ], + "Content-Length": [ + "0" + ] + }, + "ResponseBody": "", + "StatusCode": 200 + } + ], + "Names": { + "Test-ManagedHsmCRUD": [ + "ps1804", + "ps7411", + "ps2420", + "ps2850" + ] + }, + "Variables": { + "SubscriptionId": "c9cbd920-c00c-427c-852b-8aaf38badaeb" + } +} \ No newline at end of file diff --git a/src/KeyVault/KeyVault.sln b/src/KeyVault/KeyVault.sln index dccac43f4a32..2e97e9dd04b1 100644 --- a/src/KeyVault/KeyVault.sln +++ b/src/KeyVault/KeyVault.sln @@ -1,6 +1,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.27703.2042 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.30413.136 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KeyVault", "KeyVault\KeyVault.csproj", "{9FFC40CC-A341-4D0C-A25D-DC6B78EF6C94}" EndProject diff --git a/src/KeyVault/KeyVault/Az.KeyVault.psd1 b/src/KeyVault/KeyVault/Az.KeyVault.psd1 index 5b19ab6923ff..7a9e6299319c 100644 --- a/src/KeyVault/KeyVault/Az.KeyVault.psd1 +++ b/src/KeyVault/KeyVault/Az.KeyVault.psd1 @@ -58,7 +58,10 @@ RequiredModules = @(@{ModuleName = 'Az.Accounts'; ModuleVersion = '1.9.5'; }) # Assemblies that must be loaded prior to importing this module RequiredAssemblies = 'Microsoft.Azure.KeyVault.dll', 'Microsoft.Azure.KeyVault.WebKey.dll', - 'Microsoft.Azure.Management.KeyVault.dll' + 'Microsoft.Azure.Management.KeyVault.dll', + 'Azure.Security.KeyVault.Keys.dll', + 'Azure.Security.KeyVault.Administration.dll', + 'BouncyCastle.Crypto.dll' # Script files (.ps1) that are run in the caller's environment prior to importing this module. # ScriptsToProcess = @() @@ -76,7 +79,10 @@ NestedModules = @('Microsoft.Azure.PowerShell.Cmdlets.KeyVault.dll') FunctionsToExport = @() # Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export. -CmdletsToExport = 'Add-AzKeyVaultCertificate', 'Update-AzKeyVaultCertificate', +CmdletsToExport = 'Add-AzManagedHsmKey', 'Get-AzManagedHsmKey', 'Remove-AzManagedHsmKey', + 'Undo-AzManagedHsmKeyRemoval', 'Update-AzManagedHsmKey', + 'Backup-AzManagedHsmKey', 'Restore-AzManagedHsmKey', + 'Add-AzKeyVaultCertificate', 'Update-AzKeyVaultCertificate', 'Stop-AzKeyVaultCertificateOperation', 'Get-AzKeyVaultCertificateOperation', 'Import-AzKeyVaultCertificate', 'Add-AzKeyVaultCertificateContact', @@ -87,8 +93,14 @@ CmdletsToExport = 'Add-AzKeyVaultCertificate', 'Update-AzKeyVaultCertificate', 'Remove-AzKeyVaultCertificateIssuer', 'Remove-AzKeyVaultCertificateOperation', 'Set-AzKeyVaultCertificateIssuer', - 'Set-AzKeyVaultCertificatePolicy', 'Get-AzKeyVault', 'New-AzKeyVault', + 'Set-AzKeyVaultCertificatePolicy', + 'Get-AzManagedHsm', 'New-AzManagedHsm', + 'Remove-AzManagedHsm', 'Update-AzManagedHsm', + 'Get-AzKeyVault', 'New-AzKeyVault', 'Remove-AzKeyVault', 'Undo-AzKeyVaultRemoval', + 'Backup-AzManagedHsm', 'Restore-AzManagedHsm', + 'Get-AzManagedHsmRoleDefinition', 'Get-AzManagedHsmRoleAssignment', + 'New-AzManagedHsmRoleAssignment', 'Remove-AzManagedHsmRoleAssignment', 'Remove-AzKeyVaultAccessPolicy', 'Set-AzKeyVaultAccessPolicy', 'Backup-AzKeyVaultKey', 'Get-AzKeyVaultKey', 'Get-AzKeyVaultSecret', 'Undo-AzKeyVaultKeyRemoval', 'Undo-AzKeyVaultSecretRemoval', @@ -115,14 +127,16 @@ CmdletsToExport = 'Add-AzKeyVaultCertificate', 'Update-AzKeyVaultCertificate', 'Undo-AzKeyVaultManagedStorageSasDefinitionRemoval', 'Undo-AzKeyVaultManagedStorageAccountRemoval', 'Add-AzKeyVaultNetworkRule', 'Update-AzKeyVaultNetworkRuleSet', - 'Remove-AzKeyVaultNetworkRule' + 'Remove-AzKeyVaultNetworkRule', 'Backup-AzManagedHsmSecurityDomain', + 'Restore-AzManagedHsmSecurityDomain' # Variables to export from this module # VariablesToExport = @() # Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export. AliasesToExport = 'Set-AzKeyVaultKey', 'Set-AzKeyVaultSecretAttribute', - 'Set-AzKeyVaultKeyAttribute', 'Set-AzKeyVaultCertificateAttribute' + 'Set-AzKeyVaultKeyAttribute', 'Set-AzKeyVaultCertificateAttribute', + 'Set-AzManagedHsmKey', 'Set-AzManagedHsmKeyAttribute' # DSC resources to export from this module # DscResourcesToExport = @() diff --git a/src/KeyVault/KeyVault/ChangeLog.md b/src/KeyVault/KeyVault/ChangeLog.md index ec1bb8ffc992..dec6eea0975e 100644 --- a/src/KeyVault/KeyVault/ChangeLog.md +++ b/src/KeyVault/KeyVault/ChangeLog.md @@ -20,6 +20,9 @@ ## Upcoming Release * [Breaking Change] Deprecated parameter DisableSoftDelete in `New-AzKeyVault` and EnableSoftDelete in `Update-AzKeyVault` * [Breaking Change] Removed attribute SecretValueText to avoid displaying SecretValue directly [#12266] +* Supported new resource type: managed HSM + - CRUD of managed HSM and cmdlets to operate keys on managed HSM + - Full HSM backup/restore, AES key creation, security domain backup/restore, RBAC ## Version 2.2.1 * Provided the detailed date of removing property SecretValueText diff --git a/src/KeyVault/KeyVault/Commands/AddAzureKeyVaultKey.cs b/src/KeyVault/KeyVault/Commands/AddAzureKeyVaultKey.cs index 78b8d89123ed..b001b0da9c2b 100644 --- a/src/KeyVault/KeyVault/Commands/AddAzureKeyVaultKey.cs +++ b/src/KeyVault/KeyVault/Commands/AddAzureKeyVaultKey.cs @@ -232,10 +232,6 @@ public override void ExecuteCmdlet() if (ShouldProcess(Name, Properties.Resources.AddKey)) { PSKeyVaultKey keyBundle; - if (InputObject != null) - { - VaultName = InputObject.VaultName.ToString(); - } if (string.IsNullOrEmpty(KeyFilePath)) { @@ -243,7 +239,8 @@ public override void ExecuteCmdlet() VaultName, Name, CreateKeyAttributes(), - Size); + Size, + null); } else { @@ -300,4 +297,4 @@ internal JsonWebKey CreateWebKeyFromFile() return converterChain.ConvertKeyFromFile(keyFile, KeyFilePassword); } } -} +} \ No newline at end of file diff --git a/src/KeyVault/KeyVault/Commands/AddAzureManagedHsmKey.cs b/src/KeyVault/KeyVault/Commands/AddAzureManagedHsmKey.cs new file mode 100644 index 000000000000..053bd351e0d1 --- /dev/null +++ b/src/KeyVault/KeyVault/Commands/AddAzureManagedHsmKey.cs @@ -0,0 +1,262 @@ +using Microsoft.Azure.Commands.KeyVault.Models; +using Microsoft.Azure.Commands.KeyVault.Properties; +using Microsoft.Azure.Commands.ResourceManager.Common.ArgumentCompleters; +using Microsoft.Azure.Management.Internal.Resources.Utilities.Models; +using System; +using System.Collections; +using System.IO; +using System.Linq; +using System.Management.Automation; +using System.Security; +using Track2Sdk = Azure.Security.KeyVault.Keys; + +namespace Microsoft.Azure.Commands.KeyVault.Commands +{ /// + /// Create a new key in managed HSM. This cmdlet supports the following types of key creation. + /// 1. Create a key with default key attributes + /// 2. Create a key with given key attributes + /// 3. Create a key from a .pfx file by importing key material + /// + [Cmdlet("Add", ResourceManager.Common.AzureRMConstants.AzurePrefix + "ManagedHsmKey", SupportsShouldProcess = true, DefaultParameterSetName = InteractiveCreateParameterSet)] + [OutputType(typeof(PSKeyVaultKey))] + public class AddAzureManagedHsmKey : KeyVaultCmdletBase + { + #region Parameter Set Names + + private const string InteractiveCreateParameterSet = "InteractiveCreate"; + private const string InputObjectCreateParameterSet = "InputObjectCreate"; + private const string ResourceIdCreateParameterSet = "ResourceIdCreate"; + private const string InteractiveImportParameterSet = "InteractiveImport"; + private const string InputObjectImportParameterSet = "InputObjectImport"; + private const string ResourceIdImportParameterSet = "ResourceIdImport"; + + #endregion + + #region Input Parameter Definitions + + /// + /// HSM name + /// + [Parameter(Mandatory = true, + ParameterSetName = InteractiveCreateParameterSet, + Position = 0, + HelpMessage = "HSM name. Cmdlet constructs the FQDN of a managed HSM based on the name and currently selected environment.")] + [Parameter(Mandatory = true, + ParameterSetName = InteractiveImportParameterSet, + Position = 0, + HelpMessage = "HSM name. Cmdlet constructs the FQDN of a managed HSM based on the name and currently selected environment.")] + [ResourceNameCompleter("Microsoft.KeyVault/managedHSMs", "FakeResourceGroupName")] + [ValidateNotNullOrEmpty] + public string HsmName { get; set; } + + [Parameter(Mandatory = true, + ParameterSetName = InputObjectCreateParameterSet, + Position = 0, + ValueFromPipeline = true, + HelpMessage = "HSM object.")] + [Parameter(Mandatory = true, + ParameterSetName = InputObjectImportParameterSet, + Position = 0, + ValueFromPipeline = true, + HelpMessage = "HSM object.")] + [ValidateNotNullOrEmpty] + public PSManagedHsm InputObject { get; set; } + + [Parameter(Mandatory = true, + ParameterSetName = ResourceIdCreateParameterSet, + Position = 0, + ValueFromPipelineByPropertyName = true, + HelpMessage = "HSM Resource Id.")] + [Parameter(Mandatory = true, + ParameterSetName = ResourceIdImportParameterSet, + Position = 0, + ValueFromPipelineByPropertyName = true, + HelpMessage = "HSM Resource Id.")] + [ValidateNotNullOrEmpty] + public string ResourceId { get; set; } + + /// + /// key name + /// + [Parameter(Mandatory = true, + Position = 1, + HelpMessage = "Key name. Cmdlet constructs the FQDN of a key from managed HSM name, currently selected environment and key name.")] + [ValidateNotNullOrEmpty] + [Alias(Constants.KeyName)] + public string Name { get; set; } + + /// + /// Path to the local file containing to-be-imported key material. + /// The supported suffix are: + /// 1. byok + /// 2. pfx + /// + [Parameter(Mandatory = true, + ParameterSetName = InteractiveImportParameterSet, + HelpMessage = "Path to the local file containing the key material to be imported.")] + [Parameter(Mandatory = true, + ParameterSetName = InputObjectImportParameterSet, + HelpMessage = "Path to the local file containing the key material to be imported.")] + [Parameter(Mandatory = true, + ParameterSetName = ResourceIdImportParameterSet, + HelpMessage = "Path to the local file containing the key material to be imported.")] + [ValidateNotNullOrEmpty] + public string KeyFilePath { get; set; } + + /// + /// Password of the imported file. + /// Required for pfx file + /// + [Parameter(Mandatory = false, + ParameterSetName = InteractiveImportParameterSet, + HelpMessage = "Password of the local file containing the key material to be imported.")] + [Parameter(Mandatory = false, + ParameterSetName = InputObjectImportParameterSet, + HelpMessage = "Password of the local file containing the key material to be imported.")] + [Parameter(Mandatory = false, + ParameterSetName = ResourceIdImportParameterSet, + HelpMessage = "Password of the local file containing the key material to be imported.")] + [ValidateNotNullOrEmpty] + public SecureString KeyFilePassword { get; set; } + + /// + /// key type + /// + [Parameter(Mandatory = true, + ParameterSetName = InteractiveCreateParameterSet, + HelpMessage = "Specifies the key type of this key.")] + [Parameter(Mandatory = true, + ParameterSetName = InputObjectCreateParameterSet, + HelpMessage = "Specifies the key type of this key.")] + [Parameter(Mandatory = true, + ParameterSetName = ResourceIdCreateParameterSet, + HelpMessage = "Specifies the key type of this key.")] + [PSArgumentCompleter("RSA", "EC", "oct")] + public string KeyType { get; set; } + + /// + /// curve name + /// + [Parameter(Mandatory = false, + HelpMessage = "Specifies the curve name of elliptic curve cryptography, this value is valid when KeyType is EC.")] + [PSArgumentCompleter("P-256", "P-256K", "P-384", "P-521")] + public string CurveName { get; set; } + + /// + /// Set key in disabled state if present + /// + [Parameter(Mandatory = false, + HelpMessage = "Indicates that the key you are adding is set to an initial state of disabled. Any attempt to use the key will fail. Use this parameter if you are preloading keys that you intend to enable later.")] + public SwitchParameter Disable { get; set; } + + /// + /// Key operations + /// + [Parameter(Mandatory = false, + HelpMessage = "The operations that can be performed with the key. If not present, all operations can be performed.")] + public string[] KeyOps { get; set; } + + /// + /// Key expires time in UTC time + /// + [Parameter(Mandatory = false, + HelpMessage = "Specifies the expiration time of the key in UTC. If not specified, key will not expire.")] + public DateTime? Expires { get; set; } + + /// + /// The UTC time before which key can't be used + /// + [Parameter(Mandatory = false, + HelpMessage = "The UTC time before which the key can't be used. If not specified, there is no limitation.")] + public DateTime? NotBefore { get; set; } + + /// + /// Key tags + /// + [Parameter(Mandatory = false, + HelpMessage = "A hashtable representing key tags.")] + [Alias(Constants.TagsAlias)] + public Hashtable Tag { get; set; } + + + [Parameter(Mandatory = false, + ParameterSetName = InputObjectCreateParameterSet, + HelpMessage = "RSA key size, in bits. If not specified, the service will provide a safe default.")] + [Parameter(Mandatory = false, + ParameterSetName = InteractiveCreateParameterSet, + HelpMessage = "RSA key size, in bits. If not specified, the service will provide a safe default.")] + [Parameter(Mandatory = false, + ParameterSetName = ResourceIdCreateParameterSet, + HelpMessage = "RSA key size, in bits. If not specified, the service will provide a safe default.")] + public int? Size { get; set; } + #endregion + + public override void ExecuteCmdlet() + { + if (InputObject != null) + { + HsmName = InputObject.VaultName; + } + else if (ResourceId != null) + { + var resourceIdentifier = new ResourceIdentifier(ResourceId); + HsmName = resourceIdentifier.ResourceName; + } + + ValidateKeyExchangeKey(); + + if (ShouldProcess(Name, Properties.Resources.AddKey)) + { + PSKeyVaultKey keyBundle; + + if (string.IsNullOrEmpty(KeyFilePath)) + { + keyBundle = this.Track2DataClient.CreateManagedHsmKey( + HsmName, + Name, + CreateKeyAttributes(), + Size, + CurveName); + } + else + { + keyBundle = this.Track2DataClient.ImportManagedHsmKey( + HsmName, Name, + CreateWebKeyFromFile()); + } + this.WriteObject(keyBundle); + } + } + private void ValidateKeyExchangeKey() + { + if (KeyOps != null && KeyOps.Contains(Constants.KeyOpsImport)) + { + // "import" is exclusive, it cannot be combined with any other value(s). + if (KeyOps.Length > 1) { throw new ArgumentException(Resources.KeyOpsImportIsExclusive); } + } + } + + internal PSKeyVaultKeyAttributes CreateKeyAttributes() + { + return new Models.PSKeyVaultKeyAttributes( + !Disable.IsPresent, + Expires, + NotBefore, + KeyType, + KeyOps, + Tag); + } + + internal Track2Sdk.JsonWebKey CreateWebKeyFromFile() + { + FileInfo keyFile = new FileInfo(this.GetUnresolvedProviderPathFromPSPath(this.KeyFilePath)); + if (!keyFile.Exists) + { + throw new FileNotFoundException(string.Format(Resources.KeyFileNotFound, this.KeyFilePath)); + } + + var converterChain = WebKeyConverterFactory.CreateConverterChain(); + return converterChain.ConvertToTrack2SdkKeyFromFile(keyFile, KeyFilePassword); + } + } +} diff --git a/src/KeyVault/KeyVault/Commands/BackupAzureManagedHsmKey.cs b/src/KeyVault/KeyVault/Commands/BackupAzureManagedHsmKey.cs new file mode 100644 index 000000000000..bc67c0997fd5 --- /dev/null +++ b/src/KeyVault/KeyVault/Commands/BackupAzureManagedHsmKey.cs @@ -0,0 +1,114 @@ +using Microsoft.Azure.Commands.Common.Authentication; +using Microsoft.Azure.Commands.KeyVault.Models; +using Microsoft.Azure.Commands.KeyVault.Properties; +using Microsoft.Azure.Commands.ResourceManager.Common.ArgumentCompleters; +using System; +using System.Management.Automation; + +namespace Microsoft.Azure.Commands.KeyVault +{ + /// + /// Requests that a backup of the specified key be downloaded and stored to a file + /// + /// + /// The cmdlet returns the path of the newly created backup file. + /// + [Cmdlet("Backup", ResourceManager.Common.AzureRMConstants.AzurePrefix + "ManagedHsmKey", SupportsShouldProcess = true, DefaultParameterSetName = ByKeyNameParameterSet)] + [OutputType(typeof(String))] + public class BackupAzureManagedHsmKey : KeyVaultCmdletBase + { + #region parameter sets + + private const string ByKeyNameParameterSet = "ByKeyName"; + private const string ByKeyObjectParameterSet = "ByKey"; + + #endregion + + #region Input Parameter Definitions + + /// + /// HSM name + /// + [Parameter(Mandatory = true, + Position = 0, + ParameterSetName = ByKeyNameParameterSet, + HelpMessage = "HSM name. Cmdlet constructs the FQDN of a managed HSM based on the name and currently selected environment.")] + [ResourceNameCompleter("Microsoft.KeyVault/managedHSMs", "FakeResourceGroupName")] + [ValidateNotNullOrEmpty] + public string HsmName { get; set; } + + /// + /// Key name + /// + [Parameter(Mandatory = true, + Position = 1, + ParameterSetName = ByKeyNameParameterSet, + HelpMessage = "Key name. Cmdlet constructs the FQDN of a key from managed HSM name, currently selected environment and key name.")] + [ValidateNotNullOrEmpty] + [Alias(Constants.KeyName)] + public string Name { get; set; } + + /// + /// KeyBundle object to be backed up. + /// + /// + /// Note that the backup applies to the entire family of a key (current and all its versions); + /// since a key bundle represents a single version, the intent of this parameter is to allow pipelining. + /// The backup cmdlet will use the Name and VaultName properties of the KeyBundle parameter. + /// + [Parameter(Mandatory = true, + Position = 0, + ValueFromPipeline = true, + ParameterSetName = ByKeyObjectParameterSet, + HelpMessage = "Key bundle to back up, pipelined in from the output of a retrieval call.")] + [ValidateNotNullOrEmpty] + [Alias("Key")] + public PSKeyVaultKeyIdentityItem InputObject { get; set; } + + /// + /// The output file in which the backup blob is to be stored + /// + [Parameter(Mandatory = false, + Position = 2, + HelpMessage = "Output file. The output file to store the backed up key blob in. If not present, a default filename is chosen.")] + [ValidateNotNullOrEmpty] + public string OutputFile { get; set; } + + /// + /// Instructs the cmdlet to overwrite the destination file, if it exists. + /// + [Parameter(Mandatory = false, + HelpMessage = "Overwrite the given file if it exists")] + public SwitchParameter Force { get; set; } + + #endregion Input Parameter Definition + + public override void ExecuteCmdlet() + { + if (InputObject != null) + { + Name = InputObject.Name; + HsmName = InputObject.VaultName; + } + + if (ShouldProcess(Name, Properties.Resources.BackupKey)) + { + if (string.IsNullOrEmpty(OutputFile)) + { + OutputFile = GetDefaultFileForOperation("backup", HsmName, Name); + } + + var filePath = this.GetUnresolvedProviderPathFromPSPath(OutputFile); + + // deny request if the file exists and overwrite is not authorized + if (!AzureSession.Instance.DataStore.FileExists(filePath) + || Force.IsPresent + || ShouldContinue(string.Format(Resources.FileOverwriteMessage, filePath), Resources.FileOverwriteCaption)) + { + var backupBlobPath = this.Track2DataClient.BackupManagedHsmKey(HsmName, Name, filePath); + this.WriteObject(backupBlobPath); + } + } + } + } +} \ No newline at end of file diff --git a/src/KeyVault/KeyVault/Commands/Constants.cs b/src/KeyVault/KeyVault/Commands/Constants.cs index 3e4926c94086..cb7990f61565 100644 --- a/src/KeyVault/KeyVault/Commands/Constants.cs +++ b/src/KeyVault/KeyVault/Commands/Constants.cs @@ -55,5 +55,14 @@ public static class CmdletNoun public const string AzureKeyVaultManagedStorageQueueSasParameters = "AzureKeyVaultManagedStorageQueueSasParameters"; public const string AzureKeyVaultManagedStorageShareSasParameters = "AzureKeyVaultManagedStorageShareSasParameters"; public const string AzureKeyVaultManagedStorageTableSasParameters = "AzureKeyVaultManagedStorageTableSasParameters"; + + public const string ManagedHsm = "ManagedHsm"; + public const string ManagedHsmRoleDefinition = ManagedHsm + "RoleDefinition"; + public const string ManagedHsmRoleAssignment = ManagedHsm + "RoleAssignment"; + } + + public static class ResourceType + { + public const string ManagedHsm = "Microsoft.KeyVault/managedHSMs"; } } diff --git a/src/KeyVault/KeyVault/Commands/FullBackupRestore/BackupAzureManagedHsm.cs b/src/KeyVault/KeyVault/Commands/FullBackupRestore/BackupAzureManagedHsm.cs new file mode 100644 index 000000000000..8e495c3fa8f9 --- /dev/null +++ b/src/KeyVault/KeyVault/Commands/FullBackupRestore/BackupAzureManagedHsm.cs @@ -0,0 +1,32 @@ +using Azure.Core.Diagnostics; +using Microsoft.Azure.Commands.KeyVault.Properties; +using Microsoft.WindowsAzure.Commands.Common; +using Microsoft.WindowsAzure.Commands.Utilities.Common; +using System; +using System.Management.Automation; + +namespace Microsoft.Azure.Commands.KeyVault.Commands +{ + [Cmdlet("Backup", ResourceManager.Common.AzureRMConstants.AzurePrefix + CmdletNoun.ManagedHsm, SupportsShouldProcess = true, DefaultParameterSetName = InteractiveStorageName)] + [OutputType(typeof(string))] + public class BackupAzureManagedHsm : FullBackupRestoreCmdletBase + { + public override void DoExecuteCmdlet() + { + + ConfirmAction( + string.Format(Resources.DoFullBackup, StorageContainerUri), + Name, () => + { + try + { + WriteObject(Track2DataClient.BackupHsm(Name, StorageContainerUri, SasToken.ConvertToString()).AbsoluteUri); + } + catch (Exception ex) + { + throw new Exception(string.Format(Resources.FullBackupFailed, Name), ex); + } + }); + } + } +} diff --git a/src/KeyVault/KeyVault/Commands/FullBackupRestore/FullBackupRestoreCmdletBase.cs b/src/KeyVault/KeyVault/Commands/FullBackupRestore/FullBackupRestoreCmdletBase.cs new file mode 100644 index 000000000000..762591997ea4 --- /dev/null +++ b/src/KeyVault/KeyVault/Commands/FullBackupRestore/FullBackupRestoreCmdletBase.cs @@ -0,0 +1,74 @@ +using Microsoft.Azure.Commands.Common.Authentication; +using Microsoft.Azure.Commands.Common.Authentication.Abstractions; +using Microsoft.Azure.Commands.KeyVault.Models; +using Microsoft.WindowsAzure.Commands.Utilities.Common; +using System; +using System.Management.Automation; +using System.Security; + +namespace Microsoft.Azure.Commands.KeyVault.Commands +{ + public abstract class FullBackupRestoreCmdletBase : KeyVaultCmdletBase + { + protected const string InteractiveStorageUri = "InteractiveStorageUri"; + protected const string InputObjectStorageUri = "InputObjectStorageUri"; + protected const string InteractiveStorageName = "InteractiveStorageName"; + protected const string InputObjectStorageName = "InputObjectStorageName"; + + [Parameter(ParameterSetName = InteractiveStorageUri, Mandatory = true, Position = 1, + HelpMessage = "Name of the HSM.")] + [Parameter(ParameterSetName = InteractiveStorageName, Mandatory = true, Position = 1, + HelpMessage = "Name of the HSM.")] + [Alias("HsmName")] + public string Name { get; set; } + + [Parameter(ParameterSetName = InteractiveStorageUri, Mandatory = true, + HelpMessage = "URI of the storage container where the backup is going to be stored.")] + [Parameter(ParameterSetName = InputObjectStorageUri, Mandatory = true, + HelpMessage = "URI of the storage container where the backup is going to be stored.")] + public Uri StorageContainerUri { get; set; } + + [Parameter(ParameterSetName = InteractiveStorageName, Mandatory = true, + HelpMessage = "Name of the storage account where the backup is going to be stored.")] + [Parameter(ParameterSetName = InputObjectStorageName, Mandatory = true, + HelpMessage = "Name of the storage account where the backup is going to be stored.")] + public string StorageAccountName { get; set; } + + [Parameter(ParameterSetName = InteractiveStorageName, Mandatory = true, + HelpMessage = "Name of the blob container where the backup is going to be stored.")] + [Parameter(ParameterSetName = InputObjectStorageName, Mandatory = true, + HelpMessage = "Name of the blob container where the backup is going to be stored.")] + public string StorageContainerName { get; set; } + + [Parameter(Mandatory = true, HelpMessage = "The shared access signature (SAS) token to authenticate the storage account.")] + public SecureString SasToken { get; set; } + + [Parameter(ParameterSetName = InputObjectStorageUri, Mandatory = true, HelpMessage = "Managed HSM object")] + [Parameter(ParameterSetName = InputObjectStorageName, Mandatory = true, HelpMessage = "Managed HSM object")] + public PSManagedHsm HsmObject { get; set; } + + public override void ExecuteCmdlet() + { + PreprocessParameterSet(); + DoExecuteCmdlet(); + } + + /// + /// Prepare parameters so the implementation doesn't care about parameter set + /// + private void PreprocessParameterSet() + { + if (this.IsParameterBound(c => c.HsmObject)) + { + Name = HsmObject.Name; + } + + if (this.IsParameterBound(c => c.StorageAccountName)) + { + StorageContainerUri = new Uri($"https://{StorageAccountName}.{DefaultContext.Environment.GetEndpoint(AzureEnvironment.Endpoint.StorageEndpointSuffix)}/{StorageContainerName}"); + } + } + + public abstract void DoExecuteCmdlet(); + } +} diff --git a/src/KeyVault/KeyVault/Commands/FullBackupRestore/RestoreAzureManagedHsm.cs b/src/KeyVault/KeyVault/Commands/FullBackupRestore/RestoreAzureManagedHsm.cs new file mode 100644 index 000000000000..e5eb62760d11 --- /dev/null +++ b/src/KeyVault/KeyVault/Commands/FullBackupRestore/RestoreAzureManagedHsm.cs @@ -0,0 +1,42 @@ +using Azure.Core.Diagnostics; +using Microsoft.Azure.Commands.KeyVault.Properties; +using Microsoft.WindowsAzure.Commands.Common; +using Microsoft.WindowsAzure.Commands.Utilities.Common; +using System; +using System.Management.Automation; + +namespace Microsoft.Azure.Commands.KeyVault.Commands +{ + [Cmdlet("Restore", ResourceManager.Common.AzureRMConstants.AzurePrefix + "ManagedHsm", SupportsShouldProcess = true, DefaultParameterSetName = InteractiveStorageName)] + [OutputType(typeof(bool))] + public class RestoreAzureManagedHsm : FullBackupRestoreCmdletBase + { + [Parameter(Mandatory = true, HelpMessage = "Folder name of the backup, e.g. 'mhsm-*-2020101309020403'.\nIt can also be nested such as 'backups/mhsm-*-2020101309020403'.")] + public string BackupFolder { get; set; } + + [Parameter(Mandatory = false, HelpMessage = "Return true when the HSM is restored.")] + public SwitchParameter PassThru { get; set; } + + public override void DoExecuteCmdlet() + { + ConfirmAction( + string.Format(Resources.DoFullRestore, StorageContainerUri), + Name, () => + { + try + { + Track2DataClient.RestoreHsm(Name, StorageContainerUri, SasToken.ConvertToString(), BackupFolder); + } + catch (Exception ex) + { + throw new Exception(string.Format(Resources.FullRestoreFailed, Name), ex); + } + if (PassThru) + { + WriteObject(true); + } + } + ); + } + } +} diff --git a/src/KeyVault/KeyVault/Commands/GetAzureKeyVault.cs b/src/KeyVault/KeyVault/Commands/GetAzureKeyVault.cs index f1b44ddff4bc..6a83e09ebc87 100644 --- a/src/KeyVault/KeyVault/Commands/GetAzureKeyVault.cs +++ b/src/KeyVault/KeyVault/Commands/GetAzureKeyVault.cs @@ -102,11 +102,10 @@ public override void ExecuteCmdlet() { case GetVaultParameterSet: ResourceGroupName = string.IsNullOrWhiteSpace(ResourceGroupName) ? GetResourceGroupName(VaultName) : ResourceGroupName; - PSKeyVault vault = null; if (ShouldGetByName(ResourceGroupName, VaultName)) { - vault = KeyVaultManagementClient.GetVault( + PSKeyVault vault = KeyVaultManagementClient.GetVault( VaultName, ResourceGroupName, ActiveDirectoryClient); diff --git a/src/KeyVault/KeyVault/Commands/GetAzureKeyVaultKey.cs b/src/KeyVault/KeyVault/Commands/GetAzureKeyVaultKey.cs index 750b12221055..558766f89d81 100644 --- a/src/KeyVault/KeyVault/Commands/GetAzureKeyVaultKey.cs +++ b/src/KeyVault/KeyVault/Commands/GetAzureKeyVaultKey.cs @@ -206,7 +206,7 @@ public override void ExecuteCmdlet() if (InputObject != null) { - VaultName = InputObject.VaultName.ToString(); + VaultName = InputObject.VaultName; } else if (!string.IsNullOrEmpty(ResourceId)) { diff --git a/src/KeyVault/KeyVault/Commands/GetAzureManagedHsm.cs b/src/KeyVault/KeyVault/Commands/GetAzureManagedHsm.cs new file mode 100644 index 000000000000..522ecac856ad --- /dev/null +++ b/src/KeyVault/KeyVault/Commands/GetAzureManagedHsm.cs @@ -0,0 +1,73 @@ +using Microsoft.Azure.Commands.KeyVault.Models; +using Microsoft.Azure.Commands.ResourceManager.Common.ArgumentCompleters; +using System.Collections; +using System.Management.Automation; + +namespace Microsoft.Azure.Commands.KeyVault.Commands +{ + [Cmdlet("Get", ResourceManager.Common.AzureRMConstants.AzureRMPrefix + "ManagedHsm")] + [OutputType(typeof(PSManagedHsm), typeof(PSKeyVaultIdentityItem))] + public class GetAzureManagedHsm : KeyVaultManagementCmdletBase + { + #region Input Parameter Definitions + + /// + /// HSM name + /// + [Parameter(Mandatory = false, + Position = 0, + ValueFromPipelineByPropertyName = true, + HelpMessage = "HSM name. Cmdlet constructs the FQDN of a HSM based on the name and currently selected environment.")] + [ResourceNameCompleter("Microsoft.KeyVault/managedHSMs", "ResourceGroupName")] + [Alias("HsmName")] + [ValidateNotNullOrEmpty] + [SupportsWildcards] + public string Name { get; set; } + + /// + /// Resource group name + /// + [Parameter(Mandatory = false, + Position = 1, + ValueFromPipelineByPropertyName = true, + HelpMessage = "Specifies the name of the resource group associated with the managed HSM being queried.")] + [ResourceGroupCompleter] + [ValidateNotNullOrEmpty] + [SupportsWildcards] + public string ResourceGroupName { get; set; } + + /// + /// Tag value + /// + [Parameter( + Mandatory = false, + ValueFromPipelineByPropertyName = true, + HelpMessage = "Specifies the key and optional value of the specified tag to filter the list of managed HSMs by.")] + public Hashtable Tag { get; set; } + + #endregion + + public override void ExecuteCmdlet() + { + ResourceGroupName = string.IsNullOrWhiteSpace(ResourceGroupName) ? GetResourceGroupName(Name, true) : ResourceGroupName; + + if (ShouldGetByName(ResourceGroupName, Name)) + { + PSManagedHsm mhsm = KeyVaultManagementClient.GetManagedHsm( + Name, + ResourceGroupName, + ActiveDirectoryClient); + WriteObject(FilterByTag(mhsm, Tag)); + } + else + { + WriteObject( + TopLevelWildcardFilter( + ResourceGroupName, Name, + FilterByTag( + KeyVaultManagementClient.ListManagedHsms(ResourceGroupName, ActiveDirectoryClient), Tag)), + true); + } + } + } +} diff --git a/src/KeyVault/KeyVault/Commands/GetAzureManagedHsmKey.cs b/src/KeyVault/KeyVault/Commands/GetAzureManagedHsmKey.cs new file mode 100644 index 000000000000..087aec66b7a4 --- /dev/null +++ b/src/KeyVault/KeyVault/Commands/GetAzureManagedHsmKey.cs @@ -0,0 +1,263 @@ +using Microsoft.Azure.Commands.Common.Authentication; +using Microsoft.Azure.Commands.KeyVault.Helpers; +using Microsoft.Azure.Commands.KeyVault.Models; +using Microsoft.Azure.Commands.KeyVault.Properties; +using Microsoft.Azure.Commands.ResourceManager.Common.ArgumentCompleters; +using Microsoft.Azure.KeyVault.WebKey; +using Microsoft.Azure.Management.Internal.Resources.Utilities.Models; +using System.Linq; +using System.Management.Automation; + +namespace Microsoft.Azure.Commands.KeyVault +{ + [Cmdlet("Get", ResourceManager.Common.AzureRMConstants.AzurePrefix + "ManagedHsmKey", DefaultParameterSetName = SpecifyHsmByHsmName + GetKeyWithoutConstraint)] + [OutputType(typeof(PSKeyVaultKeyIdentityItem), typeof(PSKeyVaultKey), typeof(PSDeletedKeyVaultKeyIdentityItem), typeof(PSDeletedKeyVaultKey))] + public class GetAzureManagedHsmKey : KeyVaultCmdletBase + { + + #region Parameter Set Names + + private const string SpecifyHsmByHsmName = "SpecifyHsmByHsmName"; + private const string SpecifyHsmByInputObject = "SpecifyHsmByInputObject"; + private const string SpecifyHsmByResourceId = "SpecifyHsmByResourceId"; + + private const string GetKeyWithoutConstraint = "GetKeyWithoutConstraint"; + private const string GetKeyWithSpecifiedVersion = "GetKeyWithSpecifiedVersion"; + private const string GetKeyIncludeAllVersions = "GetKeyIncludeAllVersions"; + + private readonly string[] _supportedTypesForDownload = new string[] { Constants.RSA, Constants.RSAHSM }; + + #endregion + + #region Input Parameter Definitions + + /// + /// HSM name + /// + [Parameter(Mandatory = true, + Position = 0, + ParameterSetName = SpecifyHsmByHsmName + GetKeyWithoutConstraint, + HelpMessage = "HSM name. Cmdlet constructs the FQDN of a managed HSM based on the name and currently selected environment.")] + [Parameter(Mandatory = true, + Position = 0, + ParameterSetName = SpecifyHsmByHsmName + GetKeyWithSpecifiedVersion, + HelpMessage = "HSM name. Cmdlet constructs the FQDN of a managed HSM based on the name and currently selected environment.")] + [Parameter(Mandatory = true, + Position = 0, + ParameterSetName = SpecifyHsmByHsmName + GetKeyIncludeAllVersions, + HelpMessage = "HSM name. Cmdlet constructs the FQDN of a managed HSM based on the name and currently selected environment.")] + [ResourceNameCompleter("Microsoft.KeyVault/managedHSMs", "FakeResourceGroupName")] + [ValidateNotNullOrEmpty] + public string HsmName { get; set; } + + /// + /// HSM object + /// + [Parameter(Mandatory = true, + Position = 0, + ValueFromPipeline = true, + ParameterSetName = SpecifyHsmByInputObject + GetKeyWithoutConstraint, + HelpMessage = "HSM object.")] + [Parameter(Mandatory = true, + Position = 0, + ValueFromPipeline = true, + ParameterSetName = SpecifyHsmByInputObject + GetKeyWithSpecifiedVersion, + HelpMessage = "HSM object.")] + [Parameter(Mandatory = true, + Position = 0, + ValueFromPipeline = true, + ParameterSetName = SpecifyHsmByInputObject + GetKeyIncludeAllVersions, + HelpMessage = "HSM object.")] + [ValidateNotNullOrEmpty] + public PSManagedHsm InputObject { get; set; } + + /// + /// HSM resource id + /// + [Parameter(Mandatory = true, + Position = 0, + ValueFromPipelineByPropertyName = true, + ParameterSetName = SpecifyHsmByResourceId + GetKeyWithoutConstraint, + HelpMessage = "HSM Resource Id.")] + [Parameter(Mandatory = true, + Position = 0, + ValueFromPipelineByPropertyName = true, + ParameterSetName = SpecifyHsmByResourceId + GetKeyWithSpecifiedVersion, + HelpMessage = "HSM Resource Id.")] + [Parameter(Mandatory = true, + Position = 0, + ValueFromPipelineByPropertyName = true, + ParameterSetName = SpecifyHsmByResourceId + GetKeyIncludeAllVersions, + HelpMessage = "HSM ResourceId.")] + [ValidateNotNullOrEmpty] + public string ResourceId { get; set; } + + /// + /// Key name. + /// + [Parameter(Mandatory = false, + ParameterSetName = SpecifyHsmByHsmName + GetKeyWithoutConstraint, + Position = 1, + HelpMessage = "Key name. Cmdlet constructs the FQDN of a key from HSM name, currently selected environment and key name.")] + [Parameter(Mandatory = false, + ParameterSetName = SpecifyHsmByInputObject + GetKeyWithoutConstraint, + Position = 1, + HelpMessage = "Key name. Cmdlet constructs the FQDN of a key from HSM name, currently selected environment and key name.")] + [Parameter(Mandatory = false, + ParameterSetName = SpecifyHsmByResourceId + GetKeyWithoutConstraint, + Position = 1, + HelpMessage = "Key name. Cmdlet constructs the FQDN of a key from HSM name, currently selected environment and key name.")] + [Parameter(Mandatory = true, + ParameterSetName = SpecifyHsmByHsmName + GetKeyWithSpecifiedVersion, + Position = 1, + HelpMessage = "Key name. Cmdlet constructs the FQDN of a key from HSM name, currently selected environment and key name.")] + [Parameter(Mandatory = true, + ParameterSetName = SpecifyHsmByInputObject + GetKeyWithSpecifiedVersion, + Position = 1, + HelpMessage = "Key name. Cmdlet constructs the FQDN of a key from HSM name, currently selected environment and key name.")] + [Parameter(Mandatory = true, + ParameterSetName = SpecifyHsmByResourceId + GetKeyWithSpecifiedVersion, + Position = 1, + HelpMessage = "Key name. Cmdlet constructs the FQDN of a key from HSM name, currently selected environment and key name.")] + [Parameter(Mandatory = true, + ParameterSetName = SpecifyHsmByHsmName + GetKeyIncludeAllVersions, + Position = 1, + HelpMessage = "Key name. Cmdlet constructs the FQDN of a key from HSM name, currently selected environment and key name.")] + [Parameter(Mandatory = true, + ParameterSetName = SpecifyHsmByInputObject + GetKeyIncludeAllVersions, + Position = 1, + HelpMessage = "Key name. Cmdlet constructs the FQDN of a key from HSM name, currently selected environment and key name.")] + [Parameter(Mandatory = true, + ParameterSetName = SpecifyHsmByResourceId + GetKeyIncludeAllVersions, + Position = 1, + HelpMessage = "Key name. Cmdlet constructs the FQDN of a key from HSM name, currently selected environment and key name.")] + [ValidateNotNullOrEmpty] + [Alias(Constants.KeyName)] + [SupportsWildcards] + public string Name { get; set; } + + /// + /// Key version. + /// + [Parameter(Mandatory = true, + ParameterSetName = SpecifyHsmByHsmName + GetKeyWithSpecifiedVersion, + Position = 2, + HelpMessage = "Key version. Cmdlet constructs the FQDN of a key from HSM name, currently selected environment, key name and key version.")] + [Parameter(Mandatory = true, + ParameterSetName = SpecifyHsmByInputObject + GetKeyWithSpecifiedVersion, + Position = 2, + HelpMessage = "Key version. Cmdlet constructs the FQDN of a key from HSM name, currently selected environment, key name and key version.")] + [Parameter(Mandatory = true, + ParameterSetName = SpecifyHsmByResourceId + GetKeyWithSpecifiedVersion, + Position = 2, + HelpMessage = "Key version. Cmdlet constructs the FQDN of a key from HSM name, currently selected environment, key name and key version.")] + [Alias("KeyVersion")] + public string Version { get; set; } + + [Parameter(Mandatory = true, + ParameterSetName = SpecifyHsmByHsmName + GetKeyIncludeAllVersions, + HelpMessage = "Specifies whether to include the versions of the key in the output.")] + [Parameter(Mandatory = true, + ParameterSetName = SpecifyHsmByInputObject + GetKeyIncludeAllVersions, + HelpMessage = "Specifies whether to include the versions of the key in the output.")] + [Parameter(Mandatory = true, + ParameterSetName = SpecifyHsmByResourceId + GetKeyIncludeAllVersions, + HelpMessage = "Specifies whether to include the versions of the key in the output.")] + public SwitchParameter IncludeVersions { get; set; } + + [Parameter(Mandatory = false, + ParameterSetName = SpecifyHsmByHsmName + GetKeyWithoutConstraint, + HelpMessage = "Specifies whether to show the previously deleted keys in the output.")] + [Parameter(Mandatory = false, + ParameterSetName = SpecifyHsmByInputObject + GetKeyWithoutConstraint, + HelpMessage = "Specifies whether to show the previously deleted keys in the output.")] + [Parameter(Mandatory = false, + ParameterSetName = SpecifyHsmByResourceId + GetKeyWithoutConstraint, + HelpMessage = "Specifies whether to show the previously deleted keys in the output.")] + public SwitchParameter InRemovedState { get; set; } + + [Parameter(Mandatory = false, HelpMessage = "Specifies the output file for which this cmdlet saves the key. The public key is saved in PEM format by default.")] + [ValidateNotNullOrEmpty] + public string OutFile { get; set; } + + #endregion + + public override void ExecuteCmdlet() + { + PSKeyVaultKey keyBundle = null; + + if (InputObject != null) + { + HsmName = InputObject.VaultName; + } + else if (!string.IsNullOrEmpty(ResourceId)) + { + var parsedResourceId = new ResourceIdentifier(ResourceId); + HsmName = parsedResourceId.ResourceName; + } + + if (!string.IsNullOrEmpty(Version)) + { + keyBundle = this.Track2DataClient.GetManagedHsmKey(HsmName, Name, Version); + WriteObject(keyBundle); + } + else if (IncludeVersions.IsPresent) + { + WriteObject(this.Track2DataClient.GetManagedHsmKeyAllVersions(HsmName, Name), true); + } + else if (InRemovedState.IsPresent) + { + if (string.IsNullOrEmpty(Name) || WildcardPattern.ContainsWildcardCharacters(Name)) + { + WriteObject(KVSubResourceWildcardFilter( + Name, this.Track2DataClient.GetManagedHsmDeletedKeys(HsmName)), + true); + } + else + { + PSDeletedKeyVaultKey deletedKeyBundle = this.Track2DataClient.GetManagedHsmDeletedKey(HsmName, Name); + WriteObject(deletedKeyBundle); + } + } + else + { + if (string.IsNullOrEmpty(Name) || WildcardPattern.ContainsWildcardCharacters(Name)) + { + WriteObject(KVSubResourceWildcardFilter( + Name, this.Track2DataClient.GetManagedHsmKeys(HsmName)), + true); + } + else + { + keyBundle = this.Track2DataClient.GetManagedHsmKey(HsmName, Name, string.Empty); + WriteObject(keyBundle); + } + } + + if (!string.IsNullOrEmpty(OutFile) && keyBundle != null) + { + DownloadKey(keyBundle.Key, OutFile); + } + } + + private void DownloadKey(JsonWebKey jwk, string path) + { + if (CanDownloadKey(jwk, out string reason)) + { + var pem = JwkHelper.ExportPublicKeyToPem(jwk); + AzureSession.Instance.DataStore.WriteFile(path, pem); + WriteDebug(string.Format(Resources.PublicKeySavedAt, path)); + } + else + { + WriteWarning(reason); + } + } + + private bool CanDownloadKey(JsonWebKey jwk, out string reason) + { + reason = string.Format(Resources.DownloadNotSupported, jwk.Kty); + return _supportedTypesForDownload.Contains(jwk.Kty); + } + } +} diff --git a/src/KeyVault/KeyVault/Commands/NewAzureKeyVault.cs b/src/KeyVault/KeyVault/Commands/NewAzureKeyVault.cs index 71c7fcc0a201..4a6f7270111c 100644 --- a/src/KeyVault/KeyVault/Commands/NewAzureKeyVault.cs +++ b/src/KeyVault/KeyVault/Commands/NewAzureKeyVault.cs @@ -98,7 +98,8 @@ public class NewAzureKeyVault : KeyVaultManagementCmdletBase [Parameter(Mandatory = false, ValueFromPipelineByPropertyName = true, HelpMessage = "Specifies the SKU of the key vault instance. For information about which features are available for each SKU, see the Azure Key Vault Pricing website (http://go.microsoft.com/fwlink/?linkid=512521).")] - public SkuName Sku { get; set; } + [PSArgumentCompleter("Standard", "Premium")] + public string Sku { get; set; } [Parameter(Mandatory = false, ValueFromPipelineByPropertyName = true, @@ -150,9 +151,9 @@ public override void ExecuteCmdlet() }; } - var newVault = KeyVaultManagementClient.CreateNewVault(new VaultCreationParameters() + var newVault = KeyVaultManagementClient.CreateNewVault(new VaultCreationOrUpdateParameters() { - VaultName = this.Name, + Name = this.Name, ResourceGroupName = this.ResourceGroupName, Location = this.Location, EnabledForDeployment = this.EnabledForDeployment.IsPresent, diff --git a/src/KeyVault/KeyVault/Commands/NewAzureManagedHsm.cs b/src/KeyVault/KeyVault/Commands/NewAzureManagedHsm.cs new file mode 100644 index 000000000000..904cf5600079 --- /dev/null +++ b/src/KeyVault/KeyVault/Commands/NewAzureManagedHsm.cs @@ -0,0 +1,103 @@ +using Microsoft.Azure.Commands.KeyVault.Models; +using Microsoft.Azure.Commands.KeyVault.Properties; +using Microsoft.Azure.Commands.ResourceManager.Common.ArgumentCompleters; +using System; +using System.Collections; +using System.Management.Automation; + +namespace Microsoft.Azure.Commands.KeyVault.Commands +{ + /// + /// Create a new managed HSM. + /// + [Cmdlet("New", ResourceManager.Common.AzureRMConstants.AzureRMPrefix + "ManagedHsm", SupportsShouldProcess = true)] + [OutputType(typeof(PSManagedHsm))] + public class NewAzureManagedHsm : KeyVaultManagementCmdletBase + { + #region Input Parameter Definitions + + /// + /// HSM name + /// + [Parameter(Mandatory = true, + Position = 0, + ValueFromPipelineByPropertyName = true, + HelpMessage = + "Specifies a name of the managed HSM to create. The name can be any combination of letters, digits, or hyphens. The name must start and end with a letter or digit. The name must be universally unique." + )] + [ValidateNotNullOrEmpty] + [Alias("HsmName")] + public string Name { get; set; } + + /// + /// Resource group name + /// + [Parameter(Mandatory = true, + Position = 1, + ValueFromPipelineByPropertyName = true, + HelpMessage = "Specifies the name of an existing resource group in which to create the key vault.")] + [ResourceGroupCompleter] + [ValidateNotNullOrEmpty()] + public string ResourceGroupName { get; set; } + + /// + /// Location + /// + [Parameter(Mandatory = true, + Position = 2, + ValueFromPipelineByPropertyName = true, + HelpMessage = "Specifies the Azure region in which to create the key vault. Use the command Get-AzResourceProvider with the ProviderNamespace parameter to see your choices.")] + [LocationCompleter("Microsoft.KeyVault/managedHSMs")] + [ValidateNotNullOrEmpty()] + public string Location { get; set; } + + [Parameter(Mandatory = true, + Position = 3, + ValueFromPipelineByPropertyName = true, + HelpMessage = "Initial administrator object id for this managed HSM pool.")] + public string[] Administrator { get; set; } + + [Parameter(Mandatory = false, + ValueFromPipelineByPropertyName = true, + HelpMessage = "Specifies the SKU of the managed HSM instance.")] + [PSArgumentCompleter("StandardB1", "CustomB32")] + public string Sku { get; set; } + + [Parameter(Mandatory = false, + ValueFromPipelineByPropertyName = true, + HelpMessage = "A hash table which represents resource tags.")] + [Alias(Constants.TagsAlias)] + public Hashtable Tag { get; set; } + + [Parameter(Mandatory = false, HelpMessage = "Run cmdlet in the background")] + public SwitchParameter AsJob { get; set; } + + #endregion + + public override void ExecuteCmdlet() + { + if (ShouldProcess(Name, Properties.Resources.CreateKeyVault)) + { + if (VaultExistsInCurrentSubscription(Name, true)) + { + throw new ArgumentException(Resources.HsmAlreadyExists); + } + + var vaultCreationParameter = new VaultCreationOrUpdateParameters() + { + Name = this.Name, + ResourceGroupName = this.ResourceGroupName, + Location = this.Location, + SkuName = this.Sku, + TenantId = GetTenantId(), + Tags = this.Tag, + Administrator = this.Administrator, + SkuFamilyName = DefaultManagedHsmSkuFamily + }; + + this.WriteObject(KeyVaultManagementClient.CreateNewManagedHsm(vaultCreationParameter, ActiveDirectoryClient)); + } + } + + } +} diff --git a/src/KeyVault/KeyVault/Commands/RBAC/GetAzureManagedHsmRoleAssignment.cs b/src/KeyVault/KeyVault/Commands/RBAC/GetAzureManagedHsmRoleAssignment.cs new file mode 100644 index 000000000000..06119a752a63 --- /dev/null +++ b/src/KeyVault/KeyVault/Commands/RBAC/GetAzureManagedHsmRoleAssignment.cs @@ -0,0 +1,121 @@ +using Microsoft.Azure.Commands.KeyVault.Models; +using Microsoft.Azure.Commands.ResourceManager.Common.ArgumentCompleters; +using Microsoft.Azure.Graph.RBAC.Version1_6.ActiveDirectory; +using Microsoft.Azure.Graph.RBAC.Version1_6.Models; +using Microsoft.WindowsAzure.Commands.Utilities.Common; +using System; +using System.Linq; +using System.Management.Automation; + +namespace Microsoft.Azure.Commands.KeyVault.Commands +{ + [Cmdlet("Get", ResourceManager.Common.AzureRMConstants.AzurePrefix + CmdletNoun.ManagedHsmRoleAssignment, DefaultParameterSetName = ListParameterSet)] + [OutputType(typeof(PSKeyVaultRoleAssignment))] + public class GetAzureManagedHsmRoleAssignment : RbacCmdletBase + { + private const string ListParameterSet = "List"; + private const string GetByNameParameterSet = "GetByName"; + + [Parameter(Mandatory = true, Position = 1, + HelpMessage = "Name of the HSM.")] + [ResourceNameCompleter(ResourceType.ManagedHsm, "IntentionalFakeParameterName")] + public string HsmName { get; set; } + + [Parameter(Mandatory = false, HelpMessage = "Scope at which the role assignment or definition applies to, e.g., '/' or '/keys' or '/keys/{keyName}'. By default it lists all scopes.")] + public string Scope { get; set; } = string.Empty; + + [Parameter(Mandatory = false, ParameterSetName = ListParameterSet, + HelpMessage = "Name of the RBAC role to assign the principal with.")] + [Alias("RoleName")] + public string RoleDefinitionName { get; set; } + + [Parameter(Mandatory = false, ParameterSetName = ListParameterSet, + HelpMessage = "Role Id the principal is assigned to.")] + [Alias("RoleId")] + [ValidateNotNullOrEmpty] + public string RoleDefinitionId { get; set; } + + [Parameter(Mandatory = false, ParameterSetName = ListParameterSet, + HelpMessage = "The user or group object id.")] + [ValidateNotNullOrEmpty] + [Alias("Id", "PrincipalId")] + public string ObjectId { get; set; } + + [Parameter(Mandatory = false, ParameterSetName = ListParameterSet, + HelpMessage = "The user SignInName.")] + [ValidateNotNullOrEmpty] + [Alias("Email", "UserPrincipalName")] + public string SignInName { get; set; } + + [Parameter(Mandatory = false, ParameterSetName = ListParameterSet, + HelpMessage = "The app SPN.")] + [ValidateNotNullOrEmpty] + [Alias("SPN", "ServicePrincipalName")] + public string ApplicationId { get; set; } + + [Parameter(Mandatory = true, ParameterSetName = GetByNameParameterSet, + HelpMessage = "Name of the role assignment.")] + [ValidateNotNullOrEmpty] + public string RoleAssignmentName { get; set; } + + public override void ExecuteCmdlet() + { + switch (ParameterSetName) + { + case ListParameterSet: + DoList(); + break; + case GetByNameParameterSet: + DoGetByName(); + break; + } + } + + private void DoGetByName() + { + var assignment = Track2DataClient.GetHsmRoleAssignment(HsmName, Scope, RoleAssignmentName); + GetAssignmentDetails(assignment, HsmName, Scope); + WriteObject(assignment); + } + + private void DoList() + { + // get role assignments + var assignments = Track2DataClient.GetHsmRoleAssignments(HsmName, Scope); + assignments.ForEach(assignment => GetAssignmentDetails(assignment, HsmName, Scope)); + assignments = FilterAssignments(assignments); + WriteObject(assignments, enumerateCollection: true); + } + + private PSKeyVaultRoleAssignment[] FilterAssignments(PSKeyVaultRoleAssignment[] assignments) + { + if (!string.IsNullOrEmpty(RoleDefinitionName)) + { + var definition = Track2DataClient.GetHsmRoleDefinitions(HsmName, Scope) + .FirstOrDefault(x => string.Equals(x.RoleName, RoleDefinitionName, StringComparison.OrdinalIgnoreCase)); + RoleDefinitionId = definition?.Id; + } + if (!string.IsNullOrEmpty(SignInName)) + { + var filter = new ADObjectFilterOptions() { UPN = SignInName }; + var user = ActiveDirectoryClient.FilterUsers(filter).FirstOrDefault(); + ObjectId = user?.Id.ToString(); + } + if (!string.IsNullOrEmpty(ApplicationId)) + { + var odataQuery = new Rest.Azure.OData.ODataQuery(s => string.Equals(s.AppId, ApplicationId, StringComparison.OrdinalIgnoreCase)); + var app = ActiveDirectoryClient.GetApplicationWithFilters(odataQuery).FirstOrDefault(); + ObjectId = app?.ObjectId.ToString(); + } + if (!string.IsNullOrEmpty(RoleDefinitionId)) + { + assignments = assignments.Where(assignment => string.Equals(assignment.RoleDefinitionId, RoleDefinitionId, StringComparison.OrdinalIgnoreCase)).ToArray(); + } + if (!string.IsNullOrEmpty(ObjectId)) + { + assignments = assignments.Where(assignment => string.Equals(assignment.PrincipalId, ObjectId, StringComparison.OrdinalIgnoreCase)).ToArray(); + } + return assignments; + } + } +} diff --git a/src/KeyVault/KeyVault/Commands/RBAC/GetAzureManagedHsmRoleDefinition.cs b/src/KeyVault/KeyVault/Commands/RBAC/GetAzureManagedHsmRoleDefinition.cs new file mode 100644 index 000000000000..2b192f0b2084 --- /dev/null +++ b/src/KeyVault/KeyVault/Commands/RBAC/GetAzureManagedHsmRoleDefinition.cs @@ -0,0 +1,43 @@ +using Microsoft.Azure.Commands.KeyVault.Models; +using Microsoft.Azure.Commands.ResourceManager.Common.ArgumentCompleters; +using System; +using System.Linq; +using System.Management.Automation; + +namespace Microsoft.Azure.Commands.KeyVault.Commands +{ + [Cmdlet("Get", ResourceManager.Common.AzureRMConstants.AzurePrefix + CmdletNoun.ManagedHsmRoleDefinition, DefaultParameterSetName = InteractiveCreateParameterSet)] + [OutputType(typeof(PSKeyVaultRoleDefinition))] + public class GetAzureManagedHsmRoleDefinition : RbacCmdletBase + { + private const string InteractiveCreateParameterSet = "Interactive"; + private const string ByNameParameterSet = "ByName"; + + [Parameter(Mandatory = true, Position = 1, + HelpMessage = "Name of the HSM.")] + [ResourceNameCompleter(ResourceType.ManagedHsm, "IntentionalFakeParameterName")] + public string HsmName { get; set; } + + [Parameter(Mandatory = false, HelpMessage = "Scope at which the role assignment or definition applies to, e.g., '/' or '/keys' or '/keys/{keyName}'.")] + public string Scope { get; set; } = string.Empty; + + [Parameter(ParameterSetName = ByNameParameterSet, Mandatory = true, + HelpMessage = "Name of the role definition to get.")] + [Alias("RoleName")] + public string RoleDefinitionName { get; set; } + + public override void ExecuteCmdlet() + { + var roleDefinitions = Track2DataClient.GetHsmRoleDefinitions(HsmName, Scope); + switch (ParameterSetName) + { + case InteractiveCreateParameterSet: + WriteObject(roleDefinitions, enumerateCollection: true); + break; + case ByNameParameterSet: + WriteObject(roleDefinitions.FirstOrDefault(def => string.Equals(RoleDefinitionName, def.RoleName, StringComparison.OrdinalIgnoreCase))); + break; + } + } + } +} \ No newline at end of file diff --git a/src/KeyVault/KeyVault/Commands/RBAC/NewAzureManagedHsmRoleAssignment.cs b/src/KeyVault/KeyVault/Commands/RBAC/NewAzureManagedHsmRoleAssignment.cs new file mode 100644 index 000000000000..c1b9d9f41d9b --- /dev/null +++ b/src/KeyVault/KeyVault/Commands/RBAC/NewAzureManagedHsmRoleAssignment.cs @@ -0,0 +1,119 @@ +using Microsoft.Azure.Commands.KeyVault.Models; +using Microsoft.Azure.Commands.KeyVault.Properties; +using Microsoft.Azure.Commands.ResourceManager.Common.ArgumentCompleters; +using Microsoft.Azure.Graph.RBAC.Version1_6.ActiveDirectory; +using Microsoft.Azure.Graph.RBAC.Version1_6.Models; +using System; +using System.Linq; +using System.Management.Automation; + +namespace Microsoft.Azure.Commands.KeyVault.Commands +{ + [Cmdlet("New", ResourceManager.Common.AzureRMConstants.AzurePrefix + CmdletNoun.ManagedHsmRoleAssignment, + SupportsShouldProcess = true, DefaultParameterSetName = ParameterSet.DefinitionNameSignInName)] + [OutputType(typeof(PSKeyVaultRoleAssignment))] + public class NewAzureManagedHsmRoleAssignment : RbacCmdletBase + { + [Parameter(Mandatory = true, Position = 1, + HelpMessage = "Name of the HSM.")] + [ResourceNameCompleter(ResourceType.ManagedHsm, "IntentionalFakeParameterName")] + public string HsmName { get; set; } + + [Parameter(Mandatory = false, HelpMessage = "Scope at which the role assignment or definition applies to, e.g., '/' or '/keys' or '/keys/{keyName}'. '/' is used when omitted.")] + public string Scope { get; set; } = "/"; + + [Parameter(ParameterSetName = ParameterSet.DefinitionNameApplicationId, Mandatory = true, + HelpMessage = "Name of the RBAC role to assign the principal with.")] + [Parameter(ParameterSetName = ParameterSet.DefinitionNameObjectId, Mandatory = true, + HelpMessage = "Name of the RBAC role to assign the principal with.")] + [Parameter(ParameterSetName = ParameterSet.DefinitionNameSignInName, Mandatory = true, + HelpMessage = "Name of the RBAC role to assign the principal with.")] + [Alias("RoleName")] + public string RoleDefinitionName { get; set; } + + [Parameter(Mandatory = true, ParameterSetName = ParameterSet.DefinitionIdApplicationId, + HelpMessage = "Role ID the principal is assigned to.")] + [Parameter(Mandatory = true, ParameterSetName = ParameterSet.DefinitionIdObjectId, + HelpMessage = "Role ID the principal is assigned to.")] + [Parameter(Mandatory = true, ParameterSetName = ParameterSet.DefinitionIdSignInName, + HelpMessage = "Role ID the principal is assigned to.")] + [ValidateNotNullOrEmpty] + [Alias("RoleId")] + public string RoleDefinitionId { get; set; } + + [Parameter(Mandatory = true, ParameterSetName = ParameterSet.DefinitionNameObjectId, + HelpMessage = "The user or group object ID.")] + [Parameter(Mandatory = true, ParameterSetName = ParameterSet.DefinitionIdObjectId, + HelpMessage = "The user or group object ID.")] + [ValidateNotNullOrEmpty] + [Alias("Id", "PrincipalId")] + public string ObjectId { get; set; } + + [Parameter(Mandatory = true, ParameterSetName = ParameterSet.DefinitionNameSignInName, + HelpMessage = "The user sign-in name.")] + [Parameter(Mandatory = true, ParameterSetName = ParameterSet.DefinitionIdSignInName, + HelpMessage = "The user sign-in name.")] + [ValidateNotNullOrEmpty] + [Alias("Email", "UserPrincipalName")] + public string SignInName { get; set; } + + [Parameter(Mandatory = true, ParameterSetName = ParameterSet.DefinitionNameApplicationId, + HelpMessage = "The application ID.")] + [Parameter(Mandatory = true, ParameterSetName = ParameterSet.DefinitionIdApplicationId, + HelpMessage = "The application ID.")] + [ValidateNotNullOrEmpty] + [Alias("SPN", "ServicePrincipalName")] + public string ApplicationId { get; set; } + + public override void ExecuteCmdlet() + { + // convert definition name to id + if (ParameterSetName == ParameterSet.DefinitionNameApplicationId || + ParameterSetName == ParameterSet.DefinitionNameObjectId || + ParameterSetName == ParameterSet.DefinitionNameSignInName) + { + var definition = Track2DataClient.GetHsmRoleDefinitions(HsmName, Scope) + .FirstOrDefault(x => string.Equals(x.RoleName, RoleDefinitionName, StringComparison.OrdinalIgnoreCase)); + if (definition == null) + { + throw new ArgumentException(string.Format(Resources.RoleDefinitionNotFound, RoleDefinitionName)); + } + RoleDefinitionId = definition.Id; + } + + // convert user sign in name to object id + if (ParameterSetName == ParameterSet.DefinitionIdSignInName + || ParameterSetName == ParameterSet.DefinitionNameSignInName) + { + var filter = new ADObjectFilterOptions() { UPN = SignInName }; + var user = ActiveDirectoryClient.FilterUsers(filter).FirstOrDefault(); + if (user == null) + { + throw new ArgumentException(string.Format(Resources.UserNotFoundBy, SignInName)); + } + ObjectId = user.Id.ToString(); + } + // convert service principal app id to object id + if (ParameterSetName == ParameterSet.DefinitionIdApplicationId + || ParameterSetName == ParameterSet.DefinitionNameApplicationId) + { + var odataQuery = new Rest.Azure.OData.ODataQuery(s => string.Equals(s.AppId, ApplicationId, StringComparison.OrdinalIgnoreCase)); + var app = ActiveDirectoryClient.GetApplicationWithFilters(odataQuery).FirstOrDefault(); + if (app == null) + { + throw new ArgumentException(string.Format(Resources.ApplicationNotFoundBy, ApplicationId)); + } + ObjectId = app.ObjectId.ToString(); + } + + base.ConfirmAction( + string.Format(Resources.AssignRole, RoleDefinitionName ?? RoleDefinitionId, SignInName ?? ApplicationId ?? ObjectId, Scope), + HsmName, () => + { + PSKeyVaultRoleAssignment roleAssignment = Track2DataClient.CreateHsmRoleAssignment(HsmName, Scope, RoleDefinitionId, ObjectId); + GetAssignmentDetails(roleAssignment, HsmName, Scope); + WriteObject(roleAssignment); + }); + } + } +} diff --git a/src/KeyVault/KeyVault/Commands/RBAC/RbacCmdletBase.cs b/src/KeyVault/KeyVault/Commands/RBAC/RbacCmdletBase.cs new file mode 100644 index 000000000000..a105a4a9ebed --- /dev/null +++ b/src/KeyVault/KeyVault/Commands/RBAC/RbacCmdletBase.cs @@ -0,0 +1,63 @@ +using Microsoft.Azure.Commands.KeyVault.Models; +using Microsoft.Azure.Graph.RBAC.Version1_6.ActiveDirectory; +using System; +using System.Linq; + +namespace Microsoft.Azure.Commands.KeyVault.Commands +{ + public class RbacCmdletBase: KeyVaultCmdletBase + { + private ActiveDirectoryClient _activeDirectoryClient; + + protected ActiveDirectoryClient ActiveDirectoryClient + { + get + { + if (_activeDirectoryClient != null) return _activeDirectoryClient; + try + { + _activeDirectoryClient = new ActiveDirectoryClient(DefaultProfile.DefaultContext); + } + catch + { + _activeDirectoryClient = null; + } + return _activeDirectoryClient; + } + + set { _activeDirectoryClient = value; } + } + + internal static class ParameterSet + { + public const string DefinitionIdObjectId = "DefinitionIdObjectId"; + public const string DefinitionIdSignInName = "DefinitionIdSignInName"; + public const string DefinitionIdApplicationId = "DefinitionIdApplicationId"; + public const string DefinitionNameObjectId = "DefinitionNameObjectId"; + public const string DefinitionNameSignInName = "DefinitionNameSignInName"; + public const string DefinitionNameApplicationId = "DefinitionNameApplicationId"; + public const string InputObject = "InputObject"; + public const string RoleAssignmentName = "AssignmentName"; + } + + /// + /// Get details of the role assignment -- principal name, role definition name, etc., + /// and assign them back in the role assignment object. + /// + /// + protected void GetAssignmentDetails(PSKeyVaultRoleAssignment assignment, string hsmName, string scope) + { + // get all role definition + var definitions = Track2DataClient.GetHsmRoleDefinitions(hsmName, scope); + + // get info about assignee + var assignee = ModelExtensions.GetDetailsFromADObjectId(assignment.PrincipalId, ActiveDirectoryClient); + (assignment.DisplayName, assignment.ObjectType) = assignee; + + // traverse role definitions to find the correct one + assignment.RoleDefinitionName = definitions + .FirstOrDefault(definition => string.Equals(definition.Id, assignment.RoleDefinitionId, StringComparison.OrdinalIgnoreCase)) + ?.RoleName; + } + } +} diff --git a/src/KeyVault/KeyVault/Commands/RBAC/RemoveAzureManagedHsmRoleAssignment.cs b/src/KeyVault/KeyVault/Commands/RBAC/RemoveAzureManagedHsmRoleAssignment.cs new file mode 100644 index 000000000000..472482191c49 --- /dev/null +++ b/src/KeyVault/KeyVault/Commands/RBAC/RemoveAzureManagedHsmRoleAssignment.cs @@ -0,0 +1,171 @@ +using Microsoft.Azure.Commands.KeyVault.Models; +using Microsoft.Azure.Commands.KeyVault.Properties; +using Microsoft.Azure.Commands.ResourceManager.Common.ArgumentCompleters; +using Microsoft.Azure.Graph.RBAC.Version1_6.ActiveDirectory; +using Microsoft.Azure.Graph.RBAC.Version1_6.Models; +using System; +using System.Linq; +using System.Management.Automation; + +namespace Microsoft.Azure.Commands.KeyVault.Commands +{ + [Cmdlet("Remove", ResourceManager.Common.AzureRMConstants.AzurePrefix + CmdletNoun.ManagedHsmRoleAssignment, + SupportsShouldProcess = true, DefaultParameterSetName = ParameterSet.DefinitionNameSignInName)] + [OutputType(typeof(PSKeyVaultRoleAssignment))] + public class RemoveAzureManagedHsmRoleAssignment : RbacCmdletBase + { + private const string RemoveByNameParameterSet = "RemoveByNameParameterSet"; + + [Parameter(Mandatory = true, Position = 1, HelpMessage = "Name of the HSM.", ParameterSetName = ParameterSet.DefinitionNameApplicationId)] + [Parameter(Mandatory = true, Position = 1, HelpMessage = "Name of the HSM.", ParameterSetName = ParameterSet.DefinitionNameObjectId)] + [Parameter(Mandatory = true, Position = 1, HelpMessage = "Name of the HSM.", ParameterSetName = ParameterSet.DefinitionNameSignInName)] + [Parameter(Mandatory = true, Position = 1, HelpMessage = "Name of the HSM.", ParameterSetName = ParameterSet.DefinitionIdApplicationId)] + [Parameter(Mandatory = true, Position = 1, HelpMessage = "Name of the HSM.", ParameterSetName = ParameterSet.DefinitionIdObjectId)] + [Parameter(Mandatory = true, Position = 1, HelpMessage = "Name of the HSM.", ParameterSetName = ParameterSet.DefinitionIdSignInName)] + [Parameter(Mandatory = true, Position = 1, HelpMessage = "Name of the HSM.", ParameterSetName = RemoveByNameParameterSet)] + [ResourceNameCompleter(ResourceType.ManagedHsm, "IntentionalFakeParameterName")] + public string HsmName { get; set; } // hsm name is in all but input object parameter set + + [Parameter(Mandatory = false, HelpMessage = "Scope at which the role assignment or definition applies to, e.g., '/' or '/keys' or '/keys/{keyName}'. '/' is used when omitted.")] + public string Scope { get; set; } = "/"; + + [Parameter(ParameterSetName = ParameterSet.DefinitionNameApplicationId, Mandatory = true, + HelpMessage = "Name of the RBAC role to assign the principal with.")] + [Parameter(ParameterSetName = ParameterSet.DefinitionNameObjectId, Mandatory = true, + HelpMessage = "Name of the RBAC role to assign the principal with.")] + [Parameter(ParameterSetName = ParameterSet.DefinitionNameSignInName, Mandatory = true, + HelpMessage = "Name of the RBAC role to assign the principal with.")] + [Alias("RoleName")] + public string RoleDefinitionName { get; set; } + + [Parameter(Mandatory = true, ParameterSetName = ParameterSet.DefinitionIdApplicationId, + HelpMessage = "Role Id the principal is assigned to.")] + [Parameter(Mandatory = true, ParameterSetName = ParameterSet.DefinitionIdObjectId, + HelpMessage = "Role Id the principal is assigned to.")] + [Parameter(Mandatory = true, ParameterSetName = ParameterSet.DefinitionIdSignInName, + HelpMessage = "Role Id the principal is assigned to.")] + [ValidateNotNullOrEmpty] + [Alias("RoleId")] + public string RoleDefinitionId { get; set; } + + [Parameter(Mandatory = true, ParameterSetName = ParameterSet.DefinitionNameObjectId, + HelpMessage = "The user or group object id.")] + [Parameter(Mandatory = true, ParameterSetName = ParameterSet.DefinitionIdObjectId, + HelpMessage = "The user or group object id.")] + [ValidateNotNullOrEmpty] + [Alias("Id", "PrincipalId")] + public string ObjectId { get; set; } + + [Parameter(Mandatory = true, ParameterSetName = ParameterSet.DefinitionNameSignInName, + HelpMessage = "The user SignInName.")] + [Parameter(Mandatory = true, ParameterSetName = ParameterSet.DefinitionIdSignInName, + HelpMessage = "The user SignInName.")] + [ValidateNotNullOrEmpty] + [Alias("Email", "UserPrincipalName")] + public string SignInName { get; set; } + + [Parameter(Mandatory = true, ParameterSetName = ParameterSet.DefinitionNameApplicationId, + HelpMessage = "The app SPN.")] + [Parameter(Mandatory = true, ParameterSetName = ParameterSet.DefinitionIdApplicationId, + HelpMessage = "The app SPN.")] + [ValidateNotNullOrEmpty] + [Alias("SPN", "ServicePrincipalName")] + public string ApplicationId { get; set; } + + [Parameter(Mandatory = false)] + public SwitchParameter PassThru { get; set; } + + [Parameter(Mandatory = true, HelpMessage = "Role assignment object.", ParameterSetName = ParameterSet.InputObject, ValueFromPipeline = true)] + public PSKeyVaultRoleAssignment InputObject { get; set; } + + [Parameter(Mandatory = true, ParameterSetName = RemoveByNameParameterSet, + HelpMessage = "Name of the role assignment.")] + [ValidateNotNullOrEmpty] + public string RoleAssignmentName { get; set; } + + public override void ExecuteCmdlet() + { + switch (ParameterSetName) + { + case ParameterSet.InputObject: + RoleAssignmentName = InputObject.Name; + HsmName = InputObject.HsmName; + break; + case RemoveByNameParameterSet: + break; + default: + RoleAssignmentName = GetRoleAssignmentNameFromFilterParameters(); + break; + } + + if (string.IsNullOrEmpty(RoleAssignmentName)) + { + throw new ArgumentException(Resources.RoleAssignmentNotFound); + } + + ConfirmAction( + string.Format(Resources.RemoveRole, RoleDefinitionName ?? RoleDefinitionId, SignInName ?? ApplicationId ?? ObjectId, Scope), + HsmName, () => + { + Track2DataClient.RemoveHsmRoleAssignment(HsmName, Scope, RoleAssignmentName); + if (PassThru) + { + WriteObject(true); + } + }); + } + + private string GetRoleAssignmentNameFromFilterParameters() + { + // convert definition name to id + if (ParameterSetName == ParameterSet.DefinitionNameApplicationId || + ParameterSetName == ParameterSet.DefinitionNameObjectId || + ParameterSetName == ParameterSet.DefinitionNameSignInName) + { + var definition = Track2DataClient.GetHsmRoleDefinitions(HsmName, Scope) + .FirstOrDefault(x => string.Equals(x.RoleName, RoleDefinitionName, StringComparison.OrdinalIgnoreCase)); + if (definition == null) + { + throw new ArgumentException(string.Format(Resources.RoleDefinitionNotFound, RoleDefinitionName)); + } + RoleDefinitionId = definition.Id; + } + + // convert user sign in name to object id + if (ParameterSetName == ParameterSet.DefinitionIdSignInName + || ParameterSetName == ParameterSet.DefinitionNameSignInName) + { + var filter = new ADObjectFilterOptions() { UPN = SignInName }; + var user = ActiveDirectoryClient.FilterUsers(filter).FirstOrDefault(); + if (user == null) + { + throw new ArgumentException(string.Format(Resources.UserNotFoundBy, SignInName)); + } + ObjectId = user.Id.ToString(); + } + // convert service principal app id to object id + if (ParameterSetName == ParameterSet.DefinitionIdApplicationId + || ParameterSetName == ParameterSet.DefinitionNameApplicationId) + { + var odataQuery = new Rest.Azure.OData.ODataQuery(s => string.Equals(s.AppId, ApplicationId, StringComparison.OrdinalIgnoreCase)); + var app = ActiveDirectoryClient.GetApplicationWithFilters(odataQuery).FirstOrDefault(); + if (app == null) + { + throw new ArgumentException(string.Format(Resources.ApplicationNotFoundBy, ApplicationId)); + } + ObjectId = app.ObjectId.ToString(); + } + + var roleAssignment = Track2DataClient.GetHsmRoleAssignments(HsmName, Scope) + .FirstOrDefault(assignment => string.Equals(assignment.PrincipalId, ObjectId) && string.Equals(assignment.RoleDefinitionId, RoleDefinitionId)); + if (roleAssignment == null) + { + throw new Exception(Resources.RoleAssignmentNotFound); + } + else + { + return roleAssignment.Name; + } + } + } +} diff --git a/src/KeyVault/KeyVault/Commands/RemoveAzureKeyVault.cs b/src/KeyVault/KeyVault/Commands/RemoveAzureKeyVault.cs index c0f8a744f636..d675318357bc 100644 --- a/src/KeyVault/KeyVault/Commands/RemoveAzureKeyVault.cs +++ b/src/KeyVault/KeyVault/Commands/RemoveAzureKeyVault.cs @@ -74,7 +74,7 @@ public class RemoveAzureKeyVault : KeyVaultManagementCmdletBase public PSKeyVault InputObject { get; set; } /// - /// Vault object + /// Vault Resource Id /// [Parameter(Mandatory = true, Position = 0, diff --git a/src/KeyVault/KeyVault/Commands/RemoveAzureManagedHsm.cs b/src/KeyVault/KeyVault/Commands/RemoveAzureManagedHsm.cs new file mode 100644 index 000000000000..5c196e9cca0a --- /dev/null +++ b/src/KeyVault/KeyVault/Commands/RemoveAzureManagedHsm.cs @@ -0,0 +1,130 @@ + +using Microsoft.Azure.Commands.KeyVault.Models; +using Microsoft.Azure.Commands.KeyVault.Properties; +using Microsoft.Azure.Commands.ResourceManager.Common.ArgumentCompleters; +using Microsoft.Azure.Management.Internal.Resources.Utilities.Models; +using System; +using System.Globalization; +using System.Management.Automation; + +namespace Microsoft.Azure.Commands.KeyVault +{ + [Cmdlet("Remove", ResourceManager.Common.AzureRMConstants.AzureRMPrefix + "ManagedHsm", SupportsShouldProcess = true, DefaultParameterSetName = RemoveManagedHsmByNameParameterSet)] + [OutputType(typeof(bool))] + public class RemoveAzureManagedHsm : KeyVaultManagementCmdletBase + { + #region Parameter Set Names + + private const string RemoveManagedHsmByNameParameterSet = "RemoveManagedHsmByName"; + private const string RemoveManagedHsmByInputObjectParameterSet = "RemoveManagedHsmByInputObject"; + private const string RemoveManagedHsmByResourceIdParameterSet = "RemoveManagedHsmByResourceId"; + + #endregion + + #region Input Parameter Definitions + + /// + /// HSM name + /// + [Parameter(Mandatory = true, + Position = 0, + ParameterSetName = RemoveManagedHsmByNameParameterSet, + HelpMessage = "Specifies the name of the managed HSM to remove.")] + [ResourceNameCompleter("Microsoft.KeyVault/managedHSMs", "ResourceGroupName")] + [ValidateNotNullOrEmpty] + [Alias("HsmName")] + public string Name { get; set; } + + /// + /// HSM object + /// + [Parameter(Mandatory = true, + Position = 0, + ParameterSetName = RemoveManagedHsmByInputObjectParameterSet, + ValueFromPipeline = true, + HelpMessage = "Managed HSM object to be deleted.")] + [ValidateNotNullOrEmpty] + public PSManagedHsm InputObject { get; set; } + + /// + /// HSM Resource Id + /// + [Parameter(Mandatory = true, + Position = 0, + ParameterSetName = RemoveManagedHsmByResourceIdParameterSet, + ValueFromPipelineByPropertyName = true, + HelpMessage = "Managed HSM Resource Id.")] + [ValidateNotNullOrEmpty] + public string ResourceId { get; set; } + + /// + /// Resource group to which the managed HSM belongs. + /// + [Parameter(Mandatory = false, + Position = 1, + ParameterSetName = RemoveManagedHsmByNameParameterSet, + HelpMessage = "Specifies the name of resource group for Azure managed HSM to remove.")] + [ResourceGroupCompleter] + [ValidateNotNullOrEmpty()] + public string ResourceGroupName { get; set; } + + /// + /// If present, do not ask for confirmation + /// + [Parameter(Mandatory = false, + HelpMessage = "Indicates that the cmdlet does not prompt you for confirmation. By default, this cmdlet prompts you to confirm that you want to delete the managed HSM.")] + public SwitchParameter Force { get; set; } + + [Parameter(Mandatory = false, HelpMessage = "Run cmdlet in the background")] + public SwitchParameter AsJob { get; set; } + + [Parameter(Mandatory = false, + HelpMessage = "This Cmdlet does not return an object by default. If this switch is specified, it returns true if successful.")] + public SwitchParameter PassThru { get; set; } + + #endregion + + public override void ExecuteCmdlet() + { + if (InputObject != null) + { + Name = InputObject.Name; + ResourceGroupName = InputObject.ResourceGroupName; + } + else if (ResourceId != null) + { + var resourceIdentifier = new ResourceIdentifier(ResourceId); + Name = resourceIdentifier.ResourceName; + ResourceGroupName = resourceIdentifier.ResourceGroupName; + } + + // Get resource group name for Managed HSM + ResourceGroupName = string.IsNullOrWhiteSpace(ResourceGroupName) ? GetResourceGroupName(Name, true) : ResourceGroupName; + if (string.IsNullOrWhiteSpace(ResourceGroupName)) + throw new ArgumentException(string.Format(Resources.HsmNotFound, Name, ResourceGroupName)); + + ConfirmAction( + Force.IsPresent, + string.Format( + CultureInfo.InvariantCulture, + Resources.RemoveHsmWarning, + Name), + string.Format( + CultureInfo.InvariantCulture, + Resources.RemoveHsmWhatIfMessage, + Name), + Name, + () => + { + KeyVaultManagementClient.DeleteManagedHsm( + managedHsm: Name, + resourceGroupName: ResourceGroupName); + + if (PassThru) + { + WriteObject(true); + } + }); + } + } +} \ No newline at end of file diff --git a/src/KeyVault/KeyVault/Commands/RemoveAzureManagedHsmKey.cs b/src/KeyVault/KeyVault/Commands/RemoveAzureManagedHsmKey.cs new file mode 100644 index 000000000000..a441f4dcff97 --- /dev/null +++ b/src/KeyVault/KeyVault/Commands/RemoveAzureManagedHsmKey.cs @@ -0,0 +1,133 @@ +// ---------------------------------------------------------------------------------- +// +// Copyright Microsoft Corporation +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// ---------------------------------------------------------------------------------- + +using Microsoft.Azure.Commands.KeyVault.Models; +using System.Globalization; +using System.Management.Automation; +using Microsoft.Azure.Commands.KeyVault.Properties; +using Microsoft.Azure.Commands.ResourceManager.Common.ArgumentCompleters; + +namespace Microsoft.Azure.Commands.KeyVault +{ + [Cmdlet("Remove", ResourceManager.Common.AzureRMConstants.AzurePrefix + "ManagedHsmKey", SupportsShouldProcess = true, DefaultParameterSetName = RemoveByKeyNameParameterSet)] + [OutputType(typeof(PSDeletedKeyVaultKey))] + public class RemoveAzureManagedHsmKey : KeyVaultCmdletBase + { + #region Parameter Set Names + + private const string RemoveByKeyNameParameterSet = "RemoveByKeyNameParameterSet"; + private const string RemoveByInputObjectParameterSet = "RemoveByInputObjectParameterSet"; + + #endregion + + #region Input Parameter Definitions + + /// + /// HSM name + /// + [Parameter(Mandatory = true, + Position = 0, + ParameterSetName = RemoveByKeyNameParameterSet, + HelpMessage = "HSM name. Cmdlet constructs the FQDN of a managed HSM based on the name and currently selected environment.")] + [ResourceNameCompleter("Microsoft.KeyVault/managedHSMs", "FakeResourceGroupName")] + [ValidateNotNullOrEmpty] + public string HsmName { get; set; } + + /// + /// key name + /// + [Parameter(Mandatory = true, + Position = 1, + ParameterSetName = RemoveByKeyNameParameterSet, + HelpMessage = "Key name. Cmdlet constructs the FQDN of a key from managed HSM name, currently selected environment and key name.")] + [ValidateNotNullOrEmpty] + [Alias(Constants.KeyName)] + public string Name { get; set; } + + /// + /// Key object + /// + [Parameter(Mandatory = true, + Position = 0, + ValueFromPipeline = true, + ParameterSetName = RemoveByInputObjectParameterSet, + HelpMessage = "Key Object")] + [ValidateNotNullOrEmpty] + public PSKeyVaultKeyIdentityItem InputObject { get; set; } + + /// + /// If present, do not ask for confirmation + /// + [Parameter(Mandatory = false, + HelpMessage = "Do not ask for confirmation.")] + public SwitchParameter Force { get; set; } + + [Parameter(Mandatory = false, + HelpMessage = "Cmdlet does not return an object by default. If this switch is specified, the cmdlet returns the key object that was deleted.")] + public SwitchParameter PassThru { get; set; } + + /// + /// If present, operate on the deleted key entity. + /// + [Parameter(Mandatory = false, + HelpMessage = "Remove the previously deleted key permanently.")] + public SwitchParameter InRemovedState { get; set; } + + #endregion + public override void ExecuteCmdlet() + { + if (InputObject != null) + { + HsmName = InputObject.VaultName; + Name = InputObject.Name; + } + + if (InRemovedState.IsPresent) + { + ConfirmAction( + Force.IsPresent, + string.Format( + CultureInfo.InvariantCulture, + Resources.RemoveDeletedKeyWarning, + Name), + string.Format( + CultureInfo.InvariantCulture, + Resources.RemoveDeletedKeyWhatIfMessage, + Name), + Name, + () => { this.Track2DataClient.PurgeManagedHsmKey(HsmName, Name); }); + return; + } + + PSDeletedKeyVaultKey deletedKeyBundle = null; + ConfirmAction( + Force.IsPresent, + string.Format( + CultureInfo.InvariantCulture, + Resources.RemoveKeyWarning, + Name), + string.Format( + CultureInfo.InvariantCulture, + Resources.RemoveKeyWhatIfMessage, + Name), + Name, + () => { deletedKeyBundle = this.Track2DataClient.DeleteManagedHsmKey(HsmName, Name); }); + + if (PassThru) + { + WriteObject(deletedKeyBundle); + } + } + } +} diff --git a/src/KeyVault/KeyVault/Commands/RestoreAzureManagedHsmKey.cs b/src/KeyVault/KeyVault/Commands/RestoreAzureManagedHsmKey.cs new file mode 100644 index 000000000000..0b22602ea77f --- /dev/null +++ b/src/KeyVault/KeyVault/Commands/RestoreAzureManagedHsmKey.cs @@ -0,0 +1,103 @@ +using Microsoft.Azure.Commands.KeyVault.Models; +using Microsoft.Azure.Commands.KeyVault.Properties; +using Microsoft.Azure.Commands.ResourceManager.Common.ArgumentCompleters; +using Microsoft.Azure.Management.Internal.Resources.Utilities.Models; +using System.IO; +using System.Management.Automation; + +namespace Microsoft.Azure.Commands.KeyVault +{ + /// + /// Restores the backup key into a vault + /// + [Cmdlet("Restore", ResourceManager.Common.AzureRMConstants.AzurePrefix + "ManagedHsmKey", SupportsShouldProcess = true, DefaultParameterSetName = ByHsmNameParameterSet)] + [OutputType(typeof(PSKeyVaultKey))] + public class RestoreAzureManagedHsmKey : KeyVaultCmdletBase + { + #region Parameter Set Names + + private const string ByHsmNameParameterSet = "ByHsmName"; + private const string ByInputObjectParameterSet = "ByInputObject"; + private const string ByResourceIdParameterSet = "ByResourceId"; + + #endregion + + #region Input Parameter Definitions + + /// + /// HSM name + /// + [Parameter(Mandatory = true, + Position = 0, + ParameterSetName = ByHsmNameParameterSet, + HelpMessage = "HSM name. Cmdlet constructs the FQDN of a managed HSM based on the name and currently selected environment.")] + [ResourceNameCompleter("Microsoft.KeyVault/managedHSMs", "FakeResourceGroupName")] + [ValidateNotNullOrEmpty] + public string HsmName { get; set; } + + /// + /// HSM object + /// + [Parameter(Mandatory = true, + Position = 0, + ParameterSetName = ByInputObjectParameterSet, + ValueFromPipeline = true, + HelpMessage = "Hsm object")] + [ValidateNotNullOrEmpty] + public PSManagedHsm InputObject { get; set; } + + /// + /// HSM ResourceId + /// + [Parameter(Mandatory = true, + Position = 0, + ParameterSetName = ByResourceIdParameterSet, + ValueFromPipelineByPropertyName = true, + HelpMessage = "Hsm Resource Id")] + [ValidateNotNullOrEmpty] + public string ResourceId { get; set; } + + /// + /// The input file in which the backup blob is stored + /// + [Parameter(Mandatory = true, + Position = 1, + HelpMessage = "Input file. The input file containing the backed-up blob")] + [ValidateNotNullOrEmpty] + public string InputFile { get; set; } + + #endregion Input Parameter Definitions + + public override void ExecuteCmdlet() + { + if (InputObject != null) + { + HsmName = InputObject.VaultName; + } + else if (ResourceId != null) + { + var resourceIdentifier = new ResourceIdentifier(ResourceId); + HsmName = resourceIdentifier.ResourceName; + } + + if (ShouldProcess(HsmName, Properties.Resources.RestoreKey)) + { + var filePath = ResolveKeyPath(InputFile); + + var restoredKeyBundle = this.Track2DataClient.RestoreManagedHsmKey(HsmName, filePath); + + this.WriteObject(restoredKeyBundle); + } + } + + private string ResolveKeyPath(string filePath) + { + FileInfo keyFile = new FileInfo(this.ResolveUserPath(filePath)); + if (!keyFile.Exists) + { + throw new FileNotFoundException(string.Format(Resources.BackupKeyFileNotFound, filePath)); + } + return keyFile.FullName; + } + } +} \ No newline at end of file diff --git a/src/KeyVault/KeyVault/Commands/UndoAzureKeyVaultKeyRemoval.cs b/src/KeyVault/KeyVault/Commands/UndoAzureKeyVaultKeyRemoval.cs index 7b7dc3d612d8..48db2cd68523 100644 --- a/src/KeyVault/KeyVault/Commands/UndoAzureKeyVaultKeyRemoval.cs +++ b/src/KeyVault/KeyVault/Commands/UndoAzureKeyVaultKeyRemoval.cs @@ -43,7 +43,7 @@ public class UndoAzureKeyVaultKeyRemoval : KeyVaultCmdletBase public string VaultName { get; set; } /// - /// Secret name + /// Key name /// [Parameter(Mandatory = true, Position = 1, diff --git a/src/KeyVault/KeyVault/Commands/UndoAzureKeyVaultRemoval.cs b/src/KeyVault/KeyVault/Commands/UndoAzureKeyVaultRemoval.cs index 41d33847087c..81816b476b19 100644 --- a/src/KeyVault/KeyVault/Commands/UndoAzureKeyVaultRemoval.cs +++ b/src/KeyVault/KeyVault/Commands/UndoAzureKeyVaultRemoval.cs @@ -95,9 +95,9 @@ public override void ExecuteCmdlet() if (ShouldProcess(VaultName, Properties.Resources.RecoverVault)) { - var newVault = KeyVaultManagementClient.CreateNewVault(new VaultCreationParameters() + var newVault = KeyVaultManagementClient.CreateNewVault(new VaultCreationOrUpdateParameters() { - VaultName = this.VaultName, + Name = this.VaultName, ResourceGroupName = this.ResourceGroupName, Location = this.Location, Tags = this.Tag, diff --git a/src/KeyVault/KeyVault/Commands/UndoAzureManagedHsmKeyRemoval.cs b/src/KeyVault/KeyVault/Commands/UndoAzureManagedHsmKeyRemoval.cs new file mode 100644 index 000000000000..df12b92bb3c1 --- /dev/null +++ b/src/KeyVault/KeyVault/Commands/UndoAzureManagedHsmKeyRemoval.cs @@ -0,0 +1,71 @@ +using Microsoft.Azure.Commands.KeyVault.Models; +using Microsoft.Azure.Commands.ResourceManager.Common.ArgumentCompleters; +using System.Management.Automation; + +namespace Microsoft.Azure.Commands.KeyVault.Commands +{ + [Cmdlet("Undo", ResourceManager.Common.AzureRMConstants.AzurePrefix + "ManagedHsmKeyRemoval", SupportsShouldProcess = true, DefaultParameterSetName = DefaultParameterSet)] + [OutputType(typeof(PSKeyVaultKey))] + public class UndoAzureManagedHsmKeyRemoval : KeyVaultCmdletBase + { + #region Parameter Set Names + + private const string DefaultParameterSet = "Default"; + private const string InputObjectParameterSet = "InputObject"; + + #endregion + + #region Input Parameter Definitions + + /// + /// HSM name + /// + [Parameter(Mandatory = true, + Position = 0, + ParameterSetName = DefaultParameterSet, + HelpMessage = "HSM name. Cmdlet constructs the FQDN of a managed HSM based on the name and currently selected environment.")] + [ResourceNameCompleter("Microsoft.KeyVault/managedHSMs", "FakeResourceGroupName")] + [ValidateNotNullOrEmpty] + public string HsmName { get; set; } + + /// + /// Key name + /// + [Parameter(Mandatory = true, + Position = 1, + ParameterSetName = DefaultParameterSet, + HelpMessage = "Key name. Cmdlet constructs the FQDN of a key from HSM name, currently selected environment and key name.")] + [ValidateNotNullOrEmpty] + [Alias(Constants.KeyName)] + public string Name { get; set; } + + /// + /// Key object + /// + [Parameter(Mandatory = true, + Position = 0, + ParameterSetName = InputObjectParameterSet, + ValueFromPipeline = true, + HelpMessage = "Deleted key object")] + [ValidateNotNullOrEmpty] + public PSDeletedKeyVaultKeyIdentityItem InputObject { get; set; } + + #endregion + + public override void ExecuteCmdlet() + { + if (InputObject != null) + { + HsmName = InputObject.VaultName; + Name = InputObject.Name; + } + + if (ShouldProcess(Name, Properties.Resources.RecoverKey)) + { + PSKeyVaultKey recoveredKey = this.Track2DataClient.RecoverManagedHsmKey(HsmName, Name); + + WriteObject(recoveredKey); + } + } + } +} \ No newline at end of file diff --git a/src/KeyVault/KeyVault/Commands/UpdateAzureManagedHsm.cs b/src/KeyVault/KeyVault/Commands/UpdateAzureManagedHsm.cs new file mode 100644 index 000000000000..2651ca6e5bc1 --- /dev/null +++ b/src/KeyVault/KeyVault/Commands/UpdateAzureManagedHsm.cs @@ -0,0 +1,85 @@ +using Microsoft.Azure.Commands.KeyVault.Models; +using Microsoft.Azure.Commands.ResourceManager.Common.ArgumentCompleters; +using Microsoft.Azure.Management.Internal.Resources.Utilities.Models; +using Microsoft.WindowsAzure.Commands.Utilities.Common; +using System; +using System.Collections; +using System.Management.Automation; + +namespace Microsoft.Azure.Commands.KeyVault.Commands +{ + [Cmdlet(VerbsData.Update, ResourceManager.Common.AzureRMConstants.AzurePrefix + "ManagedHsm", DefaultParameterSetName = UpdateByNameParameterSet, SupportsShouldProcess = true), OutputType(typeof(PSManagedHsm))] + public class UpdateAzureManagedHsm : KeyVaultManagementCmdletBase + { + private const string UpdateByNameParameterSet = "UpdateByNameParameterSet"; + private const string UpdateByInputObjectParameterSet = "UpdateByInputObjectParameterSet"; + private const string UpdateByResourceIdParameterSet = "UpdateByResourceIdParameterSet"; + + [Parameter(Mandatory = true, ParameterSetName = UpdateByNameParameterSet, HelpMessage = "Name of the managed HSM.")] + [ResourceNameCompleter("Microsoft.KeyVault/managedHSMs", nameof(ResourceGroupName))] + [ValidateNotNullOrEmpty] + [Alias("HsmName")] + public string Name { get; set; } + + [Parameter(Mandatory = true, ParameterSetName = UpdateByNameParameterSet, HelpMessage = "Name of the resource group.")] + [ResourceGroupCompleter] + [ValidateNotNullOrEmpty] + public string ResourceGroupName { get; set; } + + [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = UpdateByInputObjectParameterSet, HelpMessage = "Managed HSM object.")] + [ValidateNotNull] + public PSManagedHsm InputObject { get; set; } + + [Parameter(Mandatory = true, ValueFromPipelineByPropertyName = true, ParameterSetName = UpdateByResourceIdParameterSet, HelpMessage = "Resource ID of the managed HSM.")] + [ValidateNotNullOrEmpty] + public string ResourceId { get; set; } + + + [Parameter(Mandatory = false, + ValueFromPipelineByPropertyName = true, + HelpMessage = "A hash table which represents resource tags.")] + [Alias(Constants.TagsAlias)] + public Hashtable Tag { get; set; } + + public override void ExecuteCmdlet() + { + if (this.IsParameterBound(c => c.InputObject)) + { + this.ResourceGroupName = this.InputObject.ResourceGroupName; + this.Name = this.InputObject.Name; + } + + if (this.IsParameterBound(c => c.ResourceId)) + { + var resourceIdentifier = new ResourceIdentifier(this.ResourceId); + this.ResourceGroupName = resourceIdentifier.ResourceGroupName; + this.Name = resourceIdentifier.ResourceName; + } + + PSManagedHsm existingResource = null; + try + { + existingResource = KeyVaultManagementClient.GetManagedHsm(this.Name, this.ResourceGroupName); + } + catch + { + existingResource = null; + } + + if (existingResource == null) + { + throw new Exception(string.Format("A managed HSM with name '{0}' in resource group '{1}' does not exist. Please use New-AzManagedHsm to create a managed HSM with these properties.", this.Name, this.ResourceGroupName)); + } + + if (this.ShouldProcess(this.Name, string.Format("Updating managed HSM '{0}' in resource group '{1}'.", this.Name, this.ResourceGroupName))) + { + var result = KeyVaultManagementClient.UpdateManagedHsm(existingResource, + new VaultCreationOrUpdateParameters + { + Tags = Tag + }, null); + WriteObject(result); + } + } + } +} \ No newline at end of file diff --git a/src/KeyVault/KeyVault/Commands/UpdateAzureManagedHsmKey.cs b/src/KeyVault/KeyVault/Commands/UpdateAzureManagedHsmKey.cs new file mode 100644 index 000000000000..c298cc06acab --- /dev/null +++ b/src/KeyVault/KeyVault/Commands/UpdateAzureManagedHsmKey.cs @@ -0,0 +1,146 @@ +// ---------------------------------------------------------------------------------- +// +// Copyright Microsoft Corporation +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// ---------------------------------------------------------------------------------- + +using Microsoft.Azure.Commands.KeyVault.Models; +using Microsoft.Azure.Commands.ResourceManager.Common.ArgumentCompleters; +using System; +using System.Collections; +using System.Management.Automation; + +namespace Microsoft.Azure.Commands.KeyVault +{ + /// + /// Update attribute of a managed HSM key. + /// + [Alias("Set-" + ResourceManager.Common.AzureRMConstants.AzurePrefix + "ManagedHsmKey", "Set-" + ResourceManager.Common.AzureRMConstants.AzurePrefix + "ManagedHsmKeyAttribute")] + [Cmdlet("Update", ResourceManager.Common.AzureRMConstants.AzurePrefix + "ManagedHsmKey", SupportsShouldProcess = true, DefaultParameterSetName = DefaultParameterSet)] + [OutputType(typeof(PSKeyVaultKey))] + public class UpdateAzureManagedHsmKey : KeyVaultCmdletBase + { + #region Parameter Set Names + + private const string DefaultParameterSet = "Default"; + private const string InputObjectParameterSet = "InputObject"; + + #endregion + + #region Input Parameter Definitions + + /// + /// HSM name + /// + [Parameter(Mandatory = true, + Position = 0, + ParameterSetName = DefaultParameterSet, + HelpMessage = "HSM name. Cmdlet constructs the FQDN of a managed HSM based on the name and currently selected environment.")] + [ResourceNameCompleter("Microsoft.KeyVault/managedHSMs", "FakeResourceGroupName")] + [ValidateNotNullOrEmpty] + public string HsmName { get; set; } + + /// + /// key name + /// + [Parameter(Mandatory = true, + Position = 1, + ParameterSetName = DefaultParameterSet, + HelpMessage = "Key name. Cmdlet constructs the FQDN of a key from managed HSM name, currently selected environment and key name.")] + [ValidateNotNullOrEmpty] + [Alias(Constants.KeyName)] + public string Name { get; set; } + + /// + /// key object + /// + [Parameter(Mandatory = true, + Position = 0, + ParameterSetName = InputObjectParameterSet, + ValueFromPipeline = true, + HelpMessage = "Key object")] + [ValidateNotNullOrEmpty] + public PSKeyVaultKeyIdentityItem InputObject { get; set; } + + /// + /// Key version. + /// + [Parameter(Mandatory = false, + Position = 2, + HelpMessage = "Key version. Cmdlet constructs the FQDN of a key from managed HSM name, currently selected environment, key name and key version.")] + [Alias("KeyVersion")] + public string Version { get; set; } + + /// + /// If present, enable a key if value is true. + /// Disable a key if value is false. + /// If not present, no change on current key enabled/disabled state. + /// + [Parameter(Mandatory = false, + HelpMessage = "Value of true enables the key and a value of false disabless the key. If not specified, the existing enabled/disabled state remains unchanged.")] + public bool? Enable { get; set; } + + /// + /// Key expires time in UTC time + /// + [Parameter(Mandatory = false, + HelpMessage = "The expiration time of a key in UTC time. If not specified, the existing expiration time of the key remains unchanged.")] + public DateTime? Expires { get; set; } + + /// + /// The UTC time before which key can't be used + /// + [Parameter(Mandatory = false, + HelpMessage = "The UTC time before which key can't be used. If not specified, the existing NotBefore attribute of the key remains unchanged.")] + public DateTime? NotBefore { get; set; } + + /// + /// Key operations + /// + [Parameter(Mandatory = false, + HelpMessage = "The operations that can be performed with the key. If not specified, the existing key operations of the key remain unchanged.")] + public string[] KeyOps { get; set; } + + [Parameter(Mandatory = false, + HelpMessage = "A hashtable represents key tags. If not specified, the existings tags of the key remain unchanged.")] + [Alias(Constants.TagsAlias)] + public Hashtable Tag { get; set; } + + [Parameter(Mandatory = false, + HelpMessage = "Cmdlet does not return an object by default. If this switch is specified, returns the updated key bundle object.")] + public SwitchParameter PassThru { get; set; } + + #endregion + + public override void ExecuteCmdlet() + { + if (InputObject != null) + { + HsmName = InputObject.VaultName; + Name = InputObject.Name; + } + + if (ShouldProcess(Name, Properties.Resources.SetKeyAttribute)) + { + var keyBundle = this.Track2DataClient.UpdateManagedHsmKey( + HsmName, + Name, + Version ?? string.Empty, + new PSKeyVaultKeyAttributes(Enable, Expires, NotBefore, null, KeyOps, Tag)); + + if (PassThru) + { + WriteObject(keyBundle); + } + } + } + } +} \ No newline at end of file diff --git a/src/KeyVault/KeyVault/Helpers/UtilityExtensions.cs b/src/KeyVault/KeyVault/Helpers/UtilityExtensions.cs new file mode 100644 index 000000000000..0ac4c25ac649 --- /dev/null +++ b/src/KeyVault/KeyVault/Helpers/UtilityExtensions.cs @@ -0,0 +1,23 @@ +using System; +using System.Runtime.InteropServices; +using System.Security; + +namespace Microsoft.Azure.Commands.KeyVault +{ + internal static class UtilityExtensions + { + public static string ToPlainText(this SecureString secureString) + { + IntPtr bstr = Marshal.SecureStringToBSTR(secureString); + + try + { + return Marshal.PtrToStringBSTR(bstr); + } + finally + { + Marshal.FreeBSTR(bstr); + } + } + } +} diff --git a/src/KeyVault/KeyVault/KeyVault.csproj b/src/KeyVault/KeyVault/KeyVault.csproj index 1655fdfab699..8f14091384ea 100644 --- a/src/KeyVault/KeyVault/KeyVault.csproj +++ b/src/KeyVault/KeyVault/KeyVault.csproj @@ -1,4 +1,4 @@ - + KeyVault @@ -12,9 +12,13 @@ + + + - + + @@ -22,11 +26,11 @@ True - + - + True diff --git a/src/KeyVault/KeyVault/KeyVault.format.ps1xml b/src/KeyVault/KeyVault/KeyVault.format.ps1xml index ee0d2a05b094..510f4f0b921d 100644 --- a/src/KeyVault/KeyVault/KeyVault.format.ps1xml +++ b/src/KeyVault/KeyVault/KeyVault.format.ps1xml @@ -11,7 +11,7 @@ - + VaultName @@ -69,7 +69,7 @@ - + VaultName @@ -374,6 +374,10 @@ EnableSoftDelete + + + EnablePurgeProtection + SoftDeleteRetentionInDays @@ -399,6 +403,124 @@ + + Microsoft.Azure.Commands.KeyVault.Models.PSManagedHsm + + Microsoft.Azure.Commands.KeyVault.Models.PSManagedHsm + + + + + Left + + + + Left + + + + Left + + + + Left + + + + + + + + Left + Name + + + Left + ResourceGroupName + + + Left + Location + + + Left + Sku + + + + + + + + Microsoft.Azure.Commands.KeyVault.Models.PSManagedHsm + + Microsoft.Azure.Commands.KeyVault.Models.PSManagedHsm + + + + + + + + Name + + + + ResourceGroupName + + + + Location + + + + ResourceId + + + + HsmPoolUri + + + + TenantName + + + + InitialAdminObjectIds + + + + Sku + + + + EnableSoftDelete + + + + EnablePurgeProtection + + + + SoftDeleteRetentionInDays + + + + ProvisioningState + + + + StatusMessage + + + + TagsTable + + + + + + Microsoft.Azure.Commands.KeyVault.Models.PSKeyVaultAccessPolicy @@ -1006,6 +1128,106 @@ - + + + Microsoft.Azure.Commands.KeyVault.Models.PSKeyVaultRoleDefinition + + Microsoft.Azure.Commands.KeyVault.Models.PSKeyVaultRoleDefinition + + + + + + + + + + + + + + + + + + RoleName + + + Description + + + "$($_.Permissions.Length) permission(s)" + + + + + + + + Microsoft.Azure.Commands.KeyVault.Models.PSKeyVaultPermission + + Microsoft.Azure.Commands.KeyVault.Models.PSKeyVaultPermission + + + + + + + + + + + + + + + + + + + + + "$($_.AllowedActions.Length) action(s)" + + + "$($_.DeniedActions.Length) action(s)" + + + "$($_.AllowedDataActions.Length) action(s)" + + + "$($_.DeniedDataActions.Length) action(s)" + + + + + + + + Microsoft.Azure.Commands.KeyVault.Models.PSKeyVaultRoleAssignment + + Microsoft.Azure.Commands.KeyVault.Models.PSKeyVaultRoleAssignment + + + + + + + RoleDefinitionName + + + DisplayName + + + ObjectType + + + Scope + + + + + + diff --git a/src/KeyVault/KeyVault/Models/ByokWebKeyConverter.cs b/src/KeyVault/KeyVault/Models/ByokWebKeyConverter.cs index c5ec5fd35084..5994f62039a3 100644 --- a/src/KeyVault/KeyVault/Models/ByokWebKeyConverter.cs +++ b/src/KeyVault/KeyVault/Models/ByokWebKeyConverter.cs @@ -12,11 +12,13 @@ // limitations under the License. // ---------------------------------------------------------------------------------- -using Microsoft.Azure.KeyVault.WebKey; using System; using System.IO; using System.Security; using KeyVaultProperties = Microsoft.Azure.Commands.KeyVault.Properties; +using Track2Sdk = Azure.Security.KeyVault.Keys; +using Track1Sdk = Microsoft.Azure.KeyVault.WebKey; +using System.Security.Cryptography; namespace Microsoft.Azure.Commands.KeyVault.Models { @@ -30,7 +32,7 @@ public ByokWebKeyConverter(IWebKeyConverter next = null) this.next = next; } - public JsonWebKey ConvertKeyFromFile(FileInfo fileInfo, SecureString password) + public Track1Sdk.JsonWebKey ConvertKeyFromFile(FileInfo fileInfo, SecureString password) { if (CanProcess(fileInfo)) return Convert(fileInfo.FullName); @@ -40,6 +42,16 @@ public JsonWebKey ConvertKeyFromFile(FileInfo fileInfo, SecureString password) throw new ArgumentException(string.Format(KeyVaultProperties.Resources.UnsupportedFileFormat, fileInfo.Name)); } + public Track2Sdk.JsonWebKey ConvertToTrack2SdkKeyFromFile(FileInfo fileInfo, SecureString password) + { + if (CanProcess(fileInfo)) + return ConvertToTrack2SdkJsonWebKey(fileInfo.FullName); + else if (next != null) + return next.ConvertToTrack2SdkKeyFromFile(fileInfo, password); + else + throw new ArgumentException(string.Format(KeyVaultProperties.Resources.UnsupportedFileFormat, fileInfo.Name)); + } + private bool CanProcess(FileInfo fileInfo) { if (fileInfo == null || string.IsNullOrEmpty(fileInfo.Extension)) @@ -48,18 +60,32 @@ private bool CanProcess(FileInfo fileInfo) return ByokFileExtension.Equals(fileInfo.Extension, StringComparison.OrdinalIgnoreCase); } - private JsonWebKey Convert(string byokFileName) + private Track1Sdk.JsonWebKey Convert(string byokFileName) { byte[] byokBlob = File.ReadAllBytes(byokFileName); if (byokBlob == null || byokBlob.Length == 0) throw new ArgumentException(string.Format(KeyVaultProperties.Resources.InvalidKeyBlob, "BYOK")); - return new JsonWebKey() + return new Track1Sdk.JsonWebKey() { - Kty = JsonWebKeyType.RsaHsm, + Kty = Track1Sdk.JsonWebKeyType.RsaHsm, T = byokBlob, }; } + + private Track2Sdk.JsonWebKey ConvertToTrack2SdkJsonWebKey(string byokFileName) + { + byte[] byokBlob = File.ReadAllBytes(byokFileName); + + if (byokBlob == null || byokBlob.Length == 0) + throw new ArgumentException(string.Format(KeyVaultProperties.Resources.InvalidKeyBlob, "BYOK")); + + return new Track2Sdk.JsonWebKey(new RSACryptoServiceProvider()) + { + KeyType = Track2Sdk.KeyType.RsaHsm, + T = byokBlob, + }; + } private IWebKeyConverter next; private const string ByokFileExtension = ".byok"; diff --git a/src/KeyVault/KeyVault/Models/DataServiceCredential.cs b/src/KeyVault/KeyVault/Models/DataServiceCredential.cs index 974614f80e0d..03805857c1e3 100644 --- a/src/KeyVault/KeyVault/Models/DataServiceCredential.cs +++ b/src/KeyVault/KeyVault/Models/DataServiceCredential.cs @@ -18,6 +18,7 @@ using System.Threading.Tasks; using KeyVaultProperties = Microsoft.Azure.Commands.KeyVault.Properties; using Microsoft.Azure.Commands.Common.Authentication.Abstractions; +using Microsoft.Rest; namespace Microsoft.Azure.Commands.KeyVault.Models { @@ -69,7 +70,12 @@ public Task OnAuthentication(string authority, string resource, string s public string GetToken() { - return GetTokenInternal(this.TenantId, this._authenticationFactory, this._context, this._endpointName).Item1.AccessToken; + return GetAccessToken().AccessToken; + } + + public IAccessToken GetAccessToken() + { + return GetTokenInternal(TenantId, _authenticationFactory, _context, _endpointName).Item1; } private static string GetTenantId(IAzureContext context) diff --git a/src/KeyVault/KeyVault/Models/IKeyVaultDataServiceClient.cs b/src/KeyVault/KeyVault/Models/IKeyVaultDataServiceClient.cs index 05b2d650e0ec..3a2867f86614 100644 --- a/src/KeyVault/KeyVault/Models/IKeyVaultDataServiceClient.cs +++ b/src/KeyVault/KeyVault/Models/IKeyVaultDataServiceClient.cs @@ -19,33 +19,55 @@ using System.Security.Cryptography.X509Certificates; using Microsoft.Azure.KeyVault.Models; using Microsoft.Azure.KeyVault.WebKey; +using Track2Sdk = Azure.Security.KeyVault.Keys; namespace Microsoft.Azure.Commands.KeyVault.Models { public interface IKeyVaultDataServiceClient { - PSKeyVaultKey CreateKey(string vaultName, string keyName, PSKeyVaultKeyAttributes keyAttributes, int? size); + PSKeyVaultKey CreateKey(string vaultName, string keyName, PSKeyVaultKeyAttributes keyAttributes, int? size, string curveName); + PSKeyVaultKey CreateManagedHsmKey(string managedHsmName, string keyName, PSKeyVaultKeyAttributes keyAttributes, int? size, string curveName); PSKeyVaultKey ImportKey(string vaultName, string keyName, PSKeyVaultKeyAttributes keyAttributes, JsonWebKey webKey, bool? importToHsm); + PSKeyVaultKey ImportManagedHsmKey(string managedHsmName, string keyName, Track2Sdk.JsonWebKey webKey); + PSKeyVaultKey UpdateKey(string vaultName, string keyName, string keyVersion, PSKeyVaultKeyAttributes keyAttributes); + PSKeyVaultKey UpdateManagedHsmKey(string managedHsmName, string keyName, string keyVersion, PSKeyVaultKeyAttributes keyAttributes); + PSKeyVaultKey GetKey(string vaultName, string keyName, string keyVersion); - PSDeletedKeyVaultKey GetDeletedKey(string vaultName, string name); + PSKeyVaultKey GetManagedHsmKey(string managedHsmName, string keyName, string keyVersion); + + PSDeletedKeyVaultKey GetDeletedKey(string managedHsmName, string keyName); + + PSDeletedKeyVaultKey GetManagedHsmDeletedKey(string managedHsmName, string keyName); IEnumerable GetKeys(KeyVaultObjectFilterOptions options); + IEnumerable GetManagedHsmKeys(string managedHsmName); + IEnumerable GetKeyVersions(KeyVaultObjectFilterOptions options); + IEnumerable GetManagedHsmKeyAllVersions(string managedHsmName, string keyName); + IEnumerable GetDeletedKeys(KeyVaultObjectFilterOptions options); + IEnumerable GetManagedHsmDeletedKeys(string managedHsmName); + PSDeletedKeyVaultKey DeleteKey(string vaultName, string keyName); + PSDeletedKeyVaultKey DeleteManagedHsmKey(string ManagedHsm, string keyName); + void PurgeKey(string vaultName, string name); + void PurgeManagedHsmKey(string managedHsmName, string keyName); + PSKeyVaultKey RecoverKey(string vaultName, string keyName); + PSKeyVaultKey RecoverManagedHsmKey(string managedHsmName, string keyName); + PSKeyVaultSecret SetSecret(string vaultName, string secretName, SecureString secretValue, PSKeyVaultSecretAttributes secretAttributes); PSKeyVaultSecret UpdateSecret(string vaultName, string secretName, string secretVersion, PSKeyVaultSecretAttributes secretAttributes); @@ -68,8 +90,12 @@ public interface IKeyVaultDataServiceClient string BackupKey(string vaultName, string keyName, string outputBlobPath); + string BackupManagedHsmKey(string managedHsmName, string keyName, string outputBlobPath); + PSKeyVaultKey RestoreKey(string vaultName, string inputBlobPath); + PSKeyVaultKey RestoreManagedHsmKey(string managedHsmName, string inputBlobPath); + string BackupSecret(string vaultName, string secretName, string outputBlobPath); PSKeyVaultSecret RestoreSecret(string vaultName, string inputBlobPath); @@ -167,6 +193,20 @@ public interface IKeyVaultDataServiceClient string BackupManagedStorageAccount(string vaultName, string managedStorageAccountName, string outputBlobPath); PSKeyVaultManagedStorageAccount RestoreManagedStorageAccount(string vaultName, string inputBlobPath); + + #endregion + + #region Full backup restore + Uri BackupHsm(string hsmName, Uri blobStorageUri, string sasToken); + void RestoreHsm(string hsmName, Uri backupLocation, string sasToken, string backupFolder); + #endregion + + #region RBAC + PSKeyVaultRoleDefinition[] GetHsmRoleDefinitions(string hsmName, string scope); + PSKeyVaultRoleAssignment[] GetHsmRoleAssignments(string hsmName, string scope); + PSKeyVaultRoleAssignment GetHsmRoleAssignment(string hsmName, string scope, string roleAssignmentName); + PSKeyVaultRoleAssignment CreateHsmRoleAssignment(string hsmName, string scope, string roleDefinitionId, string principalId); + void RemoveHsmRoleAssignment(string hsmName, string scope, string roleAssignmentName); #endregion } } diff --git a/src/KeyVault/KeyVault/Models/IWebKeyConverter.cs b/src/KeyVault/KeyVault/Models/IWebKeyConverter.cs index f46962cb92f0..37abcd1c6b93 100644 --- a/src/KeyVault/KeyVault/Models/IWebKeyConverter.cs +++ b/src/KeyVault/KeyVault/Models/IWebKeyConverter.cs @@ -12,15 +12,19 @@ // limitations under the License. // ---------------------------------------------------------------------------------- -using Microsoft.Azure.KeyVault.WebKey; using System.IO; using System.Security; -using Microsoft.Azure.KeyVault.Models; +using Track2Sdk = Azure.Security.KeyVault.Keys; +using Track1Sdk = Microsoft.Azure.KeyVault.WebKey; namespace Microsoft.Azure.Commands.KeyVault.Models { internal interface IWebKeyConverter { - JsonWebKey ConvertKeyFromFile(FileInfo fileInfo, SecureString password); + Track1Sdk.JsonWebKey ConvertKeyFromFile(FileInfo fileInfo, SecureString password); + + Track2Sdk.JsonWebKey ConvertToTrack2SdkKeyFromFile(FileInfo fileInfo, SecureString password); } + + } diff --git a/src/KeyVault/KeyVault/Models/KeyVaultCmdletBase.cs b/src/KeyVault/KeyVault/Models/KeyVaultCmdletBase.cs index 1ebf1b83f07e..fb9d8afddef6 100644 --- a/src/KeyVault/KeyVault/Models/KeyVaultCmdletBase.cs +++ b/src/KeyVault/KeyVault/Models/KeyVaultCmdletBase.cs @@ -14,9 +14,12 @@ using System; using System.Collections.Generic; +using System.Diagnostics.Tracing; using System.Linq; using System.Management.Automation; +using Azure.Core.Diagnostics; using Microsoft.Azure.Commands.Common.Authentication; +using Microsoft.Azure.Commands.KeyVault.Track2Models; using Microsoft.Azure.Commands.ResourceManager.Common; namespace Microsoft.Azure.Commands.KeyVault.Models @@ -24,6 +27,7 @@ namespace Microsoft.Azure.Commands.KeyVault.Models public class KeyVaultCmdletBase : AzureRMCmdlet { public static readonly DateTime EpochDate = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); + private AzureEventSourceListener _azureEventSourceListener; internal IKeyVaultDataServiceClient DataServiceClient { @@ -44,7 +48,28 @@ internal IKeyVaultDataServiceClient DataServiceClient } } - protected string GetDefaultFileForOperation( string operationName, string vaultName, string entityName ) + internal IKeyVaultDataServiceClient Track2DataClient + { + + get + { + if (_track2DataServiceClient == null) + { + _track2DataServiceClient = new Track2KeyVaultDataServiceClient( + AzureSession.Instance.AuthenticationFactory, + DefaultContext); + _azureEventSourceListener = AzureEventSourceListener.CreateTraceLogger(EventLevel.Verbose); + } + + return _track2DataServiceClient; + } + set + { + _track2DataServiceClient = value; + } + } + + protected string GetDefaultFileForOperation(string operationName, string vaultName, string entityName) { // caller is responsible for parameter validation var currentPath = CurrentPath(); @@ -54,6 +79,7 @@ protected string GetDefaultFileForOperation( string operationName, string vaultN } private IKeyVaultDataServiceClient dataServiceClient; + private IKeyVaultDataServiceClient _track2DataServiceClient; /// /// Utility function that will continually iterate over the updated KeyVaultObjectFilterOptions until the options @@ -70,7 +96,7 @@ protected void GetAndWriteObjects(KeyVaultObjectFilterOptions options, WriteObject(pageResults, true); } while (!string.IsNullOrEmpty(options.NextLink)); } - + public List KVSubResourceWildcardFilter(string name, IEnumerable resources) { if (!string.IsNullOrEmpty(name)) @@ -103,5 +129,15 @@ private object GetPropertyValue(T resource, string property) return null; } + + protected override void Dispose(bool disposing) + { + base.Dispose(disposing); + if (disposing && _azureEventSourceListener != null) + { + _azureEventSourceListener.Dispose(); + _azureEventSourceListener = null; + } + } } } diff --git a/src/KeyVault/KeyVault/Models/KeyVaultDataServiceClient.cs b/src/KeyVault/KeyVault/Models/KeyVaultDataServiceClient.cs index 62e1bef74369..1403075323d0 100644 --- a/src/KeyVault/KeyVault/Models/KeyVaultDataServiceClient.cs +++ b/src/KeyVault/KeyVault/Models/KeyVaultDataServiceClient.cs @@ -29,6 +29,7 @@ using Microsoft.Rest; using Microsoft.Rest.Azure; using KeyVaultProperties = Microsoft.Azure.Commands.KeyVault.Properties; +using Track2Sdk = Azure.Security.KeyVault.Keys; namespace Microsoft.Azure.Commands.KeyVault.Models { @@ -57,7 +58,7 @@ public KeyVaultDataServiceClient() { } - public PSKeyVaultKey CreateKey(string vaultName, string keyName, PSKeyVaultKeyAttributes keyAttributes, int? size) + public PSKeyVaultKey CreateKey(string vaultName, string keyName, PSKeyVaultKeyAttributes keyAttributes, int? size, string curveName) { if (string.IsNullOrEmpty(vaultName)) throw new ArgumentNullException(nameof(vaultName)); @@ -77,7 +78,7 @@ public PSKeyVaultKey CreateKey(string vaultName, string keyName, PSKeyVaultKeyAt keyName: keyName, kty: keyAttributes.KeyType, keySize: size, - keyOps: keyAttributes.KeyOps == null ? null : new List (keyAttributes.KeyOps), + keyOps: keyAttributes.KeyOps == null ? null : new List(keyAttributes.KeyOps), keyAttributes: attributes, tags: keyAttributes.TagsDirectionary).GetAwaiter().GetResult(); } @@ -87,7 +88,7 @@ public PSKeyVaultKey CreateKey(string vaultName, string keyName, PSKeyVaultKeyAt } return new PSKeyVaultKey(keyBundle, this.vaultUriHelper); - } + } public PSKeyVaultCertificate MergeCertificate(string vaultName, string certName, X509Certificate2Collection certs, IDictionary tags) { @@ -193,8 +194,8 @@ public PSKeyVaultKey ImportKey(string vaultName, string keyName, PSKeyVaultKeyAt throw new ArgumentException(KeyVaultProperties.Resources.ImportByokAsSoftkeyError); string vaultAddress = this.vaultUriHelper.CreateVaultAddress(vaultName); - - webKey.KeyOps = keyAttributes.KeyOps; + + webKey.KeyOps = keyAttributes.KeyOps; var keyBundle = new Azure.KeyVault.Models.KeyBundle() { Attributes = (Azure.KeyVault.Models.KeyAttributes)keyAttributes, @@ -222,7 +223,7 @@ public PSKeyVaultKey UpdateKey(string vaultName, string keyName, string keyVersi throw new ArgumentNullException(nameof(keyName)); if (keyAttributes == null) throw new ArgumentNullException(nameof(keyAttributes)); - + var attributes = (Azure.KeyVault.Models.KeyAttributes)keyAttributes; var keyIdentifier = new KeyIdentifier(this.vaultUriHelper.CreateVaultAddress(vaultName), keyName, keyVersion); @@ -418,7 +419,7 @@ public IEnumerable GetKeys(KeyVaultObjectFilterOption result = this.keyVaultClient.GetKeysAsync(vaultAddress).GetAwaiter().GetResult(); else result = this.keyVaultClient.GetKeysNextAsync(options.NextLink).GetAwaiter().GetResult(); - + options.NextLink = result.NextPageLink; return (result == null) ? new List() : result.Select((keyItem) => new PSKeyVaultKeyIdentityItem(keyItem, this.vaultUriHelper)); @@ -450,7 +451,7 @@ public IEnumerable GetKeyVersions(KeyVaultObjectFilte result = this.keyVaultClient.GetKeyVersionsAsync(vaultAddress, options.Name).GetAwaiter().GetResult(); else result = this.keyVaultClient.GetKeyVersionsNextAsync(options.NextLink).GetAwaiter().GetResult(); - + options.NextLink = result.NextPageLink; return result.Select((keyItem) => new PSKeyVaultKeyIdentityItem(keyItem, this.vaultUriHelper)); } @@ -631,7 +632,7 @@ public IEnumerable GetSecrets(KeyVaultObjectFilter options.NextLink = result.NextPageLink; return (result == null) ? new List() : - result.Select((secretItem) => new PSKeyVaultSecretIdentityItem(secretItem, this.vaultUriHelper)); + result.Select((secretItem) => new PSKeyVaultSecretIdentityItem(secretItem, this.vaultUriHelper)); } catch (Exception ex) { @@ -658,7 +659,7 @@ public IEnumerable GetSecretVersions(KeyVaultObjec result = this.keyVaultClient.GetSecretVersionsAsync(vaultAddress, options.Name).GetAwaiter().GetResult(); else result = this.keyVaultClient.GetSecretVersionsNextAsync(options.NextLink).GetAwaiter().GetResult(); - + options.NextLink = result.NextPageLink; return result.Select((secretItem) => new PSKeyVaultSecretIdentityItem(secretItem, this.vaultUriHelper)); } @@ -739,20 +740,20 @@ public PSDeletedKeyVaultCertificate DeleteCertificate(string vaultName, string c public void PurgeCertificate(string vaultName, string certName) { - if ( string.IsNullOrEmpty( vaultName ) ) - throw new ArgumentNullException( "vaultName" ); - if ( string.IsNullOrEmpty( certName ) ) - throw new ArgumentNullException( "certName" ); + if (string.IsNullOrEmpty(vaultName)) + throw new ArgumentNullException("vaultName"); + if (string.IsNullOrEmpty(certName)) + throw new ArgumentNullException("certName"); string vaultAddress = this.vaultUriHelper.CreateVaultAddress(vaultName); try { - this.keyVaultClient.PurgeDeletedCertificateAsync( vaultAddress, certName ).GetAwaiter( ).GetResult( ); + this.keyVaultClient.PurgeDeletedCertificateAsync(vaultAddress, certName).GetAwaiter().GetResult(); } catch (Exception ex) { - throw GetInnerException( ex ); + throw GetInnerException(ex); } } @@ -904,13 +905,13 @@ public PSKeyVaultKey RestoreKey(string vaultName, string inputBlobPath) return new PSKeyVaultKey(keyBundle, this.vaultUriHelper); } - public string BackupSecret( string vaultName, string secretName, string outputBlobPath ) + public string BackupSecret(string vaultName, string secretName, string outputBlobPath) { - if ( string.IsNullOrEmpty( vaultName ) ) + if (string.IsNullOrEmpty(vaultName)) throw new ArgumentNullException(nameof(vaultName)); - if ( string.IsNullOrEmpty( secretName ) ) + if (string.IsNullOrEmpty(secretName)) throw new ArgumentNullException(nameof(secretName)); - if ( string.IsNullOrEmpty( outputBlobPath ) ) + if (string.IsNullOrEmpty(outputBlobPath)) throw new ArgumentNullException(nameof(outputBlobPath)); string vaultAddress = this.vaultUriHelper.CreateVaultAddress(vaultName); @@ -918,23 +919,23 @@ public string BackupSecret( string vaultName, string secretName, string outputBl BackupSecretResult backupSecretResult; try { - backupSecretResult = this.keyVaultClient.BackupSecretAsync( vaultAddress, secretName ).GetAwaiter( ).GetResult( ); + backupSecretResult = this.keyVaultClient.BackupSecretAsync(vaultAddress, secretName).GetAwaiter().GetResult(); } - catch ( Exception ex ) + catch (Exception ex) { - throw GetInnerException( ex ); + throw GetInnerException(ex); } - File.WriteAllBytes( outputBlobPath, backupSecretResult.Value ); + File.WriteAllBytes(outputBlobPath, backupSecretResult.Value); return outputBlobPath; } - public PSKeyVaultSecret RestoreSecret( string vaultName, string inputBlobPath ) + public PSKeyVaultSecret RestoreSecret(string vaultName, string inputBlobPath) { - if ( string.IsNullOrEmpty( vaultName ) ) + if (string.IsNullOrEmpty(vaultName)) throw new ArgumentNullException(nameof(vaultName)); - if ( string.IsNullOrEmpty( inputBlobPath ) ) + if (string.IsNullOrEmpty(inputBlobPath)) throw new ArgumentNullException(nameof(inputBlobPath)); var backupBlob = File.ReadAllBytes(inputBlobPath); @@ -944,14 +945,14 @@ public PSKeyVaultSecret RestoreSecret( string vaultName, string inputBlobPath ) Azure.KeyVault.Models.SecretBundle secretBundle; try { - secretBundle = this.keyVaultClient.RestoreSecretAsync( vaultAddress, backupBlob ).GetAwaiter( ).GetResult( ); + secretBundle = this.keyVaultClient.RestoreSecretAsync(vaultAddress, backupBlob).GetAwaiter().GetResult(); } - catch ( Exception ex ) + catch (Exception ex) { - throw GetInnerException( ex ); + throw GetInnerException(ex); } - return new PSKeyVaultSecret( secretBundle, this.vaultUriHelper ); + return new PSKeyVaultSecret(secretBundle, this.vaultUriHelper); } public PSKeyVaultCertificatePolicy GetCertificatePolicy(string vaultName, string certificateName) @@ -1113,7 +1114,7 @@ public PSKeyVaultCertificateIssuer SetCertificateIssuer( } return PSKeyVaultCertificateIssuer.FromIssuer(resultantIssuer); - } + } public PSKeyVaultCertificateIssuer DeleteCertificateIssuer(string vaultName, string issuerName) { @@ -1139,68 +1140,68 @@ public PSKeyVaultCertificateIssuer DeleteCertificateIssuer(string vaultName, str } #region Managed Storage Accounts - public IEnumerable GetManagedStorageAccounts( KeyVaultObjectFilterOptions options ) + public IEnumerable GetManagedStorageAccounts(KeyVaultObjectFilterOptions options) { - if ( options == null ) - throw new ArgumentNullException( "options" ); - if ( string.IsNullOrEmpty( options.VaultName ) ) - throw new ArgumentException( KeyVaultProperties.Resources.InvalidVaultName ); + if (options == null) + throw new ArgumentNullException("options"); + if (string.IsNullOrEmpty(options.VaultName)) + throw new ArgumentException(KeyVaultProperties.Resources.InvalidVaultName); - string vaultAddress = this.vaultUriHelper.CreateVaultAddress( options.VaultName ); + string vaultAddress = this.vaultUriHelper.CreateVaultAddress(options.VaultName); try { IPage result; - if ( string.IsNullOrEmpty( options.NextLink ) ) - result = this.keyVaultClient.GetStorageAccountsAsync( vaultAddress ).GetAwaiter().GetResult(); + if (string.IsNullOrEmpty(options.NextLink)) + result = this.keyVaultClient.GetStorageAccountsAsync(vaultAddress).GetAwaiter().GetResult(); else - result = this.keyVaultClient.GetStorageAccountsNextAsync( options.NextLink ).GetAwaiter().GetResult(); + result = this.keyVaultClient.GetStorageAccountsNextAsync(options.NextLink).GetAwaiter().GetResult(); options.NextLink = result.NextPageLink; - return result.Select( ( storageAccountItem ) => new PSKeyVaultManagedStorageAccountIdentityItem( storageAccountItem, this.vaultUriHelper ) ); + return result.Select((storageAccountItem) => new PSKeyVaultManagedStorageAccountIdentityItem(storageAccountItem, this.vaultUriHelper)); } - catch ( Exception ex ) + catch (Exception ex) { - throw GetInnerException( ex ); + throw GetInnerException(ex); } } - public PSKeyVaultManagedStorageAccount GetManagedStorageAccount( string vaultName, string managedStorageAccountName ) + public PSKeyVaultManagedStorageAccount GetManagedStorageAccount(string vaultName, string managedStorageAccountName) { - if ( string.IsNullOrWhiteSpace( vaultName ) ) throw new ArgumentNullException( "vaultName" ); - if ( string.IsNullOrWhiteSpace( managedStorageAccountName ) ) throw new ArgumentNullException( "managedStorageAccountName" ); + if (string.IsNullOrWhiteSpace(vaultName)) throw new ArgumentNullException("vaultName"); + if (string.IsNullOrWhiteSpace(managedStorageAccountName)) throw new ArgumentNullException("managedStorageAccountName"); StorageBundle storageBundle; - var vaultAddress = this.vaultUriHelper.CreateVaultAddress( vaultName ); + var vaultAddress = this.vaultUriHelper.CreateVaultAddress(vaultName); try { - storageBundle = this.keyVaultClient.GetStorageAccountAsync( vaultAddress, managedStorageAccountName ).GetAwaiter().GetResult(); + storageBundle = this.keyVaultClient.GetStorageAccountAsync(vaultAddress, managedStorageAccountName).GetAwaiter().GetResult(); } - catch ( Exception ex ) + catch (Exception ex) { - throw GetInnerException( ex ); + throw GetInnerException(ex); } - return new PSKeyVaultManagedStorageAccount( storageBundle, this.vaultUriHelper ); + return new PSKeyVaultManagedStorageAccount(storageBundle, this.vaultUriHelper); } - public PSKeyVaultManagedStorageAccount SetManagedStorageAccount( string vaultName, string managedStorageAccountName, string storageResourceId, + public PSKeyVaultManagedStorageAccount SetManagedStorageAccount(string vaultName, string managedStorageAccountName, string storageResourceId, string activeKeyName, bool? autoRegenerateKey, TimeSpan? regenerationPeriod, - PSKeyVaultManagedStorageAccountAttributes managedStorageAccountAttributes, Hashtable tags ) - { - if ( string.IsNullOrEmpty( vaultName ) ) - throw new ArgumentNullException( "vaultName" ); - if ( string.IsNullOrEmpty( managedStorageAccountName ) ) - throw new ArgumentNullException( "managedStorageAccountName" ); - if ( string.IsNullOrEmpty( storageResourceId ) ) - throw new ArgumentNullException( "storageResourceId" ); - if ( string.IsNullOrEmpty( activeKeyName ) ) - throw new ArgumentNullException( "activeKeyName" ); - - var vaultAddress = this.vaultUriHelper.CreateVaultAddress( vaultName ); + PSKeyVaultManagedStorageAccountAttributes managedStorageAccountAttributes, Hashtable tags) + { + if (string.IsNullOrEmpty(vaultName)) + throw new ArgumentNullException("vaultName"); + if (string.IsNullOrEmpty(managedStorageAccountName)) + throw new ArgumentNullException("managedStorageAccountName"); + if (string.IsNullOrEmpty(storageResourceId)) + throw new ArgumentNullException("storageResourceId"); + if (string.IsNullOrEmpty(activeKeyName)) + throw new ArgumentNullException("activeKeyName"); + + var vaultAddress = this.vaultUriHelper.CreateVaultAddress(vaultName); var attributes = managedStorageAccountAttributes == null ? null : new Azure.KeyVault.Models.StorageAccountAttributes { Enabled = managedStorageAccountAttributes.Enabled, @@ -1210,30 +1211,30 @@ public PSKeyVaultManagedStorageAccount SetManagedStorageAccount( string vaultNam try { storageBundle = - this.keyVaultClient.SetStorageAccountAsync( vaultAddress, managedStorageAccountName, + this.keyVaultClient.SetStorageAccountAsync(vaultAddress, managedStorageAccountName, storageResourceId, activeKeyName, autoRegenerateKey ?? true, - regenerationPeriod == null ? null : XmlConvert.ToString( regenerationPeriod.Value ), attributes, - tags == null ? null : tags.ConvertToDictionary() ).GetAwaiter().GetResult(); + regenerationPeriod == null ? null : XmlConvert.ToString(regenerationPeriod.Value), attributes, + tags == null ? null : tags.ConvertToDictionary()).GetAwaiter().GetResult(); } - catch ( Exception ex ) + catch (Exception ex) { - throw GetInnerException( ex ); + throw GetInnerException(ex); } - return new PSKeyVaultManagedStorageAccount( storageBundle, this.vaultUriHelper ); + return new PSKeyVaultManagedStorageAccount(storageBundle, this.vaultUriHelper); } - public PSKeyVaultManagedStorageAccount UpdateManagedStorageAccount( string vaultName, string managedStorageAccountName, string activeKeyName, + public PSKeyVaultManagedStorageAccount UpdateManagedStorageAccount(string vaultName, string managedStorageAccountName, string activeKeyName, bool? autoRegenerateKey, TimeSpan? regenerationPeriod, PSKeyVaultManagedStorageAccountAttributes managedStorageAccountAttributes, - Hashtable tags ) + Hashtable tags) { - if ( string.IsNullOrEmpty( vaultName ) ) - throw new ArgumentNullException( "vaultName" ); - if ( string.IsNullOrEmpty( managedStorageAccountName ) ) - throw new ArgumentNullException( "managedStorageAccountName" ); + if (string.IsNullOrEmpty(vaultName)) + throw new ArgumentNullException("vaultName"); + if (string.IsNullOrEmpty(managedStorageAccountName)) + throw new ArgumentNullException("managedStorageAccountName"); - var vaultAddress = this.vaultUriHelper.CreateVaultAddress( vaultName ); + var vaultAddress = this.vaultUriHelper.CreateVaultAddress(vaultName); var attributes = managedStorageAccountAttributes == null ? null : new Azure.KeyVault.Models.StorageAccountAttributes { Enabled = managedStorageAccountAttributes.Enabled, @@ -1243,130 +1244,130 @@ public PSKeyVaultManagedStorageAccount UpdateManagedStorageAccount( string vault try { storageBundle = - this.keyVaultClient.UpdateStorageAccountAsync( vaultAddress, managedStorageAccountName, + this.keyVaultClient.UpdateStorageAccountAsync(vaultAddress, managedStorageAccountName, activeKeyName, autoRegenerateKey, - regenerationPeriod == null ? null : XmlConvert.ToString( regenerationPeriod.Value ), attributes, - tags == null ? null : tags.ConvertToDictionary() ).GetAwaiter().GetResult(); + regenerationPeriod == null ? null : XmlConvert.ToString(regenerationPeriod.Value), attributes, + tags == null ? null : tags.ConvertToDictionary()).GetAwaiter().GetResult(); } - catch ( Exception ex ) + catch (Exception ex) { - throw GetInnerException( ex ); + throw GetInnerException(ex); } - return new PSKeyVaultManagedStorageAccount( storageBundle, this.vaultUriHelper ); + return new PSKeyVaultManagedStorageAccount(storageBundle, this.vaultUriHelper); } - public PSDeletedKeyVaultManagedStorageAccount DeleteManagedStorageAccount( string vaultName, string managedStorageAccountName ) + public PSDeletedKeyVaultManagedStorageAccount DeleteManagedStorageAccount(string vaultName, string managedStorageAccountName) { - if ( string.IsNullOrEmpty( vaultName ) ) - throw new ArgumentNullException( "vaultName" ); - if ( string.IsNullOrEmpty( managedStorageAccountName ) ) - throw new ArgumentNullException( "managedStorageAccountName" ); + if (string.IsNullOrEmpty(vaultName)) + throw new ArgumentNullException("vaultName"); + if (string.IsNullOrEmpty(managedStorageAccountName)) + throw new ArgumentNullException("managedStorageAccountName"); - var vaultAddress = this.vaultUriHelper.CreateVaultAddress( vaultName ); + var vaultAddress = this.vaultUriHelper.CreateVaultAddress(vaultName); Azure.KeyVault.Models.DeletedStorageBundle storageBundle; try { - storageBundle = this.keyVaultClient.DeleteStorageAccountAsync( vaultAddress, managedStorageAccountName ).GetAwaiter().GetResult(); + storageBundle = this.keyVaultClient.DeleteStorageAccountAsync(vaultAddress, managedStorageAccountName).GetAwaiter().GetResult(); } - catch ( Exception ex ) + catch (Exception ex) { - throw GetInnerException( ex ); + throw GetInnerException(ex); } - return new PSDeletedKeyVaultManagedStorageAccount( storageBundle, this.vaultUriHelper ); + return new PSDeletedKeyVaultManagedStorageAccount(storageBundle, this.vaultUriHelper); } - public PSKeyVaultManagedStorageAccount RegenerateManagedStorageAccountKey( string vaultName, string managedStorageAccountName, string keyName ) + public PSKeyVaultManagedStorageAccount RegenerateManagedStorageAccountKey(string vaultName, string managedStorageAccountName, string keyName) { - if ( string.IsNullOrEmpty( vaultName ) ) - throw new ArgumentNullException( "vaultName" ); - if ( string.IsNullOrEmpty( managedStorageAccountName ) ) - throw new ArgumentNullException( "managedStorageAccountName" ); - if ( string.IsNullOrEmpty( keyName ) ) - throw new ArgumentNullException( "keyName" ); + if (string.IsNullOrEmpty(vaultName)) + throw new ArgumentNullException("vaultName"); + if (string.IsNullOrEmpty(managedStorageAccountName)) + throw new ArgumentNullException("managedStorageAccountName"); + if (string.IsNullOrEmpty(keyName)) + throw new ArgumentNullException("keyName"); Azure.KeyVault.Models.StorageBundle storageBundle; - var vaultAddress = this.vaultUriHelper.CreateVaultAddress( vaultName ); + var vaultAddress = this.vaultUriHelper.CreateVaultAddress(vaultName); try { - storageBundle = this.keyVaultClient.RegenerateStorageAccountKeyAsync( vaultAddress, managedStorageAccountName, keyName ).GetAwaiter().GetResult(); + storageBundle = this.keyVaultClient.RegenerateStorageAccountKeyAsync(vaultAddress, managedStorageAccountName, keyName).GetAwaiter().GetResult(); } - catch ( Exception ex ) + catch (Exception ex) { - throw GetInnerException( ex ); + throw GetInnerException(ex); } - return new PSKeyVaultManagedStorageAccount( storageBundle, this.vaultUriHelper ); + return new PSKeyVaultManagedStorageAccount(storageBundle, this.vaultUriHelper); } - public PSKeyVaultManagedStorageSasDefinition GetManagedStorageSasDefinition( string vaultName, string managedStorageAccountName, string sasDefinitionName ) + public PSKeyVaultManagedStorageSasDefinition GetManagedStorageSasDefinition(string vaultName, string managedStorageAccountName, string sasDefinitionName) { - if ( string.IsNullOrWhiteSpace( vaultName ) ) throw new ArgumentNullException( "vaultName" ); - if ( string.IsNullOrWhiteSpace( managedStorageAccountName ) ) throw new ArgumentNullException( "managedStorageAccountName" ); - if ( string.IsNullOrWhiteSpace( sasDefinitionName ) ) throw new ArgumentNullException( "sasDefinitionName" ); + if (string.IsNullOrWhiteSpace(vaultName)) throw new ArgumentNullException("vaultName"); + if (string.IsNullOrWhiteSpace(managedStorageAccountName)) throw new ArgumentNullException("managedStorageAccountName"); + if (string.IsNullOrWhiteSpace(sasDefinitionName)) throw new ArgumentNullException("sasDefinitionName"); SasDefinitionBundle storagesasDefinitionBundle; - var vaultAddress = this.vaultUriHelper.CreateVaultAddress( vaultName ); + var vaultAddress = this.vaultUriHelper.CreateVaultAddress(vaultName); try { - storagesasDefinitionBundle = this.keyVaultClient.GetSasDefinitionAsync( vaultAddress, managedStorageAccountName, sasDefinitionName ).GetAwaiter().GetResult(); + storagesasDefinitionBundle = this.keyVaultClient.GetSasDefinitionAsync(vaultAddress, managedStorageAccountName, sasDefinitionName).GetAwaiter().GetResult(); } - catch ( Exception ex ) + catch (Exception ex) { - throw GetInnerException( ex ); + throw GetInnerException(ex); } - return new PSKeyVaultManagedStorageSasDefinition( storagesasDefinitionBundle, this.vaultUriHelper ); + return new PSKeyVaultManagedStorageSasDefinition(storagesasDefinitionBundle, this.vaultUriHelper); } - public IEnumerable GetManagedStorageSasDefinitions( KeyVaultStorageSasDefinitiontFilterOptions options ) + public IEnumerable GetManagedStorageSasDefinitions(KeyVaultStorageSasDefinitiontFilterOptions options) { - if ( options == null ) - throw new ArgumentNullException( "options" ); - if ( string.IsNullOrEmpty( options.VaultName ) ) - throw new ArgumentException( KeyVaultProperties.Resources.InvalidVaultName ); - if ( string.IsNullOrEmpty( options.AccountName ) ) - throw new ArgumentException( KeyVaultProperties.Resources.InvalidManagedStorageAccountName ); + if (options == null) + throw new ArgumentNullException("options"); + if (string.IsNullOrEmpty(options.VaultName)) + throw new ArgumentException(KeyVaultProperties.Resources.InvalidVaultName); + if (string.IsNullOrEmpty(options.AccountName)) + throw new ArgumentException(KeyVaultProperties.Resources.InvalidManagedStorageAccountName); - string vaultAddress = this.vaultUriHelper.CreateVaultAddress( options.VaultName ); + string vaultAddress = this.vaultUriHelper.CreateVaultAddress(options.VaultName); try { IPage result; - if ( string.IsNullOrEmpty( options.NextLink ) ) - result = this.keyVaultClient.GetSasDefinitionsAsync( vaultAddress, options.AccountName ).GetAwaiter().GetResult(); + if (string.IsNullOrEmpty(options.NextLink)) + result = this.keyVaultClient.GetSasDefinitionsAsync(vaultAddress, options.AccountName).GetAwaiter().GetResult(); else - result = this.keyVaultClient.GetSasDefinitionsNextAsync( options.NextLink ).GetAwaiter().GetResult(); + result = this.keyVaultClient.GetSasDefinitionsNextAsync(options.NextLink).GetAwaiter().GetResult(); options.NextLink = result.NextPageLink; - return result.Select( ( storageAccountItem ) => new PSKeyVaultManagedStorageSasDefinitionIdentityItem( storageAccountItem, this.vaultUriHelper ) ); + return result.Select((storageAccountItem) => new PSKeyVaultManagedStorageSasDefinitionIdentityItem(storageAccountItem, this.vaultUriHelper)); } - catch ( Exception ex ) + catch (Exception ex) { - throw GetInnerException( ex ); + throw GetInnerException(ex); } } - public PSKeyVaultManagedStorageSasDefinition SetManagedStorageSasDefinition( - string vaultName, - string managedStorageAccountName, + public PSKeyVaultManagedStorageSasDefinition SetManagedStorageSasDefinition( + string vaultName, + string managedStorageAccountName, string sasDefinitionName, string templateUri, - string sasType, + string sasType, string validityPeriod, - PSKeyVaultManagedStorageSasDefinitionAttributes sasDefinitionAttributes, - Hashtable tags ) + PSKeyVaultManagedStorageSasDefinitionAttributes sasDefinitionAttributes, + Hashtable tags) { - if ( string.IsNullOrEmpty( vaultName ) ) + if (string.IsNullOrEmpty(vaultName)) throw new ArgumentNullException(nameof(vaultName)); - if ( string.IsNullOrEmpty( managedStorageAccountName ) ) + if (string.IsNullOrEmpty(managedStorageAccountName)) throw new ArgumentNullException(nameof(managedStorageAccountName)); if (string.IsNullOrEmpty(templateUri)) throw new ArgumentNullException(nameof(templateUri)); @@ -1374,10 +1375,10 @@ public PSKeyVaultManagedStorageSasDefinition SetManagedStorageSasDefinition( throw new ArgumentNullException(nameof(sasType)); if (string.IsNullOrEmpty(validityPeriod)) throw new ArgumentNullException(nameof(validityPeriod)); - if ( string.IsNullOrEmpty( sasDefinitionName ) ) + if (string.IsNullOrEmpty(sasDefinitionName)) throw new ArgumentNullException(nameof(sasDefinitionName)); - var vaultAddress = this.vaultUriHelper.CreateVaultAddress( vaultName ); + var vaultAddress = this.vaultUriHelper.CreateVaultAddress(vaultName); var attributes = sasDefinitionAttributes == null ? null : new Azure.KeyVault.Models.SasDefinitionAttributes { Enabled = sasDefinitionAttributes.Enabled, @@ -1387,49 +1388,49 @@ public PSKeyVaultManagedStorageSasDefinition SetManagedStorageSasDefinition( try { sasDefinitionBundle = - this.keyVaultClient.SetSasDefinitionAsync( - vaultBaseUrl: vaultAddress, + this.keyVaultClient.SetSasDefinitionAsync( + vaultBaseUrl: vaultAddress, storageAccountName: managedStorageAccountName, sasDefinitionName: sasDefinitionName, templateUri: templateUri, sasType: sasType, - validityPeriod:validityPeriod, + validityPeriod: validityPeriod, sasDefinitionAttributes: attributes, - tags: tags == null ? null : tags.ConvertToDictionary() ).GetAwaiter().GetResult(); + tags: tags == null ? null : tags.ConvertToDictionary()).GetAwaiter().GetResult(); } - catch ( Exception ex ) + catch (Exception ex) { - throw GetInnerException( ex ); + throw GetInnerException(ex); } - return new PSKeyVaultManagedStorageSasDefinition( sasDefinitionBundle, this.vaultUriHelper ); + return new PSKeyVaultManagedStorageSasDefinition(sasDefinitionBundle, this.vaultUriHelper); } - public PSDeletedKeyVaultManagedStorageSasDefinition DeleteManagedStorageSasDefinition( string vaultName, string managedStorageAccountName, string sasDefinitionName ) + public PSDeletedKeyVaultManagedStorageSasDefinition DeleteManagedStorageSasDefinition(string vaultName, string managedStorageAccountName, string sasDefinitionName) { - if ( string.IsNullOrEmpty( vaultName ) ) - throw new ArgumentNullException( "vaultName" ); - if ( string.IsNullOrEmpty( managedStorageAccountName ) ) - throw new ArgumentNullException( "managedStorageAccountName" ); - if ( string.IsNullOrEmpty( sasDefinitionName ) ) - throw new ArgumentNullException( "sasDefinitionName" ); + if (string.IsNullOrEmpty(vaultName)) + throw new ArgumentNullException("vaultName"); + if (string.IsNullOrEmpty(managedStorageAccountName)) + throw new ArgumentNullException("managedStorageAccountName"); + if (string.IsNullOrEmpty(sasDefinitionName)) + throw new ArgumentNullException("sasDefinitionName"); - var vaultAddress = this.vaultUriHelper.CreateVaultAddress( vaultName ); + var vaultAddress = this.vaultUriHelper.CreateVaultAddress(vaultName); Azure.KeyVault.Models.DeletedSasDefinitionBundle sasDefinitionBundle; try { sasDefinitionBundle = - this.keyVaultClient.DeleteSasDefinitionAsync( vaultAddress, + this.keyVaultClient.DeleteSasDefinitionAsync(vaultAddress, managedStorageAccountName, - sasDefinitionName ).GetAwaiter().GetResult(); + sasDefinitionName).GetAwaiter().GetResult(); } - catch ( Exception ex ) + catch (Exception ex) { - throw GetInnerException( ex ); + throw GetInnerException(ex); } - return new PSDeletedKeyVaultManagedStorageSasDefinition( sasDefinitionBundle, this.vaultUriHelper ); + return new PSDeletedKeyVaultManagedStorageSasDefinition(sasDefinitionBundle, this.vaultUriHelper); } #endregion @@ -1457,7 +1458,7 @@ public PSDeletedKeyVaultKey GetDeletedKey(string vaultName, string keyName) } catch (KeyVaultErrorException ex) { - if(ex.Response.StatusCode == HttpStatusCode.NotFound) + if (ex.Response.StatusCode == HttpStatusCode.NotFound) return null; else throw; @@ -1638,41 +1639,41 @@ public PSKeyVaultSecret RecoverSecret(string vaultName, string secretName) return new PSKeyVaultSecret(recoveredSecret, this.vaultUriHelper); } - public PSDeletedKeyVaultCertificate GetDeletedCertificate( string vaultName, string certName ) + public PSDeletedKeyVaultCertificate GetDeletedCertificate(string vaultName, string certName) { - if ( string.IsNullOrEmpty( vaultName ) ) - throw new ArgumentNullException( nameof(vaultName) ); - if ( string.IsNullOrEmpty( certName ) ) - throw new ArgumentNullException( nameof(certName) ); + if (string.IsNullOrEmpty(vaultName)) + throw new ArgumentNullException(nameof(vaultName)); + if (string.IsNullOrEmpty(certName)) + throw new ArgumentNullException(nameof(certName)); string vaultAddress = this.vaultUriHelper.CreateVaultAddress(vaultName); DeletedCertificateBundle deletedCertificate; try { - deletedCertificate = this.keyVaultClient.GetDeletedCertificateAsync( vaultAddress, certName ).GetAwaiter( ).GetResult( ); + deletedCertificate = this.keyVaultClient.GetDeletedCertificateAsync(vaultAddress, certName).GetAwaiter().GetResult(); } - catch ( KeyVaultErrorException ex ) + catch (KeyVaultErrorException ex) { - if ( ex.Response.StatusCode == HttpStatusCode.NotFound ) + if (ex.Response.StatusCode == HttpStatusCode.NotFound) return null; else throw; } - catch ( Exception ex ) + catch (Exception ex) { - throw GetInnerException( ex ); + throw GetInnerException(ex); } return new PSDeletedKeyVaultCertificate(deletedCertificate); } - public IEnumerable GetDeletedCertificates( KeyVaultCertificateFilterOptions options ) + public IEnumerable GetDeletedCertificates(KeyVaultCertificateFilterOptions options) { - if ( options == null ) - throw new ArgumentNullException( nameof( options ) ); - if ( string.IsNullOrEmpty( options.VaultName ) ) - throw new ArgumentException( KeyVaultProperties.Resources.InvalidVaultName ); + if (options == null) + throw new ArgumentNullException(nameof(options)); + if (string.IsNullOrEmpty(options.VaultName)) + throw new ArgumentException(KeyVaultProperties.Resources.InvalidVaultName); string vaultAddress = this.vaultUriHelper.CreateVaultAddress(options.VaultName); @@ -1680,38 +1681,38 @@ public IEnumerable GetDeletedCertifica { IPage result; - if ( string.IsNullOrEmpty( options.NextLink ) ) - result = this.keyVaultClient.GetDeletedCertificatesAsync( vaultAddress, maxresults: null, includePending: options.IncludePending ).GetAwaiter( ).GetResult( ); + if (string.IsNullOrEmpty(options.NextLink)) + result = this.keyVaultClient.GetDeletedCertificatesAsync(vaultAddress, maxresults: null, includePending: options.IncludePending).GetAwaiter().GetResult(); else - result = this.keyVaultClient.GetDeletedCertificatesNextAsync( options.NextLink ).GetAwaiter( ).GetResult( ); + result = this.keyVaultClient.GetDeletedCertificatesNextAsync(options.NextLink).GetAwaiter().GetResult(); options.NextLink = result.NextPageLink; - return ( result == null ) ? new List( ) : - result.Select( ( deletedItem ) => new PSDeletedKeyVaultCertificateIdentityItem( deletedItem, this.vaultUriHelper ) ); + return (result == null) ? new List() : + result.Select((deletedItem) => new PSDeletedKeyVaultCertificateIdentityItem(deletedItem, this.vaultUriHelper)); } - catch ( Exception ex ) + catch (Exception ex) { - throw GetInnerException( ex ); + throw GetInnerException(ex); } } - public PSKeyVaultCertificate RecoverCertificate( string vaultName, string certName ) + public PSKeyVaultCertificate RecoverCertificate(string vaultName, string certName) { - if ( string.IsNullOrEmpty( vaultName ) ) - throw new ArgumentNullException( nameof( vaultName ) ); - if ( string.IsNullOrEmpty( certName ) ) - throw new ArgumentNullException( nameof( certName ) ); + if (string.IsNullOrEmpty(vaultName)) + throw new ArgumentNullException(nameof(vaultName)); + if (string.IsNullOrEmpty(certName)) + throw new ArgumentNullException(nameof(certName)); string vaultAddress = this.vaultUriHelper.CreateVaultAddress(vaultName); CertificateBundle recoveredCertificate; try { - recoveredCertificate = this.keyVaultClient.RecoverDeletedCertificateAsync( vaultAddress, certName ).GetAwaiter( ).GetResult( ); + recoveredCertificate = this.keyVaultClient.RecoverDeletedCertificateAsync(vaultAddress, certName).GetAwaiter().GetResult(); } - catch ( Exception ex ) + catch (Exception ex) { - throw GetInnerException( ex ); + throw GetInnerException(ex); } return new PSKeyVaultCertificate(recoveredCertificate); @@ -2003,6 +2004,105 @@ public PSKeyVaultManagedStorageAccount RestoreManagedStorageAccount(string vault return new PSKeyVaultManagedStorageAccount(storageAccountBundle, this.vaultUriHelper); } + public string BackupManagedHsmKey(string managedHsmName, string keyName, string outputBlobPath) + { + throw new NotImplementedException("Backing up a key on managed HSM is only possible in track 2 SDK."); + } + + public PSKeyVaultKey RestoreManagedHsmKey(string managedHsmName, string inputBlobPath) + { + throw new NotImplementedException("Restoring a key on managed HSM is only possible in track 2 SDK."); + } + + public PSKeyVaultKey CreateManagedHsmKey(string managedHsmName, string keyName, PSKeyVaultKeyAttributes keyAttributes, int? size, string curveName) + { + throw new NotImplementedException("Creating keys on managed HSM is only possible in track 2 SDK."); + } + + public Uri BackupHsm(string hsmName, Uri blobStorageUri, string sasToken) + { + throw new NotImplementedException(); + } + + public void RestoreHsm(string hsmName, Uri blobStorageUri, string sasToken, string backupFolder) + { + throw new NotImplementedException(); + } + + public PSKeyVaultRoleDefinition[] GetHsmRoleDefinitions(string name, string scope) + { + throw new NotImplementedException(); + } + + public PSKeyVaultRoleAssignment[] GetHsmRoleAssignments(string name, string scope) + { + throw new NotImplementedException(); + } + + public PSKeyVaultRoleAssignment GetHsmRoleAssignment(string hsmName, string scope, string roleAssignmentName) + { + throw new NotImplementedException(); + } + + public PSKeyVaultRoleAssignment CreateHsmRoleAssignment(string hsmName, string scope, string roleDefinitionId, string principalId) + { + throw new NotImplementedException(); + } + + public void RemoveHsmRoleAssignment(string hsmName, string scope, string roleAssignmentName) + { + throw new NotImplementedException(); + } + + public PSDeletedKeyVaultKey DeleteManagedHsmKey(string managedHsmName, string keyName) + { + throw new NotImplementedException("Removing keys on managed HSM is only possible in track 2 SDK."); + } + + public PSKeyVaultKey ImportManagedHsmKey(string managedHsmName, string keyName, Track2Sdk.JsonWebKey webKey) + { + throw new NotImplementedException("Importing keys on managed HSM is only possible in track 2 SDK."); + } + + public PSKeyVaultKey UpdateManagedHsmKey(string managedHsmName, string keyName, string keyVersion, PSKeyVaultKeyAttributes keyAttributes) + { + throw new NotImplementedException("Updating keys on managed HSM is only possible in track 2 SDK."); + } + public PSKeyVaultKey RecoverManagedHsmKey(string managedHsmName, string keyName) + { + throw new NotImplementedException("Recovering keys on managed HSM is only possible in track 2 SDK."); + } + + public PSKeyVaultKey GetManagedHsmKey(string managedHsmName, string keyName, string keyVersion) + { + throw new NotImplementedException("Getting keys on managed HSM is only possible in track 2 SDK."); + } + + public IEnumerable GetManagedHsmKeyAllVersions(string managedHsmName, string keyName) + { + throw new NotImplementedException("Getting key versions on managed HSM is only possible in track 2 SDK."); + } + + public IEnumerable GetManagedHsmKeys(string managedHsmName) + { + throw new NotImplementedException("Getting keys on managed HSM is only possible in track 2 SDK."); + } + + public PSDeletedKeyVaultKey GetManagedHsmDeletedKey(string managedHsmName, string keyName) + { + throw new NotImplementedException("Getting deleted keys on managed HSM is only possible in track 2 SDK."); + } + + public IEnumerable GetManagedHsmDeletedKeys(string managedHsmNam) + { + throw new NotImplementedException("Getting deleted keys on managed HSM is only possible in track 2 SDK."); + } + + public void PurgeManagedHsmKey(string managedHsmName, string keyName) + { + throw new NotImplementedException("Purging deleted keys on managed HSM is only possible in track 2 SDK."); + } + private VaultUriHelper vaultUriHelper; private KeyVaultClient keyVaultClient; } diff --git a/src/KeyVault/KeyVault/Models/KeyVaultManagementCmdletBase.cs b/src/KeyVault/KeyVault/Models/KeyVaultManagementCmdletBase.cs index de601c004dc2..685a159f78f4 100644 --- a/src/KeyVault/KeyVault/Models/KeyVaultManagementCmdletBase.cs +++ b/src/KeyVault/KeyVault/Models/KeyVaultManagementCmdletBase.cs @@ -92,7 +92,7 @@ public ResourceManagementClient ResourceClient set { _resourceClient = value; } } - protected List FilterByTag(List listResult, Hashtable tag) + protected List FilterByTag(List listResult, Hashtable tag) where T : PSKeyVaultIdentityItem { var tagValuePair = new PSTagValuePair(); if (tag != null && tag.Count > 0) @@ -117,15 +117,26 @@ protected List FilterByTag(List return listResult; } - protected PSKeyVault FilterByTag(PSKeyVault keyVault, Hashtable tag) + protected T FilterByTag(T vault, Hashtable tag) where T : PSKeyVaultIdentityItem { - return (PSKeyVault)FilterByTag(new List { keyVault }, tag).FirstOrDefault(); + return FilterByTag(new List { vault }, tag).FirstOrDefault(); } - protected List ListVaults(string resourceGroupName, Hashtable tag) + protected List ListVaults(string resourceGroupName, Hashtable tag, ResourceTypeName? resourceTypeName = ResourceTypeName.Vault) { + var vaults = new List(); + + // List all kinds of vault resources + if (resourceTypeName == null) + { + vaults.AddRange(ListVaults(resourceGroupName, tag, ResourceTypeName.Vault)); + vaults.AddRange(ListVaults(resourceGroupName, tag, ResourceTypeName.Hsm)); + return vaults; + } + IEnumerable listResult; - var resourceType = KeyVaultManagementClient.VaultsResourceType; + var resourceType = resourceTypeName.Equals(ResourceTypeName.Hsm) ? + KeyVaultManagementClient.ManagedHsmResourceType : KeyVaultManagementClient.VaultsResourceType; if (ShouldListByResourceGroup(resourceGroupName, null)) { listResult = ListByResourceGroup(resourceGroupName, @@ -139,7 +150,6 @@ protected List ListVaults(string resourceGroupName, Hash r => r.ResourceType == resourceType)); } - var vaults = new List(); if (listResult != null) { vaults.AddRange(listResult); @@ -168,17 +178,17 @@ private IEnumerable ListByResourceGroup( return new GenericPageEnumerable(() => armClient.ResourceGroups.ListResources(resourceGroupName, filter), armClient.ResourceGroups.ListResourcesNext, first, skip).Select(r => new PSKeyVaultIdentityItem(r)); } - protected string GetResourceGroupName(string vaultName) + protected string GetResourceGroupName(string name, bool isHsm=false) { var resourcesByName = ResourceClient.FilterResources(new FilterResourcesOptions { - ResourceType = KeyVaultManagementClient.VaultsResourceType + ResourceType = isHsm? KeyVaultManagementClient.ManagedHsmResourceType:KeyVaultManagementClient.VaultsResourceType }); string rg = null; if (resourcesByName != null && resourcesByName.Count > 0) { - var vault = resourcesByName.FirstOrDefault(r => r.Name.Equals(vaultName, StringComparison.OrdinalIgnoreCase)); + var vault = resourcesByName.FirstOrDefault(r => r.Name.Equals(name, StringComparison.OrdinalIgnoreCase)); if (vault != null) { rg = new ResourceIdentifier(vault.Id).ResourceGroupName; @@ -198,9 +208,9 @@ protected string GetResourceGroupName(string vaultName) // // An alternate implementation that checks for the vault name globally would be to construct a vault // URL with the given name and attempt checking DNS entries for it. - protected bool VaultExistsInCurrentSubscription(string name) + protected bool VaultExistsInCurrentSubscription(string name, bool isHsm=false) { - return GetResourceGroupName(name) != null; + return GetResourceGroupName(name, isHsm) != null; } protected Guid GetTenantId() @@ -453,5 +463,8 @@ protected bool IsValidObjectIdSyntax(string objectId) protected readonly string DefaultSkuFamily = "A"; protected readonly string DefaultSkuName = "Standard"; + + protected readonly string DefaultManagedHsmSkuFamily = "b"; + protected readonly string DefaultManagedHsmSkuName = "Standard_B1"; } } diff --git a/src/KeyVault/KeyVault/Models/ModelExtensions.cs b/src/KeyVault/KeyVault/Models/ModelExtensions.cs index 5dcfa7d94f0d..32ea07bda667 100644 --- a/src/KeyVault/KeyVault/Models/ModelExtensions.cs +++ b/src/KeyVault/KeyVault/Models/ModelExtensions.cs @@ -36,7 +36,7 @@ public static string ConstructAccessPoliciesTableAsTable(IEnumerable + GetDetailsFromADObjectId(objectId, adClient).Item1; + + public static (string, string) GetDetailsFromADObjectId(string objectId, ActiveDirectoryClient adClient) { var displayName = ""; var upnOrSpn = ""; + var objectType = "Unknown"; if (adClient == null || string.IsNullOrWhiteSpace(objectId)) - return displayName; + return (displayName, objectType); try { -// TODO: Remove IfDef -#if NETSTANDARD var obj = adClient.GetObjectsByObjectId(new List { objectId }).FirstOrDefault(); if (obj != null) { @@ -123,6 +125,7 @@ public static string GetDisplayNameForADObject(string objectId, ActiveDirectoryC var user = adClient.FilterUsers(new ADObjectFilterOptions { Id = objectId }).FirstOrDefault(); displayName = user.DisplayName; upnOrSpn = user.UserPrincipalName; + objectType = "User"; } else if (obj.Type.Equals("serviceprincipal", StringComparison.InvariantCultureIgnoreCase)) { @@ -130,48 +133,32 @@ public static string GetDisplayNameForADObject(string objectId, ActiveDirectoryC var servicePrincipal = adClient.FilterServicePrincipals(odataQuery).FirstOrDefault(); displayName = servicePrincipal.DisplayName; upnOrSpn = servicePrincipal.ServicePrincipalNames.FirstOrDefault(); + objectType = "Service Principal"; } else if (obj.Type.Equals("group", StringComparison.InvariantCultureIgnoreCase)) { var group = adClient.FilterGroups(new ADObjectFilterOptions { Id = objectId }).FirstOrDefault(); displayName = group.DisplayName; + objectType = "Group"; } } -#else - var obj = adClient.GetObjectsByObjectIdsAsync(new[] { objectId }, new string[] { }).GetAwaiter().GetResult().FirstOrDefault(); - if (obj != null) - { - if (obj.ObjectType.Equals("user", StringComparison.InvariantCultureIgnoreCase)) - { - var user = adClient.Users.GetByObjectId(objectId).ExecuteAsync().GetAwaiter().GetResult(); - displayName = user.DisplayName; - upnOrSpn = user.UserPrincipalName; - } - else if (obj.ObjectType.Equals("serviceprincipal", StringComparison.InvariantCultureIgnoreCase)) - { - var servicePrincipal = adClient.ServicePrincipals.GetByObjectId(objectId).ExecuteAsync().GetAwaiter().GetResult(); - displayName = servicePrincipal.AppDisplayName; - upnOrSpn = servicePrincipal.ServicePrincipalNames.FirstOrDefault(); - } - else if (obj.ObjectType.Equals("group", StringComparison.InvariantCultureIgnoreCase)) - { - var group = adClient.Groups.GetByObjectId(objectId).ExecuteAsync().GetAwaiter().GetResult(); - displayName = group.DisplayName; - upnOrSpn = group.MailNickname; - } - } -#endif } catch { // Error occurred. Don't get the friendly name } - return displayName + (!string.IsNullOrWhiteSpace(upnOrSpn) ? (" (" + upnOrSpn + ")") : ""); + return ( + displayName + (!string.IsNullOrWhiteSpace(upnOrSpn) ? (" (" + upnOrSpn + ")") : ""), + objectType + ); + } public static string GetDisplayNameForTenant(Guid id, ActiveDirectoryClient adClient) { + if (id == null) + return string.Empty; return id.ToString(); } } diff --git a/src/KeyVault/KeyVault/Models/PSDeletedKeyVaultKey.cs b/src/KeyVault/KeyVault/Models/PSDeletedKeyVaultKey.cs index 3d65078fd62a..58b949b38c4c 100644 --- a/src/KeyVault/KeyVault/Models/PSDeletedKeyVaultKey.cs +++ b/src/KeyVault/KeyVault/Models/PSDeletedKeyVaultKey.cs @@ -16,6 +16,8 @@ using Microsoft.Azure.KeyVault.WebKey; using System; using System.Linq; +using Azure.Security.KeyVault.Keys; +using JsonWebKey = Microsoft.Azure.KeyVault.WebKey.JsonWebKey; namespace Microsoft.Azure.Commands.KeyVault.Models { @@ -59,6 +61,40 @@ internal PSDeletedKeyVaultKey(Azure.KeyVault.Models.DeletedKeyBundle deletedKeyB DeletedDate = deletedKeyBundle.DeletedDate; } + internal PSDeletedKeyVaultKey(DeletedKey deletedKey, VaultUriHelper vaultUriHelper) + { + if (deletedKey == null) + throw new ArgumentNullException("deletedKey"); + if (deletedKey.Key == null || deletedKey.Properties == null) + throw new ArgumentException(Resources.InvalidKeyBundle); + + SetObjectIdentifier(vaultUriHelper, new Microsoft.Azure.KeyVault.KeyIdentifier(deletedKey.Id.ToString())); + + Key = deletedKey.Key.ToTrack1JsonWebKey(); + Attributes = new PSKeyVaultKeyAttributes( + deletedKey.Properties.Enabled, + /// see https://docs.microsoft.com/en-us/dotnet/standard/datetime/converting-between-datetime-and-offset#conversions-from-datetimeoffset-to-datetime + deletedKey.Properties.ExpiresOn?.UtcDateTime, // time returned by key vault are UTC + deletedKey.Properties.NotBefore?.UtcDateTime, + deletedKey.KeyType.ToString(), + deletedKey.KeyOperations.Select(op => op.ToString()).ToArray(), + deletedKey.Properties.CreatedOn?.UtcDateTime, + deletedKey.Properties.UpdatedOn?.UtcDateTime, + deletedKey.Properties.RecoveryLevel, + deletedKey.Properties.Tags + ); + + Enabled = deletedKey.Properties.Enabled; + Expires = deletedKey.Properties.ExpiresOn?.UtcDateTime; + NotBefore = deletedKey.Properties.NotBefore?.UtcDateTime; + Created = deletedKey.Properties.CreatedOn?.UtcDateTime; + Updated = deletedKey.Properties.UpdatedOn?.UtcDateTime; + RecoveryLevel = deletedKey.Properties.RecoveryLevel; + Tags = deletedKey.Properties.Tags.ConvertToHashtable(); + ScheduledPurgeDate = deletedKey.ScheduledPurgeDate?.UtcDateTime; + DeletedDate = deletedKey.DeletedOn?.UtcDateTime; + } + public PSKeyVaultKeyAttributes Attributes { get; set; } public JsonWebKey Key { get; set; } diff --git a/src/KeyVault/KeyVault/Models/PSDeletedKeyVaultKeyIdentityItem.cs b/src/KeyVault/KeyVault/Models/PSDeletedKeyVaultKeyIdentityItem.cs index dd7f54fc49da..0e75d5da5218 100644 --- a/src/KeyVault/KeyVault/Models/PSDeletedKeyVaultKeyIdentityItem.cs +++ b/src/KeyVault/KeyVault/Models/PSDeletedKeyVaultKeyIdentityItem.cs @@ -13,6 +13,7 @@ // ---------------------------------------------------------------------------------- using System; +using Track2Sdk = Azure.Security.KeyVault.Keys; namespace Microsoft.Azure.Commands.KeyVault.Models { @@ -26,6 +27,11 @@ internal PSDeletedKeyVaultKeyIdentityItem(Azure.KeyVault.Models.DeletedKeyItem k ScheduledPurgeDate = keyItem.ScheduledPurgeDate; DeletedDate = keyItem.DeletedDate; } + internal PSDeletedKeyVaultKeyIdentityItem(Track2Sdk.DeletedKey deletedKey, VaultUriHelper vaultUriHelper): base(deletedKey.Properties, vaultUriHelper) + { + ScheduledPurgeDate = deletedKey.ScheduledPurgeDate?.UtcDateTime; + DeletedDate = deletedKey.DeletedOn?.UtcDateTime; + } public DateTime? ScheduledPurgeDate { get; set; } diff --git a/src/KeyVault/KeyVault/Models/PSKeyVault.cs b/src/KeyVault/KeyVault/Models/PSKeyVault.cs index ff6b44f896c2..cf762ffa12f1 100644 --- a/src/KeyVault/KeyVault/Models/PSKeyVault.cs +++ b/src/KeyVault/KeyVault/Models/PSKeyVault.cs @@ -92,7 +92,7 @@ public PSKeyVault(Vault vault, ActiveDirectoryClient adClient) private static PSKeyVaultNetworkRuleSet InitNetworkRuleSet(VaultProperties properties) { - // The service will return NULL when NetworkAcls is never set before or set with default property values + // The service will return NULL when NetworkAcls is never set before or set with default values // The default constructor will set default property values in SDK's NetworkRuleSet class if (properties?.NetworkAcls == null) { diff --git a/src/KeyVault/KeyVault/Models/PSKeyVaultKey.cs b/src/KeyVault/KeyVault/Models/PSKeyVaultKey.cs index 9ea49a57bfd0..d74106b509c6 100644 --- a/src/KeyVault/KeyVault/Models/PSKeyVaultKey.cs +++ b/src/KeyVault/KeyVault/Models/PSKeyVaultKey.cs @@ -16,6 +16,7 @@ using System; using KeyVaultProperties = Microsoft.Azure.Commands.KeyVault.Properties; using System.Linq; +using Track2Sdk = Azure.Security.KeyVault.Keys; namespace Microsoft.Azure.Commands.KeyVault.Models { @@ -24,7 +25,7 @@ public class PSKeyVaultKey : PSKeyVaultKeyIdentityItem public PSKeyVaultKey() { } - internal PSKeyVaultKey(Azure.KeyVault.Models.KeyBundle keyBundle, VaultUriHelper vaultUriHelper) + internal PSKeyVaultKey(Microsoft.Azure.KeyVault.Models.KeyBundle keyBundle, VaultUriHelper vaultUriHelper) { if (keyBundle == null) throw new ArgumentNullException("keyBundle"); @@ -36,9 +37,9 @@ internal PSKeyVaultKey(Azure.KeyVault.Models.KeyBundle keyBundle, VaultUriHelper Key = keyBundle.Key; Attributes = new PSKeyVaultKeyAttributes( keyBundle.Attributes.Enabled, - keyBundle.Attributes.Expires, - keyBundle.Attributes.NotBefore, - keyBundle.Key.Kty, + keyBundle.Attributes.Expires, + keyBundle.Attributes.NotBefore, + keyBundle.Key.Kty, keyBundle.Key.KeyOps.ToArray(), keyBundle.Attributes.Created, keyBundle.Attributes.Updated, @@ -54,6 +55,38 @@ internal PSKeyVaultKey(Azure.KeyVault.Models.KeyBundle keyBundle, VaultUriHelper Tags = (keyBundle.Tags == null) ? null : keyBundle.Tags.ConvertToHashtable(); } + internal PSKeyVaultKey(Track2Sdk.KeyVaultKey key, VaultUriHelper vaultUriHelper) + { + if (key == null) + throw new ArgumentNullException("key"); + if (key.Key == null || key.Properties == null) + throw new ArgumentException(KeyVaultProperties.Resources.InvalidKeyBundle); + + SetObjectIdentifier(vaultUriHelper, new Microsoft.Azure.KeyVault.KeyIdentifier(key.Id.ToString())); + + Key = key.Key.ToTrack1JsonWebKey(); + Attributes = new PSKeyVaultKeyAttributes( + key.Properties.Enabled, + /// see https://docs.microsoft.com/en-us/dotnet/standard/datetime/converting-between-datetime-and-offset#conversions-from-datetimeoffset-to-datetime + key.Properties.ExpiresOn?.UtcDateTime, // time returned by key vault are UTC + key.Properties.NotBefore?.UtcDateTime, + key.KeyType.ToString(), + key.KeyOperations.Select(op => op.ToString()).ToArray(), + key.Properties.CreatedOn?.UtcDateTime, + key.Properties.UpdatedOn?.UtcDateTime, + key.Properties.RecoveryLevel, + key.Properties.Tags + ); + + Enabled = key.Properties.Enabled; + Expires = key.Properties.ExpiresOn?.UtcDateTime; + NotBefore = key.Properties.NotBefore?.UtcDateTime; + Created = key.Properties.CreatedOn?.UtcDateTime; + Updated = key.Properties.UpdatedOn?.UtcDateTime; + RecoveryLevel = key.Properties.RecoveryLevel; + Tags = key.Properties.Tags.ConvertToHashtable(); + } + public PSKeyVaultKeyAttributes Attributes { get; set; } public JsonWebKey Key { get; set; } diff --git a/src/KeyVault/KeyVault/Models/PSKeyVaultKeyIdentityItem.cs b/src/KeyVault/KeyVault/Models/PSKeyVaultKeyIdentityItem.cs index a61a2fc5a574..0c88ef3c9c1f 100644 --- a/src/KeyVault/KeyVault/Models/PSKeyVaultKeyIdentityItem.cs +++ b/src/KeyVault/KeyVault/Models/PSKeyVaultKeyIdentityItem.cs @@ -15,6 +15,7 @@ using System; using System.Collections; using KeyVaultProperties = Microsoft.Azure.Commands.KeyVault.Properties; +using Track2Sdk = Azure.Security.KeyVault.Keys; namespace Microsoft.Azure.Commands.KeyVault.Models { @@ -60,6 +61,23 @@ internal PSKeyVaultKeyIdentityItem(PSKeyVaultKey keyBundle) RecoveryLevel = keyBundle.Attributes.RecoveryLevel; Tags = keyBundle.Attributes.Tags; } + internal PSKeyVaultKeyIdentityItem(Track2Sdk.KeyProperties keyProperties, VaultUriHelper vaultUriHelper) + { + if (keyProperties == null) + throw new ArgumentNullException("keyProperties"); + if (keyProperties.Id == null || keyProperties.Name == null) + throw new ArgumentException(KeyVaultProperties.Resources.InvalidKeyProperties); + + SetObjectIdentifier(vaultUriHelper, new Microsoft.Azure.KeyVault.KeyIdentifier(keyProperties.Id.ToString())); + + Enabled = keyProperties.Enabled; + Expires = keyProperties.ExpiresOn?.UtcDateTime; + NotBefore = keyProperties.NotBefore?.UtcDateTime; + Created = keyProperties.CreatedOn?.UtcDateTime; + Updated = keyProperties.UpdatedOn?.UtcDateTime; + RecoveryLevel = keyProperties.RecoveryLevel; + Tags = keyProperties.Tags.ConvertToHashtable(); + } public bool? Enabled { get; set; } diff --git a/src/KeyVault/KeyVault/Models/PSKeyVaultPermission.cs b/src/KeyVault/KeyVault/Models/PSKeyVaultPermission.cs new file mode 100644 index 000000000000..5bf3b98688c4 --- /dev/null +++ b/src/KeyVault/KeyVault/Models/PSKeyVaultPermission.cs @@ -0,0 +1,28 @@ +using Azure.Security.KeyVault.Administration.Models; +using System.Linq; + +namespace Microsoft.Azure.Commands.KeyVault.Models +{ + public class PSKeyVaultPermission + { + /// Allowed actions. + public string[] AllowedActions { get; } + + /// Denied actions. + public string[] DeniedActions { get; } + + /// Allowed Data actions. + public string[] AllowedDataActions { get; } + + /// Denied Data actions. + public string[] DeniedDataActions { get; } + + public PSKeyVaultPermission(KeyVaultPermission permission) + { + AllowedActions = permission.Actions.ToArray(); + DeniedActions = permission.NotActions.ToArray(); + AllowedDataActions = permission.DataActions.ToArray(); + DeniedDataActions = permission.NotDataActions.ToArray(); + } + } +} \ No newline at end of file diff --git a/src/KeyVault/KeyVault/Models/PSKeyVaultRoleAssignment.cs b/src/KeyVault/KeyVault/Models/PSKeyVaultRoleAssignment.cs new file mode 100644 index 000000000000..7fabdafa3eca --- /dev/null +++ b/src/KeyVault/KeyVault/Models/PSKeyVaultRoleAssignment.cs @@ -0,0 +1,80 @@ +// ---------------------------------------------------------------------------------- +// +// Copyright Microsoft Corporation +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// ---------------------------------------------------------------------------------- + +using Azure.Security.KeyVault.Administration.Models; + +namespace Microsoft.Azure.Commands.KeyVault.Models +{ + public class PSKeyVaultRoleAssignment + { + // + // Summary: + // The role assignment ID. + public string Id { get; } + // + // Summary: + // The role assignment name. + public string Name { get; } + // + // Summary: + // The role assignment type. + public string Type { get; } + // + // Summary: + // The role assignment scope. + public string Scope { get; } + // + // Summary: + // The role definition ID. + public string RoleDefinitionId { get; } + // + // Summary: + // The principal ID. + public string PrincipalId { get; } + + /// + /// Name of the HSM where the role assignment belongs to. + /// Note: hsm name is not included in the service's respones; + /// It is added to support powershell piping; + /// It needs to be maintained by client-side code. + /// + public string HsmName { get; private set; } + + /// + /// Display name of the principal. + /// + public string DisplayName { get; internal set; } + + /// + /// Type of the principal, e.g. User / Service Principal / Group. + /// + public string ObjectType { get; internal set; } + + /// + /// Display name of the role definition. + /// + public string RoleDefinitionName { get; internal set; } + + public PSKeyVaultRoleAssignment(KeyVaultRoleAssignment roleAssignment, string hsmName) + { + Id = roleAssignment.Id; + Name = roleAssignment.Name; + Type = roleAssignment.Type; + Scope = roleAssignment.Properties.Scope; + RoleDefinitionId = roleAssignment.Properties.RoleDefinitionId; + PrincipalId = roleAssignment.Properties.PrincipalId; + HsmName = hsmName; + } + } +} \ No newline at end of file diff --git a/src/KeyVault/KeyVault/Models/PSKeyVaultRoleDefinition.cs b/src/KeyVault/KeyVault/Models/PSKeyVaultRoleDefinition.cs new file mode 100644 index 000000000000..fc5c3c54767e --- /dev/null +++ b/src/KeyVault/KeyVault/Models/PSKeyVaultRoleDefinition.cs @@ -0,0 +1,44 @@ +using Azure.Security.KeyVault.Administration.Models; +using System.Linq; + +namespace Microsoft.Azure.Commands.KeyVault.Models +{ + public class PSKeyVaultRoleDefinition + { + /// The role definition ID. + public string Id { get; } + + /// The role definition name. + public string Name { get; } + + /// The role definition type. + public string Type { get; } + + /// The role name. + public string RoleName { get; set; } + + /// The role definition description. + public string Description { get; set; } + + /// The role type. + public string RoleType { get; set; } + + /// Role definition permissions. + public PSKeyVaultPermission[] Permissions { get; } + + /// Role definition assignable scopes. + public string[] AssignableScopes { get; } + + public PSKeyVaultRoleDefinition(KeyVaultRoleDefinition roleDefinition) + { + Id = roleDefinition.Id; + Name = roleDefinition.Name; + Type = roleDefinition.Type; + RoleName = roleDefinition.RoleName; + Description = roleDefinition.Description; + RoleType = roleDefinition.RoleType; + AssignableScopes = roleDefinition.AssignableScopes.ToArray(); + Permissions = roleDefinition.Permissions.Select(permission => new PSKeyVaultPermission(permission)).ToArray(); + } + } +} \ No newline at end of file diff --git a/src/KeyVault/KeyVault/Models/PSManagedHsm.cs b/src/KeyVault/KeyVault/Models/PSManagedHsm.cs new file mode 100644 index 000000000000..dae3d7dade07 --- /dev/null +++ b/src/KeyVault/KeyVault/Models/PSManagedHsm.cs @@ -0,0 +1,58 @@ +#if NETSTANDARD +using Microsoft.Azure.Graph.RBAC.Version1_6.ActiveDirectory; +#else +using Microsoft.Azure.ActiveDirectory.GraphClient; +#endif +using System; +using Microsoft.Azure.Management.KeyVault.Models; +using Microsoft.Azure.Commands.ResourceManager.Common.Tags; +using Microsoft.Azure.Management.Internal.Resources.Utilities.Models; +using System.Linq; + +namespace Microsoft.Azure.Commands.KeyVault.Models +{ + public class PSManagedHsm : PSKeyVaultIdentityItem + { + public PSManagedHsm() + { + } + + public PSManagedHsm(ManagedHsm managedHsm, ActiveDirectoryClient adClient) + { + // PSKeyVaultIdentityItem's properties + ResourceId = managedHsm.Id; + VaultName = managedHsm.Name; + ResourceGroupName = (new ResourceIdentifier(managedHsm.Id)).ResourceGroupName; + Location = managedHsm.Location; + Tags = TagsConversionHelper.CreateTagHashtable(managedHsm.Tags); + + // PSManagedHsm's properties, hides type + Name = managedHsm.Name; + Sku = managedHsm.Sku.Name.ToString(); + TenantId = managedHsm.Properties.TenantId.Value; + TenantName = ModelExtensions.GetDisplayNameForTenant(TenantId, adClient); + InitialAdminObjectIds = managedHsm.Properties.InitialAdminObjectIds.ToArray(); + HsmUri = managedHsm.Properties.HsmUri; + EnablePurgeProtection = managedHsm.Properties.EnablePurgeProtection; + EnableSoftDelete = managedHsm.Properties.EnableSoftDelete; + SoftDeleteRetentionInDays = managedHsm.Properties.SoftDeleteRetentionInDays; + StatusMessage = managedHsm.Properties.StatusMessage; + ProvisioningState = managedHsm.Properties.ProvisioningState; + OriginalManagedHsm = managedHsm; + } + + public string Name { get; private set; } + public string Sku { get; private set; } + public Guid TenantId { get; private set; } + public string TenantName { get; private set; } + public string[] InitialAdminObjectIds { get; private set; } + public string HsmUri { get; private set; } + public bool? EnableSoftDelete { get; private set; } + public int? SoftDeleteRetentionInDays { get; private set; } + public bool? EnablePurgeProtection { get; private set; } + public string StatusMessage { get; private set; } + public string ProvisioningState { get; private set; } + public ManagedHsm OriginalManagedHsm { get; private set; } + + } +} diff --git a/src/KeyVault/KeyVault/Models/PfxWebKeyConverter.cs b/src/KeyVault/KeyVault/Models/PfxWebKeyConverter.cs index 770f78d7b9ef..d4514d52f961 100644 --- a/src/KeyVault/KeyVault/Models/PfxWebKeyConverter.cs +++ b/src/KeyVault/KeyVault/Models/PfxWebKeyConverter.cs @@ -12,14 +12,15 @@ // limitations under the License. // ---------------------------------------------------------------------------------- -using Microsoft.Azure.KeyVault.WebKey; using System; using System.IO; using System.Security; using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; using KeyVaultProperties = Microsoft.Azure.Commands.KeyVault.Properties; -using Microsoft.Azure.KeyVault.Models; +using Track2Sdk = Azure.Security.KeyVault.Keys; +using Track1Sdk = Microsoft.Azure.KeyVault.WebKey; +using Microsoft.Azure.KeyVault.WebKey; namespace Microsoft.Azure.Commands.KeyVault.Models { @@ -30,7 +31,7 @@ public PfxWebKeyConverter(IWebKeyConverter next = null) this.next = next; } - public JsonWebKey ConvertKeyFromFile(FileInfo fileInfo, SecureString password) + public Track1Sdk.JsonWebKey ConvertKeyFromFile(FileInfo fileInfo, SecureString password) { if (CanProcess(fileInfo)) return Convert(fileInfo.FullName, password); @@ -39,6 +40,15 @@ public JsonWebKey ConvertKeyFromFile(FileInfo fileInfo, SecureString password) throw new ArgumentException(string.Format(KeyVaultProperties.Resources.UnsupportedFileFormat, fileInfo.Name)); } + public Track2Sdk.JsonWebKey ConvertToTrack2SdkKeyFromFile(FileInfo fileInfo, SecureString password) + { + if (CanProcess(fileInfo)) + return ConvertToTrack2SdkJsonWebKey(fileInfo.FullName, password); + if (next != null) + return next.ConvertToTrack2SdkKeyFromFile(fileInfo, password); + throw new ArgumentException(string.Format(KeyVaultProperties.Resources.UnsupportedFileFormat, fileInfo.Name)); + } + private bool CanProcess(FileInfo fileInfo) { if (fileInfo == null || @@ -50,7 +60,7 @@ private bool CanProcess(FileInfo fileInfo) return PfxFileExtension.Equals(fileInfo.Extension, StringComparison.OrdinalIgnoreCase); } - private JsonWebKey Convert(string pfxFileName, SecureString pfxPassword) + private Track1Sdk.JsonWebKey Convert(string pfxFileName, SecureString pfxPassword) { X509Certificate2 certificate; @@ -69,15 +79,41 @@ private JsonWebKey Convert(string pfxFileName, SecureString pfxPassword) return CreateJWK(key); } + + private Track2Sdk.JsonWebKey ConvertToTrack2SdkJsonWebKey(string pfxFileName, SecureString pfxPassword) + { + X509Certificate2 certificate; - private static JsonWebKey CreateJWK(RSA rsa) + if (pfxPassword != null) + certificate = new X509Certificate2(pfxFileName, pfxPassword, X509KeyStorageFlags.Exportable); + else + certificate = new X509Certificate2(pfxFileName); + + if (!certificate.HasPrivateKey) + throw new ArgumentException(string.Format(KeyVaultProperties.Resources.InvalidKeyBlob, "pfx")); + + var rsaKey = certificate.PrivateKey as RSA; + if (rsaKey != null) + return CreateTrack2SdkJWK(rsaKey); + + var ecKey = certificate.PrivateKey as ECDsa; + if(ecKey != null) + return CreateTrack2SdkJWK(ecKey); + + // to do: support converting oct to jsonwebKey + + throw new ArgumentException(string.Format(KeyVaultProperties.Resources.ImportNotSupported, "oct-HSM")); + + } + + private static Track1Sdk.JsonWebKey CreateJWK(RSA rsa) { if (rsa == null) throw new ArgumentNullException("rsa"); RSAParameters rsaParameters = rsa.ExportParameters(true); - var webKey = new JsonWebKey() + var webKey = new Track1Sdk.JsonWebKey() { - Kty = JsonWebKeyType.Rsa, + Kty = Track1Sdk.JsonWebKeyType.Rsa, E = rsaParameters.Exponent, N = rsaParameters.Modulus, D = rsaParameters.D, @@ -91,6 +127,55 @@ private static JsonWebKey CreateJWK(RSA rsa) return webKey; } + private static Track2Sdk.JsonWebKey CreateTrack2SdkJWK(RSA rsa) + { + if (rsa == null) + throw new ArgumentNullException("rsa"); + RSAParameters rsaParameters = rsa.ExportParameters(true); + var webKey = new Track2Sdk.JsonWebKey(rsa) + { + // note: Keyvault need distinguish RSA and RSA-HSM + KeyType = Track2Sdk.KeyType.RsaHsm, + N = rsaParameters.Modulus, + E = rsaParameters.Exponent, + DP = rsaParameters.DP, + DQ = rsaParameters.DQ, + QI = rsaParameters.InverseQ, + Q = rsaParameters.Q, + D = rsaParameters.D, + P = rsaParameters.P + }; + + return webKey; + } + + private static Track2Sdk.JsonWebKey CreateTrack2SdkJWK(ECDsa ecdSa) + { + if (ecdSa == null) + { + throw new ArgumentNullException("ecdSa"); + } + + System.Security.Cryptography.ECParameters ecParameters = ecdSa.ExportParameters(true); + var webKey = new Track2Sdk.JsonWebKey(ecdSa) + { + // note: Keyvault need distinguish EC and EC-HSM + KeyType = Track2Sdk.KeyType.EcHsm, + CurveName = ecParameters.Curve.CurveType.ToString(), + D = ecParameters.D, + X = ecParameters.Q.X, + Y = ecParameters.Q.Y + }; + + return webKey; + + } + + private static Track2Sdk.JsonWebKey CreateTrack2SdkJWK(Aes aes) + { + throw new NotImplementedException(); + } + private IWebKeyConverter next; private const string PfxFileExtension = ".pfx"; } diff --git a/src/KeyVault/KeyVault/Models/VaultCreationParameters.cs b/src/KeyVault/KeyVault/Models/VaultCreationOrUpdateParameters.cs similarity index 90% rename from src/KeyVault/KeyVault/Models/VaultCreationParameters.cs rename to src/KeyVault/KeyVault/Models/VaultCreationOrUpdateParameters.cs index 57dae322b1d8..ebbf0319ec75 100644 --- a/src/KeyVault/KeyVault/Models/VaultCreationParameters.cs +++ b/src/KeyVault/KeyVault/Models/VaultCreationOrUpdateParameters.cs @@ -18,13 +18,13 @@ namespace Microsoft.Azure.Commands.KeyVault.Models { - public class VaultCreationParameters + public class VaultCreationOrUpdateParameters { - public string VaultName { get; set; } + public string Name { get; set; } public string ResourceGroupName { get; set; } public string Location { get; set; } public Hashtable Tags { get; set; } - public SkuName SkuName { get; set; } + public string SkuName { get; set; } public string SkuFamilyName { get; set; } public bool EnabledForDeployment { get; set; } public bool EnabledForTemplateDeployment { get; set; } @@ -37,5 +37,6 @@ public class VaultCreationParameters public AccessPolicyEntry AccessPolicy { get; set; } public NetworkRuleSet NetworkAcls { get; set; } public CreateMode? CreateMode { get; set; } + public string[] Administrator { get; set; } } } diff --git a/src/KeyVault/KeyVault/Models/VaultManagementClient.cs b/src/KeyVault/KeyVault/Models/VaultManagementClient.cs index 08709ee8cfde..ad2a37bf1eb0 100644 --- a/src/KeyVault/KeyVault/Models/VaultManagementClient.cs +++ b/src/KeyVault/KeyVault/Models/VaultManagementClient.cs @@ -29,11 +29,21 @@ using Microsoft.Azure.Management.KeyVault.Models; using Microsoft.Azure.Commands.Common.Authentication.Abstractions; using Microsoft.Rest.Azure; +using System.ComponentModel; namespace Microsoft.Azure.Commands.KeyVault.Models { + public enum ResourceTypeName + { + Vault = 0, + Hsm = 1 + } + public class VaultManagementClient { + public readonly string VaultsResourceType = "Microsoft.KeyVault/vaults"; + public readonly string ManagedHsmResourceType = "Microsoft.KeyVault/managedHSMs"; + public VaultManagementClient(IAzureContext context) { KeyVaultManagementClient = AzureSession.Instance.ClientFactory.CreateArmClient(context, AzureEnvironment.Endpoint.ResourceManager); @@ -51,18 +61,19 @@ private IKeyVaultManagementClient KeyVaultManagementClient set; } + #region Vault-related METHODS /// /// Create a new vault /// /// vault creation parameters /// the active directory client /// - public PSKeyVault CreateNewVault(VaultCreationParameters parameters, ActiveDirectoryClient adClient = null, PSKeyVaultNetworkRuleSet networkRuleSet = null) + public PSKeyVault CreateNewVault(VaultCreationOrUpdateParameters parameters, ActiveDirectoryClient adClient = null, PSKeyVaultNetworkRuleSet networkRuleSet = null) { if (parameters == null) throw new ArgumentNullException("parameters"); - if (string.IsNullOrWhiteSpace(parameters.VaultName)) - throw new ArgumentNullException("parameters.VaultName"); + if (string.IsNullOrWhiteSpace(parameters.Name)) + throw new ArgumentNullException("parameters.Name"); if (string.IsNullOrWhiteSpace(parameters.ResourceGroupName)) throw new ArgumentNullException("parameters.ResourceGroupName"); if (string.IsNullOrWhiteSpace(parameters.Location)) @@ -76,11 +87,17 @@ public PSKeyVault CreateNewVault(VaultCreationParameters parameters, ActiveDirec throw new ArgumentNullException("parameters.SkuFamilyName"); if (parameters.TenantId == Guid.Empty) throw new ArgumentException("parameters.TenantId"); - - properties.Sku = new Sku + if (!string.IsNullOrWhiteSpace(parameters.SkuName)) { - Name = parameters.SkuName, - }; + if (Enum.TryParse(parameters.SkuName, true, out SkuName skuName)) + { + properties.Sku = new Sku(skuName); + } + else + { + throw new InvalidEnumArgumentException("parameters.SkuName"); + } + } properties.EnabledForDeployment = parameters.EnabledForDeployment; properties.EnabledForTemplateDeployment = parameters.EnabledForTemplateDeployment; properties.EnabledForDiskEncryption = parameters.EnabledForDiskEncryption; @@ -102,10 +119,10 @@ public PSKeyVault CreateNewVault(VaultCreationParameters parameters, ActiveDirec { properties.CreateMode = CreateMode.Recover; } + var response = KeyVaultManagementClient.Vaults.CreateOrUpdate( resourceGroupName: parameters.ResourceGroupName, - vaultName: parameters.VaultName, - + vaultName: parameters.Name, parameters: new VaultCreateOrUpdateParameters { Location = parameters.Location, @@ -257,7 +274,7 @@ public void DeleteVault(string vaultName, string resourceGroupName) /// Purge a deleted vault. Throws if vault is not found. /// /// - /// + /// public void PurgeVault(string vaultName, string location) { if (string.IsNullOrWhiteSpace(vaultName)) @@ -334,8 +351,250 @@ public List ListDeletedVaults() return deletedVaults; } - public readonly string VaultsResourceType = "Microsoft.KeyVault/vaults"; + #endregion + + #region Managedhsm-related METHOD + + /// + /// Create a Managed HSM pool + /// + /// vault creation parameters + /// the active directory client + /// + public PSManagedHsm CreateNewManagedHsm(VaultCreationOrUpdateParameters parameters, ActiveDirectoryClient adClient = null) + { + if (parameters == null) + throw new ArgumentNullException("parameters"); + if (string.IsNullOrWhiteSpace(parameters.Name)) + throw new ArgumentNullException("parameters.Name"); + if (string.IsNullOrWhiteSpace(parameters.ResourceGroupName)) + throw new ArgumentNullException("parameters.ResourceGroupName"); + if (string.IsNullOrWhiteSpace(parameters.Location)) + throw new ArgumentNullException("parameters.Location"); + if(parameters.Administrator.Length == 0) + throw new ArgumentNullException("parameters.Administrator"); + + var properties = new ManagedHsmProperties(); + var managedHsmSku = new ManagedHsmSku(); + + if (parameters.CreateMode != CreateMode.Recover) + { + if (string.IsNullOrWhiteSpace(parameters.SkuFamilyName)) + throw new ArgumentNullException("parameters.SkuFamilyName"); + if (parameters.TenantId == Guid.Empty) + throw new ArgumentException("parameters.TenantId"); + if (!string.IsNullOrWhiteSpace(parameters.SkuName)) + { + if (Enum.TryParse(parameters.SkuName, true, out ManagedHsmSkuName skuName)) + { + managedHsmSku.Name = skuName; + } + else + { + throw new InvalidEnumArgumentException("parameters.SkuName"); + } + } + properties.TenantId = parameters.TenantId; + properties.InitialAdminObjectIds = parameters.Administrator; + properties.HsmUri = ""; + properties.EnableSoftDelete = parameters.EnableSoftDelete; + properties.SoftDeleteRetentionInDays = parameters.SoftDeleteRetentionInDays; + properties.EnablePurgeProtection = parameters.EnablePurgeProtection; + } + else + { + properties.CreateMode = CreateMode.Recover; + } + + var response = KeyVaultManagementClient.ManagedHsms.CreateOrUpdate( + resourceGroupName: parameters.ResourceGroupName, + name: parameters.Name, + parameters: new ManagedHsm + { + Location = parameters.Location, + Sku = managedHsmSku, + Tags = TagsConversionHelper.CreateTagDictionary(parameters.Tags, validate: true), + Properties = properties + }); + + return new PSManagedHsm(response, adClient); + } + + /// + /// Get an existing Managed HSM. Returns null if vault is not found. + /// + /// managed HSM name + /// resource group name + /// the active directory client + /// the retrieved Managed HSM + public PSManagedHsm GetManagedHsm(string managedHsmName, string resourceGroupName, ActiveDirectoryClient adClient = null) + { + if (string.IsNullOrWhiteSpace(managedHsmName)) + throw new ArgumentNullException("vaultName"); + if (string.IsNullOrWhiteSpace(resourceGroupName)) + throw new ArgumentNullException("resourceGroupName"); + + try + { + var response = KeyVaultManagementClient.ManagedHsms.Get(resourceGroupName, managedHsmName); + + return new PSManagedHsm(response, adClient); + } + catch (ManagedHsmErrorException ce) + { + if (ce.Response.StatusCode == HttpStatusCode.NotFound) + { + return null; + } + throw; + } + } + + /// + /// List all existing Managed HSMs. Returns null if vault is not found. + /// + /// resource group name + /// the active directory client + /// the retrieved Managed HSM + public List ListManagedHsms(string resourceGroupName, ActiveDirectoryClient adClient = null) + { + return resourceGroupName == null ? ListManagedHsmsBySubscription(adClient) : + ListManagedHsmsByResourceGroup(resourceGroupName, adClient); + } + + private List ListManagedHsmsByResourceGroup(string resourceGroupName, ActiveDirectoryClient adClient = null) + { + List managedHsms = new List(); ; + IPage response = KeyVaultManagementClient.ManagedHsms.ListByResourceGroupAsync(resourceGroupName).GetAwaiter().GetResult(); + foreach (var managedHsm in response) + { + managedHsms.Add(new PSManagedHsm(managedHsm, adClient)); + } + + while (response?.NextPageLink != null) + { + response = KeyVaultManagementClient.ManagedHsms.ListByResourceGroupNextAsync(response.NextPageLink).GetAwaiter().GetResult(); + + foreach (var managedHsm in response) + { + managedHsms.Add(new PSManagedHsm(managedHsm, adClient)); + } + } + + return managedHsms; + } + + private List ListManagedHsmsBySubscription(ActiveDirectoryClient adClient = null) + { + List managedHsms = new List(); ; + IPage response = KeyVaultManagementClient.ManagedHsms.ListBySubscriptionAsync().GetAwaiter().GetResult(); + + foreach (var managedHsm in response) + { + managedHsms.Add(new PSManagedHsm(managedHsm, adClient)); + } + + while (response?.NextPageLink != null) + { + response = KeyVaultManagementClient.ManagedHsms.ListBySubscriptionNextAsync(response.NextPageLink).GetAwaiter().GetResult(); + + foreach (var managedHsm in response) + { + managedHsms.Add(new PSManagedHsm(managedHsm, adClient)); + } + } + + return managedHsms; + } + + /// + /// Update an existing Managed HSM. Only Tags can be updated currently. + /// + /// existing Managed HSM + /// HSM update parameters + /// the active directory client + /// the updated Managed HSM + public PSManagedHsm UpdateManagedHsm(PSManagedHsm existingManagedHsm, VaultCreationOrUpdateParameters parameters, ActiveDirectoryClient adClient = null) + { + if (existingManagedHsm == null) + throw new ArgumentNullException("existingManagedHsm"); + if (existingManagedHsm.OriginalManagedHsm == null) + throw new ArgumentNullException("existingManagedHsm.OriginalManagedHsm"); + + //Update the vault properties in the object received from server + var properties = existingManagedHsm.OriginalManagedHsm.Properties; + // None property is allowed to be updated currently, + // Can be added here in the furture + + var response = KeyVaultManagementClient.ManagedHsms.Update( + resourceGroupName: existingManagedHsm.ResourceGroupName, + name: existingManagedHsm.Name, + parameters: new ManagedHsm + { + Location = existingManagedHsm.Location, + Sku = new ManagedHsmSku + { + Name = (ManagedHsmSkuName)Enum.Parse(typeof(ManagedHsmSkuName), existingManagedHsm.Sku) + }, + Tags = TagsConversionHelper.CreateTagDictionary(parameters.Tags, validate: true), + Properties = properties + }); + + return new PSManagedHsm(response, adClient); + } + + /// + /// Delete an existing Managed HSM. + /// + /// + /// + public void DeleteManagedHsm(string managedHsm, string resourceGroupName) + { + if (string.IsNullOrWhiteSpace(managedHsm)) + throw new ArgumentNullException("managedHsm"); + if (string.IsNullOrWhiteSpace(resourceGroupName)) + throw new ArgumentNullException("resourceGroupName"); + + try + { + KeyVaultManagementClient.ManagedHsms.Delete(resourceGroupName, managedHsm); + } + catch (CloudException ce) + { + // there's a known issue that the long running delete operation will + // finally throws an not found exception, + // we'll just ignore it + if (ce.Response.StatusCode != HttpStatusCode.NotFound) + throw; + } + } + + /// + /// Purge a deleted Managed HSM. Throws if Managed HSM is not found. + /// + /// + /// + public void PurgeManagedHsm(string managedHsmName, string location) + { + if (string.IsNullOrWhiteSpace(managedHsmName)) + throw new ArgumentNullException(nameof(managedHsmName)); + if (string.IsNullOrWhiteSpace(location)) + throw new ArgumentNullException(nameof(location)); + + try + { + KeyVaultManagementClient.Vaults.PurgeDeleted(managedHsmName, location); + } + catch (CloudException ce) + { + if (ce.Response.StatusCode == HttpStatusCode.NoContent || ce.Response.StatusCode == HttpStatusCode.NotFound) + throw new ArgumentException(string.Format(PSKeyVaultProperties.Resources.DeletedVaultNotFound, managedHsmName, location)); + throw; + } + } + + #endregion #region HELP_METHODS /// diff --git a/src/KeyVault/KeyVault/Models/VaultUriHelper.cs b/src/KeyVault/KeyVault/Models/VaultUriHelper.cs index 26edd3af9248..01d18f35e180 100644 --- a/src/KeyVault/KeyVault/Models/VaultUriHelper.cs +++ b/src/KeyVault/KeyVault/Models/VaultUriHelper.cs @@ -20,11 +20,15 @@ namespace Microsoft.Azure.Commands.KeyVault.Models { internal class VaultUriHelper { - public VaultUriHelper(string keyVaultDnsSuffix) + // it doesn't matter if this class acts as a vault uri helper or hsm uri helper + // the logic is basically the same + // todo: combine them together + public VaultUriHelper(string keyVaultDnsSuffix, string managedHsmDnsSuffix = null) { if (string.IsNullOrEmpty(keyVaultDnsSuffix)) throw new ArgumentNullException("keyVaultDnsSuffix"); this.KeyVaultDnsSuffix = keyVaultDnsSuffix; + ManagedHsmDnsSuffix = managedHsmDnsSuffix; } public string GetVaultName(string vaultAddress) @@ -39,6 +43,7 @@ public String CreateVaultAddress(string vaultName) } public string KeyVaultDnsSuffix { get; private set; } + public string ManagedHsmDnsSuffix { get; private set; } private Uri CreateAndValidateVaultUri(string vaultAddress) { @@ -56,7 +61,7 @@ private Uri CreateAndValidateVaultUri(string vaultAddress) return vaultUri; } - private Uri CreateVaultUri(string vaultName) + public Uri CreateVaultUri(string vaultName) { if (string.IsNullOrEmpty(vaultName)) throw new ArgumentNullException("vaultName"); @@ -65,5 +70,15 @@ private Uri CreateVaultUri(string vaultName) return builder.Uri; } + + public Uri CreateManagedHsmUri(string name) + { + if (string.IsNullOrEmpty(name)) + throw new ArgumentNullException("name"); + + UriBuilder builder = new UriBuilder("https", name+ "." + ManagedHsmDnsSuffix); + + return builder.Uri; + } } } diff --git a/src/KeyVault/KeyVault/Properties/AssemblyInfo.cs b/src/KeyVault/KeyVault/Properties/AssemblyInfo.cs index ddc0070abd8b..d712573951f0 100644 --- a/src/KeyVault/KeyVault/Properties/AssemblyInfo.cs +++ b/src/KeyVault/KeyVault/Properties/AssemblyInfo.cs @@ -33,4 +33,5 @@ [assembly: AssemblyFileVersion("2.2.1")] #if !SIGN [assembly: InternalsVisibleTo("Microsoft.Azure.PowerShell.Cmdlets.KeyVault.Test")] +[assembly: InternalsVisibleTo("SecurityDomain.Test")] #endif diff --git a/src/KeyVault/KeyVault/Properties/Resources.Designer.cs b/src/KeyVault/KeyVault/Properties/Resources.Designer.cs index 3b8bb54bd8f8..3f53340d9ff6 100644 --- a/src/KeyVault/KeyVault/Properties/Resources.Designer.cs +++ b/src/KeyVault/KeyVault/Properties/Resources.Designer.cs @@ -8,10 +8,11 @@ // //------------------------------------------------------------------------------ -namespace Microsoft.Azure.Commands.KeyVault.Properties { +namespace Microsoft.Azure.Commands.KeyVault.Properties +{ using System; - - + + /// /// A strongly-typed resource class, for looking up localized strings, etc. /// @@ -22,98 +23,118 @@ namespace Microsoft.Azure.Commands.KeyVault.Properties { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources { - + internal class Resources + { + private static global::System.Resources.ResourceManager resourceMan; - + private static global::System.Globalization.CultureInfo resourceCulture; - + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() { + internal Resources() + { } - + /// /// Returns the cached ResourceManager instance used by this class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if (object.ReferenceEquals(resourceMan, null)) + { global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Microsoft.Azure.Commands.KeyVault.Properties.Resources", typeof(Resources).Assembly); resourceMan = temp; } return resourceMan; } } - + /// /// Overrides the current thread's CurrentUICulture property for all /// resource lookups using this strongly typed resource class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { + internal static global::System.Globalization.CultureInfo Culture + { + get + { return resourceCulture; } - set { + set + { resourceCulture = value; } } - + /// /// Looks up a localized string similar to The current credentials do not have access to Azure Active Directory. Please either use an ObjectId to refer to ActiveDirectory objects, or log in using credentials that have access to Azure Active Directory.. /// - internal static string ActiveDirectoryClientNull { - get { + internal static string ActiveDirectoryClientNull + { + get + { return ResourceManager.GetString("ActiveDirectoryClientNull", resourceCulture); } } - + /// /// Looks up a localized string similar to Add certificate. /// - internal static string AddCertificate { - get { + internal static string AddCertificate + { + get + { return ResourceManager.GetString("AddCertificate", resourceCulture); } } - + /// /// Looks up a localized string similar to Add certificate contact. /// - internal static string AddCertificateContact { - get { + internal static string AddCertificateContact + { + get + { return ResourceManager.GetString("AddCertificateContact", resourceCulture); } } - + /// /// Looks up a localized string similar to Add key. /// - internal static string AddKey { - get { + internal static string AddKey + { + get + { return ResourceManager.GetString("AddKey", resourceCulture); } } - + /// /// Looks up a localized string similar to Add Key Vault managed Storage Account. /// - internal static string AddManagedStorageAccount { - get { + internal static string AddManagedStorageAccount + { + get + { return ResourceManager.GetString("AddManagedStorageAccount", resourceCulture); } } - + /// /// Looks up a localized string similar to Add vault network rule. /// - internal static string AddNetworkRule { - get { + internal static string AddNetworkRule + { + get + { return ResourceManager.GetString("AddNetworkRule", resourceCulture); } } - + /// /// Looks up a localized string similar to Please make sure you have sufficient permissions in AD Graph to get and list graph objects for validation to work. Otherwise skip witch `-BypassObjectIdValidation`.. /// @@ -126,1082 +147,1589 @@ internal static string ADGraphPermissionWarning { /// /// Looks up a localized string similar to The Email argument specified, '{1}', matches multiple objects in the Azure Active Directory tenant '{2}'. Please use -UserPrincipalName to narrow down the filter to a single object. The TenantID displayed by the cmdlet 'Get-AzContext' is the current subscription's Azure Active Directory.. /// - internal static string ADObjectAmbiguous { - get { + internal static string ADObjectAmbiguous + { + get + { return ResourceManager.GetString("ADObjectAmbiguous", resourceCulture); } } - + /// /// Looks up a localized string similar to Retrieving object ID from Azure Active Directory failed. {0} /// ///Please provide object ID for the user or service principle to set a vault access policy. ///You can find the object ID using Azure Active Directory Module for Windows PowerShell.. /// - internal static string ADObjectIDRetrievalFailed { - get { + internal static string ADObjectIDRetrievalFailed + { + get + { return ResourceManager.GetString("ADObjectIDRetrievalFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot find the Active Directory object '{0}' in tenant '{1}'. Please make sure that the user or application service principal you are authorizing is registered in the current subscription's Azure Active directory. The TenantID displayed by the cmdlet 'Get-AzContext' is the current subscription's Azure Active directory.. /// - internal static string ADObjectNotFound { - get { + internal static string ADObjectNotFound + { + get + { return ResourceManager.GetString("ADObjectNotFound", resourceCulture); } } - + /// /// Looks up a localized string similar to The 'all' permission will be removed in May 2018 and does not include the 'purge' permission. 'Purge' permission must be explicitly set.. /// - internal static string AllPermissionExpansionWarning { - get { + internal static string AllPermissionExpansionWarning + { + get + { return ResourceManager.GetString("AllPermissionExpansionWarning", resourceCulture); } } - + + /// + /// Looks up a localized string similar to Could not find application by '{0}'.. + /// + internal static string ApplicationNotFoundBy + { + get + { + return ResourceManager.GetString("ApplicationNotFoundBy", resourceCulture); + } + } + /// /// Looks up a localized string similar to No account found in the context. Please login using Connect-AzAccount.. /// - internal static string ArmAccountNotFound { - get { + internal static string ArmAccountNotFound + { + get + { return ResourceManager.GetString("ArmAccountNotFound", resourceCulture); } } - + + /// + /// Looks up a localized string similar to Assign role '{0}' to principal '{1}' at scope '{2}'.. + /// + internal static string AssignRole + { + get + { + return ResourceManager.GetString("AssignRole", resourceCulture); + } + } + /// /// Looks up a localized string similar to Backup certificate. /// - internal static string BackupCertificate { - get { + internal static string BackupCertificate + { + get + { return ResourceManager.GetString("BackupCertificate", resourceCulture); } } - + /// /// Looks up a localized string similar to The backup file '{0}' already exists.. /// - internal static string BackupFileAlreadyExists { - get { + internal static string BackupFileAlreadyExists + { + get + { return ResourceManager.GetString("BackupFileAlreadyExists", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot find backup file '{0}'.. /// - internal static string BackupFileNotFound { - get { + internal static string BackupFileNotFound + { + get + { return ResourceManager.GetString("BackupFileNotFound", resourceCulture); } } - + /// /// Looks up a localized string similar to Backup key. /// - internal static string BackupKey { - get { + internal static string BackupKey + { + get + { return ResourceManager.GetString("BackupKey", resourceCulture); } } - + /// /// Looks up a localized string similar to The backup key file '{0}' already exists.. /// - internal static string BackupKeyFileAlreadyExists { - get { + internal static string BackupKeyFileAlreadyExists + { + get + { return ResourceManager.GetString("BackupKeyFileAlreadyExists", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot find backup key file '{0}'. /// - internal static string BackupKeyFileNotFound { - get { + internal static string BackupKeyFileNotFound + { + get + { return ResourceManager.GetString("BackupKeyFileNotFound", resourceCulture); } } - + /// /// Looks up a localized string similar to Backup managed storage account. /// - internal static string BackupManagedStorageAccount { - get { + internal static string BackupManagedStorageAccount + { + get + { return ResourceManager.GetString("BackupManagedStorageAccount", resourceCulture); } } - + /// /// Looks up a localized string similar to Backup secret. /// - internal static string BackupSecret { - get { + internal static string BackupSecret + { + get + { return ResourceManager.GetString("BackupSecret", resourceCulture); } } - + /// /// Looks up a localized string similar to The backup secret file '{0}' already exists.. /// - internal static string BackupSecretFileAlreadyExists { - get { + internal static string BackupSecretFileAlreadyExists + { + get + { return ResourceManager.GetString("BackupSecretFileAlreadyExists", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot find backup secret file '{0}'. /// - internal static string BackupSecretFileNotFound { - get { + internal static string BackupSecretFileNotFound + { + get + { return ResourceManager.GetString("BackupSecretFileNotFound", resourceCulture); } } - + /// /// Looks up a localized string similar to Bad Parameter Set Name. /// - internal static string BadParameterSetName { - get { + internal static string BadParameterSetName + { + get + { return ResourceManager.GetString("BadParameterSetName", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot find certificate file '{0}'.. /// - internal static string CertificateFileNotFound { - get { + internal static string CertificateFileNotFound + { + get + { return ResourceManager.GetString("CertificateFileNotFound", resourceCulture); } } - + /// /// Looks up a localized string similar to Create certificate administrator. /// - internal static string CreateCertificateAdministrator { - get { + internal static string CreateCertificateAdministrator + { + get + { return ResourceManager.GetString("CreateCertificateAdministrator", resourceCulture); } } - + /// /// Looks up a localized string similar to Create certificate organization. /// - internal static string CreateCertificateOrganization { - get { + internal static string CreateCertificateOrganization + { + get + { return ResourceManager.GetString("CreateCertificateOrganization", resourceCulture); } } - + /// /// Looks up a localized string similar to Create certificate policy. /// - internal static string CreateCertificatePolicy { - get { + internal static string CreateCertificatePolicy + { + get + { return ResourceManager.GetString("CreateCertificatePolicy", resourceCulture); } } - + /// /// Looks up a localized string similar to Create key vault. /// - internal static string CreateKeyVault { - get { + internal static string CreateKeyVault + { + get + { return ResourceManager.GetString("CreateKeyVault", resourceCulture); } } + + /// + /// Looks up a localized string similar to Failed to decrypt security domain data. Please make sure the file is not modified and the keys / passwords are correct.. + /// + internal static string DecryptSecurityDomainFailure { + get { + return ResourceManager.GetString("DecryptSecurityDomainFailure", resourceCulture); + } + } /// - /// Looks up a localized string similar to Cannot find deleted vault '{0}' in location '{1}'. + /// Looks up a localized string similar to Not enough keys to decrypt security domain backup. {0} required, {0} provided.. /// - internal static string DeletedVaultNotFound { + internal static string DecryptSecurityDomainKeyNotEnough { get { - return ResourceManager.GetString("DeletedVaultNotFound", resourceCulture); + return ResourceManager.GetString("DecryptSecurityDomainKeyNotEnough", resourceCulture); } } + /// + /// Looks up a localized string similar to Cannot find deleted vault '{0}' in location '{1}'. + /// + internal static string DeletedVaultNotFound + { + get + { + return ResourceManager.GetString("DeletedVaultNotFound", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Perform a full backup and stores it in {0}.. + /// + internal static string DoFullBackup + { + get + { + return ResourceManager.GetString("DoFullBackup", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Restores the managed HSM from the backup stored in {0}.. + /// + internal static string DoFullRestore + { + get + { + return ResourceManager.GetString("DoFullRestore", resourceCulture); + } + } + /// /// Looks up a localized string similar to Key type '{0}' is not supported for downloading. (Supported types: RSA, RSA-HSM). /// - internal static string DownloadNotSupported { - get { + internal static string DownloadNotSupported + { + get + { return ResourceManager.GetString("DownloadNotSupported", resourceCulture); } } + + /// + /// Looks up a localized string similar to Failed to download security domain backup data.. + /// + internal static string DownloadSecurityDomainFail { + get { + return ResourceManager.GetString("DownloadSecurityDomainFail", resourceCulture); + } + } /// - /// Looks up a localized string similar to Overwrite File ?. + /// Looks up a localized string similar to Failed to download security domain exchange key.. /// - internal static string FileOverwriteCaption { + internal static string DownloadSecurityDomainKeyFail { get { - return ResourceManager.GetString("FileOverwriteCaption", resourceCulture); + return ResourceManager.GetString("DownloadSecurityDomainKeyFail", resourceCulture); } } + /// + /// Looks up a localized string similar to Overwrite File ?. + /// + internal static string FileOverwriteCaption + { + get + { + return ResourceManager.GetString("FileOverwriteCaption", resourceCulture); + } + } + /// /// Looks up a localized string similar to Overwrite existing file at '{0}' ?. /// - internal static string FileOverwriteMessage { - get { + internal static string FileOverwriteMessage + { + get + { return ResourceManager.GetString("FileOverwriteMessage", resourceCulture); } } + + /// + /// Looks up a localized string similar to Failed to backup managed HSM {0}.. + /// + internal static string FullBackupFailed + { + get + { + return ResourceManager.GetString("FullBackupFailed", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to To encrypt the security domain data, please provide at least {0} and at most {1} certificates.. + /// + internal static string HsmCertRangeWarning { + get { + return ResourceManager.GetString("HsmCertRangeWarning", resourceCulture); + } + } + /// Looks up a localized string similar to The specified HSM already exists.. + /// + internal static string HsmAlreadyExists + { + get + { + return ResourceManager.GetString("HsmAlreadyExists", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Failed to restore managed HSM {0}.. + /// + internal static string FullRestoreFailed + { + get + { + return ResourceManager.GetString("FullRestoreFailed", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Cannot find HSM '{0}' in resource group '{1}'.. + /// + internal static string HsmNotFound + { + get + { + return ResourceManager.GetString("HsmNotFound", resourceCulture); + } + } + /// /// Looks up a localized string similar to BYOK key can not be imported as software key. /// - internal static string ImportByokAsSoftkeyError { - get { + internal static string ImportByokAsSoftkeyError + { + get + { return ResourceManager.GetString("ImportByokAsSoftkeyError", resourceCulture); } } - + /// /// Looks up a localized string similar to Import certificate. /// - internal static string ImportCertificate { - get { + internal static string ImportCertificate + { + get + { return ResourceManager.GetString("ImportCertificate", resourceCulture); } } - + + /// + /// Looks up a localized string similar to Key type '{0}' is not supported for importing. (Supported types: RSA-HSM). + /// + internal static string ImportNotSupported + { + get + { + return ResourceManager.GetString("ImportNotSupported", resourceCulture); + } + } + /// /// Looks up a localized string similar to Invalid application Id.. /// - internal static string InvalidApplicationId { - get { + internal static string InvalidApplicationId + { + get + { return ResourceManager.GetString("InvalidApplicationId", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid AzureEnvironment.. /// - internal static string InvalidAzureEnvironment { - get { + internal static string InvalidAzureEnvironment + { + get + { return ResourceManager.GetString("InvalidAzureEnvironment", resourceCulture); } } - + /// /// Looks up a localized string similar to No current subscription has been designated. Use Set-AzContext -SubscriptionName <subscriptionName> to set the current subscription.. /// - internal static string InvalidCurrentSubscription { - get { + internal static string InvalidCurrentSubscription + { + get + { return ResourceManager.GetString("InvalidCurrentSubscription", resourceCulture); } } - + + /// + /// Looks up a localized string similar to Invalid HSM name.. + /// + internal static string InvalidHsmName + { + get + { + return ResourceManager.GetString("InvalidHsmName", resourceCulture); + } + } + /// /// Looks up a localized string similar to Invalid key attributes. /// - internal static string InvalidKeyAttributes { - get { + internal static string InvalidKeyAttributes + { + get + { return ResourceManager.GetString("InvalidKeyAttributes", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid '{0}' key blob.. /// - internal static string InvalidKeyBlob { - get { + internal static string InvalidKeyBlob + { + get + { return ResourceManager.GetString("InvalidKeyBlob", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid KeyBundle.. /// - internal static string InvalidKeyBundle { - get { + internal static string InvalidKeyBundle + { + get + { return ResourceManager.GetString("InvalidKeyBundle", resourceCulture); } } - + /// /// Looks up a localized string similar to Can not create given key material in specified destination.. /// - internal static string InvalidKeyDestination { - get { + internal static string InvalidKeyDestination + { + get + { return ResourceManager.GetString("InvalidKeyDestination", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid key identifier. /// - internal static string InvalidKeyIdentifier { - get { + internal static string InvalidKeyIdentifier + { + get + { return ResourceManager.GetString("InvalidKeyIdentifier", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid key name.. /// - internal static string InvalidKeyName { - get { + internal static string InvalidKeyName + { + get + { return ResourceManager.GetString("InvalidKeyName", resourceCulture); } } - + + /// + /// Looks up a localized string similar to Invalid key properties. + /// + internal static string InvalidKeyProperties + { + get + { + return ResourceManager.GetString("InvalidKeyProperties", resourceCulture); + } + } + /// /// Looks up a localized string similar to Invalid key uri '{0}'.. /// - internal static string InvalidKeyUri { - get { + internal static string InvalidKeyUri + { + get + { return ResourceManager.GetString("InvalidKeyUri", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid managed storage account bundle.. /// - internal static string InvalidManagedStorageAccountBundle { - get { + internal static string InvalidManagedStorageAccountBundle + { + get + { return ResourceManager.GetString("InvalidManagedStorageAccountBundle", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid managed storage account identifier.. /// - internal static string InvalidManagedStorageAccountIdentifier { - get { + internal static string InvalidManagedStorageAccountIdentifier + { + get + { return ResourceManager.GetString("InvalidManagedStorageAccountIdentifier", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid key vault managed storage acccount name.. /// - internal static string InvalidManagedStorageAccountName { - get { + internal static string InvalidManagedStorageAccountName + { + get + { return ResourceManager.GetString("InvalidManagedStorageAccountName", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid managed storage account or storage SAS definition attributes.. /// - internal static string InvalidManagedStorageObjectAttributes { - get { + internal static string InvalidManagedStorageObjectAttributes + { + get + { return ResourceManager.GetString("InvalidManagedStorageObjectAttributes", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid number of certificates.. /// - internal static string InvalidNumberOfCertificates { - get { + internal static string InvalidNumberOfCertificates + { + get + { return ResourceManager.GetString("InvalidNumberOfCertificates", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot parse ObjectId into Guid.. /// - internal static string InvalidObjectIdSyntax { - get { + internal static string InvalidObjectIdSyntax + { + get + { return ResourceManager.GetString("InvalidObjectIdSyntax", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid Sas permission '{0}'.. /// - internal static string InvalidSasPermission { - get { + internal static string InvalidSasPermission + { + get + { return ResourceManager.GetString("InvalidSasPermission", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid secret attributes. /// - internal static string InvalidSecretAttributes { - get { + internal static string InvalidSecretAttributes + { + get + { return ResourceManager.GetString("InvalidSecretAttributes", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid secret identifier. /// - internal static string InvalidSecretIdentifier { - get { + internal static string InvalidSecretIdentifier + { + get + { return ResourceManager.GetString("InvalidSecretIdentifier", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid secret name.. /// - internal static string InvalidSecretName { - get { + internal static string InvalidSecretName + { + get + { return ResourceManager.GetString("InvalidSecretName", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid secret uri '{0}'.. /// - internal static string InvalidSecretUri { - get { + internal static string InvalidSecretUri + { + get + { return ResourceManager.GetString("InvalidSecretUri", resourceCulture); } } - + /// /// Looks up a localized string similar to No subscription is currently selected. Use Set-AzContext to activate a subscription.. /// - internal static string InvalidSelectedSubscription { - get { + internal static string InvalidSelectedSubscription + { + get + { return ResourceManager.GetString("InvalidSelectedSubscription", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid storage SAS definition identifier.. /// - internal static string InvalidStorageSasDefinitionIdentifier { - get { + internal static string InvalidStorageSasDefinitionIdentifier + { + get + { return ResourceManager.GetString("InvalidStorageSasDefinitionIdentifier", resourceCulture); } } - + /// /// Looks up a localized string similar to Your Azure credentials have not been set up or have expired, please run Connect-AzAccount to set up your Azure credentials.. /// - internal static string InvalidSubscriptionState { - get { + internal static string InvalidSubscriptionState + { + get + { return ResourceManager.GetString("InvalidSubscriptionState", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid tag format. Expect @{Name = "tagName"} or @{Name = "tagName"; Value = "tagValue"}. /// - internal static string InvalidTagFormat { - get { + internal static string InvalidTagFormat + { + get + { return ResourceManager.GetString("InvalidTagFormat", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid vault name.. /// - internal static string InvalidVaultName { - get { + internal static string InvalidVaultName + { + get + { return ResourceManager.GetString("InvalidVaultName", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid vault uri '{0}'. Vault uri must contain valid dns host name with domain suffix '{1}'.. /// - internal static string InvalidVaultUri { - get { + internal static string InvalidVaultUri + { + get + { return ResourceManager.GetString("InvalidVaultUri", resourceCulture); } } - + /// /// Looks up a localized string similar to When KeyOps is 'import', Destination must be HSM.. /// - internal static string KEKMustBeHSM { - get { + internal static string KEKMustBeHSM + { + get + { return ResourceManager.GetString("KEKMustBeHSM", resourceCulture); } } - + /// /// Looks up a localized string similar to Can not find key file '{0}'.. /// - internal static string KeyFileNotFound { - get { + internal static string KeyFileNotFound + { + get + { return ResourceManager.GetString("KeyFileNotFound", resourceCulture); } } - + /// /// Looks up a localized string similar to The "import" operation is exclusive, it cannot be combined with any other value(s).. /// - internal static string KeyOpsImportIsExclusive { - get { + internal static string KeyOpsImportIsExclusive + { + get + { return ResourceManager.GetString("KeyOpsImportIsExclusive", resourceCulture); } } + + /// + /// Looks up a localized string similar to Failed to load security domain data from {0}. Please make sure the file exists and is not modified.. + /// + internal static string LoadSecurityDomainFileFailed { + get { + return ResourceManager.GetString("LoadSecurityDomainFileFailed", resourceCulture); + } + } /// /// Looks up a localized string similar to There is no default user account associated with this subscription. Certificate accounts are not supported with Azure Key Vault.. /// - internal static string NoDefaultUserAccount { - get { + internal static string NoDefaultUserAccount + { + get + { return ResourceManager.GetString("NoDefaultUserAccount", resourceCulture); } } - + /// /// Looks up a localized string similar to No tenant found in the context. Please ensure that the credentials you provided are authorized to access an Azure subscription, then run Connect-AzAccount to login.. /// - internal static string NoTenantInContext { - get { + internal static string NoTenantInContext + { + get + { return ResourceManager.GetString("NoTenantInContext", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid permissions to {0}. The list contains "all" along with other permissions. Please remove "all" from the list or include only "all" in the list.. /// - internal static string PermissionSetIncludesAllPlusOthers { - get { + internal static string PermissionSetIncludesAllPlusOthers + { + get + { return ResourceManager.GetString("PermissionSetIncludesAllPlusOthers", resourceCulture); } } - + /// /// Looks up a localized string similar to At least one permission should be selected for key access or secret access.. /// - internal static string PermissionsNotSpecified { - get { + internal static string PermissionsNotSpecified + { + get + { return ResourceManager.GetString("PermissionsNotSpecified", resourceCulture); } } - + /// /// Looks up a localized string similar to Public key saved at '{0}'.. /// - internal static string PublicKeySavedAt { - get { + internal static string PublicKeySavedAt + { + get + { return ResourceManager.GetString("PublicKeySavedAt", resourceCulture); } } - + /// /// Looks up a localized string similar to Are you sure you want to remove vault '{0}' forever.. /// - internal static string PurgeVaultWarning { - get { + internal static string PurgeVaultWarning + { + get + { return ResourceManager.GetString("PurgeVaultWarning", resourceCulture); } } - + /// /// Looks up a localized string similar to Purge vault. /// - internal static string PurgeVaultWhatIfMessage { - get { + internal static string PurgeVaultWhatIfMessage + { + get + { return ResourceManager.GetString("PurgeVaultWhatIfMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Recover certificate. /// - internal static string RecoverCertificate { - get { + internal static string RecoverCertificate + { + get + { return ResourceManager.GetString("RecoverCertificate", resourceCulture); } } - + /// /// Looks up a localized string similar to Recover key. /// - internal static string RecoverKey { - get { + internal static string RecoverKey + { + get + { return ResourceManager.GetString("RecoverKey", resourceCulture); } } - + /// /// Looks up a localized string similar to Recover KeyVault-managed storage account. /// - internal static string RecoverManagedStorageAccount { - get { + internal static string RecoverManagedStorageAccount + { + get + { return ResourceManager.GetString("RecoverManagedStorageAccount", resourceCulture); } } - + /// /// Looks up a localized string similar to Recover KeyVault-managed storage account SAS definition.. /// - internal static string RecoverManagedStorageSasDefinition { - get { + internal static string RecoverManagedStorageSasDefinition + { + get + { return ResourceManager.GetString("RecoverManagedStorageSasDefinition", resourceCulture); } } - + /// /// Looks up a localized string similar to Recover secret. /// - internal static string RecoverSecret { - get { + internal static string RecoverSecret + { + get + { return ResourceManager.GetString("RecoverSecret", resourceCulture); } } - + /// /// Looks up a localized string similar to Recover vault. /// - internal static string RecoverVault { - get { + internal static string RecoverVault + { + get + { return ResourceManager.GetString("RecoverVault", resourceCulture); } } - + /// /// Looks up a localized string similar to Are you sure you want to regenerate '{0}' of storage account '{1}' and make it an active key of Key Vault managed Storage Account.. /// - internal static string RegenerateManagedStorageAccountKeyWarning { - get { + internal static string RegenerateManagedStorageAccountKeyWarning + { + get + { return ResourceManager.GetString("RegenerateManagedStorageAccountKeyWarning", resourceCulture); } } - + /// /// Looks up a localized string similar to Regenerate '{0}'. /// - internal static string RegenerateManagedStorageAccountKeyWhatIfMessage { - get { + internal static string RegenerateManagedStorageAccountKeyWhatIfMessage + { + get + { return ResourceManager.GetString("RegenerateManagedStorageAccountKeyWhatIfMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Remove certificate contact. /// - internal static string RemoveCertificateContact { - get { + internal static string RemoveCertificateContact + { + get + { return ResourceManager.GetString("RemoveCertificateContact", resourceCulture); } } - + /// /// Looks up a localized string similar to Remove certificate issuer. /// - internal static string RemoveCertificateIssuer { - get { + internal static string RemoveCertificateIssuer + { + get + { return ResourceManager.GetString("RemoveCertificateIssuer", resourceCulture); } } - + /// /// Looks up a localized string similar to Remove certificate operation. /// - internal static string RemoveCertificateOperation { - get { + internal static string RemoveCertificateOperation + { + get + { return ResourceManager.GetString("RemoveCertificateOperation", resourceCulture); } } - + /// - /// Looks up a localized string similar to Are you sure you want to remove certificate '{0}'.. + /// Looks up a localized string similar to Are you sure you want to remove certificate '{0}'?. /// - internal static string RemoveCertWarning { - get { + internal static string RemoveCertWarning + { + get + { return ResourceManager.GetString("RemoveCertWarning", resourceCulture); } } - + /// /// Looks up a localized string similar to Remove certificate. /// - internal static string RemoveCertWhatIfMessage { - get { + internal static string RemoveCertWhatIfMessage + { + get + { return ResourceManager.GetString("RemoveCertWhatIfMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Are you sure you want to purge certificate '{0}'. /// - internal static string RemoveDeletedCertificateWarning { - get { + internal static string RemoveDeletedCertificateWarning + { + get + { return ResourceManager.GetString("RemoveDeletedCertificateWarning", resourceCulture); } } - + /// /// Looks up a localized string similar to Purge certificate. /// - internal static string RemoveDeletedCertificateWhatIfMessage { - get { + internal static string RemoveDeletedCertificateWhatIfMessage + { + get + { return ResourceManager.GetString("RemoveDeletedCertificateWhatIfMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Are you sure you want to purge key '{0}'.. /// - internal static string RemoveDeletedKeyWarning { - get { + internal static string RemoveDeletedKeyWarning + { + get + { return ResourceManager.GetString("RemoveDeletedKeyWarning", resourceCulture); } } - + /// /// Looks up a localized string similar to Purge key. /// - internal static string RemoveDeletedKeyWhatIfMessage { - get { + internal static string RemoveDeletedKeyWhatIfMessage + { + get + { return ResourceManager.GetString("RemoveDeletedKeyWhatIfMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Are you sure you want to purge managed storage account '{0}'. /// - internal static string RemoveDeletedManagedStorageAccountWarning { - get { + internal static string RemoveDeletedManagedStorageAccountWarning + { + get + { return ResourceManager.GetString("RemoveDeletedManagedStorageAccountWarning", resourceCulture); } } - + /// /// Looks up a localized string similar to Purge managed storage account. /// - internal static string RemoveDeletedManagedStorageAccountWhatIfMessage { - get { + internal static string RemoveDeletedManagedStorageAccountWhatIfMessage + { + get + { return ResourceManager.GetString("RemoveDeletedManagedStorageAccountWhatIfMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Are you sure you want to purge secret '{0}'.. /// - internal static string RemoveDeletedSecretWarning { - get { + internal static string RemoveDeletedSecretWarning + { + get + { return ResourceManager.GetString("RemoveDeletedSecretWarning", resourceCulture); } } - + /// /// Looks up a localized string similar to Purge secret. /// - internal static string RemoveDeletedSecretWhatIfMessage { - get { + internal static string RemoveDeletedSecretWhatIfMessage + { + get + { return ResourceManager.GetString("RemoveDeletedSecretWhatIfMessage", resourceCulture); } } - + /// - /// Looks up a localized string similar to Are you sure you want to remove key '{0}'.. + /// Looks up a localized string similar to Are you sure you want to remove HSM '{0}'?. /// - internal static string RemoveKeyWarning { - get { + internal static string RemoveHsmWarning + { + get + { + return ResourceManager.GetString("RemoveHsmWarning", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Remove HSM. + /// + internal static string RemoveHsmWhatIfMessage + { + get + { + return ResourceManager.GetString("RemoveHsmWhatIfMessage", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Are you sure you want to remove key '{0}'?. + /// + internal static string RemoveKeyWarning + { + get + { return ResourceManager.GetString("RemoveKeyWarning", resourceCulture); } } - + /// /// Looks up a localized string similar to Remove key. /// - internal static string RemoveKeyWhatIfMessage { - get { + internal static string RemoveKeyWhatIfMessage + { + get + { return ResourceManager.GetString("RemoveKeyWhatIfMessage", resourceCulture); } } - + /// - /// Looks up a localized string similar to Are you sure you want to remove managed storage account '{0}'. + /// Looks up a localized string similar to Are you sure you want to remove managed storage account '{0}'?. /// - internal static string RemoveManagedStorageAccountWarning { - get { + internal static string RemoveManagedStorageAccountWarning + { + get + { return ResourceManager.GetString("RemoveManagedStorageAccountWarning", resourceCulture); } } - + /// /// Looks up a localized string similar to Remove managed storage account. /// - internal static string RemoveManagedStorageAccountWhatIfMessage { - get { + internal static string RemoveManagedStorageAccountWhatIfMessage + { + get + { return ResourceManager.GetString("RemoveManagedStorageAccountWhatIfMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Are you sure you want to remove managed storage sas definition '{0}'. /// - internal static string RemoveManagedStorageSasDefinitionWarning { - get { + internal static string RemoveManagedStorageSasDefinitionWarning + { + get + { return ResourceManager.GetString("RemoveManagedStorageSasDefinitionWarning", resourceCulture); } } - + /// /// Looks up a localized string similar to Remove managed storage sas definition. /// - internal static string RemoveManagedStorageSasDefinitionWhatIfMessage { - get { + internal static string RemoveManagedStorageSasDefinitionWhatIfMessage + { + get + { return ResourceManager.GetString("RemoveManagedStorageSasDefinitionWhatIfMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Remove vault network rule. /// - internal static string RemoveNetworkRule { - get { + internal static string RemoveNetworkRule + { + get + { return ResourceManager.GetString("RemoveNetworkRule", resourceCulture); } } - + /// - /// Looks up a localized string similar to Are you sure you want to remove secret '{0}'. + /// Looks up a localized string similar to Remove role '{0}' of principal '{1}' at scope '{2}'.. /// - internal static string RemoveSecretWarning { - get { + internal static string RemoveRole + { + get + { + return ResourceManager.GetString("RemoveRole", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Are you sure you want to remove secret '{0}'?. + /// + internal static string RemoveSecretWarning + { + get + { return ResourceManager.GetString("RemoveSecretWarning", resourceCulture); } } - + /// /// Looks up a localized string similar to Remove secret. /// - internal static string RemoveSecretWhatIfMessage { - get { + internal static string RemoveSecretWhatIfMessage + { + get + { return ResourceManager.GetString("RemoveSecretWhatIfMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Remove vault access policy. /// - internal static string RemoveVaultAccessPolicy { - get { + internal static string RemoveVaultAccessPolicy + { + get + { return ResourceManager.GetString("RemoveVaultAccessPolicy", resourceCulture); } } - + /// /// Looks up a localized string similar to Are you sure you want to remove vault '{0}'.. /// - internal static string RemoveVaultWarning { - get { + internal static string RemoveVaultWarning + { + get + { return ResourceManager.GetString("RemoveVaultWarning", resourceCulture); } } - + /// /// Looks up a localized string similar to Remove vault. /// - internal static string RemoveVaultWhatIfMessage { - get { + internal static string RemoveVaultWhatIfMessage + { + get + { return ResourceManager.GetString("RemoveVaultWhatIfMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to Restore certificate. /// - internal static string RestoreCertificate { - get { + internal static string RestoreCertificate + { + get + { return ResourceManager.GetString("RestoreCertificate", resourceCulture); } } - + /// /// Looks up a localized string similar to Restore key. /// - internal static string RestoreKey { - get { + internal static string RestoreKey + { + get + { return ResourceManager.GetString("RestoreKey", resourceCulture); } } - + /// /// Looks up a localized string similar to Restore managed storage account. /// - internal static string RestoreManagedStorageAccount { - get { + internal static string RestoreManagedStorageAccount + { + get + { return ResourceManager.GetString("RestoreManagedStorageAccount", resourceCulture); } } - + /// /// Looks up a localized string similar to Restore secret. /// - internal static string RestoreSecret { - get { + internal static string RestoreSecret + { + get + { return ResourceManager.GetString("RestoreSecret", resourceCulture); } } + + /// + /// Looks up a localized string similar to Could not find the role assignment by given parameters.. + /// + internal static string RoleAssignmentNotFound + { + get + { + return ResourceManager.GetString("RoleAssignmentNotFound", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Could not to find role definition by '{0}'.. + /// + internal static string RoleDefinitionNotFound + { + get + { + return ResourceManager.GetString("RoleDefinitionNotFound", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to "PublicKey" and "PrivateKey" are mandatory properties in each object in "Keys".. + /// + internal static string RestoreSecurityDomainBadKey { + get { + return ResourceManager.GetString("RestoreSecurityDomainBadKey", resourceCulture); + } + } /// - /// Looks up a localized string similar to Set certificate attribute. + /// Looks up a localized string similar to Failed to restore security domain from backup.. /// - internal static string SetCertificateAttributes { + internal static string RestoreSecurityDomainFailure { get { - return ResourceManager.GetString("SetCertificateAttributes", resourceCulture); + return ResourceManager.GetString("RestoreSecurityDomainFailure", resourceCulture); } } /// - /// Looks up a localized string similar to Set certificate issuer. + /// Looks up a localized string similar to There need to be at least {0} keys to decrypt security domain backup data.. /// - internal static string SetCertificateIssuer { + internal static string RestoreSecurityDomainNotEnoughKey { get { - return ResourceManager.GetString("SetCertificateIssuer", resourceCulture); + return ResourceManager.GetString("RestoreSecurityDomainNotEnoughKey", resourceCulture); } } + /// + /// Looks up a localized string similar to Set certificate attribute. + /// + internal static string SetCertificateAttributes + { + get + { + return ResourceManager.GetString("SetCertificateAttributes", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Set certificate issuer. + /// + internal static string SetCertificateIssuer + { + get + { + return ResourceManager.GetString("SetCertificateIssuer", resourceCulture); + } + } + /// /// Looks up a localized string similar to Set certificate policy. /// - internal static string SetCertificatePolicy { - get { + internal static string SetCertificatePolicy + { + get + { return ResourceManager.GetString("SetCertificatePolicy", resourceCulture); } } - + /// /// Looks up a localized string similar to Set key attribute. /// - internal static string SetKeyAttribute { - get { + internal static string SetKeyAttribute + { + get + { return ResourceManager.GetString("SetKeyAttribute", resourceCulture); } } - + /// /// Looks up a localized string similar to Set Key Vault managed Storage Account attribute. /// - internal static string SetManagedStorageAccountKeysAttribute { - get { + internal static string SetManagedStorageAccountKeysAttribute + { + get + { return ResourceManager.GetString("SetManagedStorageAccountKeysAttribute", resourceCulture); } } - + /// /// Looks up a localized string similar to Set Key Vault managed Storage SAS definition. /// - internal static string SetManagedStorageSasDefinition { - get { + internal static string SetManagedStorageSasDefinition + { + get + { return ResourceManager.GetString("SetManagedStorageSasDefinition", resourceCulture); } } - + /// /// Looks up a localized string similar to Set secret. /// - internal static string SetSecret { - get { + internal static string SetSecret + { + get + { return ResourceManager.GetString("SetSecret", resourceCulture); } } - + /// /// Looks up a localized string similar to Set secret attribute. /// - internal static string SetSecretAttribute { - get { + internal static string SetSecretAttribute + { + get + { return ResourceManager.GetString("SetSecretAttribute", resourceCulture); } } - + /// /// Looks up a localized string similar to Set vault access policy. /// - internal static string SetVaultAccessPolicy { - get { + internal static string SetVaultAccessPolicy + { + get + { return ResourceManager.GetString("SetVaultAccessPolicy", resourceCulture); } } - + /// /// Looks up a localized string similar to Stop certificate operation. /// - internal static string StopCertificateOperation { - get { + internal static string StopCertificateOperation + { + get + { return ResourceManager.GetString("StopCertificateOperation", resourceCulture); } } - + /// /// Looks up a localized string similar to Key vault cmdlet does not support account type '{0}'.. /// - internal static string UnsupportedAccountType { - get { + internal static string UnsupportedAccountType + { + get + { return ResourceManager.GetString("UnsupportedAccountType", resourceCulture); } } - + /// /// Looks up a localized string similar to The file format of '{0}' is not supported.. /// - internal static string UnsupportedFileFormat { - get { + internal static string UnsupportedFileFormat + { + get + { return ResourceManager.GetString("UnsupportedFileFormat", resourceCulture); } } - + /// /// Looks up a localized string similar to Update vault network rule. /// - internal static string UpdateNetworkRule { - get { + internal static string UpdateNetworkRule + { + get + { return ResourceManager.GetString("UpdateNetworkRule", resourceCulture); } } - + /// /// Looks up a localized string similar to The network rule set has been turned off for this vault.. /// - internal static string UpdateNetworkRuleWarning { - get { + internal static string UpdateNetworkRuleWarning + { + get + { return ResourceManager.GetString("UpdateNetworkRuleWarning", resourceCulture); } } - + + /// + /// Looks up a localized string similar to Could not find user by '{0}'.. + /// + internal static string UserNotFoundBy + { + get + { + return ResourceManager.GetString("UserNotFoundBy", resourceCulture); + } + } + /// /// Looks up a localized string similar to The specified vault already exists.. /// - internal static string VaultAlreadyExists { - get { + internal static string VaultAlreadyExists + { + get + { return ResourceManager.GetString("VaultAlreadyExists", resourceCulture); } } - + /// /// Looks up a localized string similar to Vault '{0}' does not exist in current subscription. If this vault exists in your tenant, please switch to the correct subscription in order to modifiy the Access Policies of this vault.. /// - internal static string VaultDoesNotExist { - get { + internal static string VaultDoesNotExist + { + get + { return ResourceManager.GetString("VaultDoesNotExist", resourceCulture); } } - + /// /// Looks up a localized string similar to Access policy is not set. No user or application have access permission to use this vault. This can happen if the vault was created by a service principal. Please use Set-AzKeyVaultAccessPolicy to set access policies.. /// - internal static string VaultNoAccessPolicyWarning { - get { + internal static string VaultNoAccessPolicyWarning + { + get + { return ResourceManager.GetString("VaultNoAccessPolicyWarning", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot find vault '{0}' in resource group '{1}'.. /// - internal static string VaultNotFound { - get { + internal static string VaultNotFound + { + get + { return ResourceManager.GetString("VaultNotFound", resourceCulture); } } - + /// /// Looks up a localized string similar to At least one of -EnabledForDeployment, -EnabledForTemplateDeployment, or -EnabledForDiskEncryption must be specified.. /// - internal static string VaultPermissionFlagMissing { - get { + internal static string VaultPermissionFlagMissing + { + get + { return ResourceManager.GetString("VaultPermissionFlagMissing", resourceCulture); } } diff --git a/src/KeyVault/KeyVault/Properties/Resources.resx b/src/KeyVault/KeyVault/Properties/Resources.resx index 681184931138..e73af75a87f1 100644 --- a/src/KeyVault/KeyVault/Properties/Resources.resx +++ b/src/KeyVault/KeyVault/Properties/Resources.resx @@ -232,25 +232,25 @@ You can find the object ID using Azure Active Directory Module for Windows Power At least one permission should be selected for key access or secret access. - Are you sure you want to remove certificate '{0}'. + Are you sure you want to remove certificate '{0}'? Remove certificate - Are you sure you want to remove key '{0}'. + Are you sure you want to remove key '{0}'? Remove key - Are you sure you want to remove secret '{0}' + Are you sure you want to remove secret '{0}'? Remove secret - Are you sure you want to remove managed storage account '{0}' + Are you sure you want to remove managed storage account '{0}'? Remove managed storage account @@ -282,6 +282,9 @@ You can find the object ID using Azure Active Directory Module for Windows Power The specified vault already exists. + + The specified HSM already exists. + Access policy is not set. No user or application have access permission to use this vault. This can happen if the vault was created by a service principal. Please use Set-AzKeyVaultAccessPolicy to set access policies. @@ -498,6 +501,81 @@ You can find the object ID using Azure Active Directory Module for Windows Power The "import" operation is exclusive, it cannot be combined with any other value(s). + + Could not find application by '{0}'. + + + Assign role '{0}' to principal '{1}' at scope '{2}'. + + + Remove role '{0}' of principal '{1}' at scope '{2}'. + + + Could not find the role assignment by given parameters. + + + Could not to find role definition by '{0}'. + + + Could not find user by '{0}'. + + + Perform a full backup and stores it in {0}. + + + Restores the managed HSM from the backup stored in {0}. + + + Failed to backup managed HSM {0}. + + + Failed to restore managed HSM {0}. + + + To encrypt the security domain data, please provide at least {0} and at most {1} certificates. + + + Failed to load security domain data from {0}. Please make sure the file exists and is not modified. + + + "PublicKey" and "PrivateKey" are mandatory properties in each object in "Keys". + + + There need to be at least {0} keys to decrypt security domain backup data. + + + Failed to decrypt security domain data. Please make sure the file is not modified and the keys / passwords are correct. + + + Not enough keys to decrypt security domain backup. {0} required, {0} provided. + + + Failed to download security domain backup data. + + + Failed to download security domain exchange key. + + + Failed to restore security domain from backup. + + + Invalid key properties + + + Invalid HSM name. + + + Key type '{0}' is not supported for importing. (Supported types: RSA-HSM) + + + Cannot find HSM '{0}' in resource group '{1}'. + + + Are you sure you want to remove HSM '{0}'? + + + Remove HSM + Please make sure you have sufficient permissions in AD Graph to get and list graph objects for validation to work. Otherwise skip witch `-BypassObjectIdValidation`. diff --git a/src/KeyVault/KeyVault/SecurityDomain/Cmdlets/BackupSecurityDomain.cs b/src/KeyVault/KeyVault/SecurityDomain/Cmdlets/BackupSecurityDomain.cs new file mode 100644 index 000000000000..2a460cab5feb --- /dev/null +++ b/src/KeyVault/KeyVault/SecurityDomain/Cmdlets/BackupSecurityDomain.cs @@ -0,0 +1,62 @@ +using Microsoft.Azure.Commands.Common.Authentication; +using Microsoft.Azure.Commands.KeyVault.Properties; +using System; +using System.Linq; +using System.Management.Automation; +using System.Security.Cryptography.X509Certificates; + +namespace Microsoft.Azure.Commands.KeyVault.SecurityDomain.Cmdlets +{ + [Cmdlet(VerbsData.Backup, ResourceManager.Common.AzureRMConstants.AzurePrefix + "ManagedHsmSecurityDomain", SupportsShouldProcess = true, DefaultParameterSetName = ByName)] + [OutputType(typeof(bool))] + public class BackupSecurityDomain: SecurityDomainCmdlet + { + [Parameter(HelpMessage = "Paths to the certificates that are used to encrypt the security domain data.", Mandatory = true)] + [ValidateNotNullOrEmpty()] + public string[] Certificates { get; set; } + + [Parameter(HelpMessage = "Specify the path where security domain data will be downloaded to.", Mandatory = true)] + [ValidateNotNullOrEmpty] + public string OutputPath { get; set; } + + [Parameter(HelpMessage = "Specify whether to overwrite existing file.")] + public SwitchParameter Force { get; set; } + + [Parameter(HelpMessage = "When specified, a boolean will be returned when cmdlet succeeds.")] + public SwitchParameter PassThru { get; set; } + + [Parameter(HelpMessage = "The minimum number of shares required to decrypt the security domain for recovery.", Mandatory = true)] + [ValidateRange(Common.Constants.MinQuorum, Common.Constants.MaxQuorum)] + public int Quorum { get; set; } + + public override void DoExecuteCmdlet() + { + ValidateParameters(); + + var certificates = Certificates.Select(path => new X509Certificate2(ResolveUserPath(path))); + + if (ShouldProcess($"managed HSM {Name}", $"download encrypted security domain data to '{OutputPath}'")) + { + OutputPath = ResolveUserPath(OutputPath); + var securityDomain = Client.DownloadSecurityDomain(Name, certificates, Quorum); + if (!AzureSession.Instance.DataStore.FileExists(OutputPath) || Force || ShouldContinue(string.Format(Resources.FileOverwriteMessage, OutputPath), Resources.FileOverwriteCaption)) + { + AzureSession.Instance.DataStore.WriteFile(OutputPath, securityDomain); + WriteDebug($"Security domain data of managed HSM '{Name}' downloaded to '{OutputPath}'."); + if (PassThru) + { + WriteObject(true); + } + } + } + } + + private void ValidateParameters() + { + if (Certificates.Length < Common.Constants.MinCert || Certificates.Length > Common.Constants.MaxCert) + { + throw new ArgumentException(string.Format(Resources.HsmCertRangeWarning, Common.Constants.MinCert, Common.Constants.MaxCert)); + } + } + } +} diff --git a/src/KeyVault/KeyVault/SecurityDomain/Cmdlets/RestoreSecurityDomain.cs b/src/KeyVault/KeyVault/SecurityDomain/Cmdlets/RestoreSecurityDomain.cs new file mode 100644 index 000000000000..ba3eb0ff78a3 --- /dev/null +++ b/src/KeyVault/KeyVault/SecurityDomain/Cmdlets/RestoreSecurityDomain.cs @@ -0,0 +1,79 @@ +using Microsoft.Azure.Commands.KeyVault.Properties; +using Microsoft.Azure.Commands.KeyVault.SecurityDomain.Common; +using Microsoft.Azure.Commands.KeyVault.SecurityDomain.Models; +using Newtonsoft.Json; +using System; +using System.Linq; +using System.Management.Automation; + +namespace Microsoft.Azure.Commands.KeyVault.SecurityDomain.Cmdlets +{ + [Cmdlet(VerbsData.Restore, ResourceManager.Common.AzureRMConstants.AzurePrefix + "ManagedHsmSecurityDomain", SupportsShouldProcess = true, DefaultParameterSetName = ByName)] + [OutputType(typeof(bool))] + public class RestoreSecurityDomain : SecurityDomainCmdlet + { + [Parameter(HelpMessage = "Information about the keys that are used to decrypt the security domain data. See examples for how it is constructed.", Mandatory = true)] + [ValidateNotNullOrEmpty] + public KeyPath[] Keys { get; set; } + + [Parameter(HelpMessage = "Specify the path to the encrypted security domain data.", Mandatory = true)] + [Alias("Path")] + [ValidateNotNullOrEmpty] + public string SecurityDomainPath { get; set; } + + [Parameter(HelpMessage = "When specified, a boolean will be returned when cmdlet succeeds.")] + public SwitchParameter PassThru { get; set; } + + public override void DoExecuteCmdlet() + { + ValidateParameters(); + if (ShouldProcess($"managed HSM {Name}", $"restore security domain data from file \"{SecurityDomainPath}\"")) + { + Keys = Keys.Select(key => new KeyPath() { + PublicKey = this.ResolveUserPath(key.PublicKey), + PrivateKey = this.ResolveUserPath(key.PrivateKey) + }).ToArray(); + var securityDomain = LoadSdFromFile(SecurityDomainPath); + var rawSecurityDomain = Client.DecryptSecurityDomain(securityDomain, Keys); + var exchangeKey = Client.DownloadSecurityDomainExchangeKey(Name); + var encryptedSecurityDomain = Client.EncryptForRestore(rawSecurityDomain, exchangeKey); + Client.RestoreSecurityDomain(Name, encryptedSecurityDomain); + + if (PassThru) + { + WriteObject(true); + } + } + } + + private void ValidateParameters() + { + if (Keys.Length < 2) + { + throw new ArgumentException(string.Format(Resources.RestoreSecurityDomainNotEnoughKey, Common.Constants.MinQuorum)); + } + if (Keys.Any(key => string.IsNullOrEmpty(key.PublicKey) || string.IsNullOrEmpty(key.PrivateKey))) + { + throw new ArgumentException(Resources.RestoreSecurityDomainBadKey); + } + } + + private SecurityDomainData LoadSdFromFile(string path) + { + try + { + string content = Utils.FileToString(path); + if (string.IsNullOrWhiteSpace(content)) + { + throw new ArgumentException(nameof(SecurityDomainPath)); + } + return JsonConvert.DeserializeObject(content); + } + catch (Exception ex) + { + throw new Exception( + string.Format(Resources.LoadSecurityDomainFileFailed, path), ex); + } + } + } +} diff --git a/src/KeyVault/KeyVault/SecurityDomain/Cmdlets/SecurityDomainCmdlet.cs b/src/KeyVault/KeyVault/SecurityDomain/Cmdlets/SecurityDomainCmdlet.cs new file mode 100644 index 000000000000..c62ce01a98db --- /dev/null +++ b/src/KeyVault/KeyVault/SecurityDomain/Cmdlets/SecurityDomainCmdlet.cs @@ -0,0 +1,64 @@ +using Microsoft.Azure.Commands.Common.Authentication; +using Microsoft.Azure.Commands.KeyVault.Models; +using Microsoft.Azure.Commands.KeyVault.SecurityDomain.Models; +using Microsoft.Azure.Commands.ResourceManager.Common; +using Microsoft.WindowsAzure.Commands.Utilities.Common; +using System.Management.Automation; + +namespace Microsoft.Azure.Commands.KeyVault.SecurityDomain.Cmdlets +{ + public abstract class SecurityDomainCmdlet: AzureRMCmdlet + { + protected const string ByName = "ByName"; + protected const string ByInputObject = "ByInputObject"; + protected const string ByResourceId = "ByResourceID"; + + [Parameter(HelpMessage = "Name of the managed HSM.", Mandatory = true, ParameterSetName = ByName)] + [Alias("HsmName")] + [ValidateNotNullOrEmpty] + public string Name { get; set; } + + [Parameter(HelpMessage = "Object representing a managed HSM.", Mandatory = true, ParameterSetName = ByInputObject, ValueFromPipeline = true)] + [ValidateNotNull] + public PSKeyVaultIdentityItem InputObject { get; set; } + + internal ISecurityDomainClient Client + { + get + { + if (_client == null) + { + _client = new SecurityDomainClient(AzureSession.Instance.AuthenticationFactory, DefaultContext, s => WriteDebug(s)); + } + return _client; + } + set => _client = value; + } + + + private ISecurityDomainClient _client; + + /// + /// Sub-classes should not override this method, but instead. + /// This is call-super pattern. See https://www.martinfowler.com/bliki/CallSuper.html + /// + public override void ExecuteCmdlet() + { + PreprocessParameterSets(); + DoExecuteCmdlet(); + } + + /// + /// Unifies different parameter sets. Sub-classes need only to care about Name. + /// + private void PreprocessParameterSets() + { + if (this.IsParameterBound(c => c.InputObject)) + { + Name = InputObject.VaultName; + } + } + + public abstract void DoExecuteCmdlet(); + } +} diff --git a/src/KeyVault/KeyVault/SecurityDomain/Common/Constants.cs b/src/KeyVault/KeyVault/SecurityDomain/Common/Constants.cs new file mode 100644 index 000000000000..5ab6f44d4eeb --- /dev/null +++ b/src/KeyVault/KeyVault/SecurityDomain/Common/Constants.cs @@ -0,0 +1,10 @@ +namespace Microsoft.Azure.Commands.KeyVault.SecurityDomain.Common +{ + internal static class Constants + { + public const int MinQuorum = 2; + public const int MaxQuorum = 10; + public const int MinCert = 3; + public const int MaxCert = 10; + } +} diff --git a/src/KeyVault/KeyVault/SecurityDomain/Common/IOStreamExtensions.cs b/src/KeyVault/KeyVault/SecurityDomain/Common/IOStreamExtensions.cs new file mode 100644 index 000000000000..a6e3fcf66b71 --- /dev/null +++ b/src/KeyVault/KeyVault/SecurityDomain/Common/IOStreamExtensions.cs @@ -0,0 +1,18 @@ +using System.Security.Cryptography; +using System.IO; + +namespace Microsoft.Azure.Commands.KeyVault.SecurityDomain.Common +{ + internal static class IOStreamExtensions + { + public static void Write(this MemoryStream stream, byte[] bytes) + { + stream.Write(bytes, 0, bytes.Length); + } + + public static void Write(this CryptoStream stream, byte[] bytes) + { + stream.Write(bytes, 0, bytes.Length); + } + } +} diff --git a/src/KeyVault/KeyVault/SecurityDomain/Common/Utils.cs b/src/KeyVault/KeyVault/SecurityDomain/Common/Utils.cs new file mode 100644 index 000000000000..afacf9e77683 --- /dev/null +++ b/src/KeyVault/KeyVault/SecurityDomain/Common/Utils.cs @@ -0,0 +1,77 @@ +using System; +using System.IO; +using System.Security.Cryptography; +using System.Security.Cryptography.X509Certificates; +using System.Text; + +namespace Microsoft.Azure.Commands.KeyVault.SecurityDomain.Common +{ + class Utils + { + static public UInt16[] ConvertToUint16(byte[] b) + { + UInt16[] ret = new UInt16[b.Length / 2]; + + for (Int32 i = 0; i < b.Length; i += 2) + { + byte[] tmp = new byte[2]; + tmp[0] = b[i]; + tmp[1] = b[i + 1]; + + // It's already in the same byte order + // as the system that encrypted it, so don't reverse it + ret[i / 2] = BitConverter.ToUInt16(tmp, 0); + } + + return ret; + + } + static public byte[] Sha256Thumbprint(X509Certificate2 cert) + { + SHA256CryptoServiceProvider hash = new SHA256CryptoServiceProvider(); + return hash.ComputeHash(cert.RawData); + } + + static public string FileToString(string path) + { + string readContents; + using (StreamReader streamReader = new StreamReader(path, Encoding.ASCII)) + { + readContents = streamReader.ReadToEnd(); + } + + return readContents; + } + + static public void StringToFile(string path, string data) + { + using (StreamWriter streamWriter = new StreamWriter(path, false, Encoding.ASCII)) + { + streamWriter.Write(data); + streamWriter.Flush(); + } + } + + public static byte[] GetRandom(UInt32 cb) + { + using (RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider()) + { + byte[] random = new byte[cb]; + rng.GetBytes(random); + return random; + } + } + + public static X509Certificate2 CertficateFromPem(string certificatePem) + { + // Remove the header + string base64cert = certificatePem.Replace("-----BEGIN CERTIFICATE-----\n", ""); + + // And tidy up any trailing characters + var footerPosition = base64cert.IndexOf("\n-----END CERTIFICATE"); + X509Certificate2 cert = new X509Certificate2(Convert.FromBase64String(base64cert.Substring(0, footerPosition))); + return cert; + } + } + +} diff --git a/src/KeyVault/KeyVault/SecurityDomain/Crypto/mod_math.cs b/src/KeyVault/KeyVault/SecurityDomain/Crypto/mod_math.cs new file mode 100644 index 000000000000..54f30c87206f --- /dev/null +++ b/src/KeyVault/KeyVault/SecurityDomain/Crypto/mod_math.cs @@ -0,0 +1,184 @@ +using System; +using System.Collections.Generic; +using System.Security.Cryptography; +using System.Text; + +namespace Microsoft.Azure.Commands.KeyVault.SecurityDomain.Crypto +{ + class mod_math + { + public static UInt32 mod_invert(UInt32 x) + { + UInt32 ret = x; + + for (UInt32 i = 0; i < 7; ++i) + { + ret = mod_multiply(ret, ret); + ret = mod_multiply(ret, x); + } + + return ret; + } + + public static UInt32 mod_reduce(UInt32 x) + { + // Function to find x % 257 without side channels + UInt32 t = (x & 0xff) - (x >> 8); + t += (UInt32)((Int32)t >> 31) & 257; + return t; + } + + // Assumes a, b are within 0-256 + public static UInt32 mod_multiply(UInt32 a, UInt32 b) + { + return mod_reduce(a * b); + } + + public static UInt32 mod_add(UInt32 a, UInt32 b) + { + return mod_reduce(a + b); + } + + public static UInt32 mod_subtract(UInt32 a, UInt32 b) + { + // Must ensure that the difference is in the range of 0-256 + return mod_reduce(a - b + 257); + } + } + + class random_bits + { + public UInt16 get_mod_257() + { + UInt16 tmp = 0; + do + { + tmp = get_word(); + + if (tmp != 0) + return (UInt16)mod_math.mod_reduce(tmp); + + } while (tmp == 0); + + // Not actually reached + return 0; + } + + public UInt16 get_word() + { + Int32 remaining = random_bytes.Length - (Int32)current; + + if (remaining < 2) + load(); + + UInt16 ret = (UInt16)((random_bytes[current+1] << 8) | random_bytes[current]); + current += 2; + return ret; + } + + void load() + { + using (RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider()) + { + current = 0; + rng.GetBytes(random_bytes); + } + } + + public random_bits(UInt32 _chunk_size) + { + chunk_size = _chunk_size; + current = 0; + random_bytes = new byte[chunk_size]; + load(); + } + + UInt32 chunk_size; + UInt32 current; + byte[] random_bytes; + } + + struct share + { + public share(UInt16 w) + { + x = (UInt16)(w >> 9); + value = (UInt16)(w & 0x1ff); + } + + public share(UInt16 _x, UInt16 _value) + { + x = _x; + value = _value; + } + + public UInt16 to_uint16() + { + return (UInt16)(x << 9 | value); + } + + public UInt16 x; + public UInt16 value; + } + class shared_math + { + public static UInt16 get_secret(UInt16[] shares, UInt32 size) + { + UInt32 secret = 0; + + // Calculate numerator + for (UInt32 i = 0; i max_shares || required > shares || required < 2) + throw new Exception("Incorrect share or required count"); + + _shares = shares; + _required = required; + _coefficients = new UInt16[required]; + _rand_bits = new random_bits(64); + + } + + public shared_secret(UInt16 required) + { + if (required < 2) + throw new Exception("Incorrect share or required count"); + + _shares = 0; + _required = required; + _rand_bits = new random_bits(64); + } + + public List make_shares(byte[] plaintext) + { + // Output will have size of share count, each share vector will have an entry for every input byte + List share_arrays = new List(); + + for( UInt32 i = 0; i < plaintext.Length; ++i) + { + byte p = plaintext[i]; + UInt16[] share_array = make_shares(p); + + /* + We now have a share created for the total number of shares needed + Each share then needs to be distributed such that there's a share + for each byte of plaintext, effectively transposing the 2-dimensional + array. + */ + Int32 share_count = share_array.Length; + + for (Int32 j = 0; j < share_count; ++j) + { + if (i == 0) + share_arrays.Add(new UInt16[plaintext.Length]); + + UInt16[] current_share_array = share_arrays[j]; + current_share_array[i] = share_array[j]; + } + } + + return share_arrays; + } + + public UInt16[] make_shares(byte secret_byte) + { + UInt16[] share_array = new UInt16[_shares]; + + init_coefficients(); + _coefficients[(UInt32)(_required) - 1] = secret_byte; + + UInt16 x = 1; + for (UInt32 i = 0; i < _shares; ++i, ++x) + { + share s = new share(x, shared_math.make_share(_coefficients, x)); + share_array[i] = s.to_uint16(); + } + + return share_array; + } + + public byte[] get_secret(List share_arrays) + { + byte[] plaintext = new byte[share_arrays[0].Length]; + + if (share_arrays.Count < _required) + { + throw new Exception("Insufficient shares"); + } + + UInt16[] sv = new UInt16[_required]; + + // TODO - all the constants calculated in get_secret + // can be pulled out once and re-used, which will help perf + for (UInt32 j = 0; j < plaintext.Length; ++j) + { + for (Int32 i = 0; i< _required; ++i) + { + UInt16[] sa = share_arrays[i]; + sv[i] = sa[j]; + } + + UInt16 text = get_secret(sv); + plaintext[j] = (byte)(text); + } + + return plaintext; + } + + public UInt16 get_secret(UInt16[] share_array) + { + if (share_array.Length < _required) + throw new Exception("Insufficient shares"); + + return shared_math.get_secret(share_array, _required); + } + + void init_coefficients() + { + for (UInt32 i = 0; i < (UInt32)(_required) - 1; ++i) + { + _coefficients[i] = _rand_bits.get_mod_257(); + } + } + + UInt16 _shares; + UInt16 _required; + UInt16[] _coefficients; + random_bits _rand_bits; + + const UInt32 max_shares = 126; + } +} diff --git a/src/KeyVault/KeyVault/SecurityDomain/Crypto/test/test.cs b/src/KeyVault/KeyVault/SecurityDomain/Crypto/test/test.cs new file mode 100644 index 000000000000..af0156689d95 --- /dev/null +++ b/src/KeyVault/KeyVault/SecurityDomain/Crypto/test/test.cs @@ -0,0 +1,167 @@ +using System; +using System.Collections.Generic; +using System.Security.Cryptography; +using System.Text; + +namespace Microsoft.Azure.Commands.KeyVault.SecurityDomain.Crypto.Test +{ + class test + { + static void single_byte_test(byte shares, UInt16 required) + { + for (UInt16 i = 0; i < (UInt16)0x100; ++i) + { + shared_secret secret = new shared_secret(shares, required); + + UInt16[] share_array = secret.make_shares((byte)i); + UInt16 result = secret.get_secret(share_array); + + if (i != result) + { + throw new Exception("single_byte_test failed"); + } + } + } + + static void random_single_byte_test() + { + byte shares = 126; + UInt16 required = 16; + + for (UInt32 i = 0; i < 100000; ++i) + { + // just use i % 256 as the secret + byte secret_value = (byte)(i % 256); + shared_secret secret = new shared_secret(shares, required); + UInt16[] share_array = secret.make_shares(secret_value); + + // Put them into a List so that we can pick them out + List tmp_array = new List(); + + foreach(UInt16 u in share_array) + { + tmp_array.Add(u); + } + + // Now need to randomly pick values + UInt16[] random_shares = new UInt16[required]; + + random_bits bits = new random_bits(required); + + for (UInt32 j = 0; j < required; ++j) + { + // Yes, I really only need a byte, but this is test code + UInt16 r = bits.get_word(); + Int32 pos = (Int32)(r % tmp_array.Count); + + random_shares[j] = tmp_array[pos]; + tmp_array.RemoveAt(pos); + } + + UInt16 result = secret.get_secret(random_shares); + + if (result != secret_value) + { + throw new Exception("random_single_byte_test failed"); + } + } + + Console.WriteLine("random_single_byte_test - success"); + } + + static void test_all_shares() + { + for (UInt16 i = 2; i < 127; ++i) + { + // It will work for larger numbers of required, but + // it takes a while. Can do some targeted tests for large + // share count + UInt16 max_required = 16; + for (UInt16 j = i > max_required ? max_required : i; j > 1; --j) + { + byte shares = (byte)(i); + byte required = (byte)(j); + + single_byte_test(shares, required); + } + } + + Console.WriteLine("test_all_shares - success"); + } + + static void test_126_shares() + { + UInt16 i = 126; + + Console.WriteLine("Running 126 share test"); + + for (UInt16 j = i; j > 1; --j) + { + byte shares = (byte)(i); + byte required = (byte)(j); + + single_byte_test(shares, required); + } + + Console.WriteLine("test_126_shares - success"); + } + + static bool check_result(byte[] a, byte[] b) + { + // Not for cryptographic purposes + // assumes equal lengths + for(Int32 i = 0; i < a.Length; ++i) + { + if (a[i] != b[i]) + return false; + } + return true; + } + + static void test_large_secret() + { + for (UInt32 i = 0; i < 1000000; ++i) + { + shared_secret ss = new shared_secret(11, 5); + + byte[] secret = new byte[32]; + + using (RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider()) + { + rng.GetBytes(secret); + } + + List share_arrays = ss.make_shares(secret); + byte[] plaintext = ss.get_secret(share_arrays); + + if ( !check_result(plaintext, secret) ) + { + throw new Exception("test_large_secret failed"); + } + + if ((i + 1) % 100000 == 0) + { + Console.WriteLine("{0} iterations", i + 1); + } + } + + Console.WriteLine("test_large_secret - success"); + } + + static public void run_all_tests() + { + Console.WriteLine("Running single-byte tests"); + Console.WriteLine("Testing 2-126 shares, 2-16 required"); + test_126_shares(); + + Console.WriteLine("\nTesting 126 shares, 2-126 required"); + test_all_shares(); + + Console.WriteLine("\nTesting random shares"); + random_single_byte_test(); + + Console.WriteLine("\nRunning 32 byte secret tests"); + test_large_secret(); + } + } +} diff --git a/src/KeyVault/KeyVault/SecurityDomain/Models/CertKey.cs b/src/KeyVault/KeyVault/SecurityDomain/Models/CertKey.cs new file mode 100644 index 000000000000..e32ec92b308e --- /dev/null +++ b/src/KeyVault/KeyVault/SecurityDomain/Models/CertKey.cs @@ -0,0 +1,85 @@ +using Microsoft.Azure.Commands.KeyVault.SecurityDomain.Common; +using Org.BouncyCastle.Crypto.Parameters; +using Org.BouncyCastle.OpenSsl; +using System; +using System.IO; +using System.Security.Cryptography; +using System.Security.Cryptography.X509Certificates; + +namespace Microsoft.Azure.Commands.KeyVault.SecurityDomain.Models +{ + internal class CertKey + { + public void Load(KeyPath path) + { + _cert = new X509Certificate2(path.PublicKey); + RSAParameters parameters = RsaParamsFromPem(path.PrivateKey, path.Password?.ToPlainText()); + _key = RSA.Create(); + _key.ImportParameters(parameters); + _thumbprint = Utils.Sha256Thumbprint(_cert); + } + + public byte[] GetThumbprint() { return _thumbprint; } + public RSA GetKey() { return _key; } + public X509Certificate2 GetCert() { return _cert; } + + static RSAParameters RsaParamsFromPem(string path, string password) + { + using (var stream = File.OpenText(path)) + { + var reader = string.IsNullOrEmpty(password) ? new PemReader(stream) : new PemReader(stream, new PasswordFinder(password)); + var keyParameters = reader.ReadObject() as RsaPrivateCrtKeyParameters; + + return ToRSAParameters(keyParameters); + } + } + + static RSAParameters ToRSAParameters(RsaPrivateCrtKeyParameters privKey) + { + RSAParameters rp = new RSAParameters + { + Modulus = privKey.Modulus.ToByteArrayUnsigned(), + Exponent = privKey.PublicExponent.ToByteArrayUnsigned(), + P = privKey.P.ToByteArrayUnsigned(), + Q = privKey.Q.ToByteArrayUnsigned() + }; + rp.D = ConvertRSAParametersField(privKey.Exponent, rp.Modulus.Length); + rp.DP = ConvertRSAParametersField(privKey.DP, rp.P.Length); + rp.DQ = ConvertRSAParametersField(privKey.DQ, rp.Q.Length); + rp.InverseQ = ConvertRSAParametersField(privKey.QInv, rp.Q.Length); + return rp; + } + + + static byte[] ConvertRSAParametersField(Org.BouncyCastle.Math.BigInteger n, int size) + { + byte[] bs = n.ToByteArrayUnsigned(); + if (bs.Length == size) + return bs; + if (bs.Length > size) + throw new ArgumentException("Specified size too small", "size"); + byte[] padded = new byte[size]; + Array.Copy(bs, 0, padded, size - bs.Length, bs.Length); + return padded; + } + + X509Certificate2 _cert; + RSA _key; + byte[] _thumbprint; + + private class PasswordFinder : IPasswordFinder + { + private readonly string _password; + + public PasswordFinder(string password) + { + _password = password; + } + + public char[] GetPassword() + { + return _password.ToCharArray(); + } + } + } +} \ No newline at end of file diff --git a/src/KeyVault/KeyVault/SecurityDomain/Models/CertKeys.cs b/src/KeyVault/KeyVault/SecurityDomain/Models/CertKeys.cs new file mode 100644 index 000000000000..eae5de3268ec --- /dev/null +++ b/src/KeyVault/KeyVault/SecurityDomain/Models/CertKeys.cs @@ -0,0 +1,46 @@ +using Microsoft.IdentityModel.Tokens; +using System; +using System.Collections.Generic; + +namespace Microsoft.Azure.Commands.KeyVault.SecurityDomain.Models +{ + internal class CertKeys + { + public CertKeys() + { + _keys = new Dictionary(); + } + + public void LoadKeys(KeyPath[] paths) + { + foreach (var path in paths) + { + try { LoadKey(path); } + catch (Exception ex) + { + throw new Exception($"Could not load public and private key from {path.PublicKey} and {path.PrivateKey}", ex); + } + } + } + + public void LoadKey(KeyPath path) + { + CertKey certKey = new CertKey(); + certKey.Load(path); + string encodedThumbprint = Base64UrlEncoder.Encode(certKey.GetThumbprint()); + _keys.Add(encodedThumbprint, certKey); + } + + public CertKey Find(string encoded_thumbprint) + { + if (!_keys.TryGetValue(encoded_thumbprint, out CertKey certKey)) + return null; + + return certKey; + } + + public int Count() { return _keys.Count; } + + private readonly Dictionary _keys; + } +} diff --git a/src/KeyVault/KeyVault/SecurityDomain/Models/DownloadRequest.cs b/src/KeyVault/KeyVault/SecurityDomain/Models/DownloadRequest.cs new file mode 100644 index 000000000000..a7657a65db8d --- /dev/null +++ b/src/KeyVault/KeyVault/SecurityDomain/Models/DownloadRequest.cs @@ -0,0 +1,19 @@ +using Newtonsoft.Json; +using System.Collections.Generic; + +namespace Microsoft.Azure.Commands.KeyVault.SecurityDomain.Models +{ + class DownloadRequest + { + public DownloadRequest() + { + Certificates = new List(); + } + + [JsonProperty("required")] + public int Required; + + [JsonProperty("certificates")] + public IList Certificates { get; set; } + } +} diff --git a/src/KeyVault/KeyVault/SecurityDomain/Models/ISecurityDomainClient.cs b/src/KeyVault/KeyVault/SecurityDomain/Models/ISecurityDomainClient.cs new file mode 100644 index 000000000000..64fb66d9eaf4 --- /dev/null +++ b/src/KeyVault/KeyVault/SecurityDomain/Models/ISecurityDomainClient.cs @@ -0,0 +1,18 @@ +using System.Collections.Generic; +using System.Security.Cryptography.X509Certificates; + +namespace Microsoft.Azure.Commands.KeyVault.SecurityDomain.Models +{ + public interface ISecurityDomainClient + { + string DownloadSecurityDomain(string hsmName, IEnumerable certificates, int required); + + X509Certificate2 DownloadSecurityDomainExchangeKey(string hsmName); + + PlaintextList DecryptSecurityDomain(SecurityDomainData data, KeyPath[] paths); + + SecurityDomainRestoreData EncryptForRestore(PlaintextList plaintextList, X509Certificate2 cert); + + void RestoreSecurityDomain(string hsmName, SecurityDomainRestoreData securityDomainData); + } +} diff --git a/src/KeyVault/KeyVault/SecurityDomain/Models/JWE.cs b/src/KeyVault/KeyVault/SecurityDomain/Models/JWE.cs new file mode 100644 index 000000000000..b4c6d2a9f149 --- /dev/null +++ b/src/KeyVault/KeyVault/SecurityDomain/Models/JWE.cs @@ -0,0 +1,321 @@ +using System; +using System.Security.Cryptography; +using System.Text; +using Microsoft.IdentityModel.Tokens; +using Newtonsoft.Json; +using System.IO; +using System.Security.Cryptography.X509Certificates; +using Microsoft.Azure.Commands.KeyVault.SecurityDomain.Common; + +namespace Microsoft.Azure.Commands.KeyVault.SecurityDomain.Models +{ + /* + * In the JWE Compact Serialization, a JWE is represented as the +concatenation: + + BASE64URL(UTF8(JWE Protected Header)) || '.' || + BASE64URL(JWE Encrypted Key) || '.' || + BASE64URL(JWE Initialization Vector) || '.' || + BASE64URL(JWE Ciphertext) || '.' || + BASE64URL(JWE Authentication Tag) + */ + + // Sample header = {"alg":"RSA-OAEP-256","enc":"A256CBC-HS512","kid":"not used"} + + public class JWE_header + { + public string alg { get; set; } // algorithm + public string enc { get; set; } // encryption algorithm + public string zip { get; set; } // compression algorithm + public string jku { get; set; } // JWK set URL + public string jwk { get; set; } // JSON Web key + public string kid { get; set; } // Key ID + public string x5u { get; set; } // X509 certificate URL + public string x5c { get; set; } // X509 certificate chain + public string x5t { get; set; } // X.509 Certificate SHA-1 Thumbprint + + [JsonProperty("x5t#S256")] + public string x5t_S256 { get; set; } // X.509 Certificate SHA-256 Thumbprint + public string typ { get; set; } // Type + public string cty { get; set; } // Content type + public string crit { get; set; } // Critical + } + + public class JweDecode + { + public JweDecode(string compact_jwe) + { + string[] parts = compact_jwe.Split('.'); + + if (parts.Length != 5) + { + throw new Exception("Malformed input"); + } + + encoded_header = parts[0]; + string header = Base64UrlEncoder.Decode(encoded_header); + encrypted_key = Base64UrlEncoder.DecodeBytes(parts[1]); + init_vector = Base64UrlEncoder.DecodeBytes(parts[2]); + ciphertext = Base64UrlEncoder.DecodeBytes(parts[3]); + auth_tag = Base64UrlEncoder.DecodeBytes(parts[4]); + + protected_header = JsonConvert.DeserializeObject(header); + } + + // For encryption + public JweDecode() + { + encoded_header = ""; + encrypted_key = null; + init_vector = null; + ciphertext = null; + auth_tag = null; + protected_header = new JWE_header(); + } + + public void EncodeHeader() + { + string header_json = JsonConvert.SerializeObject( + protected_header, + Formatting.None, + new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); + + encoded_header = Base64UrlEncoder.Encode(header_json); + } + + public string EncodeCompact() + { + string ret = encoded_header + "."; + + if (encrypted_key != null) + { + ret += Base64UrlEncoder.Encode(encrypted_key); + } + + ret += "."; + if (init_vector != null) + { + ret += Base64UrlEncoder.Encode(init_vector); + } + + ret += "."; + if (ciphertext != null) + { + ret += Base64UrlEncoder.Encode(ciphertext); + } + + ret += "."; + if (auth_tag != null) + { + ret += Base64UrlEncoder.Encode(auth_tag); + } + + return ret; + } + + public JWE_header protected_header; + public string encoded_header; + public byte[] encrypted_key; + public byte[] init_vector; + public byte[] ciphertext; + public byte[] auth_tag; + } + + public class JWE + { + public JWE(string compact_jwe) + { + jwe_decode = new JweDecode(compact_jwe); + } + + public JWE() + { + jwe_decode = new JweDecode(); + } + + public string EncodeCompact() + { + return jwe_decode.EncodeCompact(); + } + + RSAEncryptionPadding GetPaddingMode() + { + string alg = jwe_decode.protected_header.alg; + switch (alg) + { + case "RSA-OAEP-256": + return RSAEncryptionPadding.OaepSHA256; + case "RSA-OAEP": + return RSAEncryptionPadding.OaepSHA1; + case "RSA1_5": + return RSAEncryptionPadding.Pkcs1; + } + + return null; + } + + public byte[] GetCEK(RSA private_key) + { + return private_key.Decrypt(jwe_decode.encrypted_key, GetPaddingMode()); + } + + public void SetCEK(X509Certificate2 cert, byte[] cek) + { + RSA rsa = cert.GetRSAPublicKey(); + jwe_decode.encrypted_key = rsa.Encrypt(cek, GetPaddingMode()); + } + byte[] DekFromCek(byte[] cek) + { + byte[] dek = new byte[32]; + Array.Copy(cek, 32, dek, 0, 32); + return dek; + } + + byte[] HmacKeyFromCek(byte[] cek) + { + byte[] hk = new byte[32]; + Array.Copy(cek, 0, hk, 0, 32); + return hk; + } + + byte[] GetMac(byte[] hk) + { + HMACSHA512 hMAC = new HMACSHA512(hk); + byte[] header_bytes = Encoding.ASCII.GetBytes(jwe_decode.encoded_header); + + using (MemoryStream stm = new MemoryStream()) + { + UInt64 auth_bits = (UInt64)header_bytes.Length * 8; + stm.Write(header_bytes); + stm.Write(jwe_decode.init_vector); + stm.Write(jwe_decode.ciphertext); + // Add the associated_data_length bytes to the hash + stm.Write(KDF.to_big_endian(auth_bits)); + byte[] hash_data = stm.ToArray(); + + return hMAC.ComputeHash(hash_data); + } + } + + void Aes256HmacSha512Encrypt(byte[] cek, byte[] plain_text) + { + byte[] dek = DekFromCek(cek); + byte[] hk = HmacKeyFromCek(cek); + + using (Aes alg = Aes.Create()) + { + alg.Key = dek; + alg.IV = Utils.GetRandom(16); + ICryptoTransform encryptor = alg.CreateEncryptor(alg.Key, alg.IV); + + using (MemoryStream msEncrypt = new MemoryStream()) + { + using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write)) + { + csEncrypt.Write(plain_text); + csEncrypt.FlushFinalBlock(); + csEncrypt.Close(); + + // Have to wait to set hash once header is complete + jwe_decode.ciphertext = msEncrypt.ToArray(); + jwe_decode.init_vector = alg.IV; + } + } + } + byte[] mac_value = GetMac(hk); + jwe_decode.auth_tag = new byte[32]; + Array.Copy(mac_value, jwe_decode.auth_tag, 32); + } + + byte[] Aes256HmacSha512Decrypt(byte[] cek) + { + byte[] dek = DekFromCek(cek); + byte[] hk = HmacKeyFromCek(cek); + + byte[] mac_value = GetMac(hk); + // We're then going to truncate the MAC to 32 bytes, as per standard + int test = 0; + for (UInt32 i = 0; i < jwe_decode.auth_tag.Length && jwe_decode.auth_tag.Length == 32; ++i) + { + test |= (jwe_decode.auth_tag[i] ^ mac_value[i]); + } + + if (test != 0) + return null; + + // Nothing has been tampered with, decrypt + using (Aes alg = Aes.Create()) + { + alg.Key = dek; + alg.IV = jwe_decode.init_vector; + ICryptoTransform decryptor = alg.CreateDecryptor(alg.Key, alg.IV); + + using (MemoryStream msDecrypt = new MemoryStream(jwe_decode.ciphertext)) + { + using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read)) + { + using (BinaryReader srDecrypt = new BinaryReader(csDecrypt)) + { + return srDecrypt.ReadBytes(jwe_decode.ciphertext.Length); + } + } + } + } + } + + // Call this with the last parameter non-null to do direct encryption + public void Encrypt(byte[] cek, byte[] plain_text, string algId, string kid = null) + { + if (kid != null) + { + jwe_decode.protected_header.alg = "dir"; + jwe_decode.protected_header.kid = kid; + } + + switch (algId) + { + case "A256CBC-HS512": + jwe_decode.protected_header.enc = "A256CBC-HS512"; + jwe_decode.EncodeHeader(); + Aes256HmacSha512Encrypt(cek, plain_text); + return; + } + + } + + public byte[] Decrypt(byte[] cek) + { + switch (jwe_decode.protected_header.enc) + { + case "A256CBC-HS512": + return Aes256HmacSha512Decrypt(cek); + } + + return null; + } + + // Note - we don't have a true key wrap, for now + // just encrypt keys as if they were data + public void Encrypt(X509Certificate2 cert, byte[] plaintext) + { + // Only allow one encryption method right now + // and only 256-bit keys + jwe_decode.protected_header.alg = "RSA-OAEP-256"; + jwe_decode.protected_header.kid = "not used"; + + byte[] cek = Utils.GetRandom(64); + + SetCEK(cert, cek); + Encrypt(cek, plaintext, "A256CBC-HS512"); + } + + public byte[] Decrypt(RSA private_key) + { + byte[] cek = GetCEK(private_key); + return Decrypt(cek); + } + + JweDecode jwe_decode; + } + +} diff --git a/src/KeyVault/KeyVault/SecurityDomain/Models/JWK.cs b/src/KeyVault/KeyVault/SecurityDomain/Models/JWK.cs new file mode 100644 index 000000000000..c8c365b0db99 --- /dev/null +++ b/src/KeyVault/KeyVault/SecurityDomain/Models/JWK.cs @@ -0,0 +1,259 @@ +using System; +using System.Collections.Generic; +using System.Security.Cryptography; +using System.Security.Cryptography.X509Certificates; +using Microsoft.Azure.Commands.KeyVault.SecurityDomain.Common; +using Microsoft.IdentityModel.Tokens; +using Newtonsoft.Json; + +namespace Microsoft.Azure.Commands.KeyVault.SecurityDomain.Models +{ + public enum JwkKeyType + { + RSA // only type supported now + } + public enum JwkUse + { + enc, + sig + } + + /* + (Note that the "key_ops" values intentionally match the "KeyUsage" + values defined in the Web Cryptography API + [W3C.CR-WebCryptoAPI-20141211] specification.) + */ + public enum JwkKeyOps + { + sign, + verify, + encrypt, + decrypt, + wrapKey, + unwrapKey, + deriveKey, + deriveBits + } + + public enum JwkAlg + { + RSA_OAEP, + RSA_OAEP_256 + } + + public class JWK + { + public JWK() + { + key_ops = new List(); + x5c = new List(); + } + + public JWK(X509Certificate2 cert) + { + key_ops = new List(); + x5c = new List(); + + PublicKey publicKey = cert.PublicKey; + + if (publicKey.Key.KeyExchangeAlgorithm != "RSA" || publicKey.Key.KeySize < 2048) + throw new Exception("Invalid argument"); + + RSAParameters rsaParameters = cert.GetRSAPublicKey().ExportParameters(false); + SetExponent(rsaParameters.Exponent); + SetModulus(rsaParameters.Modulus); + + SetKeyType(JwkKeyType.RSA); + + // Figure out the key_ops + // Unsure what deriveKey, deriveBits requires, omit for now + if (cert.PrivateKey != null) + { + AddKeyOp(JwkKeyOps.sign); + AddKeyOp(JwkKeyOps.decrypt); + AddKeyOp(JwkKeyOps.unwrapKey); + } + + AddKeyOp(JwkKeyOps.verify); + AddKeyOp(JwkKeyOps.encrypt); + AddKeyOp(JwkKeyOps.wrapKey); + + SetAlg(JwkAlg.RSA_OAEP_256); + SetX5c(cert); + SetX5t(cert); + SetX5t256(cert); + } + public string ToJson() + { + return JsonConvert.SerializeObject( + this, + Formatting.None, + new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); + } + + void SetExponent(byte[] exp) + { + e = Base64UrlEncoder.Encode(exp); + } + + void SetModulus(byte[] modulus) + { + n = Base64UrlEncoder.Encode(modulus); + } + + void SetKeyType(JwkKeyType keyType) + { + // This is all we support right now + if (keyType == JwkKeyType.RSA) + kty = "RSA"; + else + throw new Exception("Invalid argument"); + } + + void SetUse(JwkUse _use) + { + if (_use == JwkUse.enc) + use = "enc"; + else if (_use == JwkUse.sig) + use = "sig"; + else + throw new Exception("Invalid argument"); + } + + void AddKeyOp(JwkKeyOps keyOp) + { + switch (keyOp) + { + case JwkKeyOps.sign: + key_ops.Add("sign"); + break; + case JwkKeyOps.verify: + key_ops.Add("verify"); + break; + case JwkKeyOps.encrypt: + key_ops.Add("encrypt"); + break; + case JwkKeyOps.decrypt: + key_ops.Add("decrypt"); + break; + case JwkKeyOps.wrapKey: + key_ops.Add("wrapKey"); + break; + case JwkKeyOps.unwrapKey: + key_ops.Add("unwrapKey"); + break; + case JwkKeyOps.deriveKey: + key_ops.Add("deriveKey"); + break; + case JwkKeyOps.deriveBits: + key_ops.Add("deriveBits"); + break; + } + } + + void SetKeyOps(JwkKeyOps[] keyOps) + { + foreach (JwkKeyOps op in keyOps) + { + AddKeyOp(op); + } + } + + public void SetAlg(JwkAlg _alg) + { + if (_alg == JwkAlg.RSA_OAEP) + alg = "RSA-OAEP"; + else + if (_alg == JwkAlg.RSA_OAEP_256) + alg = "RSA-OAEP-256"; + else + throw new Exception("Invalid argument"); + } + + public void SetKid(string _kid) + { + kid = _kid; + } + + void SetX5u() + { + // Just to document that this is not to be used + throw new Exception("Not supported"); + } + + void SetX5c(X509Certificate2 cert) + { + // TODO, note: does not support chain, just one cert + string base64cert = Convert.ToBase64String(cert.RawData); + x5c.Add(base64cert); + } + + public X509Certificate2 GetX5c() + { + if (x5c.Count < 1) + return null; + + string base64cert = x5c[0]; + byte[] rawCert = Convert.FromBase64String(base64cert); + X509Certificate2 cert = new X509Certificate2(rawCert); + return cert; + } + + public string GetX5cAsPem() + { + string base64cert = x5c[0]; + // Convert to PEM + string header = "-----BEGIN CERTIFICATE-----\n"; + string footer = "-----END CERTIFICATE-----"; + string pem = header; + + // Now grab 65-character pieces of the base64-encoded cert + for (Int32 i = 0; i < base64cert.Length; i += 65) + { + Int32 remaining = base64cert.Length - i; + string line = base64cert.Substring(i, remaining > 65 ? 65 : remaining); + pem += line + "\n"; + } + + pem += footer; + return pem; + } + + // TODO - move to utils + public static byte[] ToByteArray(String HexString) + { + int NumberChars = HexString.Length; + byte[] bytes = new byte[NumberChars / 2]; + for (int i = 0; i < NumberChars; i += 2) + { + bytes[i / 2] = Convert.ToByte(HexString.Substring(i, 2), 16); + } + return bytes; + } + + void SetX5t(X509Certificate2 cert) + { + x5t = Base64UrlEncoder.Encode(ToByteArray(cert.Thumbprint)); + } + + void SetX5t256(X509Certificate2 cert) + { + x5t_S256 = Base64UrlEncoder.Encode(Utils.Sha256Thumbprint(cert)); + } + + public string kty { get; set; } + public string use { get; set; } + public IList key_ops { get; set; } + + public string alg { get; set; } + public string kid { get; set; } + public string x5u { get; set; } + public IList x5c { get; set; } + public string x5t { get; set; } // X.509 Certificate SHA-1 Thumbprint + + [JsonProperty("x5t#S256")] + public string x5t_S256 { get; set; } // X.509 Certificate SHA-256 Thumbprint + public string n { get; set; } + public string e { get; set; } + } +} diff --git a/src/KeyVault/KeyVault/SecurityDomain/Models/KDF.cs b/src/KeyVault/KeyVault/SecurityDomain/Models/KDF.cs new file mode 100644 index 000000000000..8a4ded6d9570 --- /dev/null +++ b/src/KeyVault/KeyVault/SecurityDomain/Models/KDF.cs @@ -0,0 +1,136 @@ +using System; +using System.Text; +using System.Security.Cryptography; +using System.IO; +using System.Linq; +using Microsoft.Azure.Commands.KeyVault.SecurityDomain.Common; + +namespace Microsoft.Azure.Commands.KeyVault.SecurityDomain.Models +{ + internal class KDF + { + static public byte[] to_big_endian(Int32 value) + { + byte[] result = new byte[4]; + result[3] = (byte)((value & 0x000000FF)); + result[2] = (byte)((value & 0x0000FF00) >> 8); + result[1] = (byte)((value & 0x00FF0000) >> 16); + result[0] = (byte)((value & 0xFF000000) >> 24); + return result; + } + static public byte[] to_big_endian(UInt64 value) + { + byte[] result = new byte[8]; + result[7] = (byte)((value & 0x00000000000000FF)); + result[6] = (byte)((value & 0x000000000000FF00) >> 8); + result[5] = (byte)((value & 0x0000000000FF0000) >> 16); + result[4] = (byte)((value & 0x00000000FF000000) >> 24); + result[3] = (byte)((value & 0x000000FF00000000) >> 32); + result[2] = (byte)((value & 0x0000FF0000000000) >> 40); + result[1] = (byte)((value & 0x00FF000000000000) >> 48); + result[0] = (byte)((value & 0xFF00000000000000) >> 56); + return result; + } + + static public bool self_test_sp800_108() + { + string label = "label"; + string context = "context"; + Int32 bitLength = 256; + string hex_result = "f0ca51f6308791404bf68b56024ee7c64d6c737716f81d47e1e68b5c4e399575"; + + byte[] key = Enumerable.Repeat((byte)0x41, 32).ToArray(); + HMACSHA512 hmac = new HMACSHA512(); + + byte[] new_key = sp800_108(key, label, context, hmac, bitLength); + + string hex = BitConverter.ToString(new_key).Replace("-", ""); + + return (hex.ToLower() == hex_result); + } + + // Note - initialize out to be the number of bytes of keying material that you need + // This implements SP 800-108 in counter mode, see section 5.1 + /* + Fixed values: + 1. h - The length of the output of the PRF in bits, and + 2. r - The length of the binary representation of the counter i. + + Input: KI, Label, Context, and L. + + Process: + 1. n := ⎡L/h⎤. + 2. If n > 2^(r-1), then indicate an error and stop. + 3. result(0):= ∅. + 4. For i = 1 to n, do + a. K(i) := PRF (KI, [i]2 || Label || 0x00 || Context || [L]2) + b. result(i) := result(i-1) || K(i). + + 5. Return: KO := the leftmost L bits of result(n). + */ + static public byte[] sp800_108(byte[] key_in, string label, string context, HMAC hMAC, Int32 bit_length) + { + if (bit_length <= 0 || bit_length % 8 != 0) + return null; + + Int32 L = bit_length; + Int32 bytes_needed = bit_length / 8; + Int32 n = 0; + Int32 hash_bits = 0; + + hash_bits = hMAC.HashSize; + + n = L / hash_bits; + + if (L % hash_bits != 0) + n++; + + Int32 hmac_data_size = 4 + label.Length + 1 + context.Length + 4; + byte[] hmac_data_suffix = null; + + using (MemoryStream mem = new MemoryStream()) + { + byte[] zero = new byte[1]; + zero[0] = 0; + + mem.Write(Encoding.UTF8.GetBytes(label)); + mem.Write(zero); + mem.Write(Encoding.UTF8.GetBytes(context)); + mem.Write(to_big_endian(bit_length)); + hmac_data_suffix = mem.ToArray(); + } + + using (MemoryStream out_stm = new MemoryStream()) + { + for (Int32 i = 0; i < n; ++i) + { + byte[] hmac_data = null; + + using (MemoryStream mem = new MemoryStream()) + { + mem.Write(to_big_endian(i + 1)); + mem.Write(hmac_data_suffix); + hmac_data = mem.ToArray(); + } + + hMAC.Key = key_in; + byte[] hash_value = hMAC.ComputeHash(hmac_data); + + if (bytes_needed > hash_value.Length) + { + out_stm.Write(hash_value); + bytes_needed -= hash_value.Length; + } + else + { + out_stm.Write(hash_value, (int)out_stm.Length, bytes_needed); + return out_stm.ToArray(); + } + // reset hmac for next round + hMAC.Initialize(); + } + } + return null; + } + } +} diff --git a/src/KeyVault/KeyVault/SecurityDomain/Models/KeyPath.cs b/src/KeyVault/KeyVault/SecurityDomain/Models/KeyPath.cs new file mode 100644 index 000000000000..f038ed9a24e0 --- /dev/null +++ b/src/KeyVault/KeyVault/SecurityDomain/Models/KeyPath.cs @@ -0,0 +1,11 @@ +using System.Security; + +namespace Microsoft.Azure.Commands.KeyVault.SecurityDomain.Models +{ + public class KeyPath + { + public string PublicKey { get; set; } + public string PrivateKey { get; set; } + public SecureString Password { get; set; } + } +} diff --git a/src/KeyVault/KeyVault/SecurityDomain/Models/SecurityDomain.cs b/src/KeyVault/KeyVault/SecurityDomain/Models/SecurityDomain.cs new file mode 100644 index 000000000000..df7826236f2c --- /dev/null +++ b/src/KeyVault/KeyVault/SecurityDomain/Models/SecurityDomain.cs @@ -0,0 +1,85 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Microsoft.Azure.Commands.KeyVault.SecurityDomain.Models +{ + public class Datum + { + public string compact_jwe { get; set; } + public string tag { get; set; } + } + + public class EncData + { + public EncData() + { + data = new List(); + } + + public IList data { get; set; } + public string kdf { get; set; } + } + + public class Plaintext + { + public byte[] plaintext; + public string tag; + } + + public class PlaintextList + { + public PlaintextList() + { + list = new List(); + } + + public void Add(Plaintext p) + { + list.Add(p); + } + + public List<Plaintext> list; + } + + public class Key + { + public string enc_key { get; set; } + public string x5t_256 { get; set; } + } + + public class KeyPair + { + public Key key1 { get; set; } + public Key key2 { get; set; } + } + + public class SplitKeys + { + public string key_algorithm { get; set; } + public IList<KeyPair> keys { get; set; } + } + + public class SharedKeys + { + public string key_algorithm { get; set; } + public UInt32 required { get; set; } + public IList<Key> enc_shares { get; set; } + } + + public class SecurityDomainData + { + public EncData EncData { get; set; } + + // Because the deserializer isn't very picky, the struct + // can contain both the new and the old members, and we can just use the one we need + public SplitKeys SplitKeys { get; set; } + public SharedKeys SharedKeys { get; set; } + public int version { get; set; } + } + + public class SecurityDomainWrapper + { + public string value { get; set; } + } +} diff --git a/src/KeyVault/KeyVault/SecurityDomain/Models/SecurityDomainClient.cs b/src/KeyVault/KeyVault/SecurityDomain/Models/SecurityDomainClient.cs new file mode 100644 index 000000000000..ab8cddb8c442 --- /dev/null +++ b/src/KeyVault/KeyVault/SecurityDomain/Models/SecurityDomainClient.cs @@ -0,0 +1,446 @@ +using Microsoft.Azure.Commands.Common.Authentication.Abstractions; +using Microsoft.Azure.Commands.KeyVault.Models; +using Microsoft.Azure.Commands.KeyVault.Properties; +using Microsoft.Azure.Commands.KeyVault.SecurityDomain.Common; +using Microsoft.Azure.Commands.KeyVault.SecurityDomain.Crypto; +using Microsoft.IdentityModel.Tokens; +using Microsoft.Rest; +using Microsoft.WindowsAzure.Commands.Utilities.Common; +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Net.Http; +using System.Net.Http.Headers; +using System.Security.Authentication; +using System.Security.Cryptography; +using System.Security.Cryptography.X509Certificates; +using static Microsoft.Azure.Commands.Common.Authentication.Abstractions.AzureEnvironment; + +namespace Microsoft.Azure.Commands.KeyVault.SecurityDomain.Models +{ + internal class SecurityDomainClient : ServiceClient<SecurityDomainClient>, ISecurityDomainClient + { + public SecurityDomainClient(IAuthenticationFactory authenticationFactory, IAzureContext defaultContext, Action<string> debugWriter) + { + _credentials = new DataServiceCredential(authenticationFactory, defaultContext, ExtendedEndpoint.ManagedHsmServiceEndpointResourceId); + + _uriHelper = new VaultUriHelper( + defaultContext.Environment.GetEndpoint(AzureEnvironment.Endpoint.AzureKeyVaultDnsSuffix), + defaultContext.Environment.GetEndpoint(ExtendedEndpoint.ManagedHsmServiceEndpointSuffix)); + + HttpClient.DefaultRequestHeaders.TransferEncodingChunked = false; + + _writeDebug = debugWriter; + } + + private const string _securityDomainPathFragment = "securitydomain"; + private readonly DataServiceCredential _credentials; + private readonly VaultUriHelper _uriHelper; + private readonly JsonSerializerSettings _serializationSettings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }; + private readonly Action<string> _writeDebug; + + /// <summary> + /// Download security domain data for restore. + /// Data is encrypted with the certificates (public keys) user passes in. + /// </summary> + /// <param name="hsmName">Name of the HSM</param> + /// <param name="certificates">Certificates used to encrypt the security domain data</param> + /// <param name="quorum">Specify how many keys are required to decrypt the data</param> + /// <returns>Encrypted HSM security domain data in string</returns> + public string DownloadSecurityDomain(string hsmName, IEnumerable<X509Certificate2> certificates, int quorum) + { + var downloadRequest = new DownloadRequest + { + Required = quorum + }; + certificates.ForEach(cert => downloadRequest.Certificates.Add(new JWK(cert))); + + string requestBody = JsonConvert.SerializeObject( + downloadRequest, + Formatting.None, + _serializationSettings); + + var httpRequest = new HttpRequestMessage + { + Method = HttpMethod.Post, + RequestUri = new UriBuilder(_uriHelper.CreateManagedHsmUri(hsmName)) + { + Path = $"/{_securityDomainPathFragment}/download" + }.Uri, + Content = new StringContent(requestBody) + }; + + PrepareRequest(httpRequest); + + var httpResponseMessage = HttpClient.SendAsync(httpRequest).ConfigureAwait(false).GetAwaiter().GetResult(); + + if (httpResponseMessage.IsSuccessStatusCode) + { + string response = httpResponseMessage.Content.ReadAsStringAsync().ConfigureAwait(false).GetAwaiter().GetResult(); + var securityDomainWrapper = JsonConvert.DeserializeObject<SecurityDomainWrapper>(response); + ValidateDownloadSecurityDomainResponse(securityDomainWrapper); + return securityDomainWrapper.value; + } + else + { + string response = httpResponseMessage.Content.ReadAsStringAsync().ConfigureAwait(false).GetAwaiter().GetResult(); + _writeDebug($"Invalid security domain response: {response}"); + throw new Exception(Resources.DownloadSecurityDomainFail); + } + } + + private void ValidateDownloadSecurityDomainResponse(SecurityDomainWrapper securityDomainWrapper) + { + if (string.IsNullOrEmpty(securityDomainWrapper.value) || !ValidateSecurityDomainData(securityDomainWrapper.value)) + { + _writeDebug($"Invalid security domain response: {securityDomainWrapper.value}"); + throw new Exception(Resources.DownloadSecurityDomainFail); + } + } + + /// <summary> + /// Prepare common headers for the request. + /// Such as content-type and authorization. + /// </summary> + /// <param name="httpRequest"></param> + private void PrepareRequest(HttpRequestMessage httpRequest) + { + if (httpRequest.Content != null) + { + httpRequest.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json; charset=utf-8"); + } + + try + { + var token = _credentials.GetAccessToken(); + token.AuthorizeRequest((tokenType, tokenValue) => + { + httpRequest.Headers.Authorization = new AuthenticationHeaderValue(tokenType, tokenValue); + }); + } + catch (Exception ex) + { + throw new AuthenticationException(Resources.InvalidSubscriptionState, ex); + } + } + + private bool ValidateSecurityDomainData(string securityDomainData) + { + var securityDomain = JsonConvert.DeserializeObject<SecurityDomainData>(securityDomainData); + + // DeserializeObject isn't very picky, need to validate further + bool valid = false; + + // Note - this is very rudimentary, should + // do more comprehensive checking. + if (securityDomain.EncData != null) + { + switch (securityDomain.version) + { + case 1: + if (securityDomain.SplitKeys != null) + valid = true; + break; + + case 2: + if (securityDomain.SharedKeys != null) + valid = true; + break; + + default: + break; + } + } + + return valid; + } + + /// <summary> + /// Download a security domain exchange key. + /// This key is used to encrypt SD data before uploading to the HSM where SD is going to be restored. + /// </summary> + /// <param name="hsmName"></param> + /// <returns></returns> + public X509Certificate2 DownloadSecurityDomainExchangeKey(string hsmName) + { + try + { + var httpRequest = new HttpRequestMessage + { + Method = HttpMethod.Get, + RequestUri = new UriBuilder(_uriHelper.CreateManagedHsmUri(hsmName)) + { + Path = $"/{_securityDomainPathFragment}/upload" + }.Uri, + }; + + PrepareRequest(httpRequest); + + HttpResponseMessage httpResponseMessage = HttpClient.SendAsync(httpRequest).ConfigureAwait(false).GetAwaiter().GetResult(); + + if (httpResponseMessage.IsSuccessStatusCode) + { + var response = httpResponseMessage.Content.ReadAsStringAsync().ConfigureAwait(false).GetAwaiter().GetResult(); + var key = JsonConvert.DeserializeObject<SecurityDomainTransferKey>(response); + + switch (key.KeyFormat) + { + case "pem": + // Transitional, remove later + return Utils.CertficateFromPem(key.TransferKey); + case "jwk": + // handle below + break; + default: + throw new Exception($"Unexpected key type {key.KeyFormat}"); + } + + // The transfer key is a JWK, need to parse it, and return the cert + JWK jwk = JsonConvert.DeserializeObject<JWK>(key.TransferKey); + return Utils.CertficateFromPem(jwk.GetX5cAsPem()); + } + else + { + string response = httpResponseMessage.Content.ReadAsStringAsync().ConfigureAwait(false).GetAwaiter().GetResult(); + _writeDebug($"Invalid security domain response: {response}"); + throw new Exception(Resources.DownloadSecurityDomainKeyFail); + } + + } + catch (Exception ex) + { + throw new Exception(Resources.DownloadSecurityDomainKeyFail, ex); + } + } + + /// <summary> + /// Decrypt security domain data. + /// User must specify public key / private key / password* groups to decrypt SD. + /// *password MAY be optional. + /// </summary> + /// <param name="data"></param> + /// <param name="paths"></param> + /// <returns></returns> + public PlaintextList DecryptSecurityDomain(SecurityDomainData data, KeyPath[] paths) + { + CertKeys certKeys = new CertKeys(); + try + { + certKeys.LoadKeys(paths); + return Decrypt(data, certKeys); + } + catch (Exception ex) + { + throw new Exception(Resources.DecryptSecurityDomainFailure, ex); + } + } + + // Internal worker function + private PlaintextList Decrypt(SecurityDomainData data, CertKeys certKeys) + { + if (data.version == 2 && certKeys.Count() < data.SharedKeys.required) + { + throw new ArgumentException(string.Format(Resources.DecryptSecurityDomainKeyNotEnough, data.SharedKeys.required, certKeys.Count())); + } + + byte[] masterKey; + if (data.version == 1) + { + // ensure that the key splitting algorithm + // is known, currently only one we know about + if (data.SplitKeys.key_algorithm != "xor_split") + { + throw new Exception($"Unknown SplitKey algorithm {data.SplitKeys.key_algorithm}."); + } + + KeyPair decodeKeyPair = null; + CertKey certKey1 = null; + CertKey certKey2 = null; + foreach (KeyPair keyPair in data.SplitKeys.keys) + { + certKey1 = certKeys.Find(keyPair.key1.x5t_256); + + if (certKey1 == null) + continue; + + certKey2 = certKeys.Find(keyPair.key2.x5t_256); + + if (certKey2 != null) + { + decodeKeyPair = keyPair; + break; + } + } + + if (decodeKeyPair == null) + { + throw new Exception("Cannot find matching certs and keys for security domain"); + } + + masterKey = DecryptMasterKey(decodeKeyPair, certKey1, certKey2); + } + else if (data.version == 2) + { + if (data.SharedKeys.key_algorithm != "shamir_share") + { + throw new Exception($"Unknown SharedKeys algorithm {data.SharedKeys.key_algorithm}"); + } + + UInt32 shares_found = 0; + List<UInt16[]> share_arrays = new List<UInt16[]>(); + + foreach (Key key in data.SharedKeys.enc_shares) + { + CertKey cert_key = certKeys.Find(key.x5t_256); + + if (cert_key != null) + { + JWE jwe = new JWE(key.enc_key); + byte[] share = jwe.Decrypt(cert_key.GetKey()); + + shares_found++; + share_arrays.Add(Utils.ConvertToUint16(share)); + } + + if (share_arrays.Count == data.SharedKeys.required) + break; + } + + if (share_arrays.Count < data.SharedKeys.required) + { + throw new Exception($"Insufficient shares available. {data.SharedKeys.required} required, got {share_arrays.Count}."); + } + + shared_secret secret = new shared_secret((UInt16)data.SharedKeys.required); + masterKey = secret.get_secret(share_arrays); + } + else + { + throw new Exception($"Unknown domain version {data.version}."); + } + + PlaintextList plaintextList = new PlaintextList(); + + // Need to check KDF + foreach (Datum enc_data in data.EncData.data) + { + Plaintext p = new Plaintext(); + HMACSHA512 hmac = new HMACSHA512(); + byte[] enc_key = KDF.sp800_108(masterKey, enc_data.tag, "", hmac, 512); + JWE jwe_data = new JWE(enc_data.compact_jwe); + p.plaintext = jwe_data.Decrypt(enc_key); + p.tag = enc_data.tag; + + plaintextList.Add(p); + } + + return plaintextList; + } + + private byte[] DecryptMasterKey(KeyPair decode_key_pair, CertKey certKey1, CertKey certKey2) + { + JWE jwe1 = new JWE(decode_key_pair.key1.enc_key); + byte[] xor_key = jwe1.Decrypt(certKey1.GetKey()); + + JWE jwe2 = new JWE(decode_key_pair.key2.enc_key); + byte[] derived_key = jwe2.Decrypt(certKey2.GetKey()); + + // Now, XOR to get the master key back + byte[] master_key = new byte[xor_key.Length]; + + for (Int32 i = 0; i < xor_key.Length; ++i) + { + master_key[i] = (byte)(xor_key[i] ^ derived_key[i]); + } + return master_key; + } + + /// <summary> + /// Encrypt SD data with exchange key. + /// </summary> + /// <param name="plaintextList"></param> + /// <param name="cert">Exchange key</param> + /// <returns></returns> + public SecurityDomainRestoreData EncryptForRestore(PlaintextList plaintextList, X509Certificate2 cert) + { + try + { + SecurityDomainRestoreData securityDomainRestoreData = new SecurityDomainRestoreData(); + securityDomainRestoreData.EncData.kdf = "sp108_kdf"; + + byte[] master_key = Utils.GetRandom(32); + + foreach (Plaintext p in plaintextList.list) + { + Datum datum = new Datum(); + HMACSHA512 hmac = new HMACSHA512(); + byte[] enc_key = KDF.sp800_108(master_key, p.tag, "", hmac, 512); + + datum.tag = p.tag; + JWE jwe = new JWE(); + jwe.Encrypt(enc_key, p.plaintext, "A256CBC-HS512", p.tag); + datum.compact_jwe = jwe.EncodeCompact(); + securityDomainRestoreData.EncData.data.Add(datum); + } + + // Now go make the wrapped key + JWE jwe_wrapped = new JWE(); + jwe_wrapped.Encrypt(cert, master_key); + securityDomainRestoreData.WrappedKey.enc_key = jwe_wrapped.EncodeCompact(); + securityDomainRestoreData.WrappedKey.x5t_256 = Base64UrlEncoder.Encode(Utils.Sha256Thumbprint(cert)); + return securityDomainRestoreData; + } + catch (Exception ex) + { + throw new Exception("Failed to encrypt security domain data for restoring.", ex); + } + + } + + /// <summary> + /// Upload security domain data and initiate restoring. + /// </summary> + /// <param name="hsmName"></param> + /// <param name="securityDomainData">Encrypted by exchange key</param> + public void RestoreSecurityDomain(string hsmName, SecurityDomainRestoreData securityDomainData) + { + string securityDomain = JsonConvert.SerializeObject(new SecurityDomainWrapper + { + value = JsonConvert.SerializeObject(securityDomainData) + }); + + try + { + var httpRequest = new HttpRequestMessage + { + Method = HttpMethod.Post, + RequestUri = new UriBuilder(_uriHelper.CreateManagedHsmUri(hsmName)) + { + Path = $"/{_securityDomainPathFragment}/upload" + }.Uri, + Content = new StringContent(securityDomain) + }; + + PrepareRequest(httpRequest); + + var httpResponseMessage = HttpClient.SendAsync(httpRequest).ConfigureAwait(false).GetAwaiter().GetResult(); + var responseBody = httpResponseMessage.Content.ReadAsStringAsync().ConfigureAwait(false).GetAwaiter().GetResult(); + if (httpResponseMessage.IsSuccessStatusCode) + { + if (string.IsNullOrEmpty(responseBody)) + { + throw new Exception("Got empty response when restoring security domain."); + } + } + else + { + throw new Exception($"Got {httpResponseMessage.StatusCode}, {responseBody}"); + } + } + catch (Exception ex) + { + throw new Exception(Resources.RestoreSecurityDomainFailure, ex); + } + } + } +} diff --git a/src/KeyVault/KeyVault/SecurityDomain/Models/SecurityDomainRestoreData.cs b/src/KeyVault/KeyVault/SecurityDomain/Models/SecurityDomainRestoreData.cs new file mode 100644 index 000000000000..f2036055fcc7 --- /dev/null +++ b/src/KeyVault/KeyVault/SecurityDomain/Models/SecurityDomainRestoreData.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Microsoft.Azure.Commands.KeyVault.SecurityDomain.Models +{ + public class SecurityDomainRestoreData + { + public SecurityDomainRestoreData() + { + EncData = new EncData(); + WrappedKey = new Key(); + } + public EncData EncData { get; set; } + public Key WrappedKey { get; set; } + } +} diff --git a/src/KeyVault/KeyVault/SecurityDomain/Models/SecurityDomainTransferKey.cs b/src/KeyVault/KeyVault/SecurityDomain/Models/SecurityDomainTransferKey.cs new file mode 100644 index 000000000000..e251b04ab857 --- /dev/null +++ b/src/KeyVault/KeyVault/SecurityDomain/Models/SecurityDomainTransferKey.cs @@ -0,0 +1,13 @@ +using Newtonsoft.Json; + +namespace Microsoft.Azure.Commands.KeyVault.SecurityDomain.Models +{ + public class SecurityDomainTransferKey + { + [JsonProperty("transfer_key")] + public string TransferKey { get; set; } + + [JsonProperty("key_format")] + public string KeyFormat { get; set; } + } +} diff --git a/src/KeyVault/KeyVault/Track2Models/Track2HsmClient.cs b/src/KeyVault/KeyVault/Track2Models/Track2HsmClient.cs new file mode 100644 index 000000000000..08d4ac040e93 --- /dev/null +++ b/src/KeyVault/KeyVault/Track2Models/Track2HsmClient.cs @@ -0,0 +1,502 @@ +using Azure.Security.KeyVault.Administration; +using Azure; +using Azure.Security.KeyVault.Keys; +using Microsoft.Azure.Commands.Common.Authentication.Abstractions; +using Microsoft.Azure.Commands.KeyVault.Models; +using Microsoft.Azure.KeyVault.Models; +using System; +using System.Collections; +using System.Linq; +using AdminSdk = Azure.Security.KeyVault.Administration; +using System.Collections.Generic; +using System.IO; +using System.Net; +using KeyProperties = Azure.Security.KeyVault.Keys.KeyProperties; +using KeyVaultProperties = Microsoft.Azure.Commands.KeyVault.Properties; + +namespace Microsoft.Azure.Commands.KeyVault.Track2Models +{ + internal class Track2HsmClient + { + private Track2TokenCredential _credential; + private VaultUriHelper _uriHelper; + private KeyClient CreateKeyClient(string hsmName) => new KeyClient(_uriHelper.CreateVaultUri(hsmName), _credential); + private KeyVaultBackupClient CreateBackupClient(string hsmName) => new KeyVaultBackupClient(_uriHelper.CreateVaultUri(hsmName), _credential); + private KeyVaultAccessControlClient CreateRbacClient(string hsmName) => new KeyVaultAccessControlClient(_uriHelper.CreateVaultUri(hsmName), _credential); + + public Track2HsmClient(IAuthenticationFactory authFactory, IAzureContext context) + { + _credential = new Track2TokenCredential(new DataServiceCredential(authFactory, context, AzureEnvironment.ExtendedEndpoint.ManagedHsmServiceEndpointResourceId)); + _uriHelper = new VaultUriHelper(context.Environment.GetEndpoint(AzureEnvironment.ExtendedEndpoint.ManagedHsmServiceEndpointSuffix)); + } + + internal string BackupKey(string managedHsmName, string keyName, string outputBlobPath) + { + if (string.IsNullOrEmpty(managedHsmName)) + throw new ArgumentNullException(nameof(managedHsmName)); + if (string.IsNullOrEmpty(keyName)) + throw new ArgumentNullException(nameof(keyName)); + if (string.IsNullOrEmpty(outputBlobPath)) + throw new ArgumentNullException(nameof(outputBlobPath)); + + var client = CreateKeyClient(managedHsmName); + + return BackupKey(client, keyName, outputBlobPath); + } + + private string BackupKey(KeyClient client, string keyName, string outputBlobPath) + { + BackupKeyResult backupKeyResult; + try + { + backupKeyResult = new BackupKeyResult(client.BackupKeyAsync(keyName).GetAwaiter().GetResult()); + } + catch (Exception ex) + { + throw GetInnerException(ex); + } + + File.WriteAllBytes(outputBlobPath, backupKeyResult.Value); + + return outputBlobPath; + } + + internal PSKeyVaultKey RestoreKey(string managedHsmName, string inputBlobPath) + { + if (string.IsNullOrEmpty(managedHsmName)) + throw new ArgumentNullException(nameof(managedHsmName)); + if (string.IsNullOrEmpty(inputBlobPath)) + throw new ArgumentNullException(nameof(inputBlobPath)); + + var client = CreateKeyClient(managedHsmName); + + return RestoreKey(client, inputBlobPath); + } + + private PSKeyVaultKey RestoreKey(KeyClient client, string inputBlobPath) + { + var backupBlob = File.ReadAllBytes(inputBlobPath); + + KeyVaultKey keyBundle; + try + { + keyBundle = client.RestoreKeyBackupAsync(backupBlob).GetAwaiter().GetResult(); + } + catch (Exception ex) + { + throw GetInnerException(ex); + } + + return new PSKeyVaultKey(keyBundle, this._uriHelper); + } + + internal PSKeyVaultKey CreateKey(string managedHsmName, string keyName, PSKeyVaultKeyAttributes keyAttributes, int? size, string curveName) + { + var client = CreateKeyClient(managedHsmName); + return CreateKey(client, keyName, keyAttributes, size, curveName); + } + + private PSKeyVaultKey CreateKey(KeyClient client, string keyName, PSKeyVaultKeyAttributes keyAttributes, int? size, string curveName) + { + // todo duplicated code with Track2VaultClient.CreateKey + CreateKeyOptions options; + bool isHsm = keyAttributes.KeyType == KeyType.RsaHsm || keyAttributes.KeyType == KeyType.EcHsm; + + if (keyAttributes.KeyType == KeyType.Rsa || keyAttributes.KeyType == KeyType.RsaHsm) + { + options = new CreateRsaKeyOptions(keyName, isHsm) { KeySize = size }; + } + else if (keyAttributes.KeyType == KeyType.Ec || keyAttributes.KeyType == KeyType.EcHsm) + { + options = new CreateEcKeyOptions(keyName, isHsm); + if (string.IsNullOrEmpty(curveName)) + { + (options as CreateEcKeyOptions).CurveName = null; + } + else + { + (options as CreateEcKeyOptions).CurveName = new KeyCurveName(curveName); + } + } + else + { + options = new CreateKeyOptions(); + } + options.NotBefore = keyAttributes.NotBefore; + options.ExpiresOn = keyAttributes.Expires; + options.Enabled = keyAttributes.Enabled; + if (keyAttributes.KeyOps != null) + { + foreach (var keyOp in keyAttributes.KeyOps) + { + options.KeyOperations.Add(new KeyOperation(keyOp)); + } + } + if (keyAttributes.Tags != null) + { + foreach (DictionaryEntry entry in keyAttributes.Tags) + { + options.Tags.Add(entry.Key.ToString(), entry.Value.ToString()); + } + } + + if (keyAttributes.KeyType == KeyType.Rsa || keyAttributes.KeyType == KeyType.RsaHsm) + { + return new PSKeyVaultKey(client.CreateRsaKey(options as CreateRsaKeyOptions).Value, _uriHelper); + } + else if (keyAttributes.KeyType == KeyType.Ec || keyAttributes.KeyType == KeyType.EcHsm) + { + return new PSKeyVaultKey(client.CreateEcKey(options as CreateEcKeyOptions).Value, _uriHelper); + } + else if (keyAttributes.KeyType == KeyType.Oct || keyAttributes.KeyType.ToString() == "oct-HSM") + { + return new PSKeyVaultKey(client.CreateKey(keyName, KeyType.Oct, options).Value, _uriHelper); + } + else + { + throw new NotSupportedException($"{keyAttributes.KeyType} is not supported"); + } + } + + public Uri BackupHsm(string hsmName, Uri blobStorageUri, string sasToken) + { + var client = CreateBackupClient(hsmName); + var backup = client.StartBackup(blobStorageUri, sasToken); + Uri backupUri; + try + { + backupUri = backup.WaitForCompletionAsync().ConfigureAwait(false).GetAwaiter().GetResult().Value; + } + catch + { + throw; + } + return backupUri; + } + + public void RestoreHsm(string hsmName, Uri backupLocation, string sasToken, string backupFolder) + { + var client = CreateBackupClient(hsmName); + var restore = client.StartRestore(backupLocation, sasToken, backupFolder); + try + { + restore.WaitForCompletionAsync().ConfigureAwait(false).GetAwaiter().GetResult(); + } + catch + { + throw; + } + } + + public PSKeyVaultRoleDefinition[] GetHsmRoleDefinitions(string hsmName, string scope) + { + var client = CreateRbacClient(hsmName); + return client.GetRoleDefinitions(new KeyVaultRoleScope(scope)).Select(roleDefinition => new PSKeyVaultRoleDefinition(roleDefinition)).ToArray(); + } + + internal PSKeyVaultRoleAssignment[] GetHsmRoleAssignments(string hsmName, string scope) + { + var client = CreateRbacClient(hsmName); + return client.GetRoleAssignments(new KeyVaultRoleScope(scope)).Select(roleAssignment => new PSKeyVaultRoleAssignment(roleAssignment, hsmName)).ToArray(); + } + + internal PSKeyVaultRoleAssignment GetHsmRoleAssignment(string hsmName, string scope, string name) + { + var client = CreateRbacClient(hsmName); + var roleAssignment = client.GetRoleAssignment(new KeyVaultRoleScope(scope), name); + return new PSKeyVaultRoleAssignment(roleAssignment, hsmName); + } + + internal PSKeyVaultRoleAssignment CreateHsmRoleAssignment(string hsmName, string scope, string roleDefinitionId, string principalId) + { + var client = CreateRbacClient(hsmName); + var roleAssignment = client.CreateRoleAssignment(new KeyVaultRoleScope(scope), new AdminSdk.Models.KeyVaultRoleAssignmentProperties(roleDefinitionId, principalId)); + return new PSKeyVaultRoleAssignment(roleAssignment, hsmName); + } + + internal void RemoveHsmRoleAssignment(string hsmName, string scope, string roleAssignmentName) + { + var client = CreateRbacClient(hsmName); + client.DeleteRoleAssignment(new KeyVaultRoleScope(scope), roleAssignmentName); + } + + internal PSDeletedKeyVaultKey DeleteKey(string managedHsmName, string keyName) + { + if (string.IsNullOrEmpty(managedHsmName)) + throw new ArgumentNullException(nameof(managedHsmName)); + if (string.IsNullOrEmpty(keyName)) + throw new ArgumentNullException(nameof(keyName)); + + var client = CreateKeyClient(managedHsmName); + + return DeleteKey(client, keyName); + } + + private PSDeletedKeyVaultKey DeleteKey(KeyClient client, string keyName) + { + DeletedKey deletedKey; + try + { + deletedKey = client.StartDeleteKeyAsync(keyName).ConfigureAwait(false).GetAwaiter().GetResult() + .WaitForCompletionAsync().ConfigureAwait(false).GetAwaiter().GetResult(); + } + catch (Exception ex) + { + throw GetInnerException(ex); + } + + return new PSDeletedKeyVaultKey(deletedKey, this._uriHelper); + } + + internal PSKeyVaultKey RecoverKey(string managedHsmName, string keyName) + { + if (string.IsNullOrEmpty(managedHsmName)) + throw new ArgumentNullException("managedHsmName"); + if (string.IsNullOrEmpty(keyName)) + throw new ArgumentNullException("keyName"); + + var client = CreateKeyClient(managedHsmName); + + return RecoverKey(client, keyName); + } + + private PSKeyVaultKey RecoverKey(KeyClient client, string keyName) + { + KeyVaultKey recoveredKey; + try + { + recoveredKey = client.StartRecoverDeletedKeyAsync(keyName).GetAwaiter().GetResult() + .WaitForCompletionAsync().GetAwaiter().GetResult().Value; + } + catch (Exception ex) + { + throw GetInnerException(ex); + } + + return new PSKeyVaultKey(recoveredKey, this._uriHelper); + } + + internal PSKeyVaultKey UpdateKey(string managedHsmName, string keyName, string keyVersion, PSKeyVaultKeyAttributes keyAttributes) + { + if (string.IsNullOrEmpty(managedHsmName)) + throw new ArgumentNullException(nameof(managedHsmName)); + if (string.IsNullOrEmpty(keyName)) + throw new ArgumentNullException(nameof(keyName)); + if (keyAttributes == null) + throw new ArgumentNullException(nameof(keyAttributes)); + + var client = CreateKeyClient(managedHsmName); + + return UpdateKey(client, keyName, keyVersion, keyAttributes); + } + + private PSKeyVaultKey UpdateKey(KeyClient client, string keyName, string keyVersion, PSKeyVaultKeyAttributes keyAttributes) + { + KeyVaultKey keyBundle = client.GetKeyAsync(keyName, keyVersion).GetAwaiter().GetResult(); + KeyProperties keyProperties = keyBundle.Properties; + keyProperties.Enabled = keyAttributes.Enabled; + keyProperties.ExpiresOn = keyAttributes.Expires; + keyProperties.NotBefore = keyAttributes.NotBefore; + + if (keyAttributes.Tags != null) + { + keyProperties.Tags.Clear(); + foreach (KeyValuePair<string, string> entry in keyAttributes.TagsDirectionary) + { + keyProperties.Tags.Add(entry.Key, entry.Value); + } + } + + try + { + keyBundle = client.UpdateKeyPropertiesAsync(keyProperties, keyAttributes.KeyOps?.Cast<KeyOperation>().ToList()) + .GetAwaiter().GetResult(); + } + catch (Exception ex) + { + throw GetInnerException(ex); + } + + return new PSKeyVaultKey(keyBundle, this._uriHelper); + } + + internal PSKeyVaultKey GetKey(string managedHsmName, string keyName, string keyVersion) + { + if (string.IsNullOrEmpty(managedHsmName)) + throw new ArgumentNullException(nameof(managedHsmName)); + if (string.IsNullOrEmpty(keyName)) + throw new ArgumentNullException(nameof(keyName)); + + var client = CreateKeyClient(managedHsmName); + return GetKey(client, keyName, keyVersion); + } + + private PSKeyVaultKey GetKey(KeyClient client, string keyName, string keyVersion) + { + KeyVaultKey keyBundle; + try + { + keyBundle = client.GetKeyAsync(keyName, keyVersion).GetAwaiter().GetResult(); + } + catch (RequestFailedException ex) + { + if (ex.Status == (int)HttpStatusCode.NotFound) + return null; + else + throw; + } + catch (Exception ex) + { + throw GetInnerException(ex); + } + + return new PSKeyVaultKey(keyBundle, this._uriHelper); + } + + internal IEnumerable<PSKeyVaultKeyIdentityItem> GetKeys(string managedHsmName) + { + if (string.IsNullOrEmpty(managedHsmName)) + throw new ArgumentException(KeyVaultProperties.Resources.InvalidHsmName); + + var client = CreateKeyClient(managedHsmName); + + try + { + IEnumerable<KeyProperties> result = client.GetPropertiesOfKeys(); + + return (result == null) ? new List<PSKeyVaultKeyIdentityItem>() : + result.Select((keyProperties) => new PSKeyVaultKeyIdentityItem(keyProperties, this._uriHelper)); + } + catch (Exception ex) + { + throw GetInnerException(ex); + } + } + + internal IEnumerable<PSKeyVaultKeyIdentityItem> GetKeyAllVersions(string managedHsmName, string keyName) + { + if (string.IsNullOrEmpty(managedHsmName)) + throw new ArgumentException(KeyVaultProperties.Resources.InvalidHsmName); + + if (string.IsNullOrEmpty(keyName)) + throw new ArgumentException(KeyVaultProperties.Resources.InvalidKeyName); + + var client = CreateKeyClient(managedHsmName); + return GetAllVersionKeys(client, keyName); + } + + private IEnumerable<PSKeyVaultKeyIdentityItem> GetAllVersionKeys(KeyClient client, string keyName) + { + try + { + IEnumerable<KeyProperties> result = client.GetPropertiesOfKeyVersions(keyName); + return (result == null) ? new List<PSKeyVaultKeyIdentityItem>() : + result.Select((keyProperties) => new PSKeyVaultKeyIdentityItem(keyProperties, this._uriHelper)); + } + catch (Exception ex) + { + throw GetInnerException(ex); + } + } + + internal PSDeletedKeyVaultKey GetDeletedKey(string managedHsmName, string keyName) + { + if (string.IsNullOrEmpty(managedHsmName)) + throw new ArgumentNullException(nameof(managedHsmName)); + if (string.IsNullOrEmpty(keyName)) + throw new ArgumentNullException(nameof(keyName)); + + var client = CreateKeyClient(managedHsmName); + + return GetDeletedKey(client, keyName); + } + + private PSDeletedKeyVaultKey GetDeletedKey(KeyClient client, string keyName) + { + DeletedKey deletedKeyBundle; + try + { + deletedKeyBundle = client.GetDeletedKeyAsync(keyName).GetAwaiter().GetResult(); + } + catch (RequestFailedException ex) + { + if (ex.Status == (int)HttpStatusCode.NotFound) + return null; + else + throw; + } + catch (Exception ex) + { + throw GetInnerException(ex); + } + + return new PSDeletedKeyVaultKey(deletedKeyBundle, _uriHelper); + } + + internal IEnumerable<PSDeletedKeyVaultKeyIdentityItem> GetDeletedKeys(string managedHsmName) + { + if (string.IsNullOrEmpty(managedHsmName)) + throw new ArgumentException(KeyVaultProperties.Resources.InvalidVaultName); + + var client = CreateKeyClient(managedHsmName); + + try + { + IEnumerable<DeletedKey> result = client.GetDeletedKeys(); + + return (result == null) ? new List<PSDeletedKeyVaultKeyIdentityItem>() : + result.Select((deletedKey) => new PSDeletedKeyVaultKeyIdentityItem(deletedKey, this._uriHelper)); + } + catch (Exception ex) + { + throw GetInnerException(ex); + } + } + + internal PSKeyVaultKey ImportKey(string managedHsmName, string keyName, JsonWebKey webKey) + { + if (string.IsNullOrEmpty(managedHsmName)) + throw new ArgumentNullException(nameof(managedHsmName)); + if (string.IsNullOrEmpty(keyName)) + throw new ArgumentNullException(nameof(keyName)); + if (webKey == null) + throw new ArgumentNullException(nameof(webKey)); + var client = CreateKeyClient(managedHsmName); + + try + { + var key = client.ImportKeyAsync(keyName, webKey).GetAwaiter().GetResult(); + return new PSKeyVaultKey(key, this._uriHelper); + } + catch (Exception ex) + { + throw GetInnerException(ex); + } + } + + internal void PurgeKey(string managedHsmName, string keyName) + { + if (string.IsNullOrEmpty(managedHsmName)) + throw new ArgumentNullException("managedHsmName"); + if (string.IsNullOrEmpty(keyName)) + throw new ArgumentNullException("keyName"); + + var client = CreateKeyClient(managedHsmName); + + try + { + client.PurgeDeletedKeyAsync(keyName).GetAwaiter().GetResult(); + } + catch (Exception ex) + { + throw GetInnerException(ex); + } + } + + private Exception GetInnerException(Exception exception) + { + while (exception.InnerException != null) exception = exception.InnerException; + return exception; + } + } +} diff --git a/src/KeyVault/KeyVault/Track2Models/Track2KeyVaultDataServiceClient.cs b/src/KeyVault/KeyVault/Track2Models/Track2KeyVaultDataServiceClient.cs new file mode 100644 index 000000000000..172cdac59d81 --- /dev/null +++ b/src/KeyVault/KeyVault/Track2Models/Track2KeyVaultDataServiceClient.cs @@ -0,0 +1,496 @@ +using Azure.Security.KeyVault.Keys; +using Microsoft.Azure.Commands.Common.Authentication.Abstractions; +using Microsoft.Azure.Commands.KeyVault.Models; +using Microsoft.Azure.KeyVault.Models; +using System; +using System.Collections; +using System.Collections.Generic; +using System.Security; +using System.Security.Cryptography.X509Certificates; +using KeyVaultProperties = Microsoft.Azure.Commands.KeyVault.Properties; + +namespace Microsoft.Azure.Commands.KeyVault.Track2Models +{ + internal class Track2KeyVaultDataServiceClient : IKeyVaultDataServiceClient + { + public Track2KeyVaultDataServiceClient(IAuthenticationFactory authFactory, IAzureContext context) + { + _authFactory = authFactory ?? throw new ArgumentNullException(nameof(authFactory)); + _context = context ?? throw new ArgumentNullException(nameof(context)); + + if (context.Environment == null) + { + throw new ArgumentException(KeyVaultProperties.Resources.InvalidAzureEnvironment); + } + } + + private IAuthenticationFactory _authFactory; + private IAzureContext _context; + + /// <summary> + /// For lazy instanciating. Please use properties instead of fields. + /// </summary> + private Track2VaultClient VaultClient => _vaultClient ?? (_vaultClient = new Track2VaultClient(_authFactory, _context)); + private Track2HsmClient HsmClient => _hsmClient ?? (_hsmClient = new Track2HsmClient(_authFactory, _context)); + + private Track2VaultClient _vaultClient; + private Track2HsmClient _hsmClient; + + #region KeyVault-related methods + + public string BackupCertificate(string vaultName, string certificateName, string outputBlobPath) + { + throw new NotImplementedException(); + } + + public string BackupKey(string vaultName, string keyName, string outputBlobPath) + { + throw new NotImplementedException(); + } + + public string BackupManagedStorageAccount(string vaultName, string managedStorageAccountName, string outputBlobPath) + { + throw new NotImplementedException(); + } + + public string BackupSecret(string vaultName, string secretName, string outputBlobPath) + { + throw new NotImplementedException(); + } + + public PSKeyVaultCertificateOperation CancelCertificateOperation(string vaultName, string certificateName) + { + throw new NotImplementedException(); + } + + public PSKeyVaultKey CreateKey(string vaultName, string keyName, PSKeyVaultKeyAttributes keyAttributes, int? size, string curveName) + { + return VaultClient.CreateKey(vaultName, keyName, keyAttributes, size, curveName); + } + + public PSDeletedKeyVaultCertificate DeleteCertificate(string vaultName, string certName) + { + throw new NotImplementedException(); + } + + public PSKeyVaultCertificateIssuer DeleteCertificateIssuer(string vaultName, string issuerName) + { + throw new NotImplementedException(); + } + + public PSKeyVaultCertificateOperation DeleteCertificateOperation(string vaultName, string certificateName) + { + throw new NotImplementedException(); + } + + public PSDeletedKeyVaultKey DeleteKey(string vaultName, string keyName) + { + throw new NotImplementedException(); + } + + public PSDeletedKeyVaultManagedStorageAccount DeleteManagedStorageAccount(string vaultName, string managedStorageAccountName) + { + throw new NotImplementedException(); + } + + public PSDeletedKeyVaultManagedStorageSasDefinition DeleteManagedStorageSasDefinition(string vaultName, string managedStorageAccountName, string sasDefinitionName) + { + throw new NotImplementedException(); + } + + public PSDeletedKeyVaultSecret DeleteSecret(string vaultName, string secretName) + { + throw new NotImplementedException(); + } + + public PSKeyVaultCertificateOperation EnrollCertificate(string vaultName, string certificateName, CertificatePolicy certificatePolicy, IDictionary<string, string> tags) + { + throw new NotImplementedException(); + } + + public PSKeyVaultCertificate GetCertificate(string vaultName, string certName, string certificateVersion) + { + throw new NotImplementedException(); + } + + public IEnumerable<PSKeyVaultCertificateContact> GetCertificateContacts(string vaultName) + { + throw new NotImplementedException(); + } + + public PSKeyVaultCertificateIssuer GetCertificateIssuer(string vaultName, string issuerName) + { + throw new NotImplementedException(); + } + + public IEnumerable<PSKeyVaultCertificateIssuerIdentityItem> GetCertificateIssuers(KeyVaultObjectFilterOptions options) + { + throw new NotImplementedException(); + } + + public PSKeyVaultCertificateOperation GetCertificateOperation(string vaultName, string certificateName) + { + throw new NotImplementedException(); + } + + public PSKeyVaultCertificatePolicy GetCertificatePolicy(string vaultName, string certificateName) + { + throw new NotImplementedException(); + } + + public IEnumerable<PSKeyVaultCertificateIdentityItem> GetCertificates(KeyVaultCertificateFilterOptions options) + { + throw new NotImplementedException(); + } + + public IEnumerable<PSKeyVaultCertificateIdentityItem> GetCertificateVersions(KeyVaultObjectFilterOptions options) + { + throw new NotImplementedException(); + } + + public PSDeletedKeyVaultCertificate GetDeletedCertificate(string vaultName, string certName) + { + throw new NotImplementedException(); + } + + public IEnumerable<PSDeletedKeyVaultCertificateIdentityItem> GetDeletedCertificates(KeyVaultCertificateFilterOptions options) + { + throw new NotImplementedException(); + } + + public PSDeletedKeyVaultKey GetDeletedKey(string vaultName, string name) + { + throw new NotImplementedException(); + } + + public IEnumerable<PSDeletedKeyVaultKeyIdentityItem> GetDeletedKeys(KeyVaultObjectFilterOptions options) + { + throw new NotImplementedException(); + } + + public PSDeletedKeyVaultManagedStorageAccount GetDeletedManagedStorageAccount(string vaultName, string managedStorageAccountName) + { + throw new NotImplementedException(); + } + + public IEnumerable<PSDeletedKeyVaultManagedStorageAccountIdentityItem> GetDeletedManagedStorageAccounts(KeyVaultObjectFilterOptions options) + { + throw new NotImplementedException(); + } + + public PSDeletedKeyVaultManagedStorageSasDefinition GetDeletedManagedStorageSasDefinition(string vaultName, string managedStorageAccountName, string sasDefinitionName) + { + throw new NotImplementedException(); + } + + public IEnumerable<PSDeletedKeyVaultManagedStorageSasDefinitionIdentityItem> GetDeletedManagedStorageSasDefinitions(KeyVaultStorageSasDefinitiontFilterOptions options) + { + throw new NotImplementedException(); + } + + public PSDeletedKeyVaultSecret GetDeletedSecret(string vaultName, string name) + { + throw new NotImplementedException(); + } + + public IEnumerable<PSDeletedKeyVaultSecretIdentityItem> GetDeletedSecrets(KeyVaultObjectFilterOptions options) + { + throw new NotImplementedException(); + } + + public PSKeyVaultKey GetKey(string vaultName, string keyName, string keyVersion) + { + throw new NotImplementedException(); + } + + public IEnumerable<PSKeyVaultKeyIdentityItem> GetKeys(KeyVaultObjectFilterOptions options) + { + throw new NotImplementedException(); + } + + public IEnumerable<PSKeyVaultKeyIdentityItem> GetKeyVersions(KeyVaultObjectFilterOptions options) + { + throw new NotImplementedException(); + } + + public PSKeyVaultManagedStorageAccount GetManagedStorageAccount(string vaultName, string managedStorageAccountName) + { + throw new NotImplementedException(); + } + + public IEnumerable<PSKeyVaultManagedStorageAccountIdentityItem> GetManagedStorageAccounts(KeyVaultObjectFilterOptions options) + { + throw new NotImplementedException(); + } + + public PSKeyVaultManagedStorageSasDefinition GetManagedStorageSasDefinition(string vaultName, string managedStorageAccountName, string sasDefinitionName) + { + throw new NotImplementedException(); + } + + public IEnumerable<PSKeyVaultManagedStorageSasDefinitionIdentityItem> GetManagedStorageSasDefinitions(KeyVaultStorageSasDefinitiontFilterOptions options) + { + throw new NotImplementedException(); + } + + public PSKeyVaultSecret GetSecret(string vaultName, string secretName, string secretVersion) + { + throw new NotImplementedException(); + } + + public IEnumerable<PSKeyVaultSecretIdentityItem> GetSecrets(KeyVaultObjectFilterOptions options) + { + throw new NotImplementedException(); + } + + public IEnumerable<PSKeyVaultSecretIdentityItem> GetSecretVersions(KeyVaultObjectFilterOptions options) + { + throw new NotImplementedException(); + } + + public PSKeyVaultCertificate ImportCertificate(string vaultName, string certName, string base64CertColl, SecureString certPassword, IDictionary<string, string> tags) + { + throw new NotImplementedException(); + } + + public PSKeyVaultCertificate ImportCertificate(string vaultName, string certName, X509Certificate2Collection certificateCollection, IDictionary<string, string> tags) + { + throw new NotImplementedException(); + } + + public PSKeyVaultKey ImportKey(string vaultName, string keyName, PSKeyVaultKeyAttributes keyAttributes, Microsoft.Azure.KeyVault.WebKey.JsonWebKey webKey, bool? importToHsm) + { + throw new NotImplementedException(); + } + + public PSKeyVaultCertificate MergeCertificate(string vaultName, string certName, X509Certificate2Collection certs, IDictionary<string, string> tags) + { + throw new NotImplementedException(); + } + + public void PurgeCertificate(string vaultName, string certName) + { + throw new NotImplementedException(); + } + + public void PurgeKey(string vaultName, string name) + { + throw new NotImplementedException(); + } + + public void PurgeManagedStorageAccount(string vaultName, string managedStorageAccountName) + { + throw new NotImplementedException(); + } + + public void PurgeSecret(string vaultName, string secretName) + { + throw new NotImplementedException(); + } + + public PSKeyVaultCertificate RecoverCertificate(string vaultName, string certName) + { + throw new NotImplementedException(); + } + + public PSKeyVaultKey RecoverKey(string vaultName, string keyName) + { + throw new NotImplementedException(); + } + + public PSKeyVaultManagedStorageAccount RecoverManagedStorageAccount(string vaultName, string deletedManagedStorageAccountName) + { + throw new NotImplementedException(); + } + + public PSKeyVaultManagedStorageSasDefinition RecoverManagedStorageSasDefinition(string vaultname, string managedStorageAccountName, string sasDefinitionName) + { + throw new NotImplementedException(); + } + + public PSKeyVaultSecret RecoverSecret(string vaultName, string secretName) + { + throw new NotImplementedException(); + } + + public PSKeyVaultManagedStorageAccount RegenerateManagedStorageAccountKey(string vaultName, string managedStorageAccountName, string keyName) + { + throw new NotImplementedException(); + } + + public PSKeyVaultCertificate RestoreCertificate(string vaultName, string inputBlobPath) + { + throw new NotImplementedException(); + } + + public PSKeyVaultKey RestoreKey(string vaultName, string inputBlobPath) + { + throw new NotImplementedException(); + } + + public PSKeyVaultManagedStorageAccount RestoreManagedStorageAccount(string vaultName, string inputBlobPath) + { + throw new NotImplementedException(); + } + + public PSKeyVaultSecret RestoreSecret(string vaultName, string inputBlobPath) + { + throw new NotImplementedException(); + } + + public IEnumerable<PSKeyVaultCertificateContact> SetCertificateContacts(string vaultName, IEnumerable<PSKeyVaultCertificateContact> contacts) + { + throw new NotImplementedException(); + } + + public PSKeyVaultCertificateIssuer SetCertificateIssuer(string vaultName, string issuerName, string issuerProvider, string accountId, SecureString apiKey, PSKeyVaultCertificateOrganizationDetails organizationDetails) + { + throw new NotImplementedException(); + } + + public PSKeyVaultManagedStorageAccount SetManagedStorageAccount(string vaultName, string managedStorageAccountName, string storageResourceId, string activeKeyName, bool? autoRegenerateKey, TimeSpan? regenerationPeriod, PSKeyVaultManagedStorageAccountAttributes managedStorageAccountAttributes, Hashtable tags) + { + throw new NotImplementedException(); + } + + public PSKeyVaultManagedStorageSasDefinition SetManagedStorageSasDefinition(string vaultName, string managedStorageAccountName, string sasDefinitionName, string templateUri, string sasType, string validityPeriod, PSKeyVaultManagedStorageSasDefinitionAttributes sasDefinitionAttributes, Hashtable tags) + { + throw new NotImplementedException(); + } + + public PSKeyVaultSecret SetSecret(string vaultName, string secretName, SecureString secretValue, PSKeyVaultSecretAttributes secretAttributes) + { + throw new NotImplementedException(); + } + + public PSKeyVaultCertificate UpdateCertificate(string vaultName, string certificateName, string certificateVersion, CertificateAttributes certificateAttributes, IDictionary<string, string> tags) + { + throw new NotImplementedException(); + } + + public PSKeyVaultCertificatePolicy UpdateCertificatePolicy(string vaultName, string certificateName, CertificatePolicy certificatePolicy) + { + throw new NotImplementedException(); + } + + public PSKeyVaultKey UpdateKey(string vaultName, string keyName, string keyVersion, PSKeyVaultKeyAttributes keyAttributes) + { + throw new NotImplementedException(); + } + + public PSKeyVaultManagedStorageAccount UpdateManagedStorageAccount(string vaultName, string managedStorageAccountName, string activeKeyName, bool? autoRegenerateKey, TimeSpan? regenerationPeriod, PSKeyVaultManagedStorageAccountAttributes managedStorageAccountAttributes, Hashtable tags) + { + throw new NotImplementedException(); + } + + public PSKeyVaultSecret UpdateSecret(string vaultName, string secretName, string secretVersion, PSKeyVaultSecretAttributes secretAttributes) + { + throw new NotImplementedException(); + } + + public Uri BackupHsm(string hsmName, Uri blobStorageUri, string sasToken) + { + return HsmClient.BackupHsm(hsmName, blobStorageUri, sasToken); + } + + public void RestoreHsm(string hsmName, Uri backupLocation, string sasToken, string backupFolder) + { + HsmClient.RestoreHsm(hsmName, backupLocation, sasToken, backupFolder); + } + + public PSKeyVaultRoleDefinition[] GetHsmRoleDefinitions(string hsmName, string scope) + { + return HsmClient.GetHsmRoleDefinitions(hsmName, scope); + } + + public PSKeyVaultRoleAssignment[] GetHsmRoleAssignments(string hsmName, string scope) + { + return HsmClient.GetHsmRoleAssignments(hsmName, scope); + } + + public PSKeyVaultRoleAssignment GetHsmRoleAssignment(string hsmName, string scope, string name) + { + return HsmClient.GetHsmRoleAssignment(hsmName, scope, name); + } + + public PSKeyVaultRoleAssignment CreateHsmRoleAssignment(string hsmName, string scope, string roleDefinitionId, string principalId) + { + return HsmClient.CreateHsmRoleAssignment(hsmName, scope, roleDefinitionId, principalId); + } + + public void RemoveHsmRoleAssignment(string hsmName, string scope, string roleAssignmentName) + { + HsmClient.RemoveHsmRoleAssignment(hsmName, scope, roleAssignmentName); + } + #endregion + + #region ManagedHsm-related methods + + public string BackupManagedHsmKey(string managedHsmName, string keyName, string outputBlobPath) + { + return HsmClient.BackupKey(managedHsmName, keyName, outputBlobPath); + } + public PSKeyVaultKey RestoreManagedHsmKey(string managedHsmName, string inputBlobPath) + { + return HsmClient.RestoreKey(managedHsmName, inputBlobPath); + } + + public PSKeyVaultKey CreateManagedHsmKey(string managedHsmName, string keyName, PSKeyVaultKeyAttributes keyAttributes, int? size, string curveName) + { + return HsmClient.CreateKey(managedHsmName, keyName, keyAttributes, size, curveName); + } + + public PSDeletedKeyVaultKey DeleteManagedHsmKey(string managedHsmName, string keyName) + { + return HsmClient.DeleteKey(managedHsmName, keyName); + } + + public PSKeyVaultKey UpdateManagedHsmKey(string managedHsmName, string keyName, string keyVersion, PSKeyVaultKeyAttributes keyAttributes) + { + return HsmClient.UpdateKey(managedHsmName, keyName, keyVersion, keyAttributes); + } + + public PSKeyVaultKey RecoverManagedHsmKey(string managedHsmName, string keyName) + { + return HsmClient.RecoverKey(managedHsmName, keyName); + } + + public PSDeletedKeyVaultKey GetManagedHsmDeletedKey(string managedHsmName, string keyName) + { + return HsmClient.GetDeletedKey(managedHsmName, keyName); + } + + public IEnumerable<PSDeletedKeyVaultKeyIdentityItem> GetManagedHsmDeletedKeys(string managedHsmName) + { + return HsmClient.GetDeletedKeys(managedHsmName); + } + + public PSKeyVaultKey GetManagedHsmKey(string managedHsmName, string keyName, string keyVersion) + { + return HsmClient.GetKey(managedHsmName, keyName, keyVersion); + } + + public IEnumerable<PSKeyVaultKeyIdentityItem> GetManagedHsmKeys(string managedHsmName) + { + return HsmClient.GetKeys(managedHsmName); + } + + public IEnumerable<PSKeyVaultKeyIdentityItem> GetManagedHsmKeyAllVersions(string managedHsmName, string keyName) + { + return HsmClient.GetKeyAllVersions(managedHsmName, keyName); + } + + public void PurgeManagedHsmKey(string managedHsmName, string keyName) + { + HsmClient.PurgeKey(managedHsmName, keyName); + } + + public PSKeyVaultKey ImportManagedHsmKey(string managedHsmName, string keyName, JsonWebKey webKey) + { + return HsmClient.ImportKey(managedHsmName, keyName, webKey); + } + + #endregion + + } +} \ No newline at end of file diff --git a/src/KeyVault/KeyVault/Track2Models/Track2ModelConvertionExtensions.cs b/src/KeyVault/KeyVault/Track2Models/Track2ModelConvertionExtensions.cs new file mode 100644 index 000000000000..4227bcdb4fde --- /dev/null +++ b/src/KeyVault/KeyVault/Track2Models/Track2ModelConvertionExtensions.cs @@ -0,0 +1,59 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Track2Sdk = Azure.Security.KeyVault.Keys; +using Track1Sdk = Microsoft.Azure.KeyVault.WebKey; +using System.Security.Cryptography; +using System.Linq; + +namespace Microsoft.Azure.Commands.KeyVault +{ + internal static class Track2ModelConvertionExtensions + { + /// <summary> + /// Converts a track 2 JsonWebKey object to track 1 type + /// </summary> + /// <param name="track2Key">track 2 key</param> + /// <returns>equivalent track 1 key</returns> + public static Track1Sdk.JsonWebKey ToTrack1JsonWebKey(this Track2Sdk.JsonWebKey track2Key) + { + Track1Sdk.JsonWebKey track1Key; + + // convert key specific properties + if (track2Key.KeyType == Track2Sdk.KeyType.Ec || track2Key.KeyType == Track2Sdk.KeyType.EcHsm) + { + track1Key = new Track1Sdk.JsonWebKey(new Track1Sdk.ECParameters() + { + Curve = track2Key.CurveName.ToString(), + X = track2Key.X, + Y = track2Key.Y, + D = track2Key.D + }); + } + else if (track2Key.KeyType == Track2Sdk.KeyType.Rsa || track2Key.KeyType == Track2Sdk.KeyType.RsaHsm) + { + track1Key = new Track1Sdk.JsonWebKey(track2Key.ToRSA()); + } + // SDK doesn't have a definition of OctHSM, so I need to use string comparison + else if (track2Key.KeyType == Track2Sdk.KeyType.Oct || track2Key.KeyType.ToString() == @"oct-HSM") + { + track1Key = new Track1Sdk.JsonWebKey(); + track1Key.Kty = track2Key.KeyType.ToString(); + } + else + { + throw new Exception("Not supported"); + } + + // metadata + track1Key.KeyOps = new List<string>(); + foreach (var op in track2Key.KeyOps) + { + track1Key.KeyOps.Add(op.ToString()); + } + track1Key.Kid = track2Key.Id; + + return track1Key; + } + } +} diff --git a/src/KeyVault/KeyVault/Track2Models/Track2TokenCredential.cs b/src/KeyVault/KeyVault/Track2Models/Track2TokenCredential.cs new file mode 100644 index 000000000000..5a30578274d0 --- /dev/null +++ b/src/KeyVault/KeyVault/Track2Models/Track2TokenCredential.cs @@ -0,0 +1,28 @@ +using System; +using System.Threading; +using System.Threading.Tasks; +using Azure.Core; +using Microsoft.Azure.Commands.KeyVault.Models; + +namespace Microsoft.Azure.Commands.KeyVault.Track2Models +{ + internal class Track2TokenCredential : TokenCredential + { + private readonly DataServiceCredential dataServiceCredential; + + public Track2TokenCredential(DataServiceCredential dataServiceCredential) + { + this.dataServiceCredential = dataServiceCredential; + } + + public override AccessToken GetToken(TokenRequestContext requestContext, CancellationToken cancellationToken) + { + return new AccessToken(dataServiceCredential.GetToken(), DateTimeOffset.UtcNow); + } + + public override ValueTask<AccessToken> GetTokenAsync(TokenRequestContext requestContext, CancellationToken cancellationToken) + { + return new ValueTask<AccessToken>(this.GetToken(requestContext, cancellationToken)); + } + } +} \ No newline at end of file diff --git a/src/KeyVault/KeyVault/Track2Models/Track2VaultClient.cs b/src/KeyVault/KeyVault/Track2Models/Track2VaultClient.cs new file mode 100644 index 000000000000..9b9b94fd2cd1 --- /dev/null +++ b/src/KeyVault/KeyVault/Track2Models/Track2VaultClient.cs @@ -0,0 +1,82 @@ +using Azure.Security.KeyVault.Keys; +using Microsoft.Azure.Commands.Common.Authentication.Abstractions; +using Microsoft.Azure.Commands.KeyVault.Models; +using System; +using System.Collections; + +namespace Microsoft.Azure.Commands.KeyVault.Track2Models +{ + internal class Track2VaultClient + { + public Track2VaultClient(IAuthenticationFactory authFactory, IAzureContext context) + { + _credential = new Track2TokenCredential(new DataServiceCredential(authFactory, context, AzureEnvironment.Endpoint.AzureKeyVaultServiceEndpointResourceId)); + _vaultUriHelper = new VaultUriHelper(context.Environment.GetEndpoint(AzureEnvironment.Endpoint.AzureKeyVaultDnsSuffix)); + } + + private Track2TokenCredential _credential; + private VaultUriHelper _vaultUriHelper; + + // After a track 2 client is created, the vault / hsm uri associated to it cannot be changed + // however azure powershell may deal with multiple vaults / hsms + // so I choose to create a new client for every new request + // todo: consider caching clients + private KeyClient CreateKeyClient(string vaultName) => new KeyClient(_vaultUriHelper.CreateVaultUri(vaultName), _credential); + + internal PSKeyVaultKey CreateKey(string vaultName, string keyName, PSKeyVaultKeyAttributes keyAttributes, int? size, string curveName) + { + var client = CreateKeyClient(vaultName); + return CreateKey(client, keyName, keyAttributes, size, curveName); + } + + private PSKeyVaultKey CreateKey(KeyClient client, string keyName, PSKeyVaultKeyAttributes keyAttributes, int? size, string curveName) + { + CreateKeyOptions options; + bool isHsm = keyAttributes.KeyType == KeyType.RsaHsm || keyAttributes.KeyType == KeyType.EcHsm; + + if (keyAttributes.KeyType == KeyType.Rsa || keyAttributes.KeyType == KeyType.RsaHsm) + { + options = new CreateRsaKeyOptions(keyName, isHsm) { KeySize = size }; + } + else if (keyAttributes.KeyType == KeyType.Ec || keyAttributes.KeyType == KeyType.EcHsm) + { + options = new CreateEcKeyOptions(keyName, isHsm) { CurveName = string.IsNullOrEmpty(curveName) ? null : new KeyCurveName(curveName) }; + } + else + { + // oct (AES) is only supported by managed HSM + throw new NotSupportedException($"{keyAttributes.KeyType} is not supported"); + } + options.NotBefore = keyAttributes.NotBefore; + options.ExpiresOn = keyAttributes.Expires; + options.Enabled = keyAttributes.Enabled; + if (keyAttributes.KeyOps != null) + { + foreach (var keyOp in keyAttributes.KeyOps) + { + options.KeyOperations.Add(new KeyOperation(keyOp)); + } + } + if (keyAttributes.Tags != null) + { + foreach (DictionaryEntry entry in keyAttributes.Tags) + { + options.Tags.Add(entry.Key.ToString(), entry.Value.ToString()); + } + } + + if (keyAttributes.KeyType == KeyType.Rsa || keyAttributes.KeyType == KeyType.RsaHsm) + { + return new PSKeyVaultKey(client.CreateRsaKey(options as CreateRsaKeyOptions).Value, _vaultUriHelper); + } + else if (keyAttributes.KeyType == KeyType.Ec || keyAttributes.KeyType == KeyType.EcHsm) + { + return new PSKeyVaultKey(client.CreateEcKey(options as CreateEcKeyOptions).Value, _vaultUriHelper); + } + else + { + throw new NotSupportedException($"{keyAttributes.KeyType} is not supported"); + } + } + } +} diff --git a/src/KeyVault/KeyVault/help/Add-AzKeyVaultNetworkRule.md b/src/KeyVault/KeyVault/help/Add-AzKeyVaultNetworkRule.md index 1e315bdaec09..6c1d7806c035 100644 --- a/src/KeyVault/KeyVault/help/Add-AzKeyVaultNetworkRule.md +++ b/src/KeyVault/KeyVault/help/Add-AzKeyVaultNetworkRule.md @@ -36,7 +36,7 @@ Add-AzKeyVaultNetworkRule [-ResourceId] <String> [-IpAddressRange <String[]>] ## DESCRIPTION The **Add-AzKeyVaultNetworkRule** cmdlet grants or restricts access to a key vault to a set of caller designated by their IP addresses or the virtual network to which they belong. The rule has the potential to restrict access for other users, applications, or security groups which have been granted permissions via the access policy. -Please note that any IP range inside `10.0.0.0–10.255.255.255` (private IP addresses) cannot be used to add network rules. +Please note that any IP range inside `10.0.0.0-10.255.255.255` (private IP addresses) cannot be used to add network rules. ## EXAMPLES diff --git a/src/KeyVault/KeyVault/help/Add-AzManagedHsmKey.md b/src/KeyVault/KeyVault/help/Add-AzManagedHsmKey.md new file mode 100644 index 000000000000..98b233677141 --- /dev/null +++ b/src/KeyVault/KeyVault/help/Add-AzManagedHsmKey.md @@ -0,0 +1,440 @@ +--- +external help file: Microsoft.Azure.PowerShell.Cmdlets.KeyVault.dll-Help.xml +Module Name: Az.KeyVault +online version: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/add-azmanagedhsmkey +schema: 2.0.0 +--- + +# Add-AzManagedHsmKey + +## SYNOPSIS +Creates a key in a managed HSM or imports a key into a managed HSM. + +## SYNTAX + +### InteractiveCreate (Default) +``` +Add-AzManagedHsmKey [-HsmName] <String> [-Name] <String> -KeyType <String> [-CurveName <String>] [-Disable] + [-KeyOps <String[]>] [-Expires <DateTime>] [-NotBefore <DateTime>] [-Tag <Hashtable>] [-Size <Int32>] + [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>] +``` + +### InteractiveImport +``` +Add-AzManagedHsmKey [-HsmName] <String> [-Name] <String> -KeyFilePath <String> + [-KeyFilePassword <SecureString>] [-CurveName <String>] [-Disable] [-KeyOps <String[]>] [-Expires <DateTime>] + [-NotBefore <DateTime>] [-Tag <Hashtable>] [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] + [<CommonParameters>] +``` + +### InputObjectCreate +``` +Add-AzManagedHsmKey [-InputObject] <PSManagedHsm> [-Name] <String> -KeyType <String> [-CurveName <String>] + [-Disable] [-KeyOps <String[]>] [-Expires <DateTime>] [-NotBefore <DateTime>] [-Tag <Hashtable>] + [-Size <Int32>] [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>] +``` + +### InputObjectImport +``` +Add-AzManagedHsmKey [-InputObject] <PSManagedHsm> [-Name] <String> -KeyFilePath <String> + [-KeyFilePassword <SecureString>] [-CurveName <String>] [-Disable] [-KeyOps <String[]>] [-Expires <DateTime>] + [-NotBefore <DateTime>] [-Tag <Hashtable>] [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] + [<CommonParameters>] +``` + +### ResourceIdCreate +``` +Add-AzManagedHsmKey [-ResourceId] <String> [-Name] <String> -KeyType <String> [-CurveName <String>] [-Disable] + [-KeyOps <String[]>] [-Expires <DateTime>] [-NotBefore <DateTime>] [-Tag <Hashtable>] [-Size <Int32>] + [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>] +``` + +### ResourceIdImport +``` +Add-AzManagedHsmKey [-ResourceId] <String> [-Name] <String> -KeyFilePath <String> + [-KeyFilePassword <SecureString>] [-CurveName <String>] [-Disable] [-KeyOps <String[]>] [-Expires <DateTime>] + [-NotBefore <DateTime>] [-Tag <Hashtable>] [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] + [<CommonParameters>] +``` + +## DESCRIPTION +The **Add-AzManagedHsmKey** cmdlet creates a key in a managed HSM in Azure Managed Hsm or imports a key into a managed HSM. +Use this cmdlet to add keys by using any of the following methods: +- Create a key with default key attributes +- Create a key with given key attributes +- Import a key from a .pfx file on your computer. +For any of these operations, you can provide key attributes or accept default settings. +If you create or import a key that has the same name as an existing key in your managed HSM, the +original key is updated with the values that you specify for the new key. You can access the +previous values by using the version-specific URI for that version of the key. To learn about key +versions and the URI structure, see [About Keys and Secrets](http://go.microsoft.com/fwlink/?linkid=518560) +in the Managed HSM REST API documentation. + +## EXAMPLES + +### Example 1: Create a RSA-HSM key +```powershell +PS C:\> Add-AzManagedHsmKey -HsmName testmhsm -Name testkey -KeyType RSA + +Vault/HSM Name : testmhsm +Name : testkey +Version : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +Id : https://bezmhsm.managedhsm.azure.net:443/keys/testkey/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +Enabled : True +Expires : +Not Before : +Created : 10/14/2020 7:55:43 AM +Updated : 10/14/2020 7:55:43 AM +Recovery Level : Recoverable+Purgeable +Tags : +``` + +This command creates a RSA-HSM key named testkey in the managed HSM testkey named testmhsm. + +### Example 2: Create a EC-HSM key +```powershell +PS C:\> Add-AzManagedHsmKey -HsmName testmhsm -Name testkey -KeyType EC -CurveName P-256 + +Vault/HSM Name : testmhsm +Name : testkey +Version : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +Id : https://bezmhsm.managedhsm.azure.net:443/keys/testkey/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +Enabled : True +Expires : +Not Before : +Created : 10/14/2020 8:06:26 AM +Updated : 10/14/2020 8:06:26 AM +Recovery Level : Recoverable+Purgeable +Tags : +``` + +This command creates a EC-HSM key named testkey using P-256 curve in the managed HSM testkey named testmhsm. + +### Example 3: Create a oct-HSM key with non-default values +```powershell +PS C:\> $KeyOperations = 'decrypt', 'verify' +PS C:\> $Expires = (Get-Date).AddYears(2).ToUniversalTime() +PS C:\> $NotBefore = (Get-Date).ToUniversalTime() +PS C:\> $Tags = @{'Severity' = 'high'; 'Accounting' = "true"} +PS C:\> Add-AzManagedHsmKey -HsmName testmhsm -Name testkey -KeyType oct -Expires $Expires -NotBefore $NotBefore -KeyOps $KeyOperations -Disable -Tag $Tags + +Vault/HSM Name : testmhsm +Name : testkey +Version : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +Id : https://bezmhsm.managedhsm.azure.net:443/keys/testkey/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +Enabled : False +Expires : 10/14/2022 8:13:29 AM +Not Before : 10/14/2020 8:13:33 AM +Created : 10/14/2020 8:14:01 AM +Updated : 10/14/2020 8:14:01 AM +Recovery Level : Recoverable+Purgeable +Tags : Name Value + Severity high + Accounting true +``` + +The first command stores the values decrypt and verify in the $KeyOperations variable. +The second command creates a **DateTime** object, defined in UTC, by using the **Get-Date** cmdlet. +That object specifies a time two years in the future. The command stores that date in the $Expires +variable. For more information, type `Get-Help Get-Date`. +The third command creates a **DateTime** object by using the **Get-Date** cmdlet. That object +specifies current UTC time. The command stores that date in the $NotBefore variable. +The final command creates a key named testkey that is an oct-HSM key. The command specifies +values for allowed key operations stored $KeyOperations. The command specifies times for +the *Expires* and *NotBefore* parameters created in the previous commands, and tags for high +severity and IT. The new key is disabled. You can enable it by using the **Update-AzManagedHsmKey** +cmdlet. + +## PARAMETERS + +### -CurveName +Specifies the curve name of elliptic curve cryptography, this value is valid when KeyType is EC. + +```yaml +Type: System.String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer +Parameter Sets: (All) +Aliases: AzContext, AzureRmContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Disable +Indicates that the key you are adding is set to an initial state of disabled. +Any attempt to use the key will fail. +Use this parameter if you are preloading keys that you intend to enable later. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Expires +Specifies the expiration time of the key in UTC. +If not specified, key will not expire. + +```yaml +Type: System.Nullable`1[System.DateTime] +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -HsmName +HSM name. Cmdlet constructs the FQDN of a managed HSM based on the name and currently selected environment. + +```yaml +Type: System.String +Parameter Sets: InteractiveCreate, InteractiveImport +Aliases: + +Required: True +Position: 0 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InputObject +HSM object. + +```yaml +Type: Microsoft.Azure.Commands.KeyVault.Models.PSManagedHsm +Parameter Sets: InputObjectCreate, InputObjectImport +Aliases: + +Required: True +Position: 0 +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -KeyFilePassword +Password of the local file containing the key material to be imported. + +```yaml +Type: System.Security.SecureString +Parameter Sets: InteractiveImport, InputObjectImport, ResourceIdImport +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -KeyFilePath +Path to the local file containing the key material to be imported. + +```yaml +Type: System.String +Parameter Sets: InteractiveImport, InputObjectImport, ResourceIdImport +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -KeyOps +The operations that can be performed with the key. +If not present, all operations can be performed. + +```yaml +Type: System.String[] +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -KeyType +Specifies the key type of this key. + +```yaml +Type: System.String +Parameter Sets: InteractiveCreate, InputObjectCreate, ResourceIdCreate +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Name +Key name. +Cmdlet constructs the FQDN of a key from managed HSM name, currently selected environment and key name. + +```yaml +Type: System.String +Parameter Sets: (All) +Aliases: KeyName + +Required: True +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -NotBefore +The UTC time before which the key can't be used. +If not specified, there is no limitation. + +```yaml +Type: System.Nullable`1[System.DateTime] +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResourceId +HSM Resource Id. + +```yaml +Type: System.String +Parameter Sets: ResourceIdCreate, ResourceIdImport +Aliases: + +Required: True +Position: 0 +Default value: None +Accept pipeline input: True (ByPropertyName) +Accept wildcard characters: False +``` + +### -Size +RSA key size, in bits. +If not specified, the service will provide a safe default. + +```yaml +Type: System.Nullable`1[System.Int32] +Parameter Sets: InteractiveCreate, InputObjectCreate, ResourceIdCreate +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Tag +A hashtable representing key tags. + +```yaml +Type: System.Collections.Hashtable +Parameter Sets: (All) +Aliases: Tags + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Confirm +Prompts you for confirmation before running the cmdlet. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: cf + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -WhatIf +Shows what would happen if the cmdlet runs. +The cmdlet is not run. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: wi + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.Commands.KeyVault.Models.PSManagedHsm + +### System.String + +## OUTPUTS + +### Microsoft.Azure.Commands.KeyVault.Models.PSManagedHsm + +## NOTES + +## RELATED LINKS + +[Backup-AzManagedHsmKey](./Backup-AzManagedHsmKey.md) + +[Get-AzManagedHsmKey](./Get-AzManagedHsmKey.md) + +[Remove-AzManagedHsmKey](./Remove-AzManagedHsmKey.md) + +[Undo-AzManagedHsmKeyRemoval](./Undo-AzManagedHsmKeyRemoval.md) + +[Update-AzManagedHsmKey](./Update-AzManagedHsmKey.md) + +[Restore-AzManagedHsmKey](./Restore-AzManagedHsmKey.md) diff --git a/src/KeyVault/KeyVault/help/Az.KeyVault.md b/src/KeyVault/KeyVault/help/Az.KeyVault.md index c2e5eaf06ef3..d4ee02e33fe4 100644 --- a/src/KeyVault/KeyVault/help/Az.KeyVault.md +++ b/src/KeyVault/KeyVault/help/Az.KeyVault.md @@ -26,6 +26,9 @@ Adds an existing Azure Storage Account to the specified key vault for its keys t ### [Add-AzKeyVaultNetworkRule](Add-AzKeyVaultNetworkRule.md) Adds a rule meant to restrict access to a key vault based on the client's internet address. +### [Add-AzManagedHsmKey](Add-AzManagedHsmKey.md) +Creates a key in a managed HSM or imports a key into a managed HSM. + ### [Backup-AzKeyVaultCertificate](Backup-AzKeyVaultCertificate.md) Backs up a certificate in a key vault. @@ -38,6 +41,15 @@ Backs up a KeyVault-managed storage account. ### [Backup-AzKeyVaultSecret](Backup-AzKeyVaultSecret.md) Backs up a secret in a key vault. +### [Backup-AzManagedHsm](Backup-AzManagedHsm.md) +Fully backup a managed HSM. + +### [Backup-AzManagedHsmKey](Backup-AzManagedHsmKey.md) +Backs up a key in a managed HSM. + +### [Backup-AzManagedHsmSecurityDomain](Backup-AzManagedHsmSecurityDomain.md) +Backs up the security domain data of a managed HSM for restoring. + ### [Get-AzKeyVault](Get-AzKeyVault.md) Gets key vaults. @@ -68,6 +80,18 @@ Gets Key Vault managed Storage SAS Definitions. ### [Get-AzKeyVaultSecret](Get-AzKeyVaultSecret.md) Gets the secrets in a key vault. +### [Get-AzManagedHsm](Get-AzManagedHsm.md) +Get managed HSMs. + +### [Get-AzManagedHsmKey](Get-AzManagedHsmKey.md) +Gets Managed Hsm keys. + +### [Get-AzManagedHsmRoleAssignment](Get-AzManagedHsmRoleAssignment.md) +Get or list role assignments of a managed HSM. Use respective parameters to list assignments to a specific user or a role definition. + +### [Get-AzManagedHsmRoleDefinition](Get-AzManagedHsmRoleDefinition.md) +List role definitions of a given managed HSM at a given scope. + ### [Import-AzKeyVaultCertificate](Import-AzKeyVaultCertificate.md) Imports a certificate to a key vault. @@ -86,6 +110,12 @@ Creates an in-memory certificate policy object. ### [New-AzKeyVaultNetworkRuleSetObject](New-AzKeyVaultNetworkRuleSetObject.md) Create an object representing the network rule settings. +### [New-AzManagedHsm](New-AzManagedHsm.md) +Creates a managed HSM. + +### [New-AzManagedHsmRoleAssignment](New-AzManagedHsmRoleAssignment.md) +Assigns the specified RBAC role to the specified principal, at the specified scope. + ### [Remove-AzKeyVault](Remove-AzKeyVault.md) Deletes a key vault. @@ -119,6 +149,15 @@ Removes a network rule from a key vault. ### [Remove-AzKeyVaultSecret](Remove-AzKeyVaultSecret.md) Deletes a secret in a key vault. +### [Remove-AzManagedHsm](Remove-AzManagedHsm.md) +Deletes a managed HSM. + +### [Remove-AzManagedHsmKey](Remove-AzManagedHsmKey.md) +Deletes a key in a managed HSM. + +### [Remove-AzManagedHsmRoleAssignment](Remove-AzManagedHsmRoleAssignment.md) +Removes a role assignment to the specified principal who is assigned to a particular role at a particular scope. + ### [Restore-AzKeyVaultCertificate](Restore-AzKeyVaultCertificate.md) Restores a certificate in a key vault from a backup file. @@ -131,6 +170,15 @@ Restores a managed storage account in a key vault from a backup file. ### [Restore-AzKeyVaultSecret](Restore-AzKeyVaultSecret.md) Creates a secret in a key vault from a backed-up secret. +### [Restore-AzManagedHsm](Restore-AzManagedHsm.md) +Fully restores a managed HSM from backup. + +### [Restore-AzManagedHsmKey](Restore-AzManagedHsmKey.md) +Creates a key in a managed HSM from a backed-up key. + +### [Restore-AzManagedHsmSecurityDomain](Restore-AzManagedHsmSecurityDomain.md) +Restores previous backed up security domain data to a managed HSM. + ### [Set-AzKeyVaultAccessPolicy](Set-AzKeyVaultAccessPolicy.md) Grants or modifies existing permissions for a user, application, or security group to perform operations with a key vault. @@ -167,6 +215,9 @@ Recovers a deleted key vault into an active state. ### [Undo-AzKeyVaultSecretRemoval](Undo-AzKeyVaultSecretRemoval.md) Recovers a deleted secret in a key vault into an active state. +### [Undo-AzManagedHsmKeyRemoval](Undo-AzManagedHsmKeyRemoval.md) +Recovers a deleted key in a managed HSM into an active state. + ### [Update-AzKeyVault](Update-AzKeyVault.md) Update the state of an Azure key vault. @@ -188,3 +239,9 @@ Updates the network rule set on a key vault. ### [Update-AzKeyVaultSecret](Update-AzKeyVaultSecret.md) Updates attributes of a secret in a key vault. +### [Update-AzManagedHsm](Update-AzManagedHsm.md) +Update the state of an Azure managed HSM. + +### [Update-AzManagedHsmKey](Update-AzManagedHsmKey.md) +Updates the attributes of a key in a managed HSM. + diff --git a/src/KeyVault/KeyVault/help/Backup-AzManagedHsm.md b/src/KeyVault/KeyVault/help/Backup-AzManagedHsm.md new file mode 100644 index 000000000000..99658d17bbe0 --- /dev/null +++ b/src/KeyVault/KeyVault/help/Backup-AzManagedHsm.md @@ -0,0 +1,207 @@ +--- +external help file: Microsoft.Azure.PowerShell.Cmdlets.KeyVault.dll-Help.xml +Module Name: Az.KeyVault +online version: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/backup-azmanagedhsm +schema: 2.0.0 +--- + +# Backup-AzManagedHsm + +## SYNOPSIS +Fully backup a managed HSM. + +## SYNTAX + +### InteractiveStorageName (Default) +``` +Backup-AzManagedHsm [-Name] <String> -StorageAccountName <String> -StorageContainerName <String> + -SasToken <SecureString> [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>] +``` + +### InteractiveStorageUri +``` +Backup-AzManagedHsm [-Name] <String> -StorageContainerUri <Uri> -SasToken <SecureString> + [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>] +``` + +### InputObjectStorageUri +``` +Backup-AzManagedHsm -StorageContainerUri <Uri> -SasToken <SecureString> -HsmObject <PSManagedHsm> + [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>] +``` + +### InputObjectStorageName +``` +Backup-AzManagedHsm -StorageAccountName <String> -StorageContainerName <String> -SasToken <SecureString> + -HsmObject <PSManagedHsm> [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>] +``` + +## DESCRIPTION +Fully backup a managed HSM to a storage account. +Use `Restore-AzManagedHsm` to restore the backup. + +## EXAMPLES + +### Example 1 +```powershell +PS C:\> $sasToken = ConvertTo-SecureString -AsPlainText -Force "?sv=2019-12-12&ss=bfqt&srt=sco&sp=rwdlacupx&se=2020-10-12T14:42:19Z&st=2020-10-12T06:42:19Z&spr=https&sig=******" + +PS C:\> Backup-AzManagedHsm -Name myHsm -BlobStorageUri "https://{accountName}.blob.core.windows.net/{containerName}" -SasToken $sasToken + +https://{accountName}.blob.core.windows.net/{containerName}/{backupFolder} +``` + +The cmdlet will create a folder (typically named `mhsm-{name}-{timestamp}`) in the storage container, store the backup in that folder and output the folder URI. + +## PARAMETERS + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer +Parameter Sets: (All) +Aliases: AzContext, AzureRmContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -HsmObject +Managed HSM object + +```yaml +Type: Microsoft.Azure.Commands.KeyVault.Models.PSManagedHsm +Parameter Sets: InputObjectStorageUri, InputObjectStorageName +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Name +Name of the HSM. + +```yaml +Type: System.String +Parameter Sets: InteractiveStorageName, InteractiveStorageUri +Aliases: HsmName + +Required: True +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SasToken +The shared access signature (SAS) token to authenticate the storage account. + +```yaml +Type: System.Security.SecureString +Parameter Sets: (All) +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -StorageAccountName +Name of the storage account where the backup is going to be stored. + +```yaml +Type: System.String +Parameter Sets: InteractiveStorageName, InputObjectStorageName +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -StorageContainerName +Name of the blob container where the backup is going to be stored. + +```yaml +Type: System.String +Parameter Sets: InteractiveStorageName, InputObjectStorageName +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -StorageContainerUri +URI of the storage container where the backup is going to be stored. + +```yaml +Type: System.Uri +Parameter Sets: InteractiveStorageUri, InputObjectStorageUri +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Confirm +Prompts you for confirmation before running the cmdlet. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: cf + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -WhatIf +Shows what would happen if the cmdlet runs. +The cmdlet is not run. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: wi + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### None + +## OUTPUTS + +### System.String + +## NOTES + +## RELATED LINKS diff --git a/src/KeyVault/KeyVault/help/Backup-AzManagedHsmKey.md b/src/KeyVault/KeyVault/help/Backup-AzManagedHsmKey.md new file mode 100644 index 000000000000..f524a47576de --- /dev/null +++ b/src/KeyVault/KeyVault/help/Backup-AzManagedHsmKey.md @@ -0,0 +1,200 @@ +--- +external help file: Microsoft.Azure.PowerShell.Cmdlets.KeyVault.dll-Help.xml +Module Name: Az.KeyVault +online version: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/backup-azmanagedhsmkey +schema: 2.0.0 +--- + +# Backup-AzManagedHsmKey + +## SYNOPSIS +Backs up a key in a managed HSM. + +## SYNTAX + +### ByKeyName (Default) +``` +Backup-AzManagedHsmKey [-HsmName] <String> [-Name] <String> [[-OutputFile] <String>] [-Force] + [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>] +``` + +### ByKey +``` +Backup-AzManagedHsmKey [-InputObject] <PSKeyVaultKeyIdentityItem> [[-OutputFile] <String>] [-Force] + [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>] +``` + +## DESCRIPTION +The **Backup-AzManagedHsmKey** cmdlet backs up a specified key in a managed HSM by downloading it and storing it in a file. +If there are multiple versions of the key, all versions are included in the backup. +Because the downloaded content is encrypted, it cannot be used outside of Azure Managed HSM. +You can restore a backed-up key to any managed HSM in the subscription that it was backed up from. +Typical reasons to use this cmdlet are: +- You want to escrow a copy of your key, so that you have an offline copy in case you accidentally delete your key in your managed HSM. + +- You created a key using Managed HSM and now want to clone the key into a different Azure region, so that you can use it from all instances of your distributed application. +Use the **Backup-AzManagedHsmKey** cmdlet to retrieve the key in encrypted format and then use the Restore-AzManagedHsmKey cmdlet and specify a managed HSM in the second region. + +## EXAMPLES + +### Example 1: Back up a key with an automatically generated file name +```powershell +PS C:\Users\username\> Backup-AzManagedHsmKey -HsmName testmhsm -Name testkey + +C:\Users\username\testmhsm-testkey-1602664728.7106073 +``` + +This command retrieves the key named testkey from the managed HSM named testmhsm and saves a backup of that key to a file that is automatically named for you, and displays the file name. + +## PARAMETERS + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer +Parameter Sets: (All) +Aliases: AzContext, AzureRmContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Force +Overwrite the given file if it exists + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -HsmName +HSM name. Cmdlet constructs the FQDN of a managed HSM based on the name and currently selected environment. + +```yaml +Type: System.String +Parameter Sets: ByKeyName +Aliases: + +Required: True +Position: 0 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InputObject +Key bundle to back up, pipelined in from the output of a retrieval call. + +```yaml +Type: Microsoft.Azure.Commands.KeyVault.Models.PSKeyVaultKeyIdentityItem +Parameter Sets: ByKey +Aliases: Key + +Required: True +Position: 0 +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -Name +Key name. +Cmdlet constructs the FQDN of a key from managed HSM name, currently selected environment and key name. + +```yaml +Type: System.String +Parameter Sets: ByKeyName +Aliases: KeyName + +Required: True +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -OutputFile +Output file. +The output file to store the backed up key blob in. +If not present, a default filename is chosen. + +```yaml +Type: System.String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 2 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Confirm +Prompts you for confirmation before running the cmdlet. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: cf + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -WhatIf +Shows what would happen if the cmdlet runs. +The cmdlet is not run. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: wi + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.Commands.KeyVault.Models.PSKeyVaultKeyIdentityItem + +## OUTPUTS + +### System.String + +## NOTES + +## RELATED LINKS + +[Add-AzManagedHsmKey](./Add-AzManagedHsmKey.md) + +[Get-AzManagedHsmKey](./Get-AzManagedHsmKey.md) + +[Remove-AzManagedHsmKey](./Remove-AzManagedHsmKey.md) + +[Undo-AzManagedHsmKeyRemoval](./Undo-AzManagedHsmKeyRemoval.md) + +[Update-AzManagedHsmKey](./Update-AzManagedHsmKey.md) + +[Restore-AzManagedHsmKey](./Restore-AzManagedHsmKey.md) \ No newline at end of file diff --git a/src/KeyVault/KeyVault/help/Backup-AzManagedHsmSecurityDomain.md b/src/KeyVault/KeyVault/help/Backup-AzManagedHsmSecurityDomain.md new file mode 100644 index 000000000000..8fa172dad523 --- /dev/null +++ b/src/KeyVault/KeyVault/help/Backup-AzManagedHsmSecurityDomain.md @@ -0,0 +1,207 @@ +--- +external help file: Microsoft.Azure.PowerShell.Cmdlets.KeyVault.dll-Help.xml +Module Name: Az.KeyVault +online version: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/backup-azmanagedhsmsecuritydomain +schema: 2.0.0 +--- + +# Backup-AzManagedHsmSecurityDomain + +## SYNOPSIS +Backs up the security domain data of a managed HSM for restoring. + +## SYNTAX + +### ByName (Default) +``` +Backup-AzManagedHsmSecurityDomain -Certificates <String[]> -OutputPath <String> [-Force] [-PassThru] + -Quorum <Int32> -Name <String> [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] + [<CommonParameters>] +``` + +### ByInputObject +``` +Backup-AzManagedHsmSecurityDomain -Certificates <String[]> -OutputPath <String> [-Force] [-PassThru] + -Quorum <Int32> -InputObject <PSKeyVaultIdentityItem> [-DefaultProfile <IAzureContextContainer>] [-WhatIf] + [-Confirm] [<CommonParameters>] +``` + +## DESCRIPTION +This cmdlet backs up the security domain data of a managed HSM for restoring. + +## EXAMPLES + +### Example 1 +```powershell +PS C:\Users\username\> Backup-AzManagedHsmSecurityDomain -Name testmhsm -Certificates {pathOfCertificates}/sd1.cer, {pathOfCertificates}/sd2.cer, {pathOfCertificates}/sd3.cer -OutputPath {pathOfOutput}/sd.ps.json -Quorum 2 +``` + +This command retrieves the managed HSM named testmhsm and saves a backup of that managed HSM security domain to the specified output file. + +## PARAMETERS + +### -Certificates +Paths to the certificates that are used to encrypt the security domain data. + +```yaml +Type: System.String[] +Parameter Sets: (All) +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer +Parameter Sets: (All) +Aliases: AzContext, AzureRmContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Force +Specify whether to overwrite existing file. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InputObject +Object representing a managed HSM. + +```yaml +Type: Microsoft.Azure.Commands.KeyVault.Models.PSKeyVaultIdentityItem +Parameter Sets: ByInputObject +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -Name +Name of the managed HSM. + +```yaml +Type: System.String +Parameter Sets: ByName +Aliases: HsmName + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -OutputPath +Specify the path where security domain data will be downloaded to. + +```yaml +Type: System.String +Parameter Sets: (All) +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PassThru +When specified, a boolean will be returned when cmdlet succeeds. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Quorum +The minimum number of shares required to decrypt the security domain for recovery. + +```yaml +Type: System.Int32 +Parameter Sets: (All) +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Confirm +Prompts you for confirmation before running the cmdlet. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: cf + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -WhatIf +Shows what would happen if the cmdlet runs. +The cmdlet is not run. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: wi + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.Commands.KeyVault.Models.PSKeyVaultIdentityItem + +## OUTPUTS + +### System.Boolean + +## NOTES + +## RELATED LINKS diff --git a/src/KeyVault/KeyVault/help/Get-AzKeyVaultKey.md b/src/KeyVault/KeyVault/help/Get-AzKeyVaultKey.md index 4695f049439c..d5d1314fb56f 100644 --- a/src/KeyVault/KeyVault/help/Get-AzKeyVaultKey.md +++ b/src/KeyVault/KeyVault/help/Get-AzKeyVaultKey.md @@ -152,7 +152,7 @@ Purge Disabled : False Tags : ``` -This command gets all versions the key named ITPfx in the key vaultnamed Contoso. +This command gets all versions the key named ITPfx in the key vault named Contoso. ### Example 4: Get a specific version of a key ```powershell @@ -174,7 +174,7 @@ Tags : This command gets a specific version of the key named test1 in the key vault named Contoso. After running this command, you can inspect various properties of the key by navigating the $Key object. -### Example 5: Get all the keys that have been deleted but not purged for this key vault. +### Example 5: Get all the keys that have been deleted but not purged for this key vault ```powershell PS C:\> Get-AzKeyVaultKey -VaultName 'contoso' -InRemovedState diff --git a/src/KeyVault/KeyVault/help/Get-AzManagedHsm.md b/src/KeyVault/KeyVault/help/Get-AzManagedHsm.md new file mode 100644 index 000000000000..d840141f42ae --- /dev/null +++ b/src/KeyVault/KeyVault/help/Get-AzManagedHsm.md @@ -0,0 +1,158 @@ +--- +external help file: Microsoft.Azure.PowerShell.Cmdlets.KeyVault.dll-Help.xml +Module Name: Az.KeyVault +online version: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/get-azmanagedhsm +schema: 2.0.0 +--- + +# Get-AzManagedHsm + +## SYNOPSIS +Get managed HSMs. + +## SYNTAX + +``` +Get-AzManagedHsm [[-Name] <String>] [[-ResourceGroupName] <String>] [-Tag <Hashtable>] + [-DefaultProfile <IAzureContextContainer>] [<CommonParameters>] +``` + +## DESCRIPTION +The **Get-AzManagedHsm** cmdlet gets information about the managed HSMs in a subscription. You can +view all managed HSMs instances in a subscription, or filter your results by a resource group or a +particular managed HSM. +Note that although specifying the resource group is optional for this cmdlet when you get a single +managed HSM, you should do so for better performance. + +## EXAMPLES + +### Example 1: Get all managed HSMs in your current subscription +```powershell +PS C:\> Get-AzManagedHsm + +Name Resource Group Name Location SKU +---- ------------------- -------- --- +myhsm myrg1 eastus2euap StandardB1 +``` + +This command gets all managed HSMs in your current subscription. + +### Example 2: Get a specific managed HSM +```powershell +PS C:\> Get-AzManagedHsm -Name 'myhsm' + +Name Resource Group Name Location SKU +---- ------------------- -------- --- +myhsm myrg1 eastus2euap StandardB1 +``` + +This command gets the managed HSM named myhsm in your current subscription. + +### Example 3: Get managed HSMs in a resource group +```powershell +PS C:\> Get-AzManagedHsm -ResourceGroupName 'myrg1' + +Name Resource Group Name Location SKU +---- ------------------- -------- --- +myhsm myrg1 eastus2euap StandardB1 +``` + +This command gets all managed HSMs in the resource group named myrg1. + +### Example 4: Get managed HSMs using filtering +```powershell +PS C:\> Get-AzManagedHsm -Name 'myhsm*' + +Name Resource Group Name Location SKU +---- ------------------- -------- --- +myhsm myrg1 eastus2euap StandardB1 +``` + +This command gets all managed HSMs in the subscription that start with "myhsm". + +## PARAMETERS + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer +Parameter Sets: (All) +Aliases: AzContext, AzureRmContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Name +HSM name. Cmdlet constructs the FQDN of a HSM based on the name and currently selected environment. + +```yaml +Type: System.String +Parameter Sets: (All) +Aliases: HsmName + +Required: False +Position: 0 +Default value: None +Accept pipeline input: True (ByPropertyName) +Accept wildcard characters: False +``` + +### -ResourceGroupName +Specifies the name of the resource group associated with the managed HSM being queried. + +```yaml +Type: System.String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName) +Accept wildcard characters: False +``` + +### -Tag +Specifies the key and optional value of the specified tag to filter the list of managed HSMs by. + +```yaml +Type: System.Collections.Hashtable +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: True (ByPropertyName) +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### System.String + +### System.Collections.Hashtable + +## OUTPUTS + +### Microsoft.Azure.Commands.KeyVault.Models.PSManagedHsm + +### Microsoft.Azure.Commands.KeyVault.Models.PSKeyVaultIdentityItem + +## NOTES + +## RELATED LINKS + +[New-AzManagedHsm](./New-AzManagedHsm.md) + +[Remove-AzManagedHsm](./Remove-AzManagedHsm.md) + +[Update-AzManagedHsm](./Update-AzManagedHsm.md) \ No newline at end of file diff --git a/src/KeyVault/KeyVault/help/Get-AzManagedHsmKey.md b/src/KeyVault/KeyVault/help/Get-AzManagedHsmKey.md new file mode 100644 index 000000000000..a33abac37f70 --- /dev/null +++ b/src/KeyVault/KeyVault/help/Get-AzManagedHsmKey.md @@ -0,0 +1,451 @@ +--- +external help file: Microsoft.Azure.PowerShell.Cmdlets.KeyVault.dll-Help.xml +Module Name: Az.KeyVault +online version: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/get-azmanagedhsmkey +schema: 2.0.0 +--- + +# Get-AzManagedHsmKey + +## SYNOPSIS +Gets Managed Hsm keys. + +## SYNTAX + +### SpecifyHsmByHsmNameGetKeyWithoutConstraint (Default) +``` +Get-AzManagedHsmKey [-HsmName] <String> [[-Name] <String>] [-InRemovedState] [-OutFile <String>] + [-DefaultProfile <IAzureContextContainer>] [<CommonParameters>] +``` + +### SpecifyHsmByHsmNameGetKeyWithSpecifiedVersion +``` +Get-AzManagedHsmKey [-HsmName] <String> [-Name] <String> [-Version] <String> [-OutFile <String>] + [-DefaultProfile <IAzureContextContainer>] [<CommonParameters>] +``` + +### SpecifyHsmByHsmNameGetKeyIncludeAllVersions +``` +Get-AzManagedHsmKey [-HsmName] <String> [-Name] <String> [-IncludeVersions] [-OutFile <String>] + [-DefaultProfile <IAzureContextContainer>] [<CommonParameters>] +``` + +### SpecifyHsmByInputObjectGetKeyWithoutConstraint +``` +Get-AzManagedHsmKey [-InputObject] <PSManagedHsm> [[-Name] <String>] [-InRemovedState] [-OutFile <String>] + [-DefaultProfile <IAzureContextContainer>] [<CommonParameters>] +``` + +### SpecifyHsmByInputObjectGetKeyWithSpecifiedVersion +``` +Get-AzManagedHsmKey [-InputObject] <PSManagedHsm> [-Name] <String> [-Version] <String> [-OutFile <String>] + [-DefaultProfile <IAzureContextContainer>] [<CommonParameters>] +``` + +### SpecifyHsmByInputObjectGetKeyIncludeAllVersions +``` +Get-AzManagedHsmKey [-InputObject] <PSManagedHsm> [-Name] <String> [-IncludeVersions] [-OutFile <String>] + [-DefaultProfile <IAzureContextContainer>] [<CommonParameters>] +``` + +### SpecifyHsmByResourceIdGetKeyWithoutConstraint +``` +Get-AzManagedHsmKey [-ResourceId] <String> [[-Name] <String>] [-InRemovedState] [-OutFile <String>] + [-DefaultProfile <IAzureContextContainer>] [<CommonParameters>] +``` + +### SpecifyHsmByResourceIdGetKeyWithSpecifiedVersion +``` +Get-AzManagedHsmKey [-ResourceId] <String> [-Name] <String> [-Version] <String> [-OutFile <String>] + [-DefaultProfile <IAzureContextContainer>] [<CommonParameters>] +``` + +### SpecifyHsmByResourceIdGetKeyIncludeAllVersions +``` +Get-AzManagedHsmKey [-ResourceId] <String> [-Name] <String> [-IncludeVersions] [-OutFile <String>] + [-DefaultProfile <IAzureContextContainer>] [<CommonParameters>] +``` + +## DESCRIPTION +The **Get-AzManagedHsmKey** cmdlet gets Azure Managed Hsm keys. +This cmdlet gets a specific **Microsoft.Azure.Commands.KeyVault.Models.KeyBundle** or a list of all **KeyBundle** objects in a managed Hsm or by version. + +## EXAMPLES + +### Example 1: Get all the keys in a managed HSM +```powershell +PS C:\> Get-AzManagedHsmKey -HsmName testmhsm +``` + +Vault/HSM Name : testmhsm +Name : testkey001 +Version : +Id : https://testmhsm.managedhsm.azure.net:443/keys/testkey001 +Enabled : True +Expires : +Not Before : +Created : 10/14/2020 3:39:16 AM +Updated : 10/14/2020 3:39:16 AM +Recovery Level : Recoverable+Purgeable +Tags : + +Vault/HSM Name : testmhsm +Name : testkey002 +Version : +Id : https://testmhsm.managedhsm.azure.net:443/keys/testkey002 +Enabled : False +Expires : 10/14/2022 8:13:29 AM +Not Before : 10/14/2020 8:13:33 AM +Created : 10/14/2020 8:14:01 AM +Updated : 10/14/2020 8:14:01 AM +Recovery Level : Recoverable+Purgeable +Tags : Name Value + Severity high + Accounting true + +This command gets all the keys in the managed HSM named testmhsm. + +### Example 2: Get the current version of a key +```powershell +PS C:\>$hsm = Get-AzManagedHsmKey -HsmName testmhsm -KeyName testkey001 +PS C:\>$hsm + +Vault/HSM Name : testmhsm +Name : testkey001 +Version : 9a9de2bcec540c3b160cd54cbae71339 +Id : https://testmhsm.managedhsm.azure.net:443/keys/testkey/9a9de2bcec540c3b160cd54cbae71339 +Enabled : False +Expires : 10/14/2022 8:13:29 AM +Not Before : 10/14/2020 8:13:33 AM +Created : 10/14/2020 8:14:01 AM +Updated : 10/14/2020 8:14:01 AM +Recovery Level : Recoverable+Purgeable +Tags : Name Value + Severity high + Accounting true +``` + +This command gets the current version of the key named testkey001 in the managed HSM named testmhsm. +Note: Hsm Name can be obtained by $hsm.VaultName + +### Example 3: Get all versions of a key +```powershell +PS C:\> Get-AzManagedHsmKey -HsmName testmhsm -KeyName testkey001 -IncludeVersions + +Vault/HSM Name : testmhsm +Name : testkey001 +Version : 80fd43e31e8649873520053c91148418 +Id : https://testmhsm.managedhsm.azure.net:443/keys/testkey001/80fd43e31e8649873520053c91148418 +Enabled : True +Expires : +Not Before : +Created : 10/14/2020 8:06:26 AM +Updated : 10/14/2020 8:06:26 AM +Recovery Level : Recoverable+Purgeable +Tags : + +Vault/HSM Name : testmhsm +Name : testkey001 +Version : 9a9de2bcec540c3b160cd54cbae71339 +Id : https://testmhsm.managedhsm.azure.net:443/keys/testkey001/9a9de2bcec540c3b160cd54cbae71339 +Enabled : False +Expires : 10/14/2022 8:13:29 AM +Not Before : 10/14/2020 8:13:33 AM +Created : 10/14/2020 8:14:01 AM +Updated : 10/14/2020 8:14:01 AM +Recovery Level : Recoverable+Purgeable +Tags : Name Value + Severity high + Accounting true +``` + +This command gets all versions the key named testkey001 in the managed HSM named testmhsm. + +### Example 4: Get a specific version of a key +```powershell +PS C:\> Get-AzManagedHsmKey -HsmName testmhsm -KeyName testkey -Version 80fd43e31e8649873520053c91148418 + +Vault/HSM Name : testmhsm +Name : testkey +Version : 80fd43e31e8649873520053c91148418 +Id : https://testmhsm.managedhsm.azure.net:443/keys/testkey/80fd43e31e8649873520053c91148418 +Enabled : True +Expires : +Not Before : +Created : 10/14/2020 8:06:26 AM +Updated : 10/14/2020 8:06:26 AM +Recovery Level : Recoverable+Purgeable +Tags : +``` + +This command gets a specific version of the key named testkey in the managed HSM named testmhsm. +After running this command, you can inspect various properties of the key by navigating the $Key object. + +### Example 5: Get all the keys that have been deleted but not purged for this managed HSM +```powershell +PS C:\> Get-AzManagedHsmKey -HsmName testmhsm -InRemovedState + +Vault/HSM Name : testmhsm +Name : testkey +Id : https://testmhsm.managedhsm.azure.net:443/keys/testkey +Deleted Date : 10/14/2020 9:10:42 AM +Scheduled Purge Date : 1/12/2021 9:10:42 AM +Enabled : False +Expires : 10/14/2022 8:13:29 AM +Not Before : 10/14/2020 8:13:33 AM +Created : 10/14/2020 8:14:01 AM +Updated : 10/14/2020 8:14:01 AM +Recovery Level : Recoverable+Purgeable +Tags : Name Value + Severity high + Accounting true : +``` + +This command gets all the keys that have been previously deleted, but not purged, in the managed HSM named testmhsm. + +### Example 6: Gets the key testkey that has been deleted but not purged for this managed HSM +```powershell +PS C:\> Get-AzManagedHsmKey -HsmName testmhsm -Name testkey -InRemovedState + +Vault/HSM Name : testmhsm +Name : testkey +Id : https://testmhsm.managedhsm.azure.net:443/keys/testkey/9a9de2bcec540c3b160cd54cbae71339 +Deleted Date : 10/14/2020 9:10:42 AM +Scheduled Purge Date : 1/12/2021 9:10:42 AM +Enabled : False +Expires : 10/14/2022 8:13:29 AM +Not Before : 10/14/2020 8:13:33 AM +Created : 10/14/2020 8:14:01 AM +Updated : 10/14/2020 8:14:01 AM +Recovery Level : Recoverable+Purgeable +Tags : +``` + +This command gets the key testkey that has been previously deleted, but not purged, in the managed HSM named testmhsm. +This command will return metadata such as the deletion date, and the scheduled purging date of this deleted key. + +### Example 7: Get all the keys in a managed HSM using filtering +```powershell +PS C:\> Get-AzManagedHsmKey -HsmName testmhsm -KeyName "test*" + +Vault/HSM Name : testmhsm +Name : testkey +Version : +Id : https://testmhsm.managedhsm.azure.net:443/keys/testkey +Enabled : False +Expires : 10/14/2022 8:13:29 AM +Not Before : 10/14/2020 8:13:33 AM +Created : 10/14/2020 8:14:01 AM +Updated : 10/14/2020 8:14:01 AM +Recovery Level : Recoverable+Purgeable +Tags : +``` + +This command gets all the keys in the managed HSM named testmhsm that start with "test". + +### Example 8: Download a public key as a .pem file + +```powershell +PS C:\> Get-AzManagedHsmKey -HsmName bezmhsm -Name testkey -OutFile "C:\public.pem" + +Vault/HSM Name : testmhsm +Name : testkey +Version : +Id : https://testmhsm.managedhsm.azure.net:443/keys/testkey +Enabled : False +Expires : 10/14/2022 8:13:29 AM +Not Before : 10/14/2020 8:13:33 AM +Created : 10/14/2020 8:14:01 AM +Updated : 10/14/2020 8:14:01 AM +Recovery Level : Recoverable+Purgeable +Tags : +``` + +You can download the public key of a RSA key by specifying the `-OutFile` parameter. + +## PARAMETERS + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer +Parameter Sets: (All) +Aliases: AzContext, AzureRmContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -HsmName +HSM name. Cmdlet constructs the FQDN of a managed HSM based on the name and currently selected environment. + +```yaml +Type: System.String +Parameter Sets: SpecifyHsmByHsmNameGetKeyWithoutConstraint, SpecifyHsmByHsmNameGetKeyWithSpecifiedVersion, SpecifyHsmByHsmNameGetKeyIncludeAllVersions +Aliases: + +Required: True +Position: 0 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeVersions +Specifies whether to include the versions of the key in the output. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: SpecifyHsmByHsmNameGetKeyIncludeAllVersions, SpecifyHsmByInputObjectGetKeyIncludeAllVersions, SpecifyHsmByResourceIdGetKeyIncludeAllVersions +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InputObject +HSM object. + +```yaml +Type: Microsoft.Azure.Commands.KeyVault.Models.PSManagedHsm +Parameter Sets: SpecifyHsmByInputObjectGetKeyWithoutConstraint, SpecifyHsmByInputObjectGetKeyWithSpecifiedVersion, SpecifyHsmByInputObjectGetKeyIncludeAllVersions +Aliases: + +Required: True +Position: 0 +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -InRemovedState +Specifies whether to show the previously deleted keys in the output. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: SpecifyHsmByHsmNameGetKeyWithoutConstraint, SpecifyHsmByInputObjectGetKeyWithoutConstraint, SpecifyHsmByResourceIdGetKeyWithoutConstraint +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Name +Key name. +Cmdlet constructs the FQDN of a key from managed HSM name, currently selected environment and key name. + +```yaml +Type: System.String +Parameter Sets: SpecifyHsmByHsmNameGetKeyWithoutConstraint, SpecifyHsmByInputObjectGetKeyWithoutConstraint, SpecifyHsmByResourceIdGetKeyWithoutConstraint +Aliases: KeyName + +Required: False +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +```yaml +Type: System.String +Parameter Sets: SpecifyHsmByHsmNameGetKeyWithSpecifiedVersion, SpecifyHsmByHsmNameGetKeyIncludeAllVersions, SpecifyHsmByInputObjectGetKeyWithSpecifiedVersion, SpecifyHsmByInputObjectGetKeyIncludeAllVersions, SpecifyHsmByResourceIdGetKeyWithSpecifiedVersion, SpecifyHsmByResourceIdGetKeyIncludeAllVersions +Aliases: KeyName + +Required: True +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -OutFile +Specifies the output file for which this cmdlet saves the key. +The public key is saved in PEM format by default. + +```yaml +Type: System.String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResourceId +HSM Resource Id. + +```yaml +Type: System.String +Parameter Sets: SpecifyHsmByResourceIdGetKeyWithoutConstraint, SpecifyHsmByResourceIdGetKeyWithSpecifiedVersion, SpecifyHsmByResourceIdGetKeyIncludeAllVersions +Aliases: + +Required: True +Position: 0 +Default value: None +Accept pipeline input: True (ByPropertyName) +Accept wildcard characters: False +``` + +### -Version +Key version. +Cmdlet constructs the FQDN of a key from managed HSM name, currently selected environment, key name and key version. + +```yaml +Type: System.String +Parameter Sets: SpecifyHsmByHsmNameGetKeyWithSpecifiedVersion, SpecifyHsmByInputObjectGetKeyWithSpecifiedVersion, SpecifyHsmByResourceIdGetKeyWithSpecifiedVersion +Aliases: KeyVersion + +Required: True +Position: 2 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.Commands.KeyVault.Models.PSKeyVaultKeyIdentityItem + +### System.String + +## OUTPUTS + +### Microsoft.Azure.Commands.KeyVault.Models.PSKeyVaultKeyIdentityItem + +### Microsoft.Azure.Commands.KeyVault.Models.PSKeyVaultKey + +### Microsoft.Azure.Commands.KeyVault.Models.PSDeletedKeyVaultKeyIdentityItem + +### Microsoft.Azure.Commands.KeyVault.Models.PSDeletedKeyVaultKey + +## NOTES + +## RELATED LINKS + +[Add-AzManagedHsmKey](./Add-AzManagedHsmKey.md) + +[Backup-AzManagedHsmKey](./Backup-AzManagedHsmKey.md) + +[Remove-AzManagedHsmKey](./Remove-AzManagedHsmKey.md) + +[Undo-AzManagedHsmKeyRemoval](./Undo-AzManagedHsmKeyRemoval.md) + +[Update-AzManagedHsmKey](./Update-AzManagedHsmKey.md) + +[Restore-AzManagedHsmKey](./Restore-AzManagedHsmKey.md) \ No newline at end of file diff --git a/src/KeyVault/KeyVault/help/Get-AzManagedHsmRoleAssignment.md b/src/KeyVault/KeyVault/help/Get-AzManagedHsmRoleAssignment.md new file mode 100644 index 000000000000..fadfcb47bc43 --- /dev/null +++ b/src/KeyVault/KeyVault/help/Get-AzManagedHsmRoleAssignment.md @@ -0,0 +1,218 @@ +--- +external help file: Microsoft.Azure.PowerShell.Cmdlets.KeyVault.dll-Help.xml +Module Name: Az.KeyVault +online version: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/get-azmanagedhsmroleassignment +schema: 2.0.0 +--- + +# Get-AzManagedHsmRoleAssignment + +## SYNOPSIS +Get or list role assignments of a managed HSM. Use respective parameters to list assignments to a specific user or a role definition. + +## SYNTAX + +### List (Default) +``` +Get-AzManagedHsmRoleAssignment [-HsmName] <String> [-Scope <String>] [-RoleDefinitionName <String>] + [-RoleDefinitionId <String>] [-ObjectId <String>] [-SignInName <String>] [-ApplicationId <String>] + [-DefaultProfile <IAzureContextContainer>] [<CommonParameters>] +``` + +### GetByName +``` +Get-AzManagedHsmRoleAssignment [-HsmName] <String> [-Scope <String>] -RoleAssignmentName <String> + [-DefaultProfile <IAzureContextContainer>] [<CommonParameters>] +``` + +## DESCRIPTION +Use the `Get-AzManagedHsmRoleAssignment` command to list all role assignments that are effective on a scope. +Without any parameters, this command returns all the role assignments made under the managed HSM. +This list can be filtered using filtering parameters for principal, role and scope. +The subject of the assignment must be specified. +To specify a user, use SignInName or Azure AD ObjectId parameters. +To specify a security group, use Azure AD ObjectId parameter. +And to specify an Azure AD application, use ApplicationId or ObjectId parameters. +The role that is being assigned must be specified using the RoleDefinitionName or RoleDefinitionId parameter. +The scope at which access is being granted may be specified. It defaults to "/". + +## EXAMPLES + +### Example 1 +```powershell +PS C:\> Get-AzManagedHsmRoleAssignment -HsmName myHsm + +RoleDefinitionName DisplayName ObjectType Scope +------------------ ----------- ---------- ----- +Managed HSM Administrator User 1 (user1@microsoft.com) User / +Managed HSM Crypto Auditor User 2 (user2@microsoft.com) User /keys +Managed HSM Backup User 2 (user2@microsoft.com) User / +Managed HSM Administrator User 2 (user2@microsoft.com) User / +``` + +This example lists all role assignments of "myHsm" on all the scope. + +### Example 2 +```powershell +PS C:\> Get-AzManagedHsmRoleAssignment -HsmName myHsm -SignInName user1@microsoft.com -Scope "/keys" + +RoleDefinitionName DisplayName ObjectType Scope +------------------ ----------- ---------- ----- +Managed HSM Crypto Auditor User 1 (user1@microsoft.com) User /keys +Managed HSM Backup User 1 (user1@microsoft.com) User /keys +``` + +This example lists all role assignments of "myHsm" on "/keys" scope and filters the result by user sign-in name. + +## PARAMETERS + +### -ApplicationId +The app SPN. + +```yaml +Type: System.String +Parameter Sets: List +Aliases: SPN, ServicePrincipalName + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer +Parameter Sets: (All) +Aliases: AzContext, AzureRmContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -HsmName +Name of the HSM. + +```yaml +Type: System.String +Parameter Sets: (All) +Aliases: + +Required: True +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ObjectId +The user or group object id. + +```yaml +Type: System.String +Parameter Sets: List +Aliases: Id, PrincipalId + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RoleAssignmentName +Name of the role assignment. + +```yaml +Type: System.String +Parameter Sets: GetByName +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RoleDefinitionId +Role Id the principal is assigned to. + +```yaml +Type: System.String +Parameter Sets: List +Aliases: RoleId + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RoleDefinitionName +Name of the RBAC role to assign the principal with. + +```yaml +Type: System.String +Parameter Sets: List +Aliases: RoleName + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Scope +Scope at which the role assignment or definition applies to, e.g., '/' or '/keys' or '/keys/{keyName}'. +'/' is used when omitted. + +```yaml +Type: System.String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SignInName +The user SignInName. + +```yaml +Type: System.String +Parameter Sets: List +Aliases: Email, UserPrincipalName + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### None + +## OUTPUTS + +### Microsoft.Azure.Commands.KeyVault.Models.PSKeyVaultRoleAssignment + +## NOTES + +## RELATED LINKS diff --git a/src/KeyVault/KeyVault/help/Get-AzManagedHsmRoleDefinition.md b/src/KeyVault/KeyVault/help/Get-AzManagedHsmRoleDefinition.md new file mode 100644 index 000000000000..565445317bde --- /dev/null +++ b/src/KeyVault/KeyVault/help/Get-AzManagedHsmRoleDefinition.md @@ -0,0 +1,154 @@ +--- +external help file: Microsoft.Azure.PowerShell.Cmdlets.KeyVault.dll-Help.xml +Module Name: Az.KeyVault +online version: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/get-azmanagedhsmroledefinition +schema: 2.0.0 +--- + +# Get-AzManagedHsmRoleDefinition + +## SYNOPSIS +List role definitions of a given managed HSM at a given scope. + +## SYNTAX + +### Interactive (Default) +``` +Get-AzManagedHsmRoleDefinition [-HsmName] <String> [-Scope <String>] [-DefaultProfile <IAzureContextContainer>] + [<CommonParameters>] +``` + +### ByName +``` +Get-AzManagedHsmRoleDefinition [-HsmName] <String> [-Scope <String>] -RoleDefinitionName <String> + [-DefaultProfile <IAzureContextContainer>] [<CommonParameters>] +``` + +## DESCRIPTION +List role definitions of a given managed HSM at a given scope. + +## EXAMPLES + +### Example 1 +```powershell +PS C:\> Get-AzManagedHsmRoleDefinition -HsmName myHsm -Scope "/keys" + +RoleName Description Permissions +-------- ----------- ----------- +Managed HSM Administrator 1 permission(s) +Managed HSM Crypto Officer 1 permission(s) +Managed HSM Crypto User 1 permission(s) +Managed HSM Policy Administrator 1 permission(s) +Managed HSM Crypto Auditor 1 permission(s) +Managed HSM Crypto Service Encryption 1 permission(s) +Managed HSM Backup 1 permission(s) +``` + +The example lists all the roles at "/keys" scope. + +### Example 2 +```powershell +PS C:\> $backupRole = Get-AzManagedHsmRoleDefinition -HsmName bezmhsm -RoleDefinitionName "managed hsm backup" + +PS C:\> $backupRole.Permissions + +AllowedActions DeniedActions AllowedDataActions DeniedDataActions +-------------- ------------- ------------------ ----------------- +0 action(s) 0 action(s) 3 action(s) 0 action(s) + +PS C:\> $backupRole.Permissions.AllowedDataActions + +Microsoft.KeyVault/managedHsm/backup/start/action +Microsoft.KeyVault/managedHsm/backup/status/action +Microsoft.KeyVault/managedHsm/keys/backup/action + +RoleName Description Permissions +-------- ----------- ----------- +Managed HSM Administrator 1 permission(s) +Managed HSM Crypto Officer 1 permission(s) +Managed HSM Crypto User 1 permission(s) +Managed HSM Policy Administrator 1 permission(s) +Managed HSM Crypto Auditor 1 permission(s) +Managed HSM Crypto Service Encryption 1 permission(s) +Managed HSM Backup 1 permission(s) +``` + +The example gets the "Managed HSM Backup" role and inspects its permissions. + +## PARAMETERS + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer +Parameter Sets: (All) +Aliases: AzContext, AzureRmContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -HsmName +Name of the HSM. + +```yaml +Type: System.String +Parameter Sets: (All) +Aliases: + +Required: True +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RoleDefinitionName +Name of the role definition to get. + +```yaml +Type: System.String +Parameter Sets: ByName +Aliases: RoleName + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Scope +Scope at which the role assignment or definition applies to, e.g., '/' or '/keys' or '/keys/{keyName}'. +'/' is used when omitted. + +```yaml +Type: System.String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### None + +## OUTPUTS + +### Microsoft.Azure.Commands.KeyVault.Models.PSKeyVaultRoleDefinition + +## NOTES + +## RELATED LINKS diff --git a/src/KeyVault/KeyVault/help/New-AzKeyVault.md b/src/KeyVault/KeyVault/help/New-AzKeyVault.md index 66289e75c92c..21cea2ed8011 100644 --- a/src/KeyVault/KeyVault/help/New-AzKeyVault.md +++ b/src/KeyVault/KeyVault/help/New-AzKeyVault.md @@ -16,7 +16,7 @@ Creates a key vault. ``` New-AzKeyVault [-Name] <String> [-ResourceGroupName] <String> [-Location] <String> [-EnabledForDeployment] [-EnabledForTemplateDeployment] [-EnabledForDiskEncryption] [-EnablePurgeProtection] - [-EnableRbacAuthorization] [-SoftDeleteRetentionInDays <Int32>] [-Sku <SkuName>] [-Tag <Hashtable>] + [-EnableRbacAuthorization] [-SoftDeleteRetentionInDays <Int32>] [-Sku <String>] [-Tag <Hashtable>] [-NetworkRuleSet <PSKeyVaultNetworkRuleSet>] [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>] ``` @@ -275,10 +275,9 @@ Accept wildcard characters: False Specifies the SKU of the key vault instance. For information about which features are available for each SKU, see the Azure Key Vault Pricing website (https://go.microsoft.com/fwlink/?linkid=512521). ```yaml -Type: Microsoft.Azure.Management.KeyVault.Models.SkuName +Type: System.String Parameter Sets: (All) Aliases: -Accepted values: Standard, Premium Required: False Position: Named diff --git a/src/KeyVault/KeyVault/help/New-AzManagedHsm.md b/src/KeyVault/KeyVault/help/New-AzManagedHsm.md new file mode 100644 index 000000000000..cd87caf5e7cd --- /dev/null +++ b/src/KeyVault/KeyVault/help/New-AzManagedHsm.md @@ -0,0 +1,235 @@ +--- +external help file: Microsoft.Azure.PowerShell.Cmdlets.KeyVault.dll-Help.xml +Module Name: Az.KeyVault +online version: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/new-azmanagedhsm +schema: 2.0.0 +--- + +# New-AzManagedHsm + +## SYNOPSIS +Creates a managed HSM. + +## SYNTAX + +``` +New-AzManagedHsm [-Name] <String> [-ResourceGroupName] <String> [-Location] <String> + [-Administrator] <String[]> [-Sku <String>] [-Tag <Hashtable>] [-AsJob] + [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>] +``` + +## DESCRIPTION +The **New-AzManagedHsm** cmdlet creates a managed HSM in the specified resource group. To add, +remove, or list keys in the managed HSM, user should grant permissions by adding user ID to +Administrator. + +## EXAMPLES + +### Example 1: Create a StandardB1 managed HSM +```powershell +PS C:\> New-AzManagedHsm -Name 'myhsm' -ResourceGroupName 'myrg1' -Location 'eastus2euap' -Administrator "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" + +Name Resource Group Name Location SKU +---- ------------------- -------- --- +myhsm myrg1 eastus2euap StandardB1 +``` + +This command creates a managed HSM named myhsm in the location eastus2euap. The command +adds the managed HSM to the resource group named myrg1. Because the command does not specify a +value for the *SKU* parameter, it creates a Standard_B1 managed HSM. + +### Example 2: Create a CustomB32 managed HSM +```powershell +PS C:\>New-AzManagedHsm -Name 'myhsm' -ResourceGroupName 'myrg1' -Location 'eastus2euap' -Administrator "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -Sku 'CustomB32' +Name Resource Group Name Location SKU + +---- ------------------- -------- --- +myhsm myrg1 eastus2euap CustomB32 +``` + + + +This command creates a managed HSM, just like the previous example. However, it specifies a value of +CustomB32 for the *SKU* parameter to create a CustomB32 managed HSM. + +## PARAMETERS + +### -Administrator +Initial administrator object id for this managed HSM pool. + +```yaml +Type: System.String[] +Parameter Sets: (All) +Aliases: + +Required: True +Position: 3 +Default value: None +Accept pipeline input: True (ByPropertyName) +Accept wildcard characters: False +``` + +### -AsJob +Run cmdlet in the background + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer +Parameter Sets: (All) +Aliases: AzContext, AzureRmContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Location +Specifies the Azure region in which to create the key vault. +Use the command Get-AzResourceProvider with the ProviderNamespace parameter to see your choices. + +```yaml +Type: System.String +Parameter Sets: (All) +Aliases: + +Required: True +Position: 2 +Default value: None +Accept pipeline input: True (ByPropertyName) +Accept wildcard characters: False +``` + +### -Name +Specifies a name of the managed HSM to create. +The name can be any combination of letters, digits, or hyphens. +The name must start and end with a letter or digit. +The name must be universally unique. + +```yaml +Type: System.String +Parameter Sets: (All) +Aliases: HsmName + +Required: True +Position: 0 +Default value: None +Accept pipeline input: True (ByPropertyName) +Accept wildcard characters: False +``` + +### -ResourceGroupName +Specifies the name of an existing resource group in which to create the key vault. + +```yaml +Type: System.String +Parameter Sets: (All) +Aliases: + +Required: True +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName) +Accept wildcard characters: False +``` + +### -Sku +Specifies the SKU of the managed HSM instance. + +```yaml +Type: System.String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: True (ByPropertyName) +Accept wildcard characters: False +``` + +### -Tag +A hash table which represents resource tags. + +```yaml +Type: System.Collections.Hashtable +Parameter Sets: (All) +Aliases: Tags + +Required: False +Position: Named +Default value: None +Accept pipeline input: True (ByPropertyName) +Accept wildcard characters: False +``` + +### -Confirm +Prompts you for confirmation before running the cmdlet. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: cf + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -WhatIf +Shows what would happen if the cmdlet runs. +The cmdlet is not run. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: wi + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### System.String + +### System.String[] + +### System.Collections.Hashtable + +## OUTPUTS + +### Microsoft.Azure.Commands.KeyVault.Models.PSManagedHsm + +## NOTES + +## RELATED LINKS + +[Get-AzManagedHsm](./Get-AzManagedHsm.md) + +[Remove-AzManagedHsm](./Remove-AzManagedHsm.md) + +[Update-AzManagedHsm](./Update-AzManagedHsm.md) \ No newline at end of file diff --git a/src/KeyVault/KeyVault/help/New-AzManagedHsmRoleAssignment.md b/src/KeyVault/KeyVault/help/New-AzManagedHsmRoleAssignment.md new file mode 100644 index 000000000000..6d5b30706118 --- /dev/null +++ b/src/KeyVault/KeyVault/help/New-AzManagedHsmRoleAssignment.md @@ -0,0 +1,240 @@ +--- +external help file: Microsoft.Azure.PowerShell.Cmdlets.KeyVault.dll-Help.xml +Module Name: Az.KeyVault +online version: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/new-azmanagedhsmroleassignment +schema: 2.0.0 +--- + +# New-AzManagedHsmRoleAssignment + +## SYNOPSIS +Assigns the specified RBAC role to the specified principal, at the specified scope. + +## SYNTAX + +### DefinitionNameSignInName (Default) +``` +New-AzManagedHsmRoleAssignment [-HsmName] <String> [-Scope <String>] -RoleDefinitionName <String> + -SignInName <String> [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>] +``` + +### DefinitionNameApplicationId +``` +New-AzManagedHsmRoleAssignment [-HsmName] <String> [-Scope <String>] -RoleDefinitionName <String> + -ApplicationId <String> [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>] +``` + +### DefinitionNameObjectId +``` +New-AzManagedHsmRoleAssignment [-HsmName] <String> [-Scope <String>] -RoleDefinitionName <String> + -ObjectId <String> [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>] +``` + +### DefinitionIdApplicationId +``` +New-AzManagedHsmRoleAssignment [-HsmName] <String> [-Scope <String>] -RoleDefinitionId <String> + -ApplicationId <String> [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>] +``` + +### DefinitionIdObjectId +``` +New-AzManagedHsmRoleAssignment [-HsmName] <String> [-Scope <String>] -RoleDefinitionId <String> + -ObjectId <String> [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>] +``` + +### DefinitionIdSignInName +``` +New-AzManagedHsmRoleAssignment [-HsmName] <String> [-Scope <String>] -RoleDefinitionId <String> + -SignInName <String> [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>] +``` + +## DESCRIPTION +Use the `New-AzManagedHsmRoleAssignment` command to grant access. +Access is granted by assigning the appropriate RBAC role to them at the right scope. +The subject of the assignment must be specified. +To specify a user, use SignInName or Azure AD ObjectId parameters. +To specify a security group, use Azure AD ObjectId parameter. +And to specify an Azure AD application, use ApplicationId or ObjectId parameters. +The role that is being assigned must be specified using the RoleDefinitionName pr RoleDefinitionId parameter. The scope at which access is being granted may be specified. It defaults to the selected subscription. + +## EXAMPLES + +### Example 1 +```powershell +PS C:\> New-AzManagedHsmRoleAssignment -HsmName myHsm -RoleDefinitionName "Managed HSM Policy Administrator" -SignInName user1@microsoft.com + +RoleDefinitionName DisplayName ObjectType Scope +------------------ ----------- ---------- ----- +Managed HSM Policy Administrator User 1 (user1@microsoft.com) User / +``` + +This example assigns role "Managed HSM Policy Administrator" to user "user1@microsoft.com" at top scope. + +## PARAMETERS + +### -ApplicationId +The app SPN. + +```yaml +Type: System.String +Parameter Sets: DefinitionNameApplicationId, DefinitionIdApplicationId +Aliases: SPN, ServicePrincipalName + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer +Parameter Sets: (All) +Aliases: AzContext, AzureRmContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -HsmName +Name of the HSM. + +```yaml +Type: System.String +Parameter Sets: (All) +Aliases: + +Required: True +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ObjectId +The user or group object id. + +```yaml +Type: System.String +Parameter Sets: DefinitionNameObjectId, DefinitionIdObjectId +Aliases: Id, PrincipalId + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RoleDefinitionId +Role Id the principal is assigned to. + +```yaml +Type: System.String +Parameter Sets: DefinitionIdApplicationId, DefinitionIdObjectId, DefinitionIdSignInName +Aliases: RoleId + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RoleDefinitionName +Name of the RBAC role to assign the principal with. + +```yaml +Type: System.String +Parameter Sets: DefinitionNameSignInName, DefinitionNameApplicationId, DefinitionNameObjectId +Aliases: RoleName + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Scope +Scope at which the role assignment or definition applies to, e.g., '/' or '/keys' or '/keys/{keyName}'. +'/' is used when omitted. + +```yaml +Type: System.String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SignInName +The user SignInName. + +```yaml +Type: System.String +Parameter Sets: DefinitionNameSignInName, DefinitionIdSignInName +Aliases: Email, UserPrincipalName + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Confirm +Prompts you for confirmation before running the cmdlet. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: cf + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -WhatIf +Shows what would happen if the cmdlet runs. +The cmdlet is not run. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: wi + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### None + +## OUTPUTS + +### Microsoft.Azure.Commands.KeyVault.Models.PSKeyVaultRoleAssignment + +## NOTES + +## RELATED LINKS diff --git a/src/KeyVault/KeyVault/help/Remove-AzKeyVault.md b/src/KeyVault/KeyVault/help/Remove-AzKeyVault.md index 45acf6bc7803..7dd1887efad1 100644 --- a/src/KeyVault/KeyVault/help/Remove-AzKeyVault.md +++ b/src/KeyVault/KeyVault/help/Remove-AzKeyVault.md @@ -75,6 +75,15 @@ True This command removes the key vault named Contoso03Vault from the named resource group. If you do not specify the resource group name, the cmdlet searches for the named key vault to delete in your current subscription. +### Example 3: Remove a managed hsm +```powershell +PS C:\> Remove-AzKeyVault -Name "testManagedHsm" -Hsm -PassThru + +True +``` + +This command removes the managed hsm named testManagedHsm from your current subscription. + ## PARAMETERS ### -AsJob diff --git a/src/KeyVault/KeyVault/help/Remove-AzManagedHsm.md b/src/KeyVault/KeyVault/help/Remove-AzManagedHsm.md new file mode 100644 index 000000000000..7d0d75b6614a --- /dev/null +++ b/src/KeyVault/KeyVault/help/Remove-AzManagedHsm.md @@ -0,0 +1,235 @@ +--- +external help file: Microsoft.Azure.PowerShell.Cmdlets.KeyVault.dll-Help.xml +Module Name: Az.KeyVault +online version: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/remove-azmanagedhsm +schema: 2.0.0 +--- + +# Remove-AzManagedHsm + +## SYNOPSIS +Deletes a managed HSM. + +## SYNTAX + +### RemoveManagedHsmByName (Default) +``` +Remove-AzManagedHsm [-Name] <String> [[-ResourceGroupName] <String>] [-Force] [-AsJob] [-PassThru] + [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>] +``` + +### RemoveManagedHsmByInputObject +``` +Remove-AzManagedHsm [-InputObject] <PSManagedHsm> [-Force] [-AsJob] [-PassThru] + [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>] +``` + +### RemoveManagedHsmByResourceId +``` +Remove-AzManagedHsm [-ResourceId] <String> [-Force] [-AsJob] [-PassThru] + [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>] +``` + +## DESCRIPTION +The **Remove-AzManagedHsm** cmdlet deletes the specified managed HSM. +It also deletes all keys contained in that instance. +Note that although specifying the resource group is optional for this cmdlet, you should so for better performance. + +## EXAMPLES + +### Example 1: Remove a managed HSM +```powershell +PS C:\> Remove-AzManagedHsm -HsmName 'myhsm' -Force + +True +``` + +This command removes the managed hsm named myhsm from your current subscription. + +### Example 2: Remove a managed hsm from a specified resource group +```powershell +PS C:\> Remove-AzManagedHsm -HsmName 'myhsm' -ResourceGroupName "myrg1" -PassThru + +True +``` + +This command removes the managed hsm named myhsm from the resource group named myrg1. +If you do not specify the resource group name, the cmdlet searches for the named managed HSM to delete in your current subscription. + +## PARAMETERS + +### -AsJob +Run cmdlet in the background + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer +Parameter Sets: (All) +Aliases: AzContext, AzureRmContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Force +Indicates that the cmdlet does not prompt you for confirmation. +By default, this cmdlet prompts you to confirm that you want to delete the managed HSM. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InputObject +Managed HSM object to be deleted. + +```yaml +Type: Microsoft.Azure.Commands.KeyVault.Models.PSManagedHsm +Parameter Sets: RemoveManagedHsmByInputObject +Aliases: + +Required: True +Position: 0 +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -Name +Specifies the name of the managed HSM to remove. + +```yaml +Type: System.String +Parameter Sets: RemoveManagedHsmByName +Aliases: HsmName + +Required: True +Position: 0 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PassThru +This Cmdlet does not return an object by default. +If this switch is specified, it returns true if successful. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResourceGroupName +Specifies the name of resource group for Azure managed HSM to remove. + +```yaml +Type: System.String +Parameter Sets: RemoveManagedHsmByName +Aliases: + +Required: False +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResourceId +ManagedHsm Resource Id. + +```yaml +Type: System.String +Parameter Sets: RemoveManagedHsmByResourceId +Aliases: + +Required: True +Position: 0 +Default value: None +Accept pipeline input: True (ByPropertyName) +Accept wildcard characters: False +``` + +### -Confirm +Prompts you for confirmation before running the cmdlet. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: cf + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -WhatIf +Shows what would happen if the cmdlet runs. +The cmdlet is not run. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: wi + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.Commands.KeyVault.Models.PSManagedHsm + +### System.String + +## OUTPUTS + +### System.Boolean + +## NOTES + +## RELATED LINKS + +[Get-AzManagedHsm](./Get-AzManagedHsm.md) + +[New-AzManagedHsm](./New-AzManagedHsm.md) + +[Update-AzManagedHsm](./Update-AzManagedHsm.md) \ No newline at end of file diff --git a/src/KeyVault/KeyVault/help/Remove-AzManagedHsmKey.md b/src/KeyVault/KeyVault/help/Remove-AzManagedHsmKey.md new file mode 100644 index 000000000000..6b0d63d973c7 --- /dev/null +++ b/src/KeyVault/KeyVault/help/Remove-AzManagedHsmKey.md @@ -0,0 +1,244 @@ +--- +external help file: Microsoft.Azure.PowerShell.Cmdlets.KeyVault.dll-Help.xml +Module Name: Az.KeyVault +online version: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/remove-azmanagedhsmkey +schema: 2.0.0 +--- + +# Remove-AzManagedHsmKey + +## SYNOPSIS +Deletes a key in a managed HSM. + +## SYNTAX + +### RemoveByKeyNameParameterSet (Default) +``` +Remove-AzManagedHsmKey [-HsmName] <String> [-Name] <String> [-Force] [-PassThru] [-InRemovedState] + [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>] +``` + +### RemoveByInputObjectParameterSet +``` +Remove-AzManagedHsmKey [-InputObject] <PSKeyVaultKeyIdentityItem> [-Force] [-PassThru] [-InRemovedState] + [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>] +``` + +## DESCRIPTION +The Remove-AzManagedHsmKey cmdlet deletes a key in a managed HSM. +If the key was accidentally deleted the key can be recovered using Undo-AzManagedHsmKeyRemoval by a user with special 'recover' permissions. +This cmdlet has a value of high for the **ConfirmImpact** property. + +## EXAMPLES + +### Example 1: Remove a key from a managed HSM +```powershell +PS C:\> Remove-AzManagedHsmKey -HsmName testmhsm -Name testkey -PassThru + +Vault/HSM Name : testmhsm +Name : testkey +Id : https://testmhsm.managedhsm.azure.net:443/keys/testkey/9a9de2bcec540c3b160cd54cbae71339 +Deleted Date : 10/14/2020 9:35:06 AM +Scheduled Purge Date : 1/12/2021 9:35:06 AM +Enabled : False +Expires : 10/14/2022 8:13:29 AM +Not Before : 10/14/2020 8:13:33 AM +Created : 10/14/2020 8:14:01 AM +Updated : 10/14/2020 8:14:01 AM +Recovery Level : Recoverable+Purgeable +Tags : +``` + +This command removes the key named testkey from the managed HSM named testmhsm. + +### Example 2: Remove a key without user confirmation +```powershell +PS C:\> Remove-AzManagedHsmKey -HsmName testmhsm -Name testkey -Force +``` + +This command removes the key named testkey from the managed HSM named testmhsm. +The command specifies the *Force* parameter, and, therefore, the cmdlet does not prompt you for confirmation. + +### Example 3: Purge a deleted key from the managed HSM permanently +```powershell +PS C:\> Remove-AzManagedHsmKey -HsmName testmhsm -Name testkey -InRemovedState +``` + +This command removes the key named testkey from the managed HSM named testmhsm permanently. +Executing this cmdlet requires the 'purge' permission, which must have been previously and explicitly granted to the user for this managed HSM. + +### Example 4: Remove keys by using the pipeline operator +```powershell +PS C:\> Get-AzManagedHsmKey -HsmName testmhsm | Where-Object {$_.Attributes.Enabled -eq $False} | Remove-AzManagedHsmKey +``` + +This command gets all the keys in the managed HSM named testmhsm and passes them to the **Where-Object** cmdlet by using the pipeline operator. +That cmdlet passes the keys that have a value of $False for the **Enabled** attribute to the current cmdlet. +That cmdlet removes those keys. + +## PARAMETERS + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer +Parameter Sets: (All) +Aliases: AzContext, AzureRmContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Force +Do not ask for confirmation. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -HsmName +HSM name. Cmdlet constructs the FQDN of a managed HSM based on the name and currently selected environment. + +```yaml +Type: System.String +Parameter Sets: RemoveByKeyNameParameterSet +Aliases: + +Required: True +Position: 0 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InputObject +Key Object + +```yaml +Type: Microsoft.Azure.Commands.KeyVault.Models.PSKeyVaultKeyIdentityItem +Parameter Sets: RemoveByInputObjectParameterSet +Aliases: + +Required: True +Position: 0 +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -InRemovedState +Remove the previously deleted key permanently. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Name +Key name. +Cmdlet constructs the FQDN of a key from managed HSM name, currently selected environment and key name. + +```yaml +Type: System.String +Parameter Sets: RemoveByKeyNameParameterSet +Aliases: KeyName + +Required: True +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PassThru +Cmdlet does not return an object by default. +If this switch is specified, the cmdlet returns the key object that was deleted. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Confirm +Prompts you for confirmation before running the cmdlet. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: cf + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -WhatIf +Shows what would happen if the cmdlet runs. +The cmdlet is not run. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: wi + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.Commands.KeyVault.Models.PSKeyVaultKeyIdentityItem + +## OUTPUTS + +### Microsoft.Azure.Commands.KeyVault.Models.PSDeletedKeyVaultKey + +## NOTES + +## RELATED LINKS + +[Add-AzManagedHsmKey](./Add-AzManagedHsmKey.md) + +[Backup-AzManagedHsmKey](./Backup-AzManagedHsmKey.md) + +[Get-AzManagedHsmKey](./Get-AzManagedHsmKey.md) + +[Undo-AzManagedHsmKeyRemoval](./Undo-AzManagedHsmKeyRemoval.md) + +[Update-AzManagedHsmKey](./Update-AzManagedHsmKey.md) + +[Restore-AzManagedHsmKey](./Restore-AzManagedHsmKey.md) \ No newline at end of file diff --git a/src/KeyVault/KeyVault/help/Remove-AzManagedHsmRoleAssignment.md b/src/KeyVault/KeyVault/help/Remove-AzManagedHsmRoleAssignment.md new file mode 100644 index 000000000000..72e929fd4051 --- /dev/null +++ b/src/KeyVault/KeyVault/help/Remove-AzManagedHsmRoleAssignment.md @@ -0,0 +1,301 @@ +--- +external help file: Microsoft.Azure.PowerShell.Cmdlets.KeyVault.dll-Help.xml +Module Name: Az.KeyVault +online version: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/remove-azmanagedhsmroleassignment +schema: 2.0.0 +--- + +# Remove-AzManagedHsmRoleAssignment + +## SYNOPSIS +Removes a role assignment to the specified principal who is assigned to a particular role at a particular scope. + +## SYNTAX + +### DefinitionNameSignInName (Default) +``` +Remove-AzManagedHsmRoleAssignment [-HsmName] <String> [-Scope <String>] -RoleDefinitionName <String> + -SignInName <String> [-PassThru] [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] + [<CommonParameters>] +``` + +### DefinitionNameApplicationId +``` +Remove-AzManagedHsmRoleAssignment [-HsmName] <String> [-Scope <String>] -RoleDefinitionName <String> + -ApplicationId <String> [-PassThru] [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] + [<CommonParameters>] +``` + +### DefinitionNameObjectId +``` +Remove-AzManagedHsmRoleAssignment [-HsmName] <String> [-Scope <String>] -RoleDefinitionName <String> + -ObjectId <String> [-PassThru] [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] + [<CommonParameters>] +``` + +### DefinitionIdApplicationId +``` +Remove-AzManagedHsmRoleAssignment [-HsmName] <String> [-Scope <String>] -RoleDefinitionId <String> + -ApplicationId <String> [-PassThru] [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] + [<CommonParameters>] +``` + +### DefinitionIdObjectId +``` +Remove-AzManagedHsmRoleAssignment [-HsmName] <String> [-Scope <String>] -RoleDefinitionId <String> + -ObjectId <String> [-PassThru] [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] + [<CommonParameters>] +``` + +### DefinitionIdSignInName +``` +Remove-AzManagedHsmRoleAssignment [-HsmName] <String> [-Scope <String>] -RoleDefinitionId <String> + -SignInName <String> [-PassThru] [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] + [<CommonParameters>] +``` + +### RemoveByNameParameterSet +``` +Remove-AzManagedHsmRoleAssignment [-HsmName] <String> [-Scope <String>] [-PassThru] + -RoleAssignmentName <String> [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] + [<CommonParameters>] +``` + +### InputObject +``` +Remove-AzManagedHsmRoleAssignment [-Scope <String>] [-PassThru] -InputObject <PSKeyVaultRoleAssignment> + [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>] +``` + +## DESCRIPTION +Use the `Remove-AzManagedHsmRoleAssignment` cmdlet to revoke access to any principal at given scope and given role. The object of the assignment i.e. the principal MUST be specified. The principal can be a user (use SignInName or ObjectId parameters to identify a user), security group (use ObjectId parameter to identify a group) or service principal (use ApplicationId or ObjectId parameters to identify a ServicePrincipal. The role that the principal is assigned to MUST be specified using the RoleDefinitionName or RoleDefinitionId parameter. + +## EXAMPLES + +### Example 1 +```powershell +PS C:\> Remove-AzManagedHsmRoleAssignment -HsmName myHsm -RoleDefinitionName "Managed HSM Policy Administrator" -SignInName user1@microsoft.com -Scope "/keys" +``` + +This example revokes "Managed HSM Policy Administrator" role of "user1@microsoft.com" at "/keys" scope. + +### Example 2 +```powershell +PS C:\> Get-AzManagedHsmRoleAssignment -HsmName myHsm -SignInName user1@microsoft.com | Remove-AzManagedHsmRoleAssignment +``` + +This example revokes all roles of "user1@microsoft.com" at all scopes. + +## PARAMETERS + +### -ApplicationId +The app SPN. + +```yaml +Type: System.String +Parameter Sets: DefinitionNameApplicationId, DefinitionIdApplicationId +Aliases: SPN, ServicePrincipalName + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer +Parameter Sets: (All) +Aliases: AzContext, AzureRmContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -HsmName +Name of the HSM. + +```yaml +Type: System.String +Parameter Sets: DefinitionNameSignInName, DefinitionNameApplicationId, DefinitionNameObjectId, DefinitionIdApplicationId, DefinitionIdObjectId, DefinitionIdSignInName, RemoveByNameParameterSet +Aliases: + +Required: True +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InputObject +Role assignment object. + +```yaml +Type: Microsoft.Azure.Commands.KeyVault.Models.PSKeyVaultRoleAssignment +Parameter Sets: InputObject +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -ObjectId +The user or group object id. + +```yaml +Type: System.String +Parameter Sets: DefinitionNameObjectId, DefinitionIdObjectId +Aliases: Id, PrincipalId + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PassThru +Return true when the HSM is restored. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RoleAssignmentName +Name of the role assignment. + +```yaml +Type: System.String +Parameter Sets: RemoveByNameParameterSet +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RoleDefinitionId +Role Id the principal is assigned to. + +```yaml +Type: System.String +Parameter Sets: DefinitionIdApplicationId, DefinitionIdObjectId, DefinitionIdSignInName +Aliases: RoleId + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RoleDefinitionName +Name of the RBAC role to assign the principal with. + +```yaml +Type: System.String +Parameter Sets: DefinitionNameSignInName, DefinitionNameApplicationId, DefinitionNameObjectId +Aliases: RoleName + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Scope +Scope at which the role assignment or definition applies to, e.g., '/' or '/keys' or '/keys/{keyName}'. +'/' is used when omitted. + +```yaml +Type: System.String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SignInName +The user SignInName. + +```yaml +Type: System.String +Parameter Sets: DefinitionNameSignInName, DefinitionIdSignInName +Aliases: Email, UserPrincipalName + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Confirm +Prompts you for confirmation before running the cmdlet. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: cf + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -WhatIf +Shows what would happen if the cmdlet runs. +The cmdlet is not run. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: wi + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.Commands.KeyVault.Models.PSKeyVaultRoleAssignment + +## OUTPUTS + +### Microsoft.Azure.Commands.KeyVault.Models.PSKeyVaultRoleAssignment + +## NOTES + +## RELATED LINKS diff --git a/src/KeyVault/KeyVault/help/Restore-AzManagedHsm.md b/src/KeyVault/KeyVault/help/Restore-AzManagedHsm.md new file mode 100644 index 000000000000..965324f7395b --- /dev/null +++ b/src/KeyVault/KeyVault/help/Restore-AzManagedHsm.md @@ -0,0 +1,238 @@ +--- +external help file: Microsoft.Azure.PowerShell.Cmdlets.KeyVault.dll-Help.xml +Module Name: Az.KeyVault +online version: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/restore-azmanagedhsm +schema: 2.0.0 +--- + +# Restore-AzManagedHsm + +## SYNOPSIS +Fully restores a managed HSM from backup. + +## SYNTAX + +### InteractiveStorageName (Default) +``` +Restore-AzManagedHsm -BackupFolder <String> [-PassThru] [-Name] <String> -StorageAccountName <String> + -StorageContainerName <String> -SasToken <SecureString> [-DefaultProfile <IAzureContextContainer>] [-WhatIf] + [-Confirm] [<CommonParameters>] +``` + +### InteractiveStorageUri +``` +Restore-AzManagedHsm -BackupFolder <String> [-PassThru] [-Name] <String> -StorageContainerUri <Uri> + -SasToken <SecureString> [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>] +``` + +### InputObjectStorageUri +``` +Restore-AzManagedHsm -BackupFolder <String> [-PassThru] -StorageContainerUri <Uri> -SasToken <SecureString> + -HsmObject <PSManagedHsm> [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>] +``` + +### InputObjectStorageName +``` +Restore-AzManagedHsm -BackupFolder <String> [-PassThru] -StorageAccountName <String> + -StorageContainerName <String> -SasToken <SecureString> -HsmObject <PSManagedHsm> + [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>] +``` + +## DESCRIPTION +Fully restores a managed HSM from a backup stored in a storage account. +Use `Backup-AzManagedHsm` to backup. + +## EXAMPLES + +### Example 1 +```powershell +PS C:\> $sasToken = ConvertTo-SecureString -AsPlainText -Force "?sv=2019-12-12&ss=bfqt&srt=sco&sp=rwdlacupx&se=2020-10-12T14:42:19Z&st=2020-10-12T06:42:19Z&spr=https&sig=******" +PS C:\> Restore-AzManagedHsm -Name myHsm -BlobStorageUri "https://{accountName}.blob.core.windows.net/{containerName}" -BackupFolder "mhsm-myHsm-2020101308504935" -SasToken $sasToken +``` + +The example restores a backup stored in a folder named "mhsm-myHsm-2020101308504935" of a storage container "https://{accountName}.blob.core.windows.net/{containerName}". + +## PARAMETERS + +### -BackupFolder +Folder name of the backup, e.g. +'mhsm-*-2020101309020403'. +It can also be nested such as 'backups/mhsm-*-2020101309020403'. + +```yaml +Type: System.String +Parameter Sets: (All) +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer +Parameter Sets: (All) +Aliases: AzContext, AzureRmContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -HsmObject +Managed HSM object + +```yaml +Type: Microsoft.Azure.Commands.KeyVault.Models.PSManagedHsm +Parameter Sets: InputObjectStorageUri, InputObjectStorageName +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Name +Name of the HSM. + +```yaml +Type: System.String +Parameter Sets: InteractiveStorageName, InteractiveStorageUri +Aliases: HsmName + +Required: True +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PassThru +Return true when the HSM is restored. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SasToken +The shared access signature (SAS) token to authenticate the storage account. + +```yaml +Type: System.Security.SecureString +Parameter Sets: (All) +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -StorageAccountName +Name of the storage account where the backup is going to be stored. + +```yaml +Type: System.String +Parameter Sets: InteractiveStorageName, InputObjectStorageName +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -StorageContainerName +Name of the blob container where the backup is going to be stored. + +```yaml +Type: System.String +Parameter Sets: InteractiveStorageName, InputObjectStorageName +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -StorageContainerUri +URI of the storage container where the backup is going to be stored. + +```yaml +Type: System.Uri +Parameter Sets: InteractiveStorageUri, InputObjectStorageUri +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Confirm +Prompts you for confirmation before running the cmdlet. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: cf + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -WhatIf +Shows what would happen if the cmdlet runs. +The cmdlet is not run. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: wi + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### None + +## OUTPUTS + +### System.Boolean + +## NOTES + +## RELATED LINKS diff --git a/src/KeyVault/KeyVault/help/Restore-AzManagedHsmKey.md b/src/KeyVault/KeyVault/help/Restore-AzManagedHsmKey.md new file mode 100644 index 000000000000..cde27cda638f --- /dev/null +++ b/src/KeyVault/KeyVault/help/Restore-AzManagedHsmKey.md @@ -0,0 +1,199 @@ +--- +external help file: Microsoft.Azure.PowerShell.Cmdlets.KeyVault.dll-Help.xml +Module Name: Az.KeyVault +online version: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/restore-azmanagedhsmkey +schema: 2.0.0 +--- + +# Restore-AzManagedHsmKey + +## SYNOPSIS +Creates a key in a managed HSM from a backed-up key. + +## SYNTAX + +### ByHsmName (Default) +``` +Restore-AzManagedHsmKey [-HsmName] <String> [-InputFile] <String> [-DefaultProfile <IAzureContextContainer>] + [-WhatIf] [-Confirm] [<CommonParameters>] +``` + +### ByInputObject +``` +Restore-AzManagedHsmKey [-InputObject] <PSManagedHsm> [-InputFile] <String> + [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>] +``` + +### ByResourceId +``` +Restore-AzManagedHsmKey [-ResourceId] <String> [-InputFile] <String> [-DefaultProfile <IAzureContextContainer>] + [-WhatIf] [-Confirm] [<CommonParameters>] +``` + +## DESCRIPTION +The **Restore-AzManagedHsmKey** cmdlet creates a key in the specified managed HSM. +This key is a replica of the backed-up key in the input file and has the same name as the original key. +If the managed HSM already has a key by the same name, this cmdlet fails instead of overwriting the original key. +If the backup contains multiple versions of a key, all versions are restored. +The managed HSM that you restore the key into can be different from the managed HSM that you backed up the key from. +However, the managed HSM must use the same subscription and be in an Azure region in the same geography (for example, North America). +See the Microsoft Azure Trust Center (https://azure.microsoft.com/support/trust-center/) for the mapping of Azure regions to geographies. + +## EXAMPLES + +### Example 1 +```powershell +PS C:\> Restore-AzManagedHsmKey -HsmName testmhsm -InputFile "C:\Backup.blob" + +Vault/HSM Name : testmhsm +Name : testkey001 +Version : 7cff8510da04433b98144a3e33ad2bae +Id : https://testmhsm.managedhsm.azure.net:443/keys/testkey001/7cff8510da04433b98144a3e33ad2bae +Enabled : True +Expires : +Not Before : +Created : 10/14/2020 10:13:03 AM +Updated : 10/14/2020 10:13:03 AM +Recovery Level : Recoverable+Purgeable +Tags : +``` + +This command restores a key, including all of its versions, from the backup file named Backup.blob into the managed HSM named testmhsm. + +## PARAMETERS + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer +Parameter Sets: (All) +Aliases: AzContext, AzureRmContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -HsmName +HSM name. Cmdlet constructs the FQDN of a managed HSM based on the name and currently selected environment. + +```yaml +Type: System.String +Parameter Sets: ByHsmName +Aliases: + +Required: True +Position: 0 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InputFile +Input file. +The input file containing the backed-up blob + +```yaml +Type: System.String +Parameter Sets: (All) +Aliases: + +Required: True +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InputObject +HSM object + +```yaml +Type: Microsoft.Azure.Commands.KeyVault.Models.PSManagedHsm +Parameter Sets: ByInputObject +Aliases: + +Required: True +Position: 0 +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -ResourceId +HSM Resource Id + +```yaml +Type: System.String +Parameter Sets: ByResourceId +Aliases: + +Required: True +Position: 0 +Default value: None +Accept pipeline input: True (ByPropertyName) +Accept wildcard characters: False +``` + +### -Confirm +Prompts you for confirmation before running the cmdlet. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: cf + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -WhatIf +Shows what would happen if the cmdlet runs. +The cmdlet is not run. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: wi + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.Commands.KeyVault.Models.PSKeyVaultKeyIdentityItem + +### System.String + +## OUTPUTS + +### Microsoft.Azure.Commands.KeyVault.Models.PSKeyVaultKey + +## NOTES + +## RELATED LINKS + +[Add-AzManagedHsmKey](./Add-AzManagedHsmKey.md) + +[Backup-AzManagedHsmKey](./Backup-AzManagedHsmKey.md) + +[Remove-AzManagedHsmKey](./Remove-AzManagedHsmKey.md) + +[Undo-AzManagedHsmKeyRemoval](./Undo-AzManagedHsmKeyRemoval.md) + +[Get-AzManagedHsmKey](./Get-AzManagedHsmKey.md) + +[Update-AzManagedHsmKey](./Update-AzManagedHsmKey.md) \ No newline at end of file diff --git a/src/KeyVault/KeyVault/help/Restore-AzManagedHsmSecurityDomain.md b/src/KeyVault/KeyVault/help/Restore-AzManagedHsmSecurityDomain.md new file mode 100644 index 000000000000..d742117943fa --- /dev/null +++ b/src/KeyVault/KeyVault/help/Restore-AzManagedHsmSecurityDomain.md @@ -0,0 +1,179 @@ +--- +external help file: Microsoft.Azure.PowerShell.Cmdlets.KeyVault.dll-Help.xml +Module Name: Az.KeyVault +online version: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/restore-azmanagedhsmsecuritydomain +schema: 2.0.0 +--- + +# Restore-AzManagedHsmSecurityDomain + +## SYNOPSIS +Restores previous backed up security domain data to a managed HSM. + +## SYNTAX + +### ByName (Default) +``` +Restore-AzManagedHsmSecurityDomain -Keys <KeyPath[]> -SecurityDomainPath <String> [-PassThru] -Name <String> + [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>] +``` + +### ByInputObject +``` +Restore-AzManagedHsmSecurityDomain -Keys <KeyPath[]> -SecurityDomainPath <String> [-PassThru] + -InputObject <PSKeyVaultIdentityItem> [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] + [<CommonParameters>] +``` + +## DESCRIPTION +This cmdlet restores previous backed up security domain data to a managed HSM. + +## EXAMPLES + +### Example 1 +```powershell +PS C:\> $keys = @{PublicKey = "sd1.cer"; PrivateKey = "sd1.key"}, @{PublicKey = "sd2.cer"; PrivateKey = sd2.key"}, @{PublicKey = "sd3.cer"; PrivateKey = "sd3.key"} +PS C:\> Restore-AzManagedHsmSecurityDomain -Name testmhsm -Keys $keys -SecurityDomainPath {pathOfBackup}\sd.ps.json +``` + +First, the keys need be provided to decrypt the security domain data. +Then, The **Restore-AzManagedHsmSecurityDomain** command restores previous backed up security domain data to a managed HSM using these keys. + +## PARAMETERS + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer +Parameter Sets: (All) +Aliases: AzContext, AzureRmContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InputObject +Object representing a managed HSM. + +```yaml +Type: Microsoft.Azure.Commands.KeyVault.Models.PSKeyVaultIdentityItem +Parameter Sets: ByInputObject +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -Keys +Information about the keys that are used to decrypt the security domain data. +See examples for how it is constructed. + +```yaml +Type: Microsoft.Azure.Commands.KeyVault.SecurityDomain.Models.KeyPath[] +Parameter Sets: (All) +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Name +Name of the managed HSM. + +```yaml +Type: System.String +Parameter Sets: ByName +Aliases: HsmName + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PassThru +When specified, a boolean will be returned when cmdlet succeeds. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SecurityDomainPath +Specify the path to the encrypted security domain data. + +```yaml +Type: System.String +Parameter Sets: (All) +Aliases: Path + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Confirm +Prompts you for confirmation before running the cmdlet. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: cf + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -WhatIf +Shows what would happen if the cmdlet runs. +The cmdlet is not run. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: wi + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.Commands.KeyVault.Models.PSKeyVaultIdentityItem + +## OUTPUTS + +### System.Boolean + +## NOTES + +## RELATED LINKS diff --git a/src/KeyVault/KeyVault/help/Undo-AzManagedHsmKeyRemoval.md b/src/KeyVault/KeyVault/help/Undo-AzManagedHsmKeyRemoval.md new file mode 100644 index 000000000000..14343e0e574e --- /dev/null +++ b/src/KeyVault/KeyVault/help/Undo-AzManagedHsmKeyRemoval.md @@ -0,0 +1,172 @@ +--- +external help file: Microsoft.Azure.PowerShell.Cmdlets.KeyVault.dll-Help.xml +Module Name: Az.KeyVault +online version: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/undo-azmanagedhsmkeyremoval +schema: 2.0.0 +--- + +# Undo-AzManagedHsmKeyRemoval + +## SYNOPSIS +Recovers a deleted key in a managed HSM into an active state. + +## SYNTAX + +### Default (Default) +``` +Undo-AzManagedHsmKeyRemoval [-HsmName] <String> [-Name] <String> [-DefaultProfile <IAzureContextContainer>] + [-WhatIf] [-Confirm] [<CommonParameters>] +``` + +### InputObject +``` +Undo-AzManagedHsmKeyRemoval [-InputObject] <PSDeletedKeyVaultKeyIdentityItem> + [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>] +``` + +## DESCRIPTION +The **Undo-AzManagedHsmKeyRemoval** cmdlet will recover a previously deleted key. +The recovered key will be active and can be used for all normal key operations. +Caller needs to have 'recover' permission in order to perform this operation. + +## EXAMPLES + +### Example 1 +```powershell +PS C:\> Undo-AzManagedHsmKeyRemoval -HsmName testmhsm -Name testkey001 + +Vault/HSM Name : testmhsm +Name : testkey001 +Version : 7cff8510da04433b98144a3e33ad2bae +Id : https://testmhsm.managedhsm.azure.net:443/keys/testkey001/7cff8510da04433b98144a3e33ad2bae +Enabled : True +Expires : +Not Before : +Created : 10/14/2020 10:13:03 AM +Updated : 10/14/2020 10:13:03 AM +Recovery Level : Recoverable+Purgeable +Tags : +``` + +This command will recover the key 'testkey001' that was previously deleted, into an active and usable state. + +## PARAMETERS + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer +Parameter Sets: (All) +Aliases: AzContext, AzureRmContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -HsmName +HSM name. Cmdlet constructs the FQDN of a managed HSM based on the name and currently selected environment. + +```yaml +Type: System.String +Parameter Sets: Default +Aliases: + +Required: True +Position: 0 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InputObject +Deleted key object + +```yaml +Type: Microsoft.Azure.Commands.KeyVault.Models.PSDeletedKeyVaultKeyIdentityItem +Parameter Sets: InputObject +Aliases: + +Required: True +Position: 0 +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -Name +Key name. +Cmdlet constructs the FQDN of a key from managed HSM name, currently selected environment and key name. + +```yaml +Type: System.String +Parameter Sets: Default +Aliases: KeyName + +Required: True +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Confirm +Prompts you for confirmation before running the cmdlet. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: cf + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -WhatIf +Shows what would happen if the cmdlet runs. +The cmdlet is not run. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: wi + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.Commands.KeyVault.Models.PSDeletedKeyVaultKeyIdentityItem + +## OUTPUTS + +### Microsoft.Azure.Commands.KeyVault.Models.PSKeyVaultKey + +## NOTES + +## RELATED LINKS + +[Add-AzManagedHsmKey](./Add-AzManagedHsmKey.md) + +[Backup-AzManagedHsmKey](./Backup-AzManagedHsmKey.md) + +[Remove-AzManagedHsmKey](./Remove-AzManagedHsmKey.md) + +[Restore-AzManagedHsmKey](./Restore-AzManagedHsmKey.md) + +[Get-AzManagedHsmKey](./Get-AzManagedHsmKey.md) + +[Update-AzManagedHsmKey](./Update-AzManagedHsmKey.md) \ No newline at end of file diff --git a/src/KeyVault/KeyVault/help/Update-AzKeyVault.md b/src/KeyVault/KeyVault/help/Update-AzKeyVault.md index bf679cbd45d9..36a7f0ea95fa 100644 --- a/src/KeyVault/KeyVault/help/Update-AzKeyVault.md +++ b/src/KeyVault/KeyVault/help/Update-AzKeyVault.md @@ -36,8 +36,7 @@ This cmdlet updates the state of an Azure key vault. ## EXAMPLES - -### Example 1 +### Example 2 ```powershell PS C:\> Get-AzKeyVault -VaultName $keyVaultName -ResourceGroupName $resourceGroupName | Update-AzKeyVault -EnablePurgeProtection ``` diff --git a/src/KeyVault/KeyVault/help/Update-AzManagedHsm.md b/src/KeyVault/KeyVault/help/Update-AzManagedHsm.md new file mode 100644 index 000000000000..de5d6784a1fc --- /dev/null +++ b/src/KeyVault/KeyVault/help/Update-AzManagedHsm.md @@ -0,0 +1,217 @@ +--- +external help file: Microsoft.Azure.PowerShell.Cmdlets.KeyVault.dll-Help.xml +Module Name: Az.KeyVault +online version: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/update-azmanagedhsm +schema: 2.0.0 +--- + +# Update-AzManagedHsm + +## SYNOPSIS +Update the state of an Azure managed HSM. + +## SYNTAX + +### UpdateByNameParameterSet (Default) +``` +Update-AzManagedHsm -Name <String> -ResourceGroupName <String> [-Tag <Hashtable>] + [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>] +``` + +### UpdateByInputObjectParameterSet +``` +Update-AzManagedHsm -InputObject <PSManagedHsm> [-Tag <Hashtable>] [-DefaultProfile <IAzureContextContainer>] + [-WhatIf] [-Confirm] [<CommonParameters>] +``` + +### UpdateByResourceIdParameterSet +``` +Update-AzManagedHsm -ResourceId <String> [-Tag <Hashtable>] [-DefaultProfile <IAzureContextContainer>] + [-WhatIf] [-Confirm] [<CommonParameters>] +``` + +## DESCRIPTION +This cmdlet updates the state of an Azure managed HSM. + +## EXAMPLES + +### Example 1: Update a managed Hsm directly +```powershell +PS C:\> Update-AzManagedHsm -Name $hsmName -ResourceGroupName $resourceGroupName -Tag @{testKey="testValue"} | fl + +Managed HSM Name : testmhsm +Resource Group Name : testmhsm +Location : eastus2euap +Resource ID : /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/testmhsm/provid + ers/Microsoft.KeyVault/managedHSMs/testmhsm +HSM Pool URI : +Tenant ID : xxxxxx-xxxx-xxxx-xxxxxxxxxxxx +Initial Admin Object Ids : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx​​​​​ +SKU : StandardB1 +Soft Delete Enabled? : True +Enabled Purge Protection? : False +Soft Delete Retention Period (days) : 90 +Provisioning State : Provisioning +Status Message : Resource creation in progress. Starting service... +Tags : + Name Value + ==== ===== + testKey testValued +``` + +Updates tags for the managed Hsm named `$hsmName` in resource group `$resourceGroupName`. + +### Example 2: Update a managed Hsm using piping +```powershell +PS C:\> Get-AzManagedHsm -Name $hsmName -ResourceGroupName $resourceGroupName | Update-AzManagedHsm -Tag @{testKey="testValue"} +``` + +Updates tags for the managed Hsm using piping syntax. + +## PARAMETERS + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer +Parameter Sets: (All) +Aliases: AzContext, AzureRmContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InputObject +Managed HSM object. + +```yaml +Type: Microsoft.Azure.Commands.KeyVault.Models.PSManagedHsm +Parameter Sets: UpdateByInputObjectParameterSet +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -Name +Name of the managed HSM. + +```yaml +Type: System.String +Parameter Sets: UpdateByNameParameterSet +Aliases: HsmName + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResourceGroupName +Name of the resource group. + +```yaml +Type: System.String +Parameter Sets: UpdateByNameParameterSet +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResourceId +Resource ID of the managed HSM. + +```yaml +Type: System.String +Parameter Sets: UpdateByResourceIdParameterSet +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByPropertyName) +Accept wildcard characters: False +``` + +### -Tag +A hash table which represents resource tags. + +```yaml +Type: System.Collections.Hashtable +Parameter Sets: (All) +Aliases: Tags + +Required: False +Position: Named +Default value: None +Accept pipeline input: True (ByPropertyName) +Accept wildcard characters: False +``` + +### -Confirm +Prompts you for confirmation before running the cmdlet. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: cf + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -WhatIf +Shows what would happen if the cmdlet runs. +The cmdlet is not run. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: wi + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.Commands.KeyVault.Models.PSManagedHsm + +### System.String + +### System.Collections.Hashtable + +## OUTPUTS + +### Microsoft.Azure.Commands.KeyVault.Models.PSManagedHsm + +## NOTES + +## RELATED LINKS + +[New-AzManagedHsm](./New-AzManagedHsm.md) + +[Remove-AzManagedHsm](./Remove-AzManagedHsm.md) + +[Get-AzManagedHsm](./Get-AzManagedHsm.md) \ No newline at end of file diff --git a/src/KeyVault/KeyVault/help/Update-AzManagedHsmKey.md b/src/KeyVault/KeyVault/help/Update-AzManagedHsmKey.md new file mode 100644 index 000000000000..cd18ddd5140c --- /dev/null +++ b/src/KeyVault/KeyVault/help/Update-AzManagedHsmKey.md @@ -0,0 +1,293 @@ +--- +external help file: Microsoft.Azure.PowerShell.Cmdlets.KeyVault.dll-Help.xml +Module Name: Az.KeyVault +online version: https://docs.microsoft.com/en-us/powershell/module/az.keyvault/update-azmanagedhsmkey +schema: 2.0.0 +--- + +# Update-AzManagedHsmKey + +## SYNOPSIS +Updates the attributes of a key in a managed HSM. + +## SYNTAX + +### Default (Default) +``` +Update-AzManagedHsmKey [-HsmName] <String> [-Name] <String> [[-Version] <String>] [-Enable <Boolean>] + [-Expires <DateTime>] [-NotBefore <DateTime>] [-KeyOps <String[]>] [-Tag <Hashtable>] [-PassThru] + [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>] +``` + +### InputObject +``` +Update-AzManagedHsmKey [-InputObject] <PSKeyVaultKeyIdentityItem> [[-Version] <String>] [-Enable <Boolean>] + [-Expires <DateTime>] [-NotBefore <DateTime>] [-KeyOps <String[]>] [-Tag <Hashtable>] [-PassThru] + [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>] +``` + +## DESCRIPTION +The **Update-AzManagedHsmKey** cmdlet updates the editable attributes of a key in a managed HSM. + +## EXAMPLES + +### Example 1: Modify a key to enable it, and set the expiration date and tags +```powershell +PS C:\> $Expires = (Get-Date).AddYears(2).ToUniversalTime() +PS C:\> $Tags = @{'Severity' = 'high'; 'Accounting' = 'true'} +PS C:\> Update-AzManagedHsmKey -HsmName testmhsm -Name testkey001 -Expires $Expires -Enable $True -Tag $Tags -PassThru + +Vault/HSM Name : testmhsm +Name : testkey001 +Version : 49b74a39dab605bd336628dc094dc31b +Id : https://testmhsm.managedhsm.azure.net:443/keys/testkey001/49b74a39dab605bd336628dc094dc31b +Enabled : True +Expires : 10/14/2022 9:46:55 AM +Not Before : +Created : 10/14/2020 3:39:16 AM +Updated : 10/14/2020 9:47:06 AM +Recovery Level : Recoverable+Purgeable +Tags : Name Value + Severity high + Accounting true +``` + +The first command creates a **DateTime** object by using the **Get-Date** cmdlet. That object +specifies a time two years in the future. The command stores that date in the $Expires variable. +For more information, type `Get-Help Get-Date`. +The second command creates a variable to store tag values of high severity and Accounting. +The final command modifies a key named testkey001. The command enables the key, sets its expiration +time to the time stored in $Expires, and sets the tags that are stored in $Tags. + +## PARAMETERS + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer +Parameter Sets: (All) +Aliases: AzContext, AzureRmContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Enable +Value of true enables the key and a value of false disabless the key. +If not specified, the existing enabled/disabled state remains unchanged. + +```yaml +Type: System.Nullable`1[System.Boolean] +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Expires +The expiration time of a key in UTC time. +If not specified, the existing expiration time of the key remains unchanged. + +```yaml +Type: System.Nullable`1[System.DateTime] +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -HsmName +HSM name. Cmdlet constructs the FQDN of a managed HSM based on the name and currently selected environment. + +```yaml +Type: System.String +Parameter Sets: Default +Aliases: + +Required: True +Position: 0 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InputObject +Key object + +```yaml +Type: Microsoft.Azure.Commands.KeyVault.Models.PSKeyVaultKeyIdentityItem +Parameter Sets: InputObject +Aliases: + +Required: True +Position: 0 +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -KeyOps +The operations that can be performed with the key. +If not specified, the existing key operations of the key remain unchanged. + +```yaml +Type: System.String[] +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Name +Key name. +Cmdlet constructs the FQDN of a key from managed HSM name, currently selected environment and key name. + +```yaml +Type: System.String +Parameter Sets: Default +Aliases: KeyName + +Required: True +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -NotBefore +The UTC time before which key can't be used. +If not specified, the existing NotBefore attribute of the key remains unchanged. + +```yaml +Type: System.Nullable`1[System.DateTime] +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PassThru +Cmdlet does not return an object by default. +If this switch is specified, returns the updated key bundle object. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Tag +A hashtable represents key tags. +If not specified, the existings tags of the key remain unchanged. + +```yaml +Type: System.Collections.Hashtable +Parameter Sets: (All) +Aliases: Tags + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Version +Key version. +Cmdlet constructs the FQDN of a key from managed HSM name, currently selected environment, key name and key version. + +```yaml +Type: System.String +Parameter Sets: (All) +Aliases: KeyVersion + +Required: False +Position: 2 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Confirm +Prompts you for confirmation before running the cmdlet. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: cf + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -WhatIf +Shows what would happen if the cmdlet runs. +The cmdlet is not run. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: wi + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.Commands.KeyVault.Models.PSKeyVaultKeyIdentityItem + +## OUTPUTS + +### Microsoft.Azure.Commands.KeyVault.Models.PSKeyVaultKey + +## NOTES + +## RELATED LINKS + +[Add-AzManagedHsmKey](./Add-AzManagedHsmKey.md) + +[Backup-AzManagedHsmKey](./Backup-AzManagedHsmKey.md) + +[Remove-AzManagedHsmKey](./Remove-AzManagedHsmKey.md) + +[Undo-AzManagedHsmKeyRemoval](./Undo-AzManagedHsmKeyRemoval.md) + +[Get-AzManagedHsmKey](./Get-AzManagedHsmKey.md) + +[Restore-AzManagedHsmKey](./Restore-AzManagedHsmKey.md) \ No newline at end of file diff --git a/src/Network/Network.Test/Network.Test.csproj b/src/Network/Network.Test/Network.Test.csproj index 413c0c2205e9..a606a36b54cf 100644 --- a/src/Network/Network.Test/Network.Test.csproj +++ b/src/Network/Network.Test/Network.Test.csproj @@ -16,7 +16,7 @@ <PackageReference Include="Microsoft.Azure.Graph.RBAC" Version="3.4.0-preview" /> <PackageReference Include="Microsoft.Azure.Management.Network" Version="20.1.1" /> <PackageReference Include="Microsoft.Azure.KeyVault" Version="3.0.5" /> - <PackageReference Include="Microsoft.Azure.Management.KeyVault" Version="3.0.1" /> + <PackageReference Include="Microsoft.Azure.Management.KeyVault" Version="3.1.0-preview.2" /> <PackageReference Include="Microsoft.Azure.Insights" Version="0.16.0-preview" /> <PackageReference Include="Microsoft.Azure.Management.Compute" Version="39.0.0" /> <PackageReference Include="Microsoft.Azure.Management.ContainerInstance" Version="2.0.0" /> diff --git a/src/Sql/Sql.Test/Sql.Test.csproj b/src/Sql/Sql.Test/Sql.Test.csproj index 6ca6ca950a8b..95ba32b77cbc 100644 --- a/src/Sql/Sql.Test/Sql.Test.csproj +++ b/src/Sql/Sql.Test/Sql.Test.csproj @@ -17,7 +17,7 @@ <PackageReference Include="Microsoft.Azure.Graph.RBAC" Version="3.2.0-preview" /> <PackageReference Include="Microsoft.Azure.KeyVault" Version="3.0.1" /> <PackageReference Include="Microsoft.Azure.KeyVault.WebKey" Version="3.0.1" /> - <PackageReference Include="Microsoft.Azure.Management.KeyVault" Version="3.0.0" /> + <PackageReference Include="Microsoft.Azure.Management.KeyVault" Version="3.1.0-preview.2" /> <PackageReference Include="Microsoft.Azure.Management.OperationalInsights" Version="0.21.0-preview" /> <PackageReference Include="Microsoft.Azure.Management.Sql" Version="1.44.2-preview" /> </ItemGroup> diff --git a/tools/Common.Netcore.Dependencies.targets b/tools/Common.Netcore.Dependencies.targets index f4579a84aac4..873343ee127d 100644 --- a/tools/Common.Netcore.Dependencies.targets +++ b/tools/Common.Netcore.Dependencies.targets @@ -3,21 +3,21 @@ <ItemGroup> <PackageReference Include="Microsoft.Rest.ClientRuntime" Version="2.3.20"/> <PackageReference Include="Microsoft.Rest.ClientRuntime.Azure" Version="3.3.19"/> - <PackageReference Include="Microsoft.Azure.PowerShell.Clients.Aks" Version="1.3.26-preview"/> - <PackageReference Include="Microsoft.Azure.PowerShell.Authentication.Abstractions" Version="1.3.26-preview"/> - <PackageReference Include="Microsoft.Azure.PowerShell.Clients.Authorization" Version="1.3.26-preview"/> - <PackageReference Include="Microsoft.Azure.PowerShell.Common" Version="1.3.26-preview"/> - <PackageReference Include="Microsoft.Azure.PowerShell.Clients.Compute" Version="1.3.26-preview"/> - <PackageReference Include="Microsoft.Azure.PowerShell.Clients.Graph.Rbac" Version="1.3.26-preview"/> - <PackageReference Include="Microsoft.Azure.PowerShell.Clients.KeyVault" Version="1.3.26-preview"/> - <PackageReference Include="Microsoft.Azure.PowerShell.Clients.Monitor" Version="1.3.26-preview"/> - <PackageReference Include="Microsoft.Azure.PowerShell.Clients.Network" Version="1.3.26-preview"/> - <PackageReference Include="Microsoft.Azure.PowerShell.Clients.PolicyInsights" Version="1.3.26-preview"/> - <PackageReference Include="Microsoft.Azure.PowerShell.Clients.ResourceManager" Version="1.3.26-preview"/> - <PackageReference Include="Microsoft.Azure.PowerShell.Storage" Version="1.3.26-preview"/> - <PackageReference Include="Microsoft.Azure.PowerShell.Clients.Storage.Management" Version="1.3.26-preview"/> - <PackageReference Include="Microsoft.Azure.PowerShell.Strategies" Version="1.3.26-preview"/> - <PackageReference Include="Microsoft.Azure.PowerShell.Clients.Websites" Version="1.3.26-preview"/> + <PackageReference Include="Microsoft.Azure.PowerShell.Clients.Aks" Version="1.3.28-preview"/> + <PackageReference Include="Microsoft.Azure.PowerShell.Authentication.Abstractions" Version="1.3.28-preview"/> + <PackageReference Include="Microsoft.Azure.PowerShell.Clients.Authorization" Version="1.3.28-preview"/> + <PackageReference Include="Microsoft.Azure.PowerShell.Common" Version="1.3.28-preview"/> + <PackageReference Include="Microsoft.Azure.PowerShell.Clients.Compute" Version="1.3.28-preview"/> + <PackageReference Include="Microsoft.Azure.PowerShell.Clients.Graph.Rbac" Version="1.3.28-preview"/> + <PackageReference Include="Microsoft.Azure.PowerShell.Clients.KeyVault" Version="1.3.28-preview"/> + <PackageReference Include="Microsoft.Azure.PowerShell.Clients.Monitor" Version="1.3.28-preview"/> + <PackageReference Include="Microsoft.Azure.PowerShell.Clients.Network" Version="1.3.28-preview"/> + <PackageReference Include="Microsoft.Azure.PowerShell.Clients.PolicyInsights" Version="1.3.28-preview"/> + <PackageReference Include="Microsoft.Azure.PowerShell.Clients.ResourceManager" Version="1.3.28-preview"/> + <PackageReference Include="Microsoft.Azure.PowerShell.Storage" Version="1.3.28-preview"/> + <PackageReference Include="Microsoft.Azure.PowerShell.Clients.Storage.Management" Version="1.3.28-preview"/> + <PackageReference Include="Microsoft.Azure.PowerShell.Strategies" Version="1.3.28-preview"/> + <PackageReference Include="Microsoft.Azure.PowerShell.Clients.Websites" Version="1.3.28-preview"/> </ItemGroup> <ItemGroup Condition="'$(IsTestProject)' != 'true'"> <PackageReference Include="Microsoft.ApplicationInsights" Version="2.4.0"> @@ -32,7 +32,7 @@ <PackageReference Include="PowerShellStandard.Library" Version="5.1.0" PrivateAssets="All" /> </ItemGroup> <PropertyGroup> - <StorageToolsPath>$(NugetPackageRoot)\microsoft.azure.powershell.storage\1.3.26-preview\tools\</StorageToolsPath> + <StorageToolsPath>$(NugetPackageRoot)\microsoft.azure.powershell.storage\1.3.28-preview\tools\</StorageToolsPath> </PropertyGroup> <ItemGroup Condition="'$(OmitJsonPackage)' != 'true'"> <PackageReference Include="Newtonsoft.Json" Version="10.0.3"/> diff --git a/tools/CreateMappings_rules.json b/tools/CreateMappings_rules.json index 51bb098a1329..fc5be940fa05 100644 --- a/tools/CreateMappings_rules.json +++ b/tools/CreateMappings_rules.json @@ -205,6 +205,10 @@ "regex": "KeyVault", "alias": "Key Vault" }, + { + "regex": "ManagedHsm", + "alias": "Key Vault" + }, { "regex": "IotCentral", "alias": "IotCentral" diff --git a/tools/StaticAnalysis/Exceptions/Az.KeyVault/BreakingChangeIssues.csv b/tools/StaticAnalysis/Exceptions/Az.KeyVault/BreakingChangeIssues.csv index 77f1ae2f5c3b..9bfad0acd7c1 100644 --- a/tools/StaticAnalysis/Exceptions/Az.KeyVault/BreakingChangeIssues.csv +++ b/tools/StaticAnalysis/Exceptions/Az.KeyVault/BreakingChangeIssues.csv @@ -1,4 +1,5 @@ "AssemblyFileName","ClassName","Target","Severity","ProblemId","Description","Remediation" +"Microsoft.Azure.PowerShell.Cmdlets.KeyVault.dll","Microsoft.Azure.Commands.KeyVault.NewAzureKeyVault","New-AzKeyVault","0","2020","The cmdlet 'New-AzKeyVault' no longer supports the type 'Microsoft.Azure.Management.KeyVault.Models.SkuName' for parameter 'Sku'.","Change the type for parameter 'Sku' back to 'Microsoft.Azure.Management.KeyVault.Models.SkuName'." "Microsoft.Azure.PowerShell.Cmdlets.KeyVault.dll","Microsoft.Azure.Commands.KeyVault.NewAzureKeyVault","New-AzKeyVault","0","1050","The parameter set '__AllParameterSets' for cmdlet 'New-AzKeyVault' has been removed.","Add parameter set '__AllParameterSets' back to cmdlet 'New-AzKeyVault'." "Microsoft.Azure.PowerShell.Cmdlets.KeyVault.dll","Microsoft.Azure.Commands.KeyVault.UpdateTopLevelResourceCommand","Update-AzKeyVault","0","1050","The parameter set 'UpdateByNameParameterSet' for cmdlet 'Update-AzKeyVault' has been removed.","Add parameter set 'UpdateByNameParameterSet' back to cmdlet 'Update-AzKeyVault'." "Microsoft.Azure.PowerShell.Cmdlets.KeyVault.dll","Microsoft.Azure.Commands.KeyVault.UpdateTopLevelResourceCommand","Update-AzKeyVault","0","1050","The parameter set 'UpdateByInputObjectParameterSet' for cmdlet 'Update-AzKeyVault' has been removed.","Add parameter set 'UpdateByInputObjectParameterSet' back to cmdlet 'Update-AzKeyVault'." @@ -13,4 +14,4 @@ "Microsoft.Azure.PowerShell.Cmdlets.KeyVault.dll","Microsoft.Azure.Commands.KeyVault.RestoreAzureKeyVaultSecret","Restore-AzKeyVaultSecret","0","3010","The property 'SecretValueText' of type 'Microsoft.Azure.Commands.KeyVault.Models.PSKeyVaultSecret' has been removed.","Add the property 'SecretValueText' back to type 'Microsoft.Azure.Commands.KeyVault.Models.PSKeyVaultSecret'." "Microsoft.Azure.PowerShell.Cmdlets.KeyVault.dll","Microsoft.Azure.Commands.KeyVault.SetAzureKeyVaultSecret","Set-AzKeyVaultSecret","0","3010","The property 'SecretValueText' of type 'Microsoft.Azure.Commands.KeyVault.Models.PSKeyVaultSecret' has been removed.","Add the property 'SecretValueText' back to type 'Microsoft.Azure.Commands.KeyVault.Models.PSKeyVaultSecret'." "Microsoft.Azure.PowerShell.Cmdlets.KeyVault.dll","Microsoft.Azure.Commands.KeyVault.UndoAzureKeyVaultSecretRemoval","Undo-AzKeyVaultSecretRemoval","0","3010","The property 'SecretValueText' of type 'Microsoft.Azure.Commands.KeyVault.Models.PSKeyVaultSecret' has been removed.","Add the property 'SecretValueText' back to type 'Microsoft.Azure.Commands.KeyVault.Models.PSKeyVaultSecret'." -"Microsoft.Azure.PowerShell.Cmdlets.KeyVault.dll","Microsoft.Azure.Commands.KeyVault.UpdateAzureKeyVaultSecret","Update-AzKeyVaultSecret","0","3010","The property 'SecretValueText' of type 'Microsoft.Azure.Commands.KeyVault.Models.PSKeyVaultSecret' has been removed.","Add the property 'SecretValueText' back to type 'Microsoft.Azure.Commands.KeyVault.Models.PSKeyVaultSecret'." +"Microsoft.Azure.PowerShell.Cmdlets.KeyVault.dll","Microsoft.Azure.Commands.KeyVault.UpdateAzureKeyVaultSecret","Update-AzKeyVaultSecret","0","3010","The property 'SecretValueText' of type 'Microsoft.Azure.Commands.KeyVault.Models.PSKeyVaultSecret' has been removed.","Add the property 'SecretValueText' back to type 'Microsoft.Azure.Commands.KeyVault.Models.PSKeyVaultSecret'." \ No newline at end of file diff --git a/tools/StaticAnalysis/Exceptions/Az.KeyVault/MissingAssemblies.csv b/tools/StaticAnalysis/Exceptions/Az.KeyVault/MissingAssemblies.csv index 2b47e3bc04b0..255e975a7da4 100644 --- a/tools/StaticAnalysis/Exceptions/Az.KeyVault/MissingAssemblies.csv +++ b/tools/StaticAnalysis/Exceptions/Az.KeyVault/MissingAssemblies.csv @@ -1,3 +1,4 @@ "Directory","Assembly Name","Assembly Version","Referencing Assembly","Severity","ProblemId","Description","Remediation" "Az.KeyVault","Microsoft.Win32.Registry","4.1.1.0","System.Management.Automation","0","3000","Missing assembly Microsoft.Win32.Registry referenced from System.Management.Automation","Ensure that the assembly is included in the Wix file or directory" "Az.KeyVault","Microsoft.PowerShell.CoreCLR.Eventing","6.1.0.0","System.Management.Automation","0","3000","Missing assembly Microsoft.PowerShell.CoreCLR.Eventing referenced from System.Management.Automation","Ensure that the assembly is included in the Wix file or directory" +"Az.KeyVault","System.Text.Encodings.Web","4.0.4.0","Azure.Security.KeyVault.Keys","0","3000","Missing assembly System.Text.Encodings.Web referenced from Azure.Security.KeyVault.Keys","Ensure that the assembly is included in the Wix file or directory" diff --git a/tools/StaticAnalysis/Exceptions/Az.KeyVault/SignatureIssues.csv b/tools/StaticAnalysis/Exceptions/Az.KeyVault/SignatureIssues.csv index d487291581a3..c77dde4efec1 100644 --- a/tools/StaticAnalysis/Exceptions/Az.KeyVault/SignatureIssues.csv +++ b/tools/StaticAnalysis/Exceptions/Az.KeyVault/SignatureIssues.csv @@ -1,4 +1,11 @@ "AssemblyFileName","ClassName","Target","Severity","ProblemId","Description","Remediation" +"Microsoft.Azure.PowerShell.Cmdlets.KeyVault.dll","Microsoft.Azure.Commands.KeyVault.SecurityDomain.Cmdlets.BackupSecurityDomain","Backup-AzManagedHsmSecurityDomain","1","8410","Parameter Certificates of cmdlet Backup-AzManagedHsmSecurityDomain does not follow the enforced naming convention of using a singular noun for a parameter name.","Consider using a singular noun for the parameter name." +"Microsoft.Azure.PowerShell.Cmdlets.KeyVault.dll","Microsoft.Azure.Commands.KeyVault.SecurityDomain.Cmdlets.RestoreSecurityDomain","Restore-AzManagedHsmSecurityDomain","1","8410","Parameter Keys of cmdlet Restore-AzManagedHsmSecurityDomain does not follow the enforced naming convention of using a singular noun for a parameter name.","Consider using a singular noun for the parameter name." +"Microsoft.Azure.PowerShell.Cmdlets.KeyVault.dll","Microsoft.Azure.Commands.KeyVault.GetAzureManagedHsmKey","Get-AzManagedHsmKey","1","8410","Parameter IncludeVersions of cmdlet Get-AzManagedHsmKey does not follow the enforced naming convention of using a singular noun for a parameter name.","Consider using a singular noun for the parameter name." +"Microsoft.Azure.PowerShell.Cmdlets.KeyVault.dll","Microsoft.Azure.Commands.KeyVault.UpdateAzureManagedHsmKey","Update-AzManagedHsmKey","1","8410","Parameter Expires of cmdlet Update-AzManagedHsmKey does not follow the enforced naming convention of using a singular noun for a parameter name.","Consider using a singular noun for the parameter name." +"Microsoft.Azure.PowerShell.Cmdlets.KeyVault.dll","Microsoft.Azure.Commands.KeyVault.UpdateAzureManagedHsmKey","Update-AzManagedHsmKey","1","8410","Parameter KeyOps of cmdlet Update-AzManagedHsmKey does not follow the enforced naming convention of using a singular noun for a parameter name.","Consider using a singular noun for the parameter name." +"Microsoft.Azure.PowerShell.Cmdlets.KeyVault.dll","Microsoft.Azure.Commands.KeyVault.Commands.AddAzureManagedHsmKey","Add-AzManagedHsmKey","1","8410","Parameter KeyOps of cmdlet Add-AzManagedHsmKey does not follow the enforced naming convention of using a singular noun for a parameter name.","Consider using a singular noun for the parameter name." +"Microsoft.Azure.PowerShell.Cmdlets.KeyVault.dll","Microsoft.Azure.Commands.KeyVault.Commands.AddAzureManagedHsmKey","Add-AzManagedHsmKey","1","8410","Parameter Expires of cmdlet Add-AzManagedHsmKey does not follow the enforced naming convention of using a singular noun for a parameter name.","Consider using a singular noun for the parameter name." "Microsoft.Azure.PowerShell.Cmdlets.KeyVault.dll","Microsoft.Azure.Commands.KeyVault.SetAzureKeyVaultManagedStorageSasDefinition","Set-AzKeyVaultManagedStorageSasDefinition","1","8420","Parameter set 'Default' of cmdlet 'Set-AzKeyVaultManagedStorageSasDefinition' contains at least one parameter with a position larger than four, which is discouraged.","Limit the number of positional parameters in a single parameter set to four or fewer." "Microsoft.Azure.PowerShell.Cmdlets.KeyVault.dll","Microsoft.Azure.Commands.KeyVault.SetAzureKeyVaultManagedStorageSasDefinition","Set-AzKeyVaultManagedStorageSasDefinition","1","8420","Parameter set 'ByInputObject' of cmdlet 'Set-AzKeyVaultManagedStorageSasDefinition' contains at least one parameter with a position larger than four, which is discouraged.","Limit the number of positional parameters in a single parameter set to four or fewer." "Microsoft.Azure.PowerShell.Cmdlets.KeyVault.dll","Microsoft.Azure.Commands.KeyVault.SetAzureKeyVaultManagedStorageSasDefinition","Set-AzKeyVaultManagedStorageSasDefinition","1","8420","Parameter set '__AllParameterSets' of cmdlet 'Set-AzKeyVaultManagedStorageSasDefinition' contains at least one parameter with a position larger than four, which is discouraged.","Limit the number of positional parameters in a single parameter set to four or fewer." From bb0ca35772c5a06c81b4d69083b69d343903503e Mon Sep 17 00:00:00 2001 From: Yeming Liu <yeliu@microsoft.com> Date: Wed, 21 Oct 2020 10:55:53 +0800 Subject: [PATCH 2/8] use portable.bouncycastle --- src/KeyVault/KeyVault/KeyVault.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/KeyVault/KeyVault/KeyVault.csproj b/src/KeyVault/KeyVault/KeyVault.csproj index 8f14091384ea..63f2bf74c09f 100644 --- a/src/KeyVault/KeyVault/KeyVault.csproj +++ b/src/KeyVault/KeyVault/KeyVault.csproj @@ -14,7 +14,7 @@ <ItemGroup> <PackageReference Include="Azure.Security.KeyVault.Administration" Version="4.0.0-beta.2" /> <PackageReference Include="Azure.Security.KeyVault.Keys" Version="4.2.0-beta.2" /> - <PackageReference Include="BouncyCastle.NetCore" Version="1.8.6" /> + <PackageReference Include="Portable.BouncyCastle" Version="1.8.8" /> <PackageReference Include="Microsoft.Azure.KeyVault" Version="3.0.1" /> <PackageReference Include="Microsoft.Azure.KeyVault.WebKey" Version="3.0.1" /> <PackageReference Include="Microsoft.Azure.Management.KeyVault" Version="3.1.0-preview.2" /> From 5208f4801f95b512c8ec937671623162c9479f32 Mon Sep 17 00:00:00 2001 From: Yeming Liu <yeliu@microsoft.com> Date: Wed, 21 Oct 2020 13:28:37 +0800 Subject: [PATCH 3/8] bug fix... ...replace bouncycastle lib; fix security domain issue on windows powershell --- .../Utilities/CustomAssemblyResolver.cs | 1 + src/KeyVault/KeyVault/KeyVault.csproj | 1 + .../KeyVault/SecurityDomain/Models/CertKey.cs | 28 +++++++++++++++++- .../KeyVault/SecurityDomain/Models/JWK.cs | 10 +++++-- .../Restore-AzManagedHsmSecurityDomain.md | 2 +- .../System.Security.Cryptography.Cng.dll | Bin 0 -> 23976 bytes 6 files changed, 37 insertions(+), 5 deletions(-) create mode 100644 src/lib/NetFxPreloadAssemblies/System.Security.Cryptography.Cng.dll diff --git a/src/Accounts/Authentication/Utilities/CustomAssemblyResolver.cs b/src/Accounts/Authentication/Utilities/CustomAssemblyResolver.cs index 390a43799331..ad5d83f192fa 100644 --- a/src/Accounts/Authentication/Utilities/CustomAssemblyResolver.cs +++ b/src/Accounts/Authentication/Utilities/CustomAssemblyResolver.cs @@ -26,6 +26,7 @@ public static class CustomAssemblyResolver {"System.Reflection.DispatchProxy", new Version("4.0.3.0")}, {"System.Runtime.CompilerServices.Unsafe", new Version("4.0.5.0")}, {"System.Security.AccessControl", new Version("4.1.1.0")}, + {"System.Security.Cryptography.Cng", new Version("4.3.0.0")}, {"System.Security.Permissions", new Version("4.0.1.0")}, {"System.Security.Principal.Windows", new Version("4.1.1.0")}, {"System.ServiceModel.Primitives", new Version("4.2.0.0")}, diff --git a/src/KeyVault/KeyVault/KeyVault.csproj b/src/KeyVault/KeyVault/KeyVault.csproj index 63f2bf74c09f..6f7ab377898b 100644 --- a/src/KeyVault/KeyVault/KeyVault.csproj +++ b/src/KeyVault/KeyVault/KeyVault.csproj @@ -19,6 +19,7 @@ <PackageReference Include="Microsoft.Azure.KeyVault.WebKey" Version="3.0.1" /> <PackageReference Include="Microsoft.Azure.Management.KeyVault" Version="3.1.0-preview.2" /> <PackageReference Include="Microsoft.IdentityModel.Tokens" Version="5.6.0" /> + <PackageReference Include="System.Security.Cryptography.Cng" Version="4.5.0" /> </ItemGroup> <ItemGroup> diff --git a/src/KeyVault/KeyVault/SecurityDomain/Models/CertKey.cs b/src/KeyVault/KeyVault/SecurityDomain/Models/CertKey.cs index e32ec92b308e..f7790dd414ea 100644 --- a/src/KeyVault/KeyVault/SecurityDomain/Models/CertKey.cs +++ b/src/KeyVault/KeyVault/SecurityDomain/Models/CertKey.cs @@ -3,6 +3,7 @@ using Org.BouncyCastle.OpenSsl; using System; using System.IO; +using System.Runtime.InteropServices; using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; @@ -14,7 +15,32 @@ public void Load(KeyPath path) { _cert = new X509Certificate2(path.PublicKey); RSAParameters parameters = RsaParamsFromPem(path.PrivateKey, path.Password?.ToPlainText()); - _key = RSA.Create(); + + // On Windows PowerShell (.net framework), RSA.Create() returns a RSACryptoServiceProvider instance, + // which does not support decrypting with "OAEP - SHA-2 (SHA256)" padding mode that security domain data is encrypted with. + // see https://docs.microsoft.com/en-us/dotnet/standard/security/cross-platform-cryptography#rsa + + // solution is to use RSACng instead + // see https://stackoverflow.com/questions/57815949/override-default-algorithm-in-rsa-object-to-support-oaepsha256-padding + + // RSACng only supports Windows so on Linux we still use RSA.Create(), + // which should return an algorithm that uses OpenSSL under the hood + + // However RSACng is not in netstandard 2.0, so we introduced dependency to + // System.Security.Cryptography.Cng library + // But the netstandard 2.0 version does not support Windows PowerShell (.net framework) + // (Error: Windows Cryptography Next Generation (CNG) is not supported on this platform.) + // so we need to preload .net framework version of the assembly + + if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + { + _key = new RSACng(); + } + else + { + _key = RSA.Create(); + } + _key.ImportParameters(parameters); _thumbprint = Utils.Sha256Thumbprint(_cert); } diff --git a/src/KeyVault/KeyVault/SecurityDomain/Models/JWK.cs b/src/KeyVault/KeyVault/SecurityDomain/Models/JWK.cs index c8c365b0db99..5eadf8f7a536 100644 --- a/src/KeyVault/KeyVault/SecurityDomain/Models/JWK.cs +++ b/src/KeyVault/KeyVault/SecurityDomain/Models/JWK.cs @@ -55,9 +55,13 @@ public JWK(X509Certificate2 cert) x5c = new List<string>(); PublicKey publicKey = cert.PublicKey; - - if (publicKey.Key.KeyExchangeAlgorithm != "RSA" || publicKey.Key.KeySize < 2048) - throw new Exception("Invalid argument"); + // Originally "RSA" is the only supported alg + // However on Windows PowerShell this is what you get from a certificate + // And I have verified this could work + if ( + (publicKey.Key.KeyExchangeAlgorithm != "RSA-PKCS1-KeyEx") && + (publicKey.Key.KeyExchangeAlgorithm != "RSA") || publicKey.Key.KeySize < 2048) + throw new Exception("Incorrect certificate format."); RSAParameters rsaParameters = cert.GetRSAPublicKey().ExportParameters(false); SetExponent(rsaParameters.Exponent); diff --git a/src/KeyVault/KeyVault/help/Restore-AzManagedHsmSecurityDomain.md b/src/KeyVault/KeyVault/help/Restore-AzManagedHsmSecurityDomain.md index d742117943fa..758c1193505a 100644 --- a/src/KeyVault/KeyVault/help/Restore-AzManagedHsmSecurityDomain.md +++ b/src/KeyVault/KeyVault/help/Restore-AzManagedHsmSecurityDomain.md @@ -32,7 +32,7 @@ This cmdlet restores previous backed up security domain data to a managed HSM. ### Example 1 ```powershell -PS C:\> $keys = @{PublicKey = "sd1.cer"; PrivateKey = "sd1.key"}, @{PublicKey = "sd2.cer"; PrivateKey = sd2.key"}, @{PublicKey = "sd3.cer"; PrivateKey = "sd3.key"} +PS C:\> $keys = @{PublicKey = "sd1.cer"; PrivateKey = "sd1.key"}, @{PublicKey = "sd2.cer"; PrivateKey = "sd2.key"}, @{PublicKey = "sd3.cer"; PrivateKey = "sd3.key"} PS C:\> Restore-AzManagedHsmSecurityDomain -Name testmhsm -Keys $keys -SecurityDomainPath {pathOfBackup}\sd.ps.json ``` diff --git a/src/lib/NetFxPreloadAssemblies/System.Security.Cryptography.Cng.dll b/src/lib/NetFxPreloadAssemblies/System.Security.Cryptography.Cng.dll new file mode 100644 index 0000000000000000000000000000000000000000..4f4c30e080bd152a98342fd7d95a2c0fa7033ce6 GIT binary patch literal 23976 zcmeHv2|SeD_xLko>{&v}KK6+5jGZF;nk8$67z~CnqcPSNOwmdzWNAS}rG!L9D%Bfl zp^{QWD3yq$X!+k~EK$A7|Ns5IzxVt7e}0eVKKGn^@45G$d+xdSo_n6`)}%r#5Cmbs z@7p&Bss?Z5F=B>)9K?fUUa9lE&>7BK($%OHx1?QyNa5Hp8a0qc2*vslC=@Ck>r2Ga zA}ClA1#9Nuj18sw6LCB|Tyj&S9nB$V1&Rf_xs$qjy0&MK43--O1L8;plh{M5;Ee@8 zBk+SDer6m!*=_`Zw4eFJgAm|Ftx=#~Mu|vP<lp!A6o{a}V*}_qAQ2-7D&|5WQ;#Ho zmxH(u1kD4lR22vkpGx{mFDwLc%*x0CV5?a$j!ulG1Gs<(1R#ysPtfk!4;IvpqlMG_ z0Fv1@BM?Cv!|V@uPd!GU^*9=lOa&Q{WTedq4}NU05d@h4?3`y4!dLJhZ9_w>kRuj? zE^$K;CxV>y@Pq!x&w_t1YT|5Tf`U-YWTY*Tnm8Dz0c+s(5ELs!2B9Mh1j%lKpc?Rg z1_n;nnNA~70>hCU2LRI$zR9{eLj@p$bXC^U)!Gca&j5HHQr3h_^#w5UfNrALT_9*X z0*s?HAYp(2(FNd#yam7yp@GDaAHo(<@PnXqGy+2q8)SlNXJLbGqmi%}<pIJaXe7J@ zDX}bs)`J?^pqJ27G#j)Qg@o&wp#U0*-(beOnBg~O9&u*;GwM7@r86<b5EA#pAmM#z z8K9iSOih8VGR1bX9SGMrAz2m_BmzQqNE(FmASDp;LwX<-hK!k^H8Whv3|BKl0y88r z!*$Fs283cz0tm5yGqNlSP!<!D2f}&KF=nU;?SoiZaF8Grg~CB%P&^1_p~E0t0=R&K zG??L1W@rlC1{hnYAB4^jCmIKNK!zangB(E^0#$)99I9o8kC@>gngej{HiU^s<|bev zc#wXoK-ORgnB8XLAc%sRoOW|@K~t$%=GzoH#)3%XB;+y&5}X66%z;wSMVRm9F3*8j zS!Sp0p9AG$W~b5TK+<y{n>o<f94dTs(ss;AyFVvwa8Ao~=A<p0Q!Z^z+O;`p!E>l2 z&V}ZbTQ?^ydJ2M;*-`x?$V5XZG~AC$Ba?g~XF>qc-jo&-Mt7u9BT4>5niYZKPbSVv za3=cEi1eS(KOt<1G1Iu1a5^y*XG*0JA>;6HVyG`U#*RoQ_!H;^V>-|Uz7cdH<VuMo z(ntX$f-jk93RaEpDKjzGa6;fLycy9qA}|oiKa&G8rG~nZ!bx**({;L#=(Dp<qb*2e zq8pJGPNGu2)0s}RrUX!Fp#(ZeB#?i~1$YrbBhh0ViL_8s_^&CL5ySmxq%efS&*aUB z0fY!L-Iz=wgnv)9AQJ*-fuK)eBr>xNPDC;xni-pwKHXL@Wd0F;^zU@06HKXLF*H(O z(5xiW70w7*P%mW`_IrWQFajm!J0+(G3Y`=R#s%Q%BwrF4bozU$^W*?ea|6c|AY@Yz z78HXsr36A|&c?{gY4YU)*g+<mnL8smb5pZ$0unJMh9j>(qlNP)lczF4Aips=kP1d1 zC={Bm-PjLd^)wwPVgQ*qi2=C*hr)<7dW<QRJPSKR!;(gg2t%k&3qOSOqf=?qw9H6^ zKngXSPVx(%MosYrXHB6K0c~d@Et2F%{3&^I1c|hn^hwbLiy)YRAUmiMOc$njGXeAH zFe;7iNF|f}NFdpc<VT~1Qv>KYcM?TI9f!=)$+^YM?P?9$OP}oJ3SuOYJX8NPPjKG_ zbh@(1@(y7{iUU(Nr|~~yOld@>#Ldb#&Bs|N(EjO+js&nBBm#znLo+hsLZAf_>C=@U z3%Uh!UV-rkC0B)#r$E37&>f`XF;iTbX7x;8W=q$PiBp5e9ApRrt0D3v9+ehGW7eBz z@%rz@oQjf$Sg|P7d`=7qIY1T^6BI!}UL-)XV$mpGUMAK$J{OV$>sLGkr2$H8U@b#n zAjo)RQA5^n_U3W-tEV0f9l>om&UfkyPyfp=!EbhNonVP1Z(fnLSF(KRi|j`ao?L#K z-J&fhjZWpJE&CLo9(T1XihuWY_9zFXm+HKGU$MUFc`1FVaPZ|jf6o>3_FX=awb;v7 z<v3AAV!YLW?nPDYeYa_CDc{u$0|oIN0;a@8*w9P+H0{>3?2A8yL&b0TaoWrpaNIQK zzT;+wMFl&p`c<$~+RXsj!GS*&tSQh;5j3I!g&0An5y&c7#|U3AFkrk~s3Am(fv=7Z zLCa4|8?UFKNrZLv7NA_v{LUeyFhB_?azCcjpg5{xJ>5h!pKa$rP3@2+5w^LYh24RI zu%}YYqy30X5p)TnQKQ09ARoeJ2$DxZ*dO~fd+?d61rkL;3uYz=7A!Jg>M(1DASo0i zI+Jwe6c%T1?t-;Igfogt3xOa_6r^_L7<MMh?9w<a)|gDjGSy}{mPQN*Q=90IgP{2+ zXr3lc8>g<Nh1bKu8W0qKf(WxQSl<W|861RS^s)YAg0HHXnVYkNyS2Tsr8$h(z=2vq zLrHY36(KxGAFHdOj`!11*8@ECg9CJZi8@-EdRiKq8hXCEx<qXv-Vd)1`>AV!%`|hL zEe5)a^kb$Q(>fb4Yyk@5o>DQ$s)%u+MGz;kjx=Hbk!DTtrAAL-F_XK{TRs=iJiJQ9 zqIjEIZrzQJ10Nh;40}||?K##YYdRlWkpD)mwy&fnB=YTtW>r?tTRs`D&YoPXi|#o+ zC`1|4RLb%-WE;JdUuv$^mLFfzx8LRX+xbat;@5}s7%7h)6>d{Itk|_~t8AG{ykX@T zf3Mba7v7}0CxzN+EVCpVy>;|K#(DZIh>ZFn@GAjlj}mYWbaFOxjy1k}GN}5haprn> z*@Gg!qe!dG^*xO}y^$gG)PiBpa8Iy#AqGTy`jRMWRNr7Vpd|f)AbH!n;EX9TrjD*S zuxt_u;Y77RlO{C^k*=xZ`DfX1Vg9}lZR#Wi8U*b^;#eg1^D}+onoRKq0%}Gk+Yv~V z$z2zb$XwATQ@_arDnFd|ex~^E!=RXzErOu<xip!Q2Ejk!C+DT(RAzrxaP%|++7Y~` z9}FvyRLBjS8oWVh4mp9CH8^qG1K1jb7L%uMs1`H$715t;K#j6MrGC@pks~<r0OdNR z1(+Z+Fase9P$fV#K!*g*mPA040tG-+X1W}+lnY2D0Bkr&Cx8<f38Ye{h@8gwGqtue zz|%kq1q%EHB_n1Y81#SgPZRP*cmb^eXEYRK3h0G`KO!hi2em+;hcVzy2bfR@IWG~x zIVplkpAJ%Rpac!P!$1xys1Ipf7!)*>g0uj6R)B--H0>~E`(psN2+VqrbUV;mKTwtm zYNCQ3(}AEMEujHgNI1Kv!OV6}bI1&|C!AT9#B9TNe*8Pytq<{lc2C#k2I``L+P>GJ z3Hq-Me(I1G_``#fEe`M!C{6GLL-L?3GJ**2Xy8o%WA?q*|7!bikUyY@SRf#X0jYty zR)Bf}nYAFi3j<?-NI@VN4LZnk4Dj@?^BD(nW5F36sR28SPB;@nc#iZb5`_Ms&&We# z_Sa!5FCu+Nf2VneK!{ZR>+&?a-!8!Vfr1=Com9|{2p|XaSsebAT%7{#$ALWNkPC=e zfRdB#iekzcST%ud#P=tfKaTwGjXM^UjQ~6+GbPv;jDS9<1sNv-NKu8%z#pPL93Xe5 zzA%O?K}%pDIU1l<lQNIYJ`%IM6(|)BMh~H(3v#G~e14D)c<X^b4M-C}Fqkd6fHo1} zwE#vBgh+}8i1~sPU67&;en?3?C<%kNI!K2=3J2(?F{l9<%TSP;4BCqY?VBs*NMDiG z!OR~7(aj+Uo~0Ave?cdH1JB>B6I1_!P9*=1PW1dQ(TU{$L7lklU(ku<|3RI&<v&0t zs(=|bTQ5(p-u}$_hOF};VD3#n^#9eLK>PgvuRo{9`+whm0|&5^cSgAee*^9RCHWuE z0p=Yi8V$jW<@?z<m6NQJ#&}Td=v>C~Z2+|ejY8qMVNN#ICA=(XQC0|E!N#?O4TV85 zbkHbFt|7b(UN{TG2XnHZpj=EoIv#?hXO+VU(a4hhMx`a62kMhYG7_qwJ1bWY<}wy+ zh8dW8n89))mj#VNqXm(ZKxN6s(5)c~^DUX&tAu%G8iry8O^9N)h{YAdCWv-*#tXvp z*#N*H$mI?UD8PhDr&93zFfW2+7i4!L`iD{}{&-1P9Kmo2{@OT%mxiT~bQZxy-_1WR zz{IWUOechfVI574VabI&cx_k@*1_v&>1t}O0if<I5KgH0TUy2gb0aO|7R1;&I6C1K zVfjf=l442<3nJ36X3pkVb7y;f6J2vtRSno!Q&k7Asfm||WhZ+i{>vUs8HQj6N@g~P zQLGRP1H}gf0>y=9piofZ293vtJ&#ZKK4Pg|uQGbfx@w{F=7C2l<gY89+)X+0@k`&h zee}As^=6f}vH?2R%#Q1BwSJ|vG~=sl#WqUzaj|>Dao8u#f#EVrl#TmN)hk#%%(Uw0 z@d>QMe7WA693kBE+l4-S5`TY)NWbob=j9>`@Oxff3(hXs7Pj*$eV4e6L&Wl!M(3{T znhCa(TAQv4gf^Jw%{%mD#ciL}!C}sesO$AxZ)~CDG$wpeUdM5#i6iP_)84fu9nn=f zOO~n(CK!n8P>lR4iD{1(6xnvw3}vtqE=Zi?$$o#kB*#DA_vW3354(17sivIseRb_y zW`g{&=FN*f*ix6EPPkH9M@Bi_(Lkb6M;Ithz!6qh0<ctq7bA=j+AQ%3t2q)mvWUL# zv0X~PWZ~KkiA))iki{&5h2w=}H9tObvIyfEFq(**s918kUaNu+c0tNZVeDXA*gDrT z*F4EIh)xgFS5xz&k#V6jc6~o;s9IPE3Bjs`O<v=KtIZ4}B9~0D1X76uS>RP{9AH+m zva+L4m=&-MY&8wT=%i&+6+}fv{i*_R{qg&h>98QuUU|$sm}{CO3&(760TU943$S`u zjDNOX1HFmA8B~3xapm=a2~7{LCbt|ypPl{dEs3s;5?in?=VB`T4@#FPZ;ALOVwN4g z`02ZW+JMa#yFVPGVOup6^|&IUb}0)>5tKgFN6SGU?iOiWs>|A06|&%+GPz7X>~@Zy zGA(H%he*J_j^eN44@Oywd+%h9ZJQ{zP!bWm{*pa7@6K;JB2U)S<eIZc<mG~tfE&9s z_FUs>NIo|P5igs*Rye(VXqD&NDgs>Kccpzn9!~3Kl={l(%~}aBqjK*IoyBPc?pm63 z5ncOY#X-ATeM`k7vKU8<B5`QF;k7<eOW7f7vfPp-4@^(J<$G~?Q(RWlQp@Hl^Chok zje!~)0BY>PcQuAG$~g8m%<XFvJJ`@dD5D>^2FLs@%0d>Fo}BdG4c)-L>`%lxlL9F~ zInGjKx_Di67!Q;gqR4dccvyW3gcCOZEp7Wjkxgl2mfz9Hf2x?;ZFlyw1bg2Q^WtLF z>v_Pt_wLoMoi7V`SVdM{TJ})s>GrB1itXV|HQBW;NqWcL>1ql0Nt8^S3VFf_4^~Td zl0VvHyY9ETA-la|wW4NiI^OaC-)$o;b)B#MBMt?k1r;$h@j1)oGOspMAH=;dP40Oz z+|qX{U;v{pop#jy2}`@mb+K<t^oqUeT)#fG?sQ>IJE758un~XMuGa02Fg|GcmJspK zk+%=v9dC(ZhpITll{W3G9o}dXsVj4T{f76|=hhvnPkYZu(qbH?*P=DXU6K-y$X`6Z zeQmd%w}Nq|Xveuei^S*)E7j4KZ+bpS)nZmg^a<odzE0dPB*T>_I7XOOOa#CwuU}16 zmRZ{BK<~>?hWjZUxsF$Bk6ranmAL(AJ?w-`?)ey?iV7@YbNmnEqY0}cqQok=L|t7^ z7uHx3prfnhi}!<7wfyx0R5dm5+N!$#+5}Y{O#)F{Q{CSmTu#i<fH&vAY-~9ryb9Hz zgVPWeKDQ#9OA2;FDwV=Gz(5D)0v(uS{(q$bfiMG628z!c)>YNOs{)yYnL2RIw1NUU z&>jX_a2f_W(D1M6z~7-w|6%Gf6<$b>+w+Hl5?G^8q5U29?Ou}C$qGltdO73geRJ<R zbN|sNPpdArxGM!N)fus)$qkzY=dG*z`1t~^X+ii16k;!b{QXrfTAI`0C_ANni#hPZ zk2)#z6IWl_FDT1mHM1ABwpJ;Ld0Ut0u!Ukdc(JWzr!|RJY4d1d?GZ8Qllg^)sn`Rf zhXo8`S4a2{K0cDTMO^@m4)%{i9o5UMc$>f2np`5MzSyvMXMoBCx^1(X?A|?N?!<2e z5BgVfq<v`pa_PY(toavHYloP({vvTc_T5(-o$aM2*6iW&xFxrFL-@-ElPCdiyh6k2 z+s-=(E@M}cX<6^Cot4;hJar33e}BwLADF>f0~B7tq{8DOXedm&RpEbN7VOR3p>c8U zRoK37Sj8VDBFq9-H@pb4ah!$ZoLT(vs_>FY9VR!k;$fYrz?IMxELM{jiA1b%1U(43 z>5pM<%V1bn1Fx<QZXVTvHdCJh)e-QYRJ4D#w<@Qt_7s8r>m;&$uvn9<NN2L4SSz*Z z=DSxRU-t|1KkL+|Zx*dm%T<5#t>cP`z3c-T)UM^uwY~8a*82TWP>G#wa$#+Z?YbOG z_Qzl3I}b)|yK_9;Ebd`K`$+Auc0q%u`IFL<2G14;?H4U7q=mb^TbS1KMJtV#+ZyRD z8D+jXQCIkGxCiU`K&Rxwa+2C(5$>;h=}O&^YA#QO;ME^nl6}A2Z1A?gJDyV%>@kAx z(3JQW%lxKeZ;-2Qka{ammo3rL-i@(XnN_{Y_MwB{ixySicjg8!N;seo7I}x7J$5NL zzl=R@Gi-53XPNGyGf|#}3lAmVoWI*`+2s;WZ<c%0Dr_xKVQXMML^BAYP~R}DFbjCi zQeVH+B*?Z{f)9fMCx;|hfQ@tNV6p&(VPz5q``;NH8riaaX~x^%Q`nK-mFcsz7*9RA ztfoyB7MaN;gvQL1<O0U#2w+q(g^cIuGTst~kCB_={$6>(&&pj~&grXr3Sh@cU1kjf z^_gp$Yn-(Fuj{fId8Yx<_5+g5)M75vS_^0~E7$@yn}&fF)BS5&Y|=FZnJ~zF0aSn1 zU%>TowVq*|f<@_Ts!^GGW$<fWHA=Dd*lX{IffY+tADW)z{(7@t6@NswX@g^CytG$| zf!d1m`NeJro`+qiKJziA(wa7A_{uo0v1{H!(#^sHSk-ZE$E$9)RG-_l)P%h#=E-L% zbbD64!`6K`-Q>W#k-@jmlcY44Rl8*mIm;$07cj*4b*HgQ40qdq+?Ch(Qm}B3{SC2} z-L!P&b)h+;AH|29TLYV9zIjUA%HLJ1SRUi&W|qJ5)~Eg>tK6REpv}$Hyx%`Qb)TV5 z`CO1L*z=n7;#j`Q#T!fbd5I}m?W6hQ0t%c&-L!YHQZ^TwyWC#hjm}u)*`Out{dAv% zb&Bf6lbUAYZ}}I9LS9d`Jfv@D{>J$>k$0CvD6gQs!3HI(1GMH5a^vMUVMpBex^GNN z&K0v_Su=L$NFW!zP<udCZQ+eRnvTGGYT2?t#wVxpWDQ}WB=3%={2l)9skbfe-&@!p za}{&u-h@i0)Q&?XToZzdMkjkdbsdYdxWMjXN%S$YKW*~HexM>Urj1LJGgLetFV)TK z^0YT^qSuoDq<`i&M`7HCI#%h}?sQ{CQvJT&=?%$kInt+iJP!=zpGpeaJTF-FLSzUe zk#TZZc>M?A&2s0q-3czX#H(dLdA`ozA+*WYvibJ5hU!J*ytL%YM+{2QM#0}mIT_vj z#r$V<964I+4PXWvJJ8>Q)B0OD2)W__KEwZn{)Tm6P2eM}uB8F%A^IE71cBQy0ROr3 z{-0^@!+GSg&UUN4${Rv(B3-rJ&#z^zlyy9L`{^QkIli~eMa?Tt(qZiU*X$2m(id2# ziJ9y@mFWp9JcdGEuCINwot<xt7n3=(y-Dh(hTPVJ!|wydRX(qOu}$LD3;QE^mt~zB zlgG{PaNb>8diS&mCjZk>^1i@_i=S9HpH8~lyVwG!Sd!%6>NKy1MP(v5H5I089a#+@ z9N*Nszv89z{!JfS1V=ckoI{<?n5Q1Lf@~}U<|`@%6z}i3$ChA||7lCnd`lrt#^Egk zuF+pn*%FQ%i4Z?*F;LYZYjNSKs>|V0$!KGIR8vmp(#`ww2<S=)p0dwlIpwI^GPW+? zKC#wc!E#S)?-M|K7yXg;{^dz{j`rrCQNlob1APv`37Lp)mBl2a!U@UoLcdbKd42_i zzkPeb;Ey>eoM)3;cydMfs`u=IIO2be*8fXqcff1@{X6PCS<JMb_MbT!)qXo>r5&ma zM_=a=I#2M#?ThPoSL5yr<nIdgt#(J>w8siMW<8BH>UO_Sx++_|O9GWtav^$n=iN6; zQE$61?&e~>k!;mH<h<ai!->5;FOq{F#9!`98)j2WWa;0dEGH8-@!@k%bQX?hjJ-Ro zW|95Dln^djdUc-Ofk4%3D|uh}dM+2v+=*S@%`U3`sR?fri8ok6<G%4K%-~xhmtf}= zE<(!C!|H{v?RUmq(^|6jNZsq2joc>d?>p0^-@=U-qKTd!sD)fYye*G~GDnx43s_a5 zs`lbjVp7vex0eUQ(#R!xEAD@YsXM+X)>mmTKSxQEElSk4!9X%piZR6fo63bdrWL)P z-fXOVUQkTes<ywjPF6r6l6#rcu61iHOoeJHDo)!4-Z*UXEj~s%{?GzA;H8PcTG1Pa zWTfw!_Alwb@ZPFP<$jxb{0aqSD>?5quiOTYc4QrF)Th=aDAL*Hzm1fx%VAtrbU9lV zY_L5ql5mESCwR2(xaE)l^~(-*a{1TJl{a?DHU!ijl-MfZk2X*(UA?=yN4mH2bfe#y zXcyM|#yH24w9|#rCn|C?B19kU-6|L%qo!WWLCN*lC1002xTR6L^|ho!L-t$iXJaTL zbvyUQ8>Ab3lvhRjZ{wA|@m}-rY_k)~Ya3TPv>fLu9MT|o<O`mmlmj!A_5))t45r&Z zXP97`e}A%@e78R5GElO}er?K3&B=nFH_P~p0T$lx#%XRmFFZSS0kRvME{MT{-QY$k z%LfG0)4P`SOYpafvqzcLMn}R4S7y<ehfk=06HezQq{k=h{g>T(yn#~y44eqGfs;Z2 za5m5d?hTqC)B_L_(_*?NsDe}-u>ZsZTmW!{@B^VX_zPe<F(6J2i2DrFktGip8K<^{ zGn+{qI9ttL!GSp!!$3h9<eSkWS?JHbH;p$+M!&kF)Np!p#U+O{XQKPrI8NHSvA~h* zB3)$yxQP^d5>0LM9um)n{&ITxk~J=Ri@58?mgsSHUJ=fI+A@)1+`{waS<08t2bnr% z`Huth^gcGk2X-lyaNd>~y`r#ZXXd~$w7{C>Bj3uJ^+^ox5RQ<My+b>#qt4V;_8r{a zo3bvB3zz2@|8QP*Kc7Tn<c5|jszNefw@2MeU%UMSO?H8e%H!>VNhXpVf%Wn?kI1%G z-%Icu{=8m#`2k-2<cm0;^Ufh>l_NCoyfzXZxtRODGf{P!3x(d`(&EI&J+d-RqiyFZ z+NGE>jlKE<-Nq#oEC-H$Y3a&iC{)7?wA^<QV8b)e3jk_9Q|eRxv0cWmuRLbSycfLa zd#hRS+%o_>3JCm+NVDSk5HlXQoY2E-YiVm~tocdcrReSL!qQ}sw4-kGwnaBx-l{wQ z$IBH&R`jU*-n3$9f+^H$nTubmDG!B=!ZpmD;#0=rZx++va#*Ez?OMsY<B5{z<DFVU zT^gMFlEU`nnmxCUC@$*YbQ05_XgsPv_F7{^@M@r7sV=ld<=&=UbmF@1*m;+Qyn;_G zUp213Vllm*y@jgdemL`^P583~Zr2Ghw_5N|UzZDI;NER~UO1E;X@yn2Bw)XYTWe&1 z*5?<nm2}c<@e?i^MsNbj)N$jWRy<MpQZf0!qKoV*Udyxdo+cJ*FT?K@yz_|DNSsZ2 z_~N-eMZCRk2Pf)>N42R3K7EnA-LvhuLg%sY`5#4iT-trw*gQ_lR3G^|ZXb3j``PJK zt)q{ilLt5T!3?=w-<1Fcg=ffZ0J!KGUL)6IawLEv0@=ayA=Aw#$qGee!Jxr(gFU|& z23KT=De8Bx$e6~GS!FTUN2tDQtHo6gc?ur8<u3$NxMMR>0=JrNe8?hP@gIuHav41P zz}9^}*t&oEZfk~8w(co#7xiv5WbWZpW@`X$(4<X&i#>NStN`|C;L1$uyPf7oTQe5e z=kSv^XLvkb2bh@k)bW!yXX-QHe~H2Q?$-MzOEw*RbUpTde*N<Wdt00jrY~%8(jIrI zJHcPt-|(VI!MXlQcwJ~K)C)c74-V9XKL{^8gDOnlu=8AjO5e_<F&|{-#q1t&>NG-$ zU%Ae5@b&6D;r(sv^m2x7%db{#Y4G40+|;Vh>qQs9yg7t%J{p1!{Ajm&XVkML($5Aj z6_^X$VOh^|U9bMW%oA77D3fmo%6nY{gU+i)2FC?BTRyPlYSQgUUcX;tBjc{Z$HJ7} zyrH%J{5_vuD_$Rd#&MTtIPg;2u-e4-#|u84;xmNyvo~`ahTV@kL5nudWUpS>lwaok zrgp?J@W{iop_ZMlyPc1w@9QfMxYM8$)Z_Qto$394JlOAVm^6;aBUfEB^1gxtHEph7 znQeSNaievhd_l|cly^-7WZf}yo4Y$M{B`5A1`OlXm-xb3u%9+jM^#5#6R!%cHv?3C z{WJ-{46Uh)Cu-ug{9)ZW1{*7if3G9!J;w2cIyy3yp~a06==9&ee*5L^7&R=Mc>@Q; zd&V@3$g?*RsKPp`urAYRLzwP0Fxt4n&hW}<7#MA)t=qp}!SoH>A5=jHTbXIw7#cVs z&$<x@)0>3>Ht}ZL(Iq73k*jAf+~4Kn{GyRuY)uNdSeR{`rQde2#T~sec)Ttrqy4DD zMozbvPX^>8Vhb&uiY0A@ok!mCW!GcUl`b>36u99(=kC~(URk&1_A!){zeQeO<GY9S z^>uqWR<7NkfnK|EX-;n&&Ktdg^MI)7<8=c)k6z?IrmHMG**mXt(WndO{fpw^x3KFA z#&5K@wd<c6PrY`eHl29NLe*VqRqNg%@?*buyEXDR=|--7I-)gDlD*V7;jX>N2CEIH zxp(U}sn$HuBOXh?%+kHL;oON9cdp}4oVamribuLL_q(Um99vD1+nd7Z<_u>%(%Rf~ zIIbC!vaPy1d-JN(_p|%(<7t*D8;^F|$BeYy3)T>J40~sCA(ONJTT{BL2S?prr(%w) z?_R$9X7un=w)Vj<=Tj3~Tn!yhT1XAb&#OM9Z-wz2jLyvWV&OrzJ;9#nbF1ta6b`6= z=*p0EU_>_@auMbCsakl#NN~@o(;}C%H4eU2r`;kpIap+>@~!ld+%WOA{Uv)0`&gca z?pMz2_TB5x>enVFRX5daM8Q?-C60NC)i&8J9HUrjJTU4EZp5vut~__A9&>ML@AH2C zU9XGIcNE|>f|b;SY+gxTmeJK>O&q*}fp|hLw`B-fEhydObh_H-s#B#6qbgAuvQ}2u zthmOwqxM07bq)7{=rB%Ti)W7oHhJG^dk$}E3v(@C`9WCVgl&JzVgPLJlZ%1U_r>7% zjrQM{1w63*fO|+Sy-CZDHWS1Hw+dkS`KOmH2Kr~$2sGjvfd;M-V9uQw8mIA#<4(3w zjx+e}G|vy8T_t_kL`*rPe~shuYBpU_jP?1r`gxL1bwaKSv~dsVUdduReM9d7N(gUq zZ#z$n|JF@uK62#JL)HiSgVwfm<~WygsnnM~I=19gENAJ%jMa@kqOAP^kuTMq6a>^> zoZxW0Q(;!+)pixf5^*AE<YwrIzGt5BdyDhWbp1;x{#wyTbN%>K?-}j;_`HLi=YeNT zp|#Qro{PDHQ5Vw;1}B~`S;H@7=e9UMmiA0Qzsh=T+rWV7p3RTem#<F}dt_L)%j@NK zhb^MRd1|YBQkSZp(pYt^%J8fDy$TkCvhvcsx|>=K#;c6lyX}$IlCRgJ_{TY)KfrfV zM0U%~_vcxXlE=J<?mE@&O50j<Nt!P2y=d{-CdI|N@|k)z+IKdT?L8$fTXZbo4M8fn zYq9k~?`_@kUiYMJ4V|u5x-XYw8ETI8P<tTzJj{!4rA1W5N2sf&1kLbnzqFvDR_wm3 z?F+p;zJ6Kjnnl%S8_aty*VAI3(O$@P)>&j-8@wX!-o82cjh!`IbRwnmjmP2A&reSW zbYI?|uzsL*!1jf;Qjy@|qeUA7<NJ2_Mthg5ZF%T^z_TuD@#1#_q4kS*tL!$?ak$)- zXtw<-=Zb6h3r*GN>0^|S(b!cgf?hu9*@g}pTOOa@wy@)n{rim5H5R$#%$8@Z+jh+u zz`)HvsvrK@hV|W9<d=)lAKX05F^>IoFM@a~O?#QpRQ1vLRMT@ptoB{6ihjd4%Wl_% z*B}|BFkmHu9dhk*ZIi73`n?30zF^*hs{?SuHnZ4y!y4Y|>deJ%?eyXX7CR@{5w@R( z!D46f*KR2OfIb~gIE*wNi%HlIC#1m%duA+yI2N!^gqKfOheio&{84qt;_XlM3kUu) zq)-Aa#xE=!7eo(*jb;d-VNFSOti-IZK)jh>&yc~_1b)D?-y8TE)4_3k@=Kn{?|X1q zi60aybM*}zPAbfN<`N@{yVph!l*!@FnBV2MH_IerV@u4u)XPL~oQmPcdRlYn=C2o* zzvOCMT4#Ce$Ox(3uTDm*aK9IEOX|j*7LKlM^Y(6N5w#T`S!S}+>F((-A<qrjaY{LT z24aQxD<z`R^t$`~8_W!%V`WDKHy%x;Z%%%HQvq$Ed}Rm!g@R+O^Ku4)#)EL_xys9x zLsnV)NpX@WYcex>How2Ld&FW%$LFPYYqbU`@~3)B6$kD<9pNp_TD(8gj@N*Dm}7gZ zRK5D5?xAa{w>=J>vDV|d&UNMb$y2@MkJ=Y(TWP*ZSACtLXk6KQ#g82-`dCtC`ReUK z6lzfwz21nG?I=olu_0r*pj`m>r3$;zuHA9s)CC*Oiz0iCl!-^`y_|fL>LvWN_a}8e z9{D&doR_WGb*pgy-M3zT#?L+24{SALi(+eLD~pg4x=0{Y4n4UphPl{j{2TA$w;e>a zH~T;2d1kaht$7x;t4H=1a@tz)XT?k1g_N$9<rFSAkCN27-jbhxI5t*h+$vq_#Dt}6 z{OF;Nbs<%@`@3I9M2o(8rIQu2$o5-ng=|nnU+MVgov*p$Uy+uUeuf7yD^fZ;BSQW5 z7&ISrvv;VAcbCbFp06$)J7~;RwtS+vsle-U-nJa~b#C@n=9f$waw0vr;;lly#2mg{ z8yXti;1n*%6YF>j&k$Y(GlX53#)R~Ldf}S1Dg5G0IP0hhY-uLIbCPS?BqoBv1G_uw z|J}T%Hgi7a#NcHx*g@B;1?Puqhen)EnE9VOi62d8*i^yRaZV-QqBwojlmCA;wW0WQ zt{ioA#4TVoJSmkxOSBGYZ7#ok>my}<^Mk8lUFHdWkAjm&^EJy}Emd}+nU~vUtO_FZ zV8l*))oB}eWj|)!d_h%OQB|^Ft%juhy-W3tv1#qT4t~d@%{FL{4>K%JC3Lr+6E42^ zaEai#ZJfJCH%DpHIc+qXOWYp$38fANv2Y$}NC>){K$bsxJlREGHQ`WD#G~cOm8sn# z6-h6i-CESNqD=N-p`T1gf@<HEV?{WP?M+R0``wR)pLuOLN@3Ylw1w|ON>PRyUqrb{ zUe&|u-gPISg{)t3HQGY_Hiki~%F-7mwy)j!+MIX22EoRXx^+YC7gcla%$nQPH8(p# z@)&}4FhkIK=2XbS0!%1^dH|<2BO-_iMNk2tWY8#<pG_zXlmQ#}v}E!FD+&Xp0!&kj z!8$7kgmjAZmepJ=DB%7x*ZzXRo?Ucmb#F_r!>#4^kB#&>u>s|*avovhLD$9o){LK( z<VUlub}<+#y}C#ctZ&m6GaVRw<F28z24)8p#G_H~a}&-LB%J-{oqF*mI;s}hIu@!H z=BDa@(Wy6=!Fv~2iPizH#MRRW0?q_w=79kH!}|4~b0C1HTzPcBc^|K#t)+!r1#5u= z0RS}-5Z>^&99<M(xyhr8#P_4iT-R^pxB>&=`}sI9+f(|O1W!%W{2lt(H=hOfkB-NY z(n9Di{0|DbAV%WEz=j}O74K{Hy@V@~RfYjeJcbrHD`N0c#$uxB61O=8Q#KIb)n%|5 z-#edeTU<=%J+!OV<)|=uy04@)9ClY=95Ls)`)brO;Z~iTkNPSfi{Vw4N$Oi9>4d;N z-U%*cclNE=d->{7uV#WEW$|^<Pf76?ItiaGE-OmN1q#qarFWFt`fqpiE%W*kC1o(= z9#K-e!^F;LWi#IaHp9TU(SS=V8D^UX@7jK$^kz4f6%WTMbK!>`+q3OCyNyHZWwiL| z{;XTeUZ|O!FM9vPzqSB%8OymZ`qt-~OATgTYlRP>SRG{SrtL$(f{N<?!|m_`KYh;~ z_|y^8^&2e2u4x3VNep%UBS)OSz8!w>!R_Ymm-(K)LCpqfsU8n+XD_<?ueu!0Y*!Jx z53CAntEy`-x5EDhm&4zo4Yt9#%xy5@4V91%C+vk2cF)-fC%^_X8(9=^H=Xn%|Jlmq zXlp&W4K{UjR`Z|y?}h%tKG+d_-TQqXjC>#em-fNzecM*@bYFj#xjbPVi^0JodD7I1 z*GHR1@fYu~b|3pX?j9-vS6sOk&=A}?`eG=$_P63g^3Olj41~D2b1YfOFcX+K=e(=w zy^p|-$R;Br<D4g+3%_}OTDwpyQ_jtnK4`*!qqHvWdfc$i#x={uhqGdA_BcVMx_k>q z)nXEekB(J_^!#@FLt`vNwS~>(WR~3-U@6Sly;`Z}>=#T|*kN@W#V@X<YG2Rxrf6L7 z_0Dd0H|l?PJ1Zb{*SBEbxTn`_xc4Y@>%9@NS?70fy>w{(fg}0L#^W|-1gAzH4Q=T< z@JZscZd=;>>xEnyNd>isL{DK%Hdj~1=g8<{E9HCr-;BMl+vK-eo-Y=s=N_5A?l{{H zzU{*22}Sd7X1DQLX2)N<d#mW~;Kt2ET}#(-c6!k>WjF|rPdiFdYu|N2oiFh01^e{J zh?dbWKNee^80(;IB7{(*jwReI;w;g-@aFo>HpUs+Es6Kli73hV39;?UE_&r2k8kj} zX2os|U&_&!sroAUnFdZkY4nnsi=y<{jS~CEi>u3ywP%zUndCRz5iz!Vmh?$E`^fwN z_}&G&x^1W5`q8W%YGS`hm#(fn^~7x1e#dnW^IERCJ|}g!UvBPzFMVn1vzy?l^K$4v zC@G?=R&!?+D{hb{*HP>7Ag7}EgNjXBk{stBYq#I?-rYgpW-R~~oX6m5;>xV6iL!Nq zF`W?~v~Dn0pRylUpMO@R&;F!GTZ`!lKmAD$0{(Zd{(rhq9WRhe3tiRfQIl88H}LRO zc2D55oaUW`EvI~IyFZE@^y`bV`Zjv}(%``_;s#y?p_Ig=z60|-$4}sD>NPj*Q9FCT zvD?kb`GQJcx%ZlYYlnw7?2+C!RO-u`8=J_<S)KT?T#Z!l_={z%i0ry{#m{?E3;FhK z3%Z@5&t;iserq{#;(R4Xd2vb~munkQ>v{dFo8=PU67EucbfQM^#u;vhC)Vd@7GPIu zT~97Qd@RGiqgkj!q19y+k0zC+g}zy>=bmLZx<O@mzgD;?&$-q$7fn-AlB>3U7>Zo+ zLRp|uSF5;6(eWV6CKTyj=<4BP+=Bmd=bYsDP;*Mg+pYu@srAM5LL~+`wQ!b~slB_w z*iM{~t$X=rnYH)sR4JPAFP(Fz@XK}UUvy{(I}PwH58}{1xw?Q`1^mBjb@?6IKVB#N znWGT%jsbk+6aF@N;*3ZAW&6xd!jacdK1!uXKH1RFHzJ3ED$R;mravq+PeiWn2G1fw z^U~Co1_cI6K!dTdTxMbXaml1hx5|~P+Piv9e8ws{^-Rio&aHU;)jsY^AMyFeC(g$w zlC!IQIM=-A<ZbU1<qC(M7*{W~4?MxkcB788G|VQ4P`R8vT-7>GBt_?aK(vH%;(Ph+ z5Wn^#n&1fwdDVG)RbyEi{l~_+bhi5H_buVRr{`Ev7vt9QChwubH(i}QQoX_a_qTGM zXWeFX{QYqo_|@8du2d6|ZEZ*IrHeI=l=|#;4m)T3+q+w>Yu`f68#i%?qzymC)^>IZ zyQtOMt3?;)jor>;u*3l4F9A6xCp^#lFFqjT%X5J~eD^Y7Speyu@7%YT*b{s2#gPx) zMP`&$$DLbp6RyAsbp;7EaKgF2W$XRJCnrCD+i36N%>1@d)685?6*ko}SJg0w_3%qz zrO7S3%-k(I)|nbX^CM#I2;je%q+w0L|A`wid&L2ttD#w;ry@iRSY{F5^zjeY)Y4Jc zSTl_PR~eHCI0|gCCS8iaSrd2ysDa%d*AxL@{|9mKf0Lmx6=>kB4$h4rF0yPggXmd+ zgkbGi#nE_hVLs!N#5}y_a={!(F&5$HK6%q|_B`wlO=f;@5)U6TEM3cf!E2Z5o(H?G z+*NG#wOT5sRrg3+Y;;`py#Yf<YJQeHDaO>8Xa9+@E6+WQ&JsRn55DX65tP|IxNqrB zt!Qsv??Vypf~Hb>WoLZnububqx#q1?H$A*l)w_%Y;tW~Ourx>YpDNQ)JZu`b_4Nt| zFMqvq4NVV6%ap3%1zgV?#~z3^)$=-*Z790xd*<~c>dHP;#M4Znz~YV3tvt7iINBr+ zwe^17bFlNM&F=k%^F0*dV*GH!i9;6;xn4+pdh%Ssix2aQ4~X?HfAT71H124a^d}D~ z+tUtWMOUs$>k{biDr%#&*DELJOND=WuP>QZ^~p!l<M6@mPllU)Zf^(vI-_9ny<<+k zegEuHaMHl`i=E9}1DiT5I%Dww&T2e!Y#Q*72D3fDRlrmd(tWsFsw(L7Ix&7pUVB`S zxv`i;U7gqEy*6+{_bdWv;GEV1C)|M(n&5;ojL@&9FL0uT6XFXt{U<UDIN;q28eP=R zPaQ4Wwsz~=;tnrCG&DS0^1-r$_#;^tad!wfD?atAOQ(f;*tcMIoNUenD*Kc9$MY*{ z(f*w(V;viaWwG~g1$r4d<((ai7RJwCANG7%g}l*V)virecX?lTD)eOK{Kl4lG-Q5U zgMW~Q=P>@u24mLMYGJ!Mt@O{`8}5-T{Vn!mNsZNF3GQqS{4%==#!#g}Wr)dfQG<k# zn|9|&9ZAXwz2(~c&JN|aI?!MeUDm)@DTuQ#kbgzPo~>-BP0y#kk^4<~sh)PFcaEue zZKTkvClMV+CAh7vj%&*ov1$6W3khv3c^Gsv!uIB+%85-EOymyIT$Wx<FMWMJtv`YD gX11@%)webi$yzLp*Xl^-Y@GfbyPm2}{vT`q2j|&65C8xG literal 0 HcmV?d00001 From b6377aa2fa391636252743686a9df9207c9d5fc2 Mon Sep 17 00:00:00 2001 From: Beisi Zhou <zazbs@qq.com> Date: Wed, 21 Oct 2020 14:53:19 +0800 Subject: [PATCH 4/8] Add pester test for RBAC and full-backup managed HSM --- .../ManagedHsmDatePlaneTests.Tests.ps1 | 114 ++++++++++++++++-- .../KeyVault/help/Backup-AzManagedHsm.md | 2 +- .../help/Get-AzManagedHsmRoleDefinition.md | 2 +- .../KeyVault/help/Restore-AzManagedHsm.md | 2 +- 4 files changed, 105 insertions(+), 15 deletions(-) diff --git a/src/KeyVault/KeyVault.Test/PesterTests/ManagedHsmDatePlaneTests.Tests.ps1 b/src/KeyVault/KeyVault.Test/PesterTests/ManagedHsmDatePlaneTests.Tests.ps1 index f9f714ede44a..17dafa82021b 100644 --- a/src/KeyVault/KeyVault.Test/PesterTests/ManagedHsmDatePlaneTests.Tests.ps1 +++ b/src/KeyVault/KeyVault.Test/PesterTests/ManagedHsmDatePlaneTests.Tests.ps1 @@ -65,37 +65,35 @@ Describe "AddAzManagedHsmKey" { # $keyName = GetRandomName -Prefix "key" # $keyFilePath = Join-Path $PSScriptRoot ../Resources/testImportKey.pfx -Resolve # $keyFilePwd = $null - # $key = Add-AzManagedHsmKey -HsmName bezmhsm -Name $keyName -KeyFilePath $keyFilePath -KeyFilePassword $keyFilePwd + # $key = Add-AzManagedHsmKey -HsmName $hsmName -Name $keyName -KeyFilePath $keyFilePath -KeyFilePassword $keyFilePwd # $key.Name | Should -BeExactly $keyName # } } Describe "GetAzManagedHsmKey"{ - It "List all the keys in a managed HSM" { + BeforeEach{ + # Add a key $keyName = GetRandomName -Prefix "key" - Add-AzManagedHsmKey -HsmName $hsmName -Name $keyName -KeyType "RSA" + $key = Add-AzManagedHsmKey -HsmName $hsmName -Name $keyName -KeyType "RSA" + } + + It "List all the keys in a managed HSM" { $keys = Get-AzManagedHsmKey -HsmName $hsmName $keys.Count | Should -BeGreaterThan 0 } It "Get a specific key in a managed HSM" { - $keyName = GetRandomName -Prefix "key" - $key = Add-AzManagedHsmKey -HsmName $hsmName -Name $keyName -KeyType "RSA" $got = Get-AzManagedHsmKey -HsmName $hsmName -KeyName $keyName $got.Id | Should -Be $key.Id } It "List all the keys that have been deleted in a managed HSM" { - $keyName = GetRandomName -Prefix "key" - $key = Add-AzManagedHsmKey -HsmName $hsmName -Name $keyName -KeyType "RSA" - Remove-AzManagedHsmKey -HsmName $hsmName -Name $keyName + Remove-AzManagedHsmKey -HsmName $hsmName -Name $keyName -Force $deletedKey = Get-AzManagedHsmKey -HsmName $hsmName -KeyName $keyName -InRemovedState $deletedKey.Id | Should -Be $key.Id } It "Download a key from a managed HSM" { - $keyName = GetRandomName -Prefix "key" - Add-AzManagedHsmKey -HsmName $hsmName -Name $keyName -KeyType "RSA" $filePath = "$PSScriptRoot\public.pem" Get-AzManagedHsmKey -HsmName $hsmName -KeyName $keyName -OutFile $filePath $filePath | Should -Exist @@ -150,8 +148,8 @@ Describe "UndoAzManagedHsmKeyRemoval"{ } } -Describe "BackupAndRetoreAzManagedHsmKey"{ - It "Backup and retore a key" { +Describe "BackupAndRestoreAzManagedHsmKey"{ + It "Backup and restore a key" { $keyName = GetRandomName -Prefix "key" $key = Add-AzManagedHsmKey -HsmName $hsmName -Name $keyName -KeyType "RSA" $filePath = "$PSScriptRoot/backupkey.blob" @@ -165,6 +163,98 @@ Describe "BackupAndRetoreAzManagedHsmKey"{ } } +Describe "BackupAndRestoreAzManagedHsm"{ + BeforeEach{ + $sasToken = ConvertTo-SecureString -AsPlainText -Force "?sv=2019-12-12&ss=bfqt&srt=sco&sp=rwdlacupx&se=2020-10-21T13:11:01Z&st=2020-10-21T05:11:01Z&spr=https&sig=******" + $containerUri = "https://{accountName}.blob.core.windows.net/{containerName}" + } + + It "Backup a managed HSM" { + $uri = Backup-AzManagedHsm -Name $hsmName -StorageContainerUri $containerUri -SasToken $sasToken + $uri | Should -Not -Be $null + } + + It "Restore a managed HSM" { + $restoreResult = Restore-AzManagedHsm -Name $hsmName -StorageContainerUri $containerUri -BackupFolder "mhsm-$hsmName-2020102105402658" -SasToken $sasToken -PassThru + $restoreResult | Should -Be $True + } +} + +Describe "GetAzManagedHsmRoleDefinition"{ + It "List all the roles at '/keys' scope" { + $roles = Get-AzManagedHsmRoleDefinition -HsmName $hsmName -Scope "/keys" + $roles.Count | Should -BeGreaterThan 0 + } + + It "Get a specific role" { + $backupRole = Get-AzManagedHsmRoleDefinition -HsmName $hsmName -RoleDefinitionName "managed hsm backup" + $backupRole | Should -Not -Be $null + $backupRole.Permissions | Should -Not -Be $null + $backupRole.Permissions.AllowedDataActions | Should -Not -Be $null + } +} + +Describe "NewAzManagedHsmRoleAssignment"{ + BeforeEach{ + $signInName = "user@microsoft.com" + $roleDefinitionName = "Managed HSM Backup" + # Clean role + $roleAssignment = Get-AzManagedHsmRoleAssignment -HsmName $hsmName -RoleDefinitionName $roleDefinitionName -SignInName $signInName + if($roleAssignment){ + Remove-AzManagedHsmRoleAssignment -HsmName $hsmName -RoleDefinitionName $roleDefinitionName -SignInName $signInName + } + } + + It "Assign a role to user" { + # Assign role + $roleAssignment = New-AzManagedHsmRoleAssignment -HsmName $hsmName -RoleDefinitionName $roleDefinitionName -SignInName $signInName + $roleAssignment | Should -Not -Be $null + $roleAssignment.RoleDefinitionName | Should -Be $roleDefinitionName + } +} + +Describe "RemoveAzManagedHsmRoleAssignment"{ + BeforeEach{ + # Assign role + $signInName = "user@microsoft.com" + $roleDefinitionName = "Managed HSM Backup" + $roleAssignment = Get-AzManagedHsmRoleAssignment -HsmName $hsmName -RoleDefinitionName $roleDefinitionName -SignInName $signInName + if(!$roleAssignment){ + $roleAssignment = New-AzManagedHsmRoleAssignment -HsmName $hsmName -RoleDefinitionName $roleDefinitionName -SignInName $signInName + } + } + + It "Revoke a role from user at '/keys' scope" { + Remove-AzManagedHsmRoleAssignment -HsmName $hsmName -RoleDefinitionName $roleDefinitionName -SignInName $signInName -Scope "/keys" + $roleAssignment = Get-AzManagedHsmRoleAssignment -HsmName $hsmName -RoleDefinitionName $roleDefinitionName -SignInName $signInName + $roleAssignment | Should -Be $null + } +} + +Describe "GetAzManagedHsmRoleAssignment"{ + BeforeEach{ + # Assign role + $signInName = "user@microsoft.com" + $roleDefinitionName = "Managed HSM Backup" + $roleAssignment = Get-AzManagedHsmRoleAssignment -HsmName $hsmName -RoleDefinitionName $roleDefinitionName -SignInName $signInName + if(!$roleAssignment){ + $roleAssignment = New-AzManagedHsmRoleAssignment -HsmName $hsmName -RoleDefinitionName $roleDefinitionName -SignInName $signInName + } + } + + It "List all role assignmentss in a managed HSM" { + $roleAssignments = Get-AzManagedHsmRoleAssignment -HsmName $hsmName + $roleAssignments | Should -Not -Be $null + $roleAssignments.Count | Should -BeGreaterThan 0 + } + + It "List a user's role assignments in a managed HSM on '/keys' scope" { + $roleAssignments = Get-AzManagedHsmRoleAssignment -HsmName $hsmName -SignInName $signInName -Scope "/keys" + $roleAssignments | Should -Not -Be $null + $roleAssignments.Count | Should -BeGreaterThan 0 + } +} + # to do: manually remove all stuffs in resource group # AfterAll { # $hsm = Get-AzManagedHsm -Name $hsmName diff --git a/src/KeyVault/KeyVault/help/Backup-AzManagedHsm.md b/src/KeyVault/KeyVault/help/Backup-AzManagedHsm.md index 99658d17bbe0..7a79ba14bb39 100644 --- a/src/KeyVault/KeyVault/help/Backup-AzManagedHsm.md +++ b/src/KeyVault/KeyVault/help/Backup-AzManagedHsm.md @@ -46,7 +46,7 @@ Use `Restore-AzManagedHsm` to restore the backup. ```powershell PS C:\> $sasToken = ConvertTo-SecureString -AsPlainText -Force "?sv=2019-12-12&ss=bfqt&srt=sco&sp=rwdlacupx&se=2020-10-12T14:42:19Z&st=2020-10-12T06:42:19Z&spr=https&sig=******" -PS C:\> Backup-AzManagedHsm -Name myHsm -BlobStorageUri "https://{accountName}.blob.core.windows.net/{containerName}" -SasToken $sasToken +PS C:\> Backup-AzManagedHsm -Name myHsm -StorageContainerUri "https://{accountName}.blob.core.windows.net/{containerName}" -SasToken $sasToken https://{accountName}.blob.core.windows.net/{containerName}/{backupFolder} ``` diff --git a/src/KeyVault/KeyVault/help/Get-AzManagedHsmRoleDefinition.md b/src/KeyVault/KeyVault/help/Get-AzManagedHsmRoleDefinition.md index 565445317bde..3053501dd9e8 100644 --- a/src/KeyVault/KeyVault/help/Get-AzManagedHsmRoleDefinition.md +++ b/src/KeyVault/KeyVault/help/Get-AzManagedHsmRoleDefinition.md @@ -48,7 +48,7 @@ The example lists all the roles at "/keys" scope. ### Example 2 ```powershell -PS C:\> $backupRole = Get-AzManagedHsmRoleDefinition -HsmName bezmhsm -RoleDefinitionName "managed hsm backup" +PS C:\> $backupRole = Get-AzManagedHsmRoleDefinition -HsmName myHsm -RoleDefinitionName "managed hsm backup" PS C:\> $backupRole.Permissions diff --git a/src/KeyVault/KeyVault/help/Restore-AzManagedHsm.md b/src/KeyVault/KeyVault/help/Restore-AzManagedHsm.md index 965324f7395b..3fba4c0300be 100644 --- a/src/KeyVault/KeyVault/help/Restore-AzManagedHsm.md +++ b/src/KeyVault/KeyVault/help/Restore-AzManagedHsm.md @@ -47,7 +47,7 @@ Use `Backup-AzManagedHsm` to backup. ### Example 1 ```powershell PS C:\> $sasToken = ConvertTo-SecureString -AsPlainText -Force "?sv=2019-12-12&ss=bfqt&srt=sco&sp=rwdlacupx&se=2020-10-12T14:42:19Z&st=2020-10-12T06:42:19Z&spr=https&sig=******" -PS C:\> Restore-AzManagedHsm -Name myHsm -BlobStorageUri "https://{accountName}.blob.core.windows.net/{containerName}" -BackupFolder "mhsm-myHsm-2020101308504935" -SasToken $sasToken +PS C:\> Restore-AzManagedHsm -Name myHsm -StorageContainerUri "https://{accountName}.blob.core.windows.net/{containerName}" -BackupFolder "mhsm-myHsm-2020101308504935" -SasToken $sasToken ``` The example restores a backup stored in a folder named "mhsm-myHsm-2020101308504935" of a storage container "https://{accountName}.blob.core.windows.net/{containerName}". From 230130518f552496df0d512bd52fbd337c3fb62b Mon Sep 17 00:00:00 2001 From: Yeming Liu <yeliu@microsoft.com> Date: Wed, 21 Oct 2020 17:11:43 +0800 Subject: [PATCH 5/8] fix dll list --- src/KeyVault/KeyVault/Az.KeyVault.psd1 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/KeyVault/KeyVault/Az.KeyVault.psd1 b/src/KeyVault/KeyVault/Az.KeyVault.psd1 index 7a9e6299319c..db993a5579b3 100644 --- a/src/KeyVault/KeyVault/Az.KeyVault.psd1 +++ b/src/KeyVault/KeyVault/Az.KeyVault.psd1 @@ -61,7 +61,8 @@ RequiredAssemblies = 'Microsoft.Azure.KeyVault.dll', 'Microsoft.Azure.Management.KeyVault.dll', 'Azure.Security.KeyVault.Keys.dll', 'Azure.Security.KeyVault.Administration.dll', - 'BouncyCastle.Crypto.dll' + 'BouncyCastle.Crypto.dll', + 'Microsoft.IdentityModel.Tokens.dll' # Script files (.ps1) that are run in the caller's environment prior to importing this module. # ScriptsToProcess = @() From 9564a4c09f22fa26abef25e4d270f1fe35bf9468 Mon Sep 17 00:00:00 2001 From: Beisi Zhou <zazbs@qq.com> Date: Wed, 21 Oct 2020 17:28:39 +0800 Subject: [PATCH 6/8] support relative path when restoring SD --- .../KeyVault/SecurityDomain/Cmdlets/RestoreSecurityDomain.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/KeyVault/KeyVault/SecurityDomain/Cmdlets/RestoreSecurityDomain.cs b/src/KeyVault/KeyVault/SecurityDomain/Cmdlets/RestoreSecurityDomain.cs index ba3eb0ff78a3..d59dc7b8118e 100644 --- a/src/KeyVault/KeyVault/SecurityDomain/Cmdlets/RestoreSecurityDomain.cs +++ b/src/KeyVault/KeyVault/SecurityDomain/Cmdlets/RestoreSecurityDomain.cs @@ -33,7 +33,7 @@ public override void DoExecuteCmdlet() PublicKey = this.ResolveUserPath(key.PublicKey), PrivateKey = this.ResolveUserPath(key.PrivateKey) }).ToArray(); - var securityDomain = LoadSdFromFile(SecurityDomainPath); + var securityDomain = LoadSdFromFile(ResolveUserPath(SecurityDomainPath)); var rawSecurityDomain = Client.DecryptSecurityDomain(securityDomain, Keys); var exchangeKey = Client.DownloadSecurityDomainExchangeKey(Name); var encryptedSecurityDomain = Client.EncryptForRestore(rawSecurityDomain, exchangeKey); From 6c330f4167218b0fa4a6515e14256fd6752fd956 Mon Sep 17 00:00:00 2001 From: Yeming Liu <Yeming.Liu@microsoft.com> Date: Wed, 21 Oct 2020 17:48:50 +0800 Subject: [PATCH 7/8] update license (bouncycastle.netcore -> portable) --- LICENSE.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/LICENSE.txt b/LICENSE.txt index c5faa2b78e07..2692cf8546c3 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -225,12 +225,12 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI *************** -The software includes BouncyCastle.NetCore. The MIT License set out below is provided for informational purposes only. It is not the license that governs any part of the software. +The software includes Portable.BouncyCastle. The MIT License set out below is provided for informational purposes only. It is not the license that governs any part of the software. -BouncyCastle.NetCore +Portable.BouncyCastle LICENSE -Copyright (c) 2000 - 2020 The Legion of the Bouncy Castle Inc. (https://www.bouncycastle.org) +Copyright (c) 2000 - 2017 The Legion of the Bouncy Castle Inc. (http://www.bouncycastle.org) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: From 9c0167a3a133dc021ab0b6778738ee044697d26d Mon Sep 17 00:00:00 2001 From: Yeming Liu <Yeming.Liu@microsoft.com> Date: Wed, 21 Oct 2020 20:20:32 +0800 Subject: [PATCH 8/8] remove dependency Microsoft.IdentityModel.Tokens --- .../KeyVault.Test/KeyVault.Test.csproj | 3 - src/KeyVault/KeyVault/Az.KeyVault.psd1 | 3 +- src/KeyVault/KeyVault/KeyVault.csproj | 1 - .../SecurityDomain/Models/Base64UrlEncoder.cs | 125 ++++++++++++++++++ .../SecurityDomain/Models/CertKeys.cs | 3 +- .../KeyVault/SecurityDomain/Models/JWE.cs | 1 - .../KeyVault/SecurityDomain/Models/JWK.cs | 1 - .../Models/SecurityDomainClient.cs | 1 - 8 files changed, 127 insertions(+), 11 deletions(-) create mode 100644 src/KeyVault/KeyVault/SecurityDomain/Models/Base64UrlEncoder.cs diff --git a/src/KeyVault/KeyVault.Test/KeyVault.Test.csproj b/src/KeyVault/KeyVault.Test/KeyVault.Test.csproj index ceab5068360a..fb8041ac4936 100644 --- a/src/KeyVault/KeyVault.Test/KeyVault.Test.csproj +++ b/src/KeyVault/KeyVault.Test/KeyVault.Test.csproj @@ -14,9 +14,6 @@ <PackageReference Include="Microsoft.Azure.KeyVault" Version="3.0.1" /> <PackageReference Include="Microsoft.Azure.KeyVault.WebKey" Version="3.0.1" /> <PackageReference Include="Microsoft.Azure.Management.KeyVault" Version="3.1.0-preview.2" /> - <PackageReference Include="Microsoft.IdentityModel.Tokens" Version="5.6.0"> - <NoWarn>NU1608</NoWarn> - </PackageReference> <PackageReference Include="Microsoft.Azure.Management.Network" Version="20.1.1" /> </ItemGroup> diff --git a/src/KeyVault/KeyVault/Az.KeyVault.psd1 b/src/KeyVault/KeyVault/Az.KeyVault.psd1 index db993a5579b3..7a9e6299319c 100644 --- a/src/KeyVault/KeyVault/Az.KeyVault.psd1 +++ b/src/KeyVault/KeyVault/Az.KeyVault.psd1 @@ -61,8 +61,7 @@ RequiredAssemblies = 'Microsoft.Azure.KeyVault.dll', 'Microsoft.Azure.Management.KeyVault.dll', 'Azure.Security.KeyVault.Keys.dll', 'Azure.Security.KeyVault.Administration.dll', - 'BouncyCastle.Crypto.dll', - 'Microsoft.IdentityModel.Tokens.dll' + 'BouncyCastle.Crypto.dll' # Script files (.ps1) that are run in the caller's environment prior to importing this module. # ScriptsToProcess = @() diff --git a/src/KeyVault/KeyVault/KeyVault.csproj b/src/KeyVault/KeyVault/KeyVault.csproj index 6f7ab377898b..08c173c1e4d1 100644 --- a/src/KeyVault/KeyVault/KeyVault.csproj +++ b/src/KeyVault/KeyVault/KeyVault.csproj @@ -18,7 +18,6 @@ <PackageReference Include="Microsoft.Azure.KeyVault" Version="3.0.1" /> <PackageReference Include="Microsoft.Azure.KeyVault.WebKey" Version="3.0.1" /> <PackageReference Include="Microsoft.Azure.Management.KeyVault" Version="3.1.0-preview.2" /> - <PackageReference Include="Microsoft.IdentityModel.Tokens" Version="5.6.0" /> <PackageReference Include="System.Security.Cryptography.Cng" Version="4.5.0" /> </ItemGroup> diff --git a/src/KeyVault/KeyVault/SecurityDomain/Models/Base64UrlEncoder.cs b/src/KeyVault/KeyVault/SecurityDomain/Models/Base64UrlEncoder.cs new file mode 100644 index 000000000000..f3c0405d11ac --- /dev/null +++ b/src/KeyVault/KeyVault/SecurityDomain/Models/Base64UrlEncoder.cs @@ -0,0 +1,125 @@ +using System; +using System.Text; + +namespace Microsoft.Azure.Commands.KeyVault.SecurityDomain.Models +{ + /// <summary> + /// Encodes and Decodes strings as Base64Url encoding. + /// </summary> + public static class Base64UrlEncoder + { + private static char base64PadCharacter = '='; + private static string doubleBase64PadCharacter = "=="; + private static char base64Character62 = '+'; + private static char base64Character63 = '/'; + private static char base64UrlCharacter62 = '-'; + private static char _base64UrlCharacter63 = '_'; + + /// <summary> + /// The following functions perform base64url encoding which differs from regular base64 encoding as follows + /// * padding is skipped so the pad character '=' doesn't have to be percent encoded + /// * the 62nd and 63rd regular base64 encoding characters ('+' and '/') are replace with ('-' and '_') + /// The changes make the encoding alphabet file and URL safe. + /// </summary> + /// <param name="arg">string to encode.</param> + /// <returns>Base64Url encoding of the UTF8 bytes.</returns> + public static string Encode(string arg) + { + if (arg == null) + throw new ArgumentNullException("arg"); + + return Encode(Encoding.UTF8.GetBytes(arg)); + } + + /// <summary> + /// Converts a subset of an array of 8-bit unsigned integers to its equivalent string representation that is encoded with base-64-url digits. Parameters specify + /// the subset as an offset in the input array, and the number of elements in the array to convert. + /// </summary> + /// <param name="inArray">An array of 8-bit unsigned integers.</param> + /// <param name="length">An offset in inArray.</param> + /// <param name="offset">The number of elements of inArray to convert.</param> + /// <returns>The string representation in base 64 url encoding of length elements of inArray, starting at position offset.</returns> + /// <exception cref="ArgumentNullException">'inArray' is null.</exception> + /// <exception cref="ArgumentOutOfRangeException">offset or length is negative OR offset plus length is greater than the length of inArray.</exception> + public static string Encode(byte[] inArray, int offset, int length) + { + if (inArray == null) + throw new ArgumentNullException("inArray"); + + string s = Convert.ToBase64String(inArray, offset, length); + s = s.Split(base64PadCharacter)[0]; // Remove any trailing padding + s = s.Replace(base64Character62, base64UrlCharacter62); // 62nd char of encoding + s = s.Replace(base64Character63, _base64UrlCharacter63); // 63rd char of encoding + return s; + } + + /// <summary> + /// Converts a subset of an array of 8-bit unsigned integers to its equivalent string representation that is encoded with base-64-url digits. Parameters specify + /// the subset as an offset in the input array, and the number of elements in the array to convert. + /// </summary> + /// <param name="inArray">An array of 8-bit unsigned integers.</param> + /// <returns>The string representation in base 64 url encoding of length elements of inArray, starting at position offset.</returns> + /// <exception cref="ArgumentNullException">'inArray' is null.</exception> + /// <exception cref="ArgumentOutOfRangeException">offset or length is negative OR offset plus length is greater than the length of inArray.</exception> + public static string Encode(byte[] inArray) + { + if (inArray == null) + throw new ArgumentNullException("inArray"); + + string s = Convert.ToBase64String(inArray, 0, inArray.Length); + s = s.Split(base64PadCharacter)[0]; // Remove any trailing padding + s = s.Replace(base64Character62, base64UrlCharacter62); // 62nd char of encoding + s = s.Replace(base64Character63, _base64UrlCharacter63); // 63rd char of encoding + + return s; + } + + /// <summary> + /// Converts the specified string, which encodes binary data as base-64-url digits, to an equivalent 8-bit unsigned integer array.</summary> + /// <param name="str">base64Url encoded string.</param> + /// <returns>UTF8 bytes.</returns> + public static byte[] DecodeBytes(string str) + { + if (str == null) + { + throw new ArgumentNullException(nameof(str)); + } + + // 62nd char of encoding + str = str.Replace(base64UrlCharacter62, base64Character62); + + // 63rd char of encoding + str = str.Replace(_base64UrlCharacter63, base64Character63); + + // check for padding + switch (str.Length % 4) + { + case 0: + // No pad chars in this case + break; + case 2: + // Two pad chars + str += doubleBase64PadCharacter; + break; + case 3: + // One pad char + str += base64PadCharacter; + break; + default: + throw new Exception(string.Format("Unable to decode: '{0}' as Base64url encoded", str)); + } + + return Convert.FromBase64String(str); + } + + /// <summary> + /// Decodes the string from Base64UrlEncoded to UTF8. + /// </summary> + /// <param name="arg">string to decode.</param> + /// <returns>UTF8 string.</returns> + public static string Decode(string arg) + { + return Encoding.UTF8.GetString(DecodeBytes(arg)); + } + } +} \ No newline at end of file diff --git a/src/KeyVault/KeyVault/SecurityDomain/Models/CertKeys.cs b/src/KeyVault/KeyVault/SecurityDomain/Models/CertKeys.cs index eae5de3268ec..963bbdf50c02 100644 --- a/src/KeyVault/KeyVault/SecurityDomain/Models/CertKeys.cs +++ b/src/KeyVault/KeyVault/SecurityDomain/Models/CertKeys.cs @@ -1,5 +1,4 @@ -using Microsoft.IdentityModel.Tokens; -using System; +using System; using System.Collections.Generic; namespace Microsoft.Azure.Commands.KeyVault.SecurityDomain.Models diff --git a/src/KeyVault/KeyVault/SecurityDomain/Models/JWE.cs b/src/KeyVault/KeyVault/SecurityDomain/Models/JWE.cs index b4c6d2a9f149..2c377648efcd 100644 --- a/src/KeyVault/KeyVault/SecurityDomain/Models/JWE.cs +++ b/src/KeyVault/KeyVault/SecurityDomain/Models/JWE.cs @@ -1,7 +1,6 @@ using System; using System.Security.Cryptography; using System.Text; -using Microsoft.IdentityModel.Tokens; using Newtonsoft.Json; using System.IO; using System.Security.Cryptography.X509Certificates; diff --git a/src/KeyVault/KeyVault/SecurityDomain/Models/JWK.cs b/src/KeyVault/KeyVault/SecurityDomain/Models/JWK.cs index 5eadf8f7a536..4123e23a81ea 100644 --- a/src/KeyVault/KeyVault/SecurityDomain/Models/JWK.cs +++ b/src/KeyVault/KeyVault/SecurityDomain/Models/JWK.cs @@ -3,7 +3,6 @@ using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; using Microsoft.Azure.Commands.KeyVault.SecurityDomain.Common; -using Microsoft.IdentityModel.Tokens; using Newtonsoft.Json; namespace Microsoft.Azure.Commands.KeyVault.SecurityDomain.Models diff --git a/src/KeyVault/KeyVault/SecurityDomain/Models/SecurityDomainClient.cs b/src/KeyVault/KeyVault/SecurityDomain/Models/SecurityDomainClient.cs index ab8cddb8c442..39043dd5076f 100644 --- a/src/KeyVault/KeyVault/SecurityDomain/Models/SecurityDomainClient.cs +++ b/src/KeyVault/KeyVault/SecurityDomain/Models/SecurityDomainClient.cs @@ -3,7 +3,6 @@ using Microsoft.Azure.Commands.KeyVault.Properties; using Microsoft.Azure.Commands.KeyVault.SecurityDomain.Common; using Microsoft.Azure.Commands.KeyVault.SecurityDomain.Crypto; -using Microsoft.IdentityModel.Tokens; using Microsoft.Rest; using Microsoft.WindowsAzure.Commands.Utilities.Common; using Newtonsoft.Json;