我有一个包含多个应用程序的EC2服务器。目前,我不得不接受这个设置(我不能将每个应用程序都放在自己的服务器上)。
我不想在服务器上运行的所有应用程序都使用单一的系统范围的creds。
每个应用程序只能访问它所需要的东西。这对于故障排除/调试以及隔离应用程序的访问非常重要。我在想该怎么做。
我可以授予EC2实例角色访问权限,以承担特定于应用程序的角色。因此,在初始化时,应用程序将有权承担仅供其使用的角色。这似乎是正确的方式,但这些是非常长的运行应用程序。即使我将令牌过期设置得很高,它也需要刷新。和.net支持自动刷新吗?我是否要自己去执行这个逻辑呢?比如,让应用程序在每个AWS调用之前检查令牌是否过期?我不想在代码中实现这一点。
我不喜欢它,但我也可以为所有应用程序创建IAM用户,并将他们的凭据存储在参数存储或秘密管理器中。EC2角色可以读取这些秘密,当应用程序启动时,他们会用他们的IAM用户的密钥提取一个秘密,并在会话中使用这些密钥。他们不必使用sts或实现刷新逻辑,但我使用的是静态访问密钥,但我不喜欢--也许秘密管理器可以为我旋转IAM密钥?
发布于 2019-12-25 21:29:57
我知道对于.NET的AWS来说,可以让SDK为您管理刷新凭证。下面是创建一个AWSCredentials
对象的一小部分代码片段,该对象将通过使用实例配置文件凭据来获得凭据。AssumeRoleAWSCredentials
对象将在凭据过期之前自动刷新。
using Amazon.Runtime;
namespace AssumeRoleCredsExample
{
class Program
{
static void Main(string[] args)
{
var roleArn = "your-application-role-arn-here";
var instanceProfileCredentials = FallbackCredentialsFactory.GetCredentials();
var assumeRoleCredentials = new AssumeRoleAWSCredentials(instanceProfileCredentials, roleArn, "Application1SessionName");
}
}
}
我怀疑具有非常类似的特性。快速查看AWS的JavaDocs,我将查看com.amazonaws.auth.STSAssumeRoleSessionCredentialsProvider
类。
https://stackoverflow.com/questions/59472672
复制相似问题