使用python我如何获得AWS参数存储秘密数据使用假设角色



目前我可以使用此代码从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"]

因为我需要在AWS中的CI Jenkins中运行此代码,所以我需要使用assumeRole方法。如果我有:roleARN和roleSessionName ,我如何使用假设角色来实现结果

您必须使用STS服务:

  1. 调用sts-assume_role,为其提供要承担的角色。这将返回临时的"AccessKeyId"、"SecretAccessKey"one_answers"SessionToken">
  2. 使用临时凭据创建新的boto3会话,您将使用该会话调用允许的所有API

需要记住的一件事是,假设角色不是累积的,即您将使用您当前的权限进行boto3会话。因此,您将只能执行角色允许您在boto3会话中执行的操作。

最新更新