Implemented get-caller-identity returning real data depending on the access key used.

This commit is contained in:
acsbendi 2019-08-21 12:20:35 +02:00
commit d931204266
3 changed files with 96 additions and 17 deletions

View file

@ -22,7 +22,7 @@ class AssumedRole(BaseModel):
def __init__(self, role_session_name, role_arn, policy, duration, external_id):
self.session_name = role_session_name
self.arn = role_arn
self.arn = role_arn + "/" + role_session_name
self.policy = policy
now = datetime.datetime.utcnow()
self.expiration = now + datetime.timedelta(seconds=duration)
@ -36,6 +36,10 @@ class AssumedRole(BaseModel):
def expiration_ISO8601(self):
return iso_8601_datetime_with_milliseconds(self.expiration)
@property
def user_id(self):
return self.assumed_role_id + ":" + self.session_name
class STSBackend(BaseBackend):
@ -55,5 +59,11 @@ class STSBackend(BaseBackend):
self.assumed_roles.append(role)
return role
def get_assumed_role_from_access_key(self, access_key_id):
for assumed_role in self.assumed_roles:
if assumed_role.access_key_id == access_key_id:
return assumed_role
return None
sts_backend = STSBackend()