【问题标题】:Access AWS services via IAM Role from long-running ASP.NET Core service通过 IAM Role 从长期运行的 ASP.NET Core 服务访问 AWS 服务
【发布时间】:2019-09-27 12:27:13
【问题描述】:

我们正在开发一个 ASP.NET Core Web 应用程序,该应用程序将在客户环境中本地运行,并且该应用程序需要访问我们 AWS 账户中的某些资源。由于这跨越了组织边界,我们正在我们的 AWS 账户中创建一个 IAM 角色,并授予客户访问权限以从他们的账户中担任该角色。

我相信这必须工作的方式是 ASP.NET Core 应用程序具有客户 AWS 账户的“永久”凭证,然后在我们的账户中获取 IAM 角色的临时凭证以便工作。但是,应用程序需要在 IHostedService/BackgroundService 中完成大部分工作,这是一个在应用程序生命周期内运行的单例,所以如果我们使用标准依赖注入,我们将有一个 long - 给定 AWS 服务客户端的实时实例。有谁知道 AWS 开发工具包是否有能力不断重新获取 IAM 角色的临时凭证?如果没有,我认为我们将不得不停止通过 DI 获取服务客户端,并继续定期自己重新创建它们以刷新凭据。

【问题讨论】:

    标签: amazon-web-services asp.net-core aws-sdk


    【解决方案1】:

    我相信这必须工作的方式是 ASP.NET Core 应用程序具有客户 AWS 账户的“永久”凭证,然后在我们的账户中获取 IAM 角色的临时凭证以便工作。然而,应用程序需要在一个

    中完成它的大部分工作。

    从使用文档来看,SDK 的 AssumeRole 函数只是发出请求,以简单字符串形式获取临时凭证。您必须自己将这些凭证输入到您想要使用从 AssumeRoleRequest 返回的特定凭证的任何对象/服务客户端

    这意味着没有适合您需求的内置自动刷新

    【讨论】:

      【解决方案2】:

      您可能需要查看awsumeAutoAwsume 插件。

      这可用于自动刷新机器上的临时 IAM 角色凭证。

      开发人员在我以前的项目中使用了一个类似的解决方案,作为一种安全最佳实践,以避免泄露长期存在的凭据。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-14
        • 1970-01-01
        相关资源
        最近更新 更多