我有一个根帐户是1234(帐户ID),我有启用MFA的身份验证,我的用户名是myuser12。我可以使用帐户ID、用户名和密码登录。它将请求MFA令牌代码。一旦我输入了令牌代码。我可以在我的根帐户下查看特定位置的实例。
我可以使用我的角色(在我的情况下,所有帐户的角色都是相同的)以及该角色的任何别名将角色切换到新帐户(5678)。切换角色完成后,我可以在特定位置看到新帐户下的所有实例。
通过网络控制台一切正常。当我尝试通过CLI访问它们时,我无法获得新帐户的结果(5678)。但它适用于1234帐户位置。
Account ID - Location - No. of instances
1234 - us-east-1 - 5 instances
1234 - eu-west-3 - 2 instances
5678 - eu-north-1 - 5 instances
5678 - eu-west-1 - 5 instances
等等
我的初始.aws/config
内容
[profile default]
region = us-east-1
output = json
.aws/credentials
内容,
[default]
aws_access_key_id = accesskeyIdFromDownloadedCSV
aws_secrect_access_key = secrectAccessKeyFromDownloadedCSV
现在,如果我尝试查询任何实例,我会得到错误,因为我没有用MFA生成访问密钥令牌。
aws rds describe-db-instances --query 'DBInstances[?DBInstanceClass==`db.m3.large`]' --profile default --no-verify-ssl
所以,我必须得到我的MFA arn url,并获得即时访问密钥id,秘密访问密钥和会话令牌。
aws iam list-mfa-devices --user-name myuser12
我从上面的命令中得到了“SerialNumber”(mfaarnurl),我需要它来生成会话令牌。
现在
aws sts get-session-token --serial-number arn:aws:iam::1234:mfa/myuser12 --token-code 123456
注意:123456
(令牌代码)从我的虚拟MFA设备生成
现在我有了上面命令中的SessionToken(aws\U会话\U令牌)、SecrectAccessKey(aws\U秘密\U访问\U密钥)、AccessKeyId(aws\U访问\U密钥\U id)以及过期时间戳。
因此,我已经根据新的凭据更新了. aws/config
和. aws/凭据
文件。
. aws/config
文件内容
[profile default]
region = us-east-1
output = json
[profile newacc]
region = eu-west-1
role_arn = arn:aws:iam::5678:role/myRole
source_profile default
output = json
.aws/credentials
内容,
[default]
aws_access_key_id = NewIdFromMFACommand
aws_secrect_access_key = NewKeyFromMFACommand
aws_aws_session_token = TokenFromMFACommand
[newacc]
region = eu-west-1
role_arn = arn:aws:iam::5678:role/myRole
source_profile default
output = json
现在,我可以执行我最初的命令
aws rds describe-db-instances --query 'DBInstances[?DBInstanceClass==`db.m3.large`]' --profile default --no-verify-ssl
并且,获取db.m3.large
类型实例的列表。
但是,当我尝试使用--file newacc
时,我没有得到任何东西。我真的很迷茫改什么,改哪里?
终于成功了!。似乎,我需要为每个帐户运行下面的命令。
aws sts assume-role --role-arn "arn:aws:iam::5678:role/MyRoleForThisAccount" --role-session-name AWSCLI-Session
注意:在IAM中为您的用户分配相应的角色(MyRoleForThisAccount),并确保您的用户有权调用AssumeRole
并更新~/.aws/credentials
文件中每个相应块的结果(凭证)。因此,凭证文件看起来像
[default]
aws_access_key_id = NewIdFromMFACommand
aws_secrect_access_key = NewKeyFromMFACommand
aws_aws_session_token = TokenFromMFACommand
[newacc]
aws_access_key_id = NewIdFromAssumeRoleCommandForThisAccount
aws_secrect_access_key = NewKeyFromAssumeRoleCommandForThisAccount
aws_aws_session_token = NewTokenFromAssumeRoleCommandForThisAccount
并且~/.aws/config
文件将
[profile default]
region = us-east-1
output = json
[profile newacc]
region = eu-west-1
此配置块:
[profile newacc]
region = eu-west-1
role_arn = arn:aws:iam::5678:role/myRole
source_profile default
output = json
表示您希望担任myRole
。但是,担任角色只能由授权担任该角色的IAM用户执行。因此,需要一些正常的IAM凭据来证明您的身份。这是通过源文件
完成的。
source\u profile default
行表示default
配置文件中的凭据将用于调用AssumeRole
。
我建议您将默认凭据保留为常规IAM凭据。调用aws sts get session token
时,将结果存储在不同的配置文件中(不是default
,不是newacc
)。您可以使用aws configure--profile sts
(例如)来实现这一点。
当您希望担任myRole
时,可以使用--profile newacc
。这将使用您的默认
凭据调用AssumeRole
,并将使用角色的凭据进行调用。
结果是三个配置文件:
默认值
用于调用获取会话令牌
和假定角色
我有两个帐户和两个线程。1个线程将钱从1个帐户转到2个帐户,2个线程将钱从2个帐户转到1个帐户,当然前提是有足够的钱。我需要了解死锁情况,并解决死锁情况以确认安全转移。以下是我目前的想法: 账户.java 主类 传输线程.java 为了安全转移,我决定将存款和取款两种方法同步。但怀疑用方法运行实现。我有正确的实现吗?如果不是,解释和纠正将不胜感激。
我的目标很简单:使用Azure AD多租户应用程序来调用其他租户上的Azure资源管理器API。但是,当你用微软个人帐户登录时,我想不出该怎么做。 null 从技术角度来看,这可能是有道理的,但当我用个人账户登录时,如何将AAD应用程序添加到另一个租户呢? 应该通过手工检测个人MS帐户并找到与AAD承租人的关联来完成,或者有没有API可以促进这一点?在这两种情况下,怎么做?如果一个帐户与多个租户相
我目前正在开发一个需要gmail收件箱的应用程序。目前我正在使用带有凭据的Gmail API。json和令牌。pickle,虽然每次使用脚本时我都想使用其他凭据登录,但这很正常。我对这个API很陌生,想知道是否可以使用令牌所用凭据以外的其他凭据登录。泡菜。 Gmail API 要当前获取gmail收件箱,我使用以下代码: imaplib 我尝试获取某个用户收件箱的另一种方法是使用imaplib和电
一个应用程序可以连接多个Firebase帐户吗? 在单个android应用程序中使用多个firebase帐户进行google analytics
我搜索了在请求中使用的onBehalfOfContentOwner字段,但我不知道如何获得这个ID,也不确定这是否适用于我的情况,因为我们讨论的是品牌帐户,如果我错了请纠正我。