Add ARN and Alias functionality to KMS
This commit is contained in:
parent
ae938223d4
commit
3a7fec4032
3 changed files with 128 additions and 14 deletions
|
|
@ -77,11 +77,19 @@ class KmsBackend(BaseBackend):
|
|||
return self.keys.pop(key_id)
|
||||
|
||||
def describe_key(self, key_id):
|
||||
return self.keys[key_id]
|
||||
# allow the different methods (alias, ARN :key/, keyId, ARN alias) to describe key not just KeyId
|
||||
key_id = self.get_key_id(key_id)
|
||||
if r'alias/' in str(key_id).lower():
|
||||
key_id = self.get_key_id_from_alias(key_id.split('alias/')[1])
|
||||
return self.keys[self.get_key_id(key_id)]
|
||||
|
||||
def list_keys(self):
|
||||
return self.keys.values()
|
||||
|
||||
def get_key_id(self, key_id):
|
||||
# Allow use of ARN as well as pure KeyId
|
||||
return str(key_id).split(r':key/')[1] if r':key/' in str(key_id).lower() else key_id
|
||||
|
||||
def alias_exists(self, alias_name):
|
||||
for aliases in self.key_to_aliases.values():
|
||||
if alias_name in aliases:
|
||||
|
|
@ -99,21 +107,26 @@ class KmsBackend(BaseBackend):
|
|||
def get_all_aliases(self):
|
||||
return self.key_to_aliases
|
||||
|
||||
def get_key_id_from_alias(self, alias_name):
|
||||
for key_id, aliases in dict(self.key_to_aliases).iteritems():
|
||||
if alias_name in ",".join(aliases):
|
||||
return key_id
|
||||
return None
|
||||
|
||||
def enable_key_rotation(self, key_id):
|
||||
self.keys[key_id].key_rotation_status = True
|
||||
self.keys[self.get_key_id(key_id)].key_rotation_status = True
|
||||
|
||||
def disable_key_rotation(self, key_id):
|
||||
self.keys[key_id].key_rotation_status = False
|
||||
self.keys[self.get_key_id(key_id)].key_rotation_status = False
|
||||
|
||||
def get_key_rotation_status(self, key_id):
|
||||
return self.keys[key_id].key_rotation_status
|
||||
return self.keys[self.get_key_id(key_id)].key_rotation_status
|
||||
|
||||
def put_key_policy(self, key_id, policy):
|
||||
self.keys[key_id].policy = policy
|
||||
self.keys[self.get_key_id(key_id)].policy = policy
|
||||
|
||||
def get_key_policy(self, key_id):
|
||||
return self.keys[key_id].policy
|
||||
|
||||
return self.keys[self.get_key_id(key_id)].policy
|
||||
|
||||
kms_backends = {}
|
||||
for region in boto.kms.regions():
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue