AWS IAM - 服务是否可以知道调用它的角色?

时间:2018-01-16 19:56:33

标签: node.js amazon-web-services aws-sdk ssm aws-ssm

总体目标:

我正在围绕AWS参数存储编写一个包装器,用于我们的微服务环境(全新)。基本上,如果我们决定迁移到Azure,我会尝试简化从一个服务提供商到另一个服务提供商的转换,例如,因此只需要修改此服务。

我们的想法是,启动时的服务可以调用此服务('配置服务')来获取所有配置设置。

问题:

如果我们决定采用这种方式,可能仍希望根据IAM权限(角色/策略)锁定参数。我在这个配置服务中寻找一种方法,可能会抓住调用配置服务的用户/角色并将其传递给参数存储,例如,在调用ssm.getParameters(...)时。

我看过this页面,它允许限制用户可以传递哪些角色,因此我似乎可以通过该角色。不过,我需要找出如何来找到这个角色。

例如,如果我将.NET与ASP.NET站点和Windows身份验证结合使用,则可以模拟该用户以模拟该用户的权限。 (整体效果是呼叫服务的权限限制了它可以访问的参数。)

我在Elastic Container Service中使用node.js,使用新的Fargate luanch类型,如果这会影响潜在的答案。

1 个答案:

答案 0 :(得分:0)

如果要锁定特定微服务的SSM参数

  1. 为每个ECS任务创建和附加IAM角色
  2. 使用path表示法
  3. 整理参数
  4. 对于每个IAM角色,指定Resource以限制仅针对特定路径的访问(请参阅this)。 这将允许您只有每个微服务可用的特定参数。
  5. PS。如果您只想检索当前角色used aws sts get-caller-identity

    另一种替代解决方案:

    1. 在请求中调用config-service包含microservice名称并创建IAM角色以匹配microservice名称。
    2. 使用aws sts assume-role中的config-service来承担微服务可用的IAM角色。
    3. config-service锁定为仅承担允许的角色。