Files
prowler/credentials.py
T
2019-11-16 20:46:30 -08:00

27 lines
944 B
Python

import boto3
import sys
import json
import os
sts = boto3.client('sts')
aws_lambda = boto3.client('lambda', region_name='us-west-2')
aws_account_id = sys.argv[1]
if aws_account_id is None:
raise ValueError('Must provide an AWS account ID')
account_details_response = aws_lambda.invoke(
FunctionName='customers-api',
Payload=json.dumps({"path": "/invoke/getTenantDetails", "body": {"awsAccountId": sys.argv[1]}, "headers": {"Content-Type": "application/json"}}).encode('utf-8')
)
account_details = json.loads(json.loads(account_details_response['Payload'].read())['body'])
print('Got account details, assuming role')
temporary_creds = sts.assume_role(RoleArn=account_details['cross_account_role_arn'], ExternalId=account_details['external_id'], RoleSessionName='prowler')['Credentials']
os.environ['AWS_ACCESS_KEY_ID'] = temporary_creds['AccessKeyId']
os.environ['AWS_SECRET_ACCESS_KEY'] = temporary_creds['SecretAccessKey']