我有一个用例,其中要求应用程序的用户授予对其AWS账户的临时访问权限。寻找Oauth风格的解决方案,将用户定向到AWS Auth界面并在成功进行身份验证后重定向回。在此过程中,用户授予对所需AWS资源的临时访问权。
最接近的用例: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html
但是我可能无法直接应用该解决方案。
答案 0 :(得分:0)
您正在寻找的服务是Cognito身份池。它们可以与许多OAuth提供程序集成,并用于获得对多个AWS服务的临时访问权,例如DynamoDB,S3等。
您可以研究this tutorial以获得有关其工作原理的更多信息。不需要Cognito用户池,并且可以用其他任何IdP或SSO(例如Auth0,Okta,FB等)替换。
假设您要从多个帐户访问服务,例如AccountA和AccountB。如果AccountA具有Cognito身份池,则必须执行以下步骤:
Another AWS account
选项创建它,并提供AccountA的AccountID。{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::AccountB_ID:role/account_b_role"
}
}
要访问AccountA的服务,请执行以下操作:
AWS.config.update({
region: "us-east-1",
credentials: new AWS.Credentials('AccessKeyId', 'SecretAccessKey', 'SessionToken')
});
要访问帐户B的服务,请执行以下操作:
此解决方案可以扩展到任意数量的帐户。