Skip to content

Commit d3a21e8

Browse files
authored
add KMS alias name validation (#7826)
1 parent 7e38646 commit d3a21e8

File tree

4 files changed

+35
-0
lines changed

4 files changed

+35
-0
lines changed

localstack/services/kms/provider.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -712,6 +712,7 @@ def import_key_material(
712712
def create_alias(self, context: RequestContext, request: CreateAliasRequest) -> None:
713713
store = self._get_store(context)
714714
alias_name = request["AliasName"]
715+
validate_alias_name(alias_name)
715716
if alias_name in store.aliases:
716717
alias_arn = store.aliases.get(alias_name).metadata["AliasArn"]
717718
# AWS itself uses AliasArn instead of AliasName in this exception.

tests/integration/test_kms.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,16 @@ class TestKMS:
5858
def user_arn(self, sts_client):
5959
return sts_client.get_caller_identity()["Arn"]
6060

61+
@pytest.mark.aws_validated
62+
def test_create_alias(self, kms_create_alias, kms_create_key, snapshot):
63+
64+
alias_name = f"{short_uid()}"
65+
alias_key_id = kms_create_key()["KeyId"]
66+
with pytest.raises(Exception) as e:
67+
kms_create_alias(AliasName=alias_name, TargetKeyId=alias_key_id)
68+
69+
snapshot.match("create_alias", e.value.response)
70+
6171
@pytest.mark.aws_validated
6272
def test_create_key(self, kms_client_for_region, kms_create_key, sts_client, snapshot):
6373
region = "us-east-1"

tests/integration/test_kms.snapshot.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -389,5 +389,20 @@
389389
}
390390
}
391391
}
392+
},
393+
"tests/integration/test_kms.py::TestKMS::test_create_alias": {
394+
"recorded-date": "11-03-2023, 13:11:50",
395+
"recorded-content": {
396+
"create_alias": {
397+
"Error": {
398+
"Code": "ValidationException",
399+
"Message": "Alias must start with the prefix \"alias/\". Please see https://docs.aws.amazon.com/kms/latest/developerguide/kms-alias.html"
400+
},
401+
"ResponseMetadata": {
402+
"HTTPHeaders": {},
403+
"HTTPStatusCode": 400
404+
}
405+
}
406+
}
392407
}
393408
}

tests/unit/test_kms.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import pytest
2+
3+
from localstack.services.kms.models import validate_alias_name
4+
5+
6+
def test_alias_name_validator():
7+
8+
with pytest.raises(Exception):
9+
validate_alias_name("test-alias")

0 commit comments

Comments
 (0)