Skip to content

Commit abc8e99

Browse files
committed
Add new parameter BypassObjectIdValidation to PowerShell Set-AzureRmKeyVaultAccessPolicy
1 parent ff26166 commit abc8e99

File tree

4 files changed

+34
-3
lines changed

4 files changed

+34
-3
lines changed

src/ResourceManager/KeyVault/Commands.KeyVault.Test/Scripts/ControlPlane/KeyVaultManagementTests.ps1

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -276,11 +276,21 @@ function Test-SetRemoveAccessPolicyBySPN
276276

277277
function Test-SetRemoveAccessPolicyByObjectId
278278
{
279-
Param($existingVaultName, $rgName, $objId)
279+
Param($existingVaultName, $rgName, $objId, [switch]$bypassObjectIdValidation)
280280

281281
$PermToKeys = @("encrypt", "decrypt")
282282
$PermToSecrets = @()
283-
$vault = Set-AzureRmKeyVaultAccessPolicy -VaultName $existingVaultName -ResourceGroupName $rgName -ObjectId $objId -PermissionsToKeys $PermToKeys -PassThru
283+
284+
$vault;
285+
if ($bypassObjectIdValidation.IsPresent)
286+
{
287+
$vault = Set-AzureRmKeyVaultAccessPolicy -VaultName $existingVaultName -ResourceGroupName $rgName -ObjectId $objId -PermissionsToKeys $PermToKeys -BypassObjectIdValidation -PassThru
288+
}
289+
else
290+
{
291+
$vault = Set-AzureRmKeyVaultAccessPolicy -VaultName $existingVaultName -ResourceGroupName $rgName -ObjectId $objId -PermissionsToKeys $PermToKeys -PassThru
292+
}
293+
284294

285295
CheckVaultAccessPolicy $vault $PermToKeys $PermToSecrets
286296

src/ResourceManager/KeyVault/Commands.KeyVault.Test/Scripts/RunKeyVaultTests.ps1

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,7 @@ function Run-AllControlPlaneTests
199199
Run-TestProtected { Run-VaultTest { Test_SetRemoveAccessPolicyByUPN } "Test_SetRemoveAccessPolicyByUPN" } "Test_SetRemoveAccessPolicyByUPN"
200200
Run-TestProtected { Run-VaultTest { Test_SetRemoveAccessPolicyBySPN } "Test_SetRemoveAccessPolicyBySPN" } "Test_SetRemoveAccessPolicyBySPN"
201201
Run-TestProtected { Run-VaultTest { Test_SetRemoveAccessPolicyByObjectId } "Test_SetRemoveAccessPolicyByObjectId" } "Test_SetRemoveAccessPolicyByObjectId"
202+
Run-TestProtected { Run-VaultTest { Test_SetRemoveAccessPolicyByBypassObjectIdValidation } "Test_SetRemoveAccessPolicyByBypassObjectIdValidation" } "Test_SetRemoveAccessPolicyByBypassObjectIdValidation"
202203
Run-TestProtected { Run-VaultTest { Test_SetRemoveAccessPolicyByCompoundId } "Test_SetRemoveAccessPolicyByCompoundId" } "Test_SetRemoveAccessPolicyByCompoundId"
203204
Run-TestProtected { Run-VaultTest { Test_RemoveAccessPolicyWithCompoundIdPolicies } "Test_RemoveAccessPolicyWithCompoundIdPolicies" } "Test_RemoveAccessPolicyWithCompoundIdPolicies"
204205
Run-TestProtected { Run-VaultTest { Test_SetCompoundIdAccessPolicy } "Test_SetCompoundIdAccessPolicy" } "Test_SetCompoundIdAccessPolicy"

src/ResourceManager/KeyVault/Commands.KeyVault.Test/Scripts/VaultManagementTests.ps1

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,13 @@ function Test_SetRemoveAccessPolicyByObjectId
136136
Test-SetRemoveAccessPolicyByObjectId $global:testVault $global:resourceGroupName $global:objectId
137137
}
138138

139+
function Test_SetRemoveAccessPolicyByBypassObjectIdValidation
140+
{
141+
$securityGroupObjIdFromOtherTenant = [System.Guid]::NewGuid().toString()
142+
Reset-PreCreatedVault
143+
Test-SetRemoveAccessPolicyByObjectId $global:testVault $global:resourceGroupName $securityGroupObjIdFromOtherTenant -bypassObjectIdValidation
144+
}
145+
139146
function Test_SetRemoveAccessPolicyByCompoundId
140147
{
141148
$appId = [System.Guid]::NewGuid()

src/ResourceManager/KeyVault/Commands.KeyVault/Commands/SetAzureKeyVaultAccessPolicy.cs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,15 @@ public class SetAzureKeyVaultAccessPolicy : KeyVaultManagementCmdletBase
150150
HelpMessage = "If specified, enables secrets to be retrieved from this key vault by Azure Disk Encryption.")]
151151
public SwitchParameter EnabledForDiskEncryption { get; set; }
152152

153+
/// <summary>
154+
/// Flag for bypassing object ID validation or not
155+
/// </summary>
156+
[Parameter(Mandatory = false,
157+
ParameterSetName = ByObjectId,
158+
ValueFromPipelineByPropertyName = true,
159+
HelpMessage = "Specifies whether the object ID needs to be validated or not.")]
160+
public SwitchParameter BypassObjectIdValidation { get; set; }
161+
153162
[Parameter(Mandatory = false,
154163
HelpMessage = "This Cmdlet does not return an object by default. If this switch is specified, it returns the updated key vault object.")]
155164
public SwitchParameter PassThru { get; set; }
@@ -181,7 +190,11 @@ public override void ExecuteCmdlet()
181190
PSKeyVaultModels.PSVaultAccessPolicy[] updatedListOfAccessPolicies = vault.AccessPolicies;
182191
if (!string.IsNullOrEmpty(UserPrincipalName) || !string.IsNullOrEmpty(ServicePrincipalName) || (ObjectId != Guid.Empty))
183192
{
184-
Guid objId = GetObjectId(this.ObjectId, this.UserPrincipalName, this.ServicePrincipalName);
193+
Guid objId = this.ObjectId;
194+
if (!this.BypassObjectIdValidation.IsPresent)
195+
{
196+
objId = GetObjectId(this.ObjectId, this.UserPrincipalName, this.ServicePrincipalName);
197+
}
185198

186199
if (ApplicationId.HasValue && ApplicationId.Value == Guid.Empty)
187200
throw new ArgumentException(PSKeyVaultProperties.Resources.InvalidApplicationId);

0 commit comments

Comments
 (0)