Используя python, как мне получить AWS параметр для хранения секретных данных с использованием предположительной роли - PullRequest
0 голосов
/ 14 марта 2020

В настоящее время я могу получить свои секретные параметры из хранилища параметров AWS, используя этот код

    session = boto3.Session(profile_name='qa')
    credentials = session.get_credentials()
    accessKey = credentials.access_key
    secretKey = credentials.secret_key
    print("accessKey= " + str(accessKey) + " secretKey="+ secretKey)

    store = EC2ParameterStore(
        aws_access_key_id=accessKey,
        aws_secret_access_key=secretKey,
        #aws_session_token=SESSION_TOKEN,  # optional
        region_name=awsRegion
    )
    try:
        secretParams = store.get_parameter(mysessionPath, decrypt=True)
    except:
        print("Could not find parameter")

    secretParams = str(secretParams[roleSessionName]).replace("\n","")
    secretParamsDict = eval(secretParams)
    self.secretA = secretParamsDict["secretA"]

Поскольку мне нужно запустить этот код в CI Jenkins, который также находится в AWS Мне нужно используйте метод acceptRole. Как я могу достичь результатов, используя Допустимую роль, если у меня есть: roleARN и roleSessionName

1 Ответ

0 голосов
/ 14 марта 2020

Вам необходимо воспользоваться услугой STS :

  1. Вызовите sts accept_role , предоставив вам свою роль, которую вы должны принять на себя. Это вернет временные «AccessKeyId», «SecretAccessKey» и «SessionToken».
  2. Используйте временные учетные данные для создания нового boto3 Session , который вы будете использовать для вызова всех API, которым вы разрешены .

Следует помнить, что предполагаемая роль не является кумулятивной, то есть вы будете использовать текущие разрешения для сеанса boto3. Таким образом, вы сможете делать только то, что позволяет вам эта роль в сеансе boto3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...