我有两个AWS账户-假设A和B.
在帐户B中,我定义了一个角色,该角色允许从帐户A中访问另一个角色。我们称其为角色B
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::********:role/RoleA"
},
"Action": "sts:AssumeRole"
}]
}
在帐户A中,我定义了一个角色,该角色允许root用户承担角色。让我们称之为角色A
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::********:root"
},
"Action": "sts:AssumeRole"
}]
}
角色A附加了以下策略
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::****:role/RoleB",
"Effect": "Allow"
}]
}
作为帐户A的用户,我担任角色A。现在使用此临时凭据,我想承担角色B并访问帐户B拥有的资源。我有以下代码
client = boto3.client('sts')
firewall_role_object = client.assume_role(
RoleArn=INTERMEDIARY_IAM_ROLE_ARN,
RoleSessionName=str("default"),
DurationSeconds=3600)
firewall_credentials = firewall_role_object['Credentials']
firewall_client = boto3.client(
'sts',
aws_access_key_id=firewall_credentials['AccessKeyId'],
aws_secret_access_key=firewall_credentials['SecretAccessKey'],
aws_session_token=firewall_credentials['SessionToken'], )
optimizely_role_object = firewall_client.assume_role(
RoleArn=CUSTOMER_IAM_ROLE_ARN,
RoleSessionName=str("default"),
DurationSeconds=3600)
print(optimizely_role_object['Credentials'])
该代码适用于我从客户端获得的一组角色,但不适用于我在我有权访问的两个AWS账户之间定义的角色。
终于成功了。上面的配置是正确的。该政策中有一个拼写错误。
我将在此处保留此问题,因为它可能会对希望使用角色实现双跳身份验证的人有所帮助。
获取错误 引起原因:org.springframework.beans.BeanInstantiationExc0019:未能实例化[software.amazon.awssdk.services.dynamodb.DynamoDbClient]:工厂方法'amazonDynamoDB'抛出异常;嵌套异常java.lang.NullPointerExc0019: STS客户端不得为空。atspri
在我们的应用程序中,我们使用自定义角色访问aws API。在开发者环境中,我们在app.config中提供访问密钥和秘密密钥,它工作得很好。 在prod环境中,我们设置了一个IAM角色,该角色对自定义角色具有必要的权限,EC2实例将使用该IAM角色启动。当我们尝试使用代码切换角色时,我们会遇到以下错误 消息:用户:arn:aws:sts::XXXXXXXXX:假定角色//i-0490fbbb5ea
当前设置:python应用程序在AWS EKS集群中作为Docker容器运行。AWS密钥在kubernetes集群中作为机密提供,以便python代码可以读取、初始化boto3会话并使用S3 bucket。 我想如何更改它:假设Docker容器在AWS EKS集群中运行的serviceaccount角色,然后使用此凭据初始化boto3会话并使用S3 bucket。我不想为每个服务提供AWS密钥,因
是否可以将IAM角色链接到Cognito用户池中Cognito用户的Cognito组? 我的配置: Cognito用户池: 认知用户属于 认知组已分配给. null null 这段代码允许我对Cognito用户池进行身份验证: 然后从cognito标识池中获取链接到cognito用户池的凭据:
我正在设置一些文件传输脚本,并正在使用boto3来做这件事。 我需要从本地发送一些文件到第三方AWS帐户(跨帐户)。我在另一个帐户上设置了一个角色,具有写入桶的权限,并将此角色分配给了我帐户上的一个用户。 我可以在CLI上做到这一点,但Boto一直在为桶踢出一个AccessDenied错误。 编辑:作为对John的多部分权限评论的回应,我尝试通过put_object方法上传以绕过此操作-但仍然被访
我在AWS云服务中设置了一个项目。在那里我使用了EC2实例、AMI、弹性IP、互联网门路、NACL、路由表、安全组、自定义VPC、私有和公共子网、弹性负载平衡、自动伸缩、启动配置、KMS-key、Lambda、RDS Aurora实例、S3桶、简单电子邮件服务、简单队列服务、简单通知服务、云观察日志。现在我的客户要求将所有服务从现有的AWS帐户迁移到新的AWS帐户。