Skip to content

Commit 8b6c74b

Browse files
authored
[AKS] Remove validation of --azure-keyvault-kms-key-id when PMK is enabled (#9388)
1 parent c802f16 commit 8b6c74b

File tree

3 files changed

+16
-41
lines changed

3 files changed

+16
-41
lines changed

src/aks-preview/HISTORY.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ If there is no rush to release a new version, please just add a description of t
1010
To release a new version, please select a new version number (usually plus 1 to last patch version, X.Y.Z -> Major.Minor.Patch, more details in `\doc <https://semver.org/>`_), and then add a new section named as the new version number in this file, the content should include the new modifications and everything from the *Pending* section. Finally, update the `VERSION` variable in `setup.py` with this new version number.
1111

1212
Pending
13+
+++++++
14+
* Remove PMK validation for `--azure-keyvault-kms-key-id` parameter.
1315

1416
19.0.0b10
1517
+++++++

src/aks-preview/azext_aks_preview/managed_cluster_decorator.py

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1443,30 +1443,6 @@ def _get_azure_keyvault_kms_key_id(self, enable_validation: bool = False) -> Uni
14431443
raise RequiredArgumentMissingError(
14441444
'"--azure-keyvault-kms-key-id" requires "--enable-azure-keyvault-kms".')
14451445

1446-
# PMK validation logic moved from validate_azure_keyvault_kms_key_id
1447-
if key_id:
1448-
# Check if PMK (Platform-Managed Keys) is enabled
1449-
is_pmk_enabled = self.get_kms_infrastructure_encryption() == "Enabled"
1450-
segments = key_id[len("https://"):].split("/")
1451-
1452-
if is_pmk_enabled:
1453-
# PMK enabled (K2P): Only accept versionless key ID (3 segments: vault.net/keys/key-name)
1454-
if len(segments) != 3:
1455-
err_msg = (
1456-
"--azure-keyvault-kms-key-id is not a valid versionless Key Vault key ID for PMK. "
1457-
"Valid format is https://{key-vault-url}/keys/{key-name}. "
1458-
"See https://docs.microsoft.com/en-us/azure/key-vault/general/about-keys-secrets-certificates#vault-name-and-object-name" # pylint: disable=line-too-long
1459-
)
1460-
raise InvalidArgumentValueError(err_msg)
1461-
else:
1462-
# PMK disabled (KMS v2): Accept versioned key ID (4 segments)
1463-
if len(segments) != 4:
1464-
err_msg = (
1465-
"--azure-keyvault-kms-key-id is not a valid Key Vault key ID. "
1466-
"See https://docs.microsoft.com/en-us/azure/key-vault/general/about-keys-secrets-certificates#vault-name-and-object-name" # pylint: disable=line-too-long
1467-
)
1468-
raise InvalidArgumentValueError(err_msg)
1469-
14701446
return key_id
14711447

14721448
def get_azure_keyvault_kms_key_id(self) -> Union[str, None]:

src/aks-preview/azext_aks_preview/tests/latest/test_managed_cluster_decorator.py

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2037,7 +2037,8 @@ def test_get_azure_keyvault_kms_key_id(self):
20372037
ctx_5.get_azure_keyvault_kms_key_id()
20382038

20392039
def test_get_azure_keyvault_kms_key_id_with_pmk_validation(self):
2040-
# Test PMK-aware validation in _get_azure_keyvault_kms_key_id method
2040+
# Test that PMK validation is no longer performed in _get_azure_keyvault_kms_key_id method
2041+
# Since the validation logic was removed, all key ID formats should be accepted
20412042

20422043
# PMK enabled (infrastructure encryption = "Enabled") - should accept versionless key ID
20432044
versionless_key_id = "https://fakekeyvault.vault.azure.net/keys/fakekeyname"
@@ -2055,7 +2056,7 @@ def test_get_azure_keyvault_kms_key_id_with_pmk_validation(self):
20552056
)
20562057
self.assertEqual(ctx_pmk_versionless.get_azure_keyvault_kms_key_id(), versionless_key_id)
20572058

2058-
# PMK enabled - should reject versioned key ID (4 segments)
2059+
# PMK enabled - should now accept versioned key ID (4 segments) since validation is removed
20592060
versioned_key_id = "https://fakekeyvault.vault.azure.net/keys/fakekeyname/fakeversion"
20602061
ctx_pmk_versioned = AKSPreviewManagedClusterContext(
20612062
self.cmd,
@@ -2069,9 +2070,8 @@ def test_get_azure_keyvault_kms_key_id_with_pmk_validation(self):
20692070
self.models,
20702071
decorator_mode=DecoratorMode.CREATE,
20712072
)
2072-
with self.assertRaises(InvalidArgumentValueError) as cm:
2073-
ctx_pmk_versioned.get_azure_keyvault_kms_key_id()
2074-
self.assertIn("not a valid versionless Key Vault key ID for PMK", str(cm.exception))
2073+
# No exception should be raised now that validation is removed
2074+
self.assertEqual(ctx_pmk_versioned.get_azure_keyvault_kms_key_id(), versioned_key_id)
20752075

20762076
# PMK disabled - should accept versioned key ID (4 segments)
20772077
ctx_no_pmk_versioned = AKSPreviewManagedClusterContext(
@@ -2088,7 +2088,7 @@ def test_get_azure_keyvault_kms_key_id_with_pmk_validation(self):
20882088
)
20892089
self.assertEqual(ctx_no_pmk_versioned.get_azure_keyvault_kms_key_id(), versioned_key_id)
20902090

2091-
# PMK disabled - should reject versionless key ID (3 segments)
2091+
# PMK disabled - should now accept versionless key ID (3 segments) since validation is removed
20922092
ctx_no_pmk_versionless = AKSPreviewManagedClusterContext(
20932093
self.cmd,
20942094
AKSManagedClusterParamDict(
@@ -2101,9 +2101,8 @@ def test_get_azure_keyvault_kms_key_id_with_pmk_validation(self):
21012101
self.models,
21022102
decorator_mode=DecoratorMode.CREATE,
21032103
)
2104-
with self.assertRaises(InvalidArgumentValueError) as cm:
2105-
ctx_no_pmk_versionless.get_azure_keyvault_kms_key_id()
2106-
self.assertIn("not a valid Key Vault key ID", str(cm.exception))
2104+
# No exception should be raised now that validation is removed
2105+
self.assertEqual(ctx_no_pmk_versionless.get_azure_keyvault_kms_key_id(), versionless_key_id)
21072106

21082107
# Test with existing cluster data (UPDATE mode) - PMK enabled should read from cluster
21092108
ctx_update_pmk = AKSPreviewManagedClusterContext(
@@ -2349,16 +2348,15 @@ def test_get_azure_keyvault_kms_key_id(self):
23492348
})
23502349
self.assertEqual(ctx_pmk_versionless.get_azure_keyvault_kms_key_id(), versionless_key_id)
23512350

2352-
# Test 8: PMK enabled - should reject versioned key ID
2351+
# Test 8: PMK enabled - should now accept versioned key ID (validation removed)
23532352
versioned_key_id = "https://fakekeyvault.vault.azure.net/keys/fakekeyname/fakeversion"
23542353
ctx_pmk_versioned = self._create_kms_context({
23552354
"enable_azure_keyvault_kms": True,
23562355
"azure_keyvault_kms_key_id": versioned_key_id,
23572356
"kms_infrastructure_encryption": "Enabled",
23582357
})
2359-
with self.assertRaises(InvalidArgumentValueError) as cm:
2360-
ctx_pmk_versioned.get_azure_keyvault_kms_key_id()
2361-
self.assertIn("not a valid versionless Key Vault key ID for PMK", str(cm.exception))
2358+
# No exception should be raised since PMK validation was removed
2359+
self.assertEqual(ctx_pmk_versioned.get_azure_keyvault_kms_key_id(), versioned_key_id)
23622360

23632361
# Test 9: PMK disabled - should accept versioned key ID
23642362
ctx_no_pmk_versioned = self._create_kms_context({
@@ -2368,15 +2366,14 @@ def test_get_azure_keyvault_kms_key_id(self):
23682366
})
23692367
self.assertEqual(ctx_no_pmk_versioned.get_azure_keyvault_kms_key_id(), versioned_key_id)
23702368

2371-
# Test 10: PMK disabled - should reject versionless key ID
2369+
# Test 10: PMK disabled - should now accept versionless key ID (validation removed)
23722370
ctx_no_pmk_versionless = self._create_kms_context({
23732371
"enable_azure_keyvault_kms": True,
23742372
"azure_keyvault_kms_key_id": versionless_key_id,
23752373
"kms_infrastructure_encryption": "Disabled",
23762374
})
2377-
with self.assertRaises(InvalidArgumentValueError) as cm:
2378-
ctx_no_pmk_versionless.get_azure_keyvault_kms_key_id()
2379-
self.assertIn("not a valid Key Vault key ID", str(cm.exception))
2375+
# No exception should be raised since PMK validation was removed
2376+
self.assertEqual(ctx_no_pmk_versionless.get_azure_keyvault_kms_key_id(), versionless_key_id)
23802377

23812378
# Test 11: PMK enabled in UPDATE mode - should read PMK status from existing cluster
23822379
ctx_update_pmk = self._create_kms_context({

0 commit comments

Comments
 (0)