Skip to content

Commit 6cf10fa

Browse files
committed
Add new parameter BypassObjectIdValidation for Set-AzureRmKeyVaultAccessPolicy to support CSP
1 parent c9d8d2a commit 6cf10fa

File tree

4 files changed

+32
-4
lines changed

4 files changed

+32
-4
lines changed

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

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -278,14 +278,22 @@ function Test-SetRemoveAccessPolicyBySPN
278278

279279
function Test-SetRemoveAccessPolicyByObjectId
280280
{
281-
Param($existingVaultName, $rgName, $objId)
281+
Param($existingVaultName, $rgName, $objId, [switch]$bypassObjectIdValidation)
282282

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

287296
CheckVaultAccessPolicy $vault $PermToKeys $PermToSecrets
288-
289297
Assert-AreEqual $objId $vault.AccessPolicies[0].ObjectId
290298

291299
$vault = Remove-AzureRmKeyVaultAccessPolicy -VaultName $existingVaultName -ResourceGroupName $rgName -ObjectId $objId -PassThru

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ function Run-AllControlPlaneTests
129129
Run-TestProtected { Run-VaultTest { Test_SetRemoveAccessPolicyByUPN } "Test_SetRemoveAccessPolicyByUPN" } "Test_SetRemoveAccessPolicyByUPN"
130130
Run-TestProtected { Run-VaultTest { Test_SetRemoveAccessPolicyBySPN } "Test_SetRemoveAccessPolicyBySPN" } "Test_SetRemoveAccessPolicyBySPN"
131131
Run-TestProtected { Run-VaultTest { Test_SetRemoveAccessPolicyByObjectId } "Test_SetRemoveAccessPolicyByObjectId" } "Test_SetRemoveAccessPolicyByObjectId"
132+
Run-TestProtected { Run-VaultTest { Test_SetRemoveAccessPolicyByBypassObjectIdValidation } "Test_SetRemoveAccessPolicyByBypassObjectIdValidation" } "Test_SetRemoveAccessPolicyByBypassObjectIdValidation"
132133
Run-TestProtected { Run-VaultTest { Test_SetRemoveAccessPolicyByCompoundId } "Test_SetRemoveAccessPolicyByCompoundId" } "Test_SetRemoveAccessPolicyByCompoundId"
133134
Run-TestProtected { Run-VaultTest { Test_RemoveAccessPolicyWithCompoundIdPolicies } "Test_RemoveAccessPolicyWithCompoundIdPolicies" } "Test_RemoveAccessPolicyWithCompoundIdPolicies"
134135
Run-TestProtected { Run-VaultTest { Test_SetCompoundIdAccessPolicy } "Test_SetCompoundIdAccessPolicy" } "Test_SetCompoundIdAccessPolicy"

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,12 @@ function Test_SetRemoveAccessPolicyByObjectId
135135
Test-SetRemoveAccessPolicyByObjectId $global:precreatedVaultName $global:resourceGroupName $global:objectId
136136
}
137137

138+
function Test_SetRemoveAccessPolicyByBypassObjectIdValidation
139+
{
140+
$securityGroupObjIdFromOtherTenant = [System.Guid]::NewGuid().toString()
141+
Reset-PreCreatedVault
142+
Test-SetRemoveAccessPolicyByObjectId $global:precreatedVaultName $global:resourceGroupName $securityGroupObjIdFromOtherTenant -bypassObjectIdValidation
143+
}
138144

139145
function Test_SetRemoveAccessPolicyByCompoundId
140146
{

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)