【问题标题】:What are the benefits of sharing an IAM role instead of a IAM key?共享 IAM 角色而不是 IAM 密钥有什么好处?
【发布时间】:2020-02-19 01:35:40
【问题描述】:

有人告诉我,与第三方共享 IAM 角色比共享 IAM 密钥更安全。目前,我们使用 IP 过滤器限制 IAM 密钥,以及访问控制的许多条件。

为什么共享 IAM 角色会更好。我的理解是,他们可以利用自己的角色在有限的时间内从 boto3 api 之类的东西中获得特权。但是,如果他们可以无限制地担任该角色,那么密钥的安全性又如何呢?

【问题讨论】:

  • IAM 密钥是什么意思?您的意思是共享用户的访问密钥和密钥吗?

标签: amazon-web-services amazon-iam


【解决方案1】:

首先,正如您所提到的,角色使用的短期会话凭据限制了可以使用已泄露凭据的时间。


其次,对于 IAM 用户,任何时候第三方需要访问您账户中的资源,他们都必须拥有您的 IAM 用户的访问密钥和秘密密钥。如果他们想从 EC2 实例访问您的账户中的资源,他们需要有一种方法将密钥安全地推送到 EC2 实例。如果他们想从 Lambda 访问资源,他们需要使密钥对 Lambda 可用。如果他们想从移动设备访问资源,他们需要将凭据推送到移动设备(在移动设备上更难保护,更不用说轮换了)。

管理这些凭据不仅是第三方的额外工作,而且会给您带来额外的风险。您的 IAM 用户的长期凭证现在由第三方传递。

使用 IAM 角色,您可以允许第三方访问资源,而无需传递您的凭证。 EC2 实例可以避免使用 EC2 实例角色处理您的凭证。同样,Lambda 可以避免使用执行角色来处理您的凭证。在移动设备上,有 Cognito。

【讨论】:

    【解决方案2】:

    要授予外部方访问您拥有的 AWS 资源的权限,您有以下选择:

    1. [最糟糕的方法] 您创建一个IAM 用户(例如 Foo)并授予它所需的权限,然后与外部各方共享相同的权限。这显然是最糟糕的方法,因为现在您没有区分谁在调用您的资源,因为实际上,总是Foo 在给您打电话。
    2. 您让您的客户在他们自己的帐户中创建IAM 用户,然后在您的资源策略中将他们列入白名单。这是可行的,因为您的资源支持资源级策略(S3API Gatewaydo)。现在,即使它们确实支持资源级策略,您也需要将所有客户端创建的所有此类用户列入白名单,这些用户可以访问该资源。
    3. 您创建一个IAM 角色,授予它访问您资源的能力(根据IAM 策略),然后将您客户的IAM 用户列入assume 该角色的白名单。这将是您说“this role is capable of accessing my resource and if you can assume this role, so do you”的方式。此外,这还会阻止您共享凭据,因为 AWS STS 会为您生成临时凭据。

    【讨论】:

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