EC2上具有不同IAM角色的多个应用程序

时间:2018-08-01 05:09:08

标签: .net asp.net-core aws-sdk-net

我在AspNetCore EC2上运行了多个Windows Server 2016应用程序。所有这些应用程序都需要根据其权限承担不同的IAM角色。

这些应用程序在本地系统帐户下运行,并且由于配置文件位置C:\Users\<user>\.aws\config不适用于系统用户,因此docs尚不清楚如何为每个应用程序指定角色配置文件名称。在不指定角色配置文件的情况下,应用程序将承担我不想要的EC2实例配置文件角色。

如果我以本地用户身份运行该应用程序,则可以进行以下配置

凭证文件C:\Users\<user>\.aws\credentials

[applicationuser]
aws_access_key_id = xxxxxxxx
aws_secret_access_key = yyyyyyyy

配置文件配置文件C:\Users\<user>\.aws\config

[profile ApplicationA]
role_arn = arn:aws:iam::11111111111:role/ApplicationA
source_profile = applicationuser

[profile ApplicationB]
role_arn = arn:aws:iam::11111111111:role/ApplicationB
source_profile = applicationuser

在具有实例配置文件的EC2中以本地系统帐户运行应用程序时,如何实现此目标的任何想法?

1 个答案:

答案 0 :(得分:1)

向在Amazon EC2实例上运行的应用程序提供凭据的通常方法是将IAM角色分配给该实例。然后,通过实例元数据提供与角色关联的临时凭证。 AWS开发工具包将自动使用这些凭证。

但是,这仅适用于一组凭据。如果您希望使用多个凭证,则需要在凭证文件中提供凭证。

AWS凭证文件可以包含多个配置文件,例如

[default]
aws_access_key_id = AKIAaaaaa
aws_secret_access_key = abcdefg

[user2]
aws_access_key_id = AKIAbbbb
aws_secret_access_key = xyzzzy

为方便起见,还可以通过AWS CLI进行配置:

$ aws configure --profile user2
AWS Access Key ID [None]: AKIAbbbb
AWS Secret Access Key [None]: xyzzy
Default region name [None]: us-east-1
Default output format [None]: text

可以通过环境变量设置要使用的配置文件:

Windows: set AWS_PROFILE="user2"