当前位置: 首页 > 知识库问答 >
问题:

如何使用AWS Cognito检索正确的凭据来访问boto3客户端上的AWS秘密管理器-索引池

汝楷
2023-03-14

我正在尝试使用运行python3(kivy)的独立应用程序检索AWS Secret(boto3-config)。

客户端使用boto3,使用硬编码的凭据可以正常工作。

我试图在boto3中使用get_credentials_for_identity获取文件夹。

我已创建了一个联合身份池,并为其分配了访问机密管理器的策略:

{
    "Version": "2012-10-17",
    "Statement": {
        "Effect": "Allow",
        "Action": "secretsmanager:GetSecretValue",
        "Resource": "<arn-of-the-secret-the-app-needs-to-access>"
    }
}

我也使用通用Cognito角色做了同样的事情。(知道这不是问题所在,但我相信我们都在努力解决一些问题)。

client = boto3.client('cognito-identity', region_name='eu-west-1')
response = client.get_credentials_for_identity(
    #identity taken from fedenration/identity pools;app with cognito access
    IdentityId='eu-west-1:6###...',
)
creds_dic = response['Credentials']
awsaccesskey = creds_dic['AccessKeyId']
awsseckey = creds_dic['SecretKey']
print(response)
print(awsseckey)
print(awsaccesskey)

给我错误的AccessKeyIdSecretKey它提供的那些我甚至找不到。我想我要求的是持有此身份的IAM的访问密钥/机密,但我需要IAM角色的访问密钥/机密,该角色正在访问机密管理器,以便我可以将它们输入boto3并检索凭据/机密。

我也需要同样的用户池,但一旦我意识到我所做的蠢事,我就可以配置它。


共有1个答案

史磊
2023-03-14

Cognito生成由AWS STS出售的新凭据。您将无法将这些凭据与现有的IAM生成的凭据相匹配。要访问AWS Secrets Manager API,请确保您的Cognito标识池的验证角色具有足够的权限。

 类似资料:
  • 我有一个使用Bosh部署的concourse环境。它配置有AWS机密管理器。管道机密模板的格式为 我在AWS秘密管理器(其他类型的秘密)中创建了一个秘密,其值如下。 我在团队中设置了一个总汇管道。

  • 我在帐户a中存储了一个密钥(USRFTP),我想从EC2框中使用帐户B中的角色ASHISHROLE访问这个密钥。我正在运行python代码来获取密钥,如下所示,在密钥中使用资源策略,KMS策略如下所示,但仍然得到这个问题 clienterRor:调用GetSecretValue操作时发生错误(AccessDeniedException):User:ARN:AWS:STS::AccountB:假定-

  • 我们在AWS环境中部署了完整的应用程序,我们发现AWS秘密管理器是存储数据库和其他一些组件的秘密的正确选择。

  • 我正在尝试从使用文件,以使用谷歌云平台机密管理器。我已经按照这里的说明操作了,但是我遇到了一个错误,说我没有权限访问这个秘密。 这就是我得到的错误: 我确实创建了一个具有“所有者”权限的服务帐户,下载了它,并使其

  • 我试图在一个Spring引导应用程序中使用keyCloak管理客户端来改变keyCloak中用户的角色,但是我甚至不能实例化keyCloak。 我正在尝试在这里获取KeyClope服务器,但是我得到了一个实例化错误

  • 我有一个秘密存储在使用Terraform模块部署的AWS秘密管理器中,该模块支持秘密循环。我没有访问那个模块的源代码,所以我不能修改它。我想使用Terraform禁用秘密旋转。我应该使用哪种资源?需要如下所示的所有3个参数,并且没有任何参数来禁用循环。属性接受1到365之间的值,因此传递0也不是一个选项。