Ошибка при принятии aws ролей с использованием переменной env с python - PullRequest
0 голосов
/ 17 марта 2020

Вот что я делаю - установите переменную env с помощью AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY - возьмите на себя роль чтения секрета из секретного менеджера - сбросьте ключ доступа к AWS переменным env и секретный ключ доступа со значениями, полученными из секретного менеджера - предположите другое роль с недавно установленными переменными env ОШИБКА не авторизована ...

Первый раз, когда я принимаю роль, она работает нормально, но во второй раз он использует того же пользователя, чтобы взять на себя роль, которая использовалась для чтения секретов из секретного менеджера

Прости мою нубность с python

import logging
import subprocess
import sts_role_assumer
import sts_secret_helper

os.environ["AWS_ACCESS_KEY_ID"] = "xxxxxxxxxx"
os.environ["AWS_SECRET_ACCESS_KEY"] = "xxxxxxxxxxxxxxxxxxxxxxxx"

logging.basicConfig(level=logging.INFO)
log = logging.getLogger()

class setAwsEnv:

    @staticmethod
    def assumingRoleandGetCred(role, profile, region, duration):
        log.info("#### Calling sts role assumer to assume role for reading secrets from secret manager #####")
        sts_role_assumer.cli(role, profile, region, duration)

    @staticmethod
    def getCredforawsCalls(secret_name, key, profile, region):
        log.info("#### Calling sts role helper for reading cred from secret manager and storing in sh file #####")
        secret = sts_secret_helper.get_secret(secret_name, key, profile, region)
        return secret

cur_dir = os.path.dirname(__file__)
aws_file = os.path.join(cur_dir, 'secret_role_credentials.sh')

setAwsEnv.assumingRoleandGetCred('arn:aws:iam::12345678:role/read-secrets', 'default', 'eu-central-1', 1800)

access_key = setAwsEnv.getCredforawsCalls('executor-credentials', 'aws_access_key_id', 'default', 'eu-central-1')
secret_access_key = setAwsEnv.getCredforawsCalls('executor-credentials', 'aws_secret_access_key', 'default', 'eu-central-1')

cred_file = os.path.join(os.path.expanduser("~"), ".aws", "credentials")
os.remove(cred_file)

del os.environ["AWS_ACCESS_KEY_ID"]
del os.environ["AWS_SECRET_ACCESS_KEY"]
os.environ["AWS_ACCESS_KEY_ID"] = access_key
os.environ["AWS_SECRET_ACCESS_KEY"] = secret_access_key

setAwsEnv.assumingRoleandGetCred('arn:aws:iam::12345678:role/apply-permissions', 'default', 'eu-central-1', 1800)
...