Amazon web services 共享IAM角色而不是IAM密钥有什么好处?

Amazon web services 共享IAM角色而不是IAM密钥有什么好处?,amazon-web-services,amazon-iam,Amazon Web Services,Amazon Iam,我被告知与第三方共享IAM角色比共享IAM密钥更安全。目前,我们使用IP筛选器限制IAM密钥,这是访问控制的许多条件 为什么共享IAM角色会更好。我的理解是,他们可以利用自己的角色在一段时间内从类似boto3 api的东西中获得特权。但是,如果他们可以不受限制地担任该角色,那么与密钥相比,如何有安全优势呢?首先,正如您所提到的,角色使用的短期会话凭据限制了可以使用受损凭据的时间 其次,对于IAM用户,任何时候第三方需要访问您帐户中的资源时,他们必须拥有您的IAM用户的访问密钥和密钥。如果他们想

我被告知与第三方共享IAM角色比共享IAM密钥更安全。目前,我们使用IP筛选器限制IAM密钥,这是访问控制的许多条件


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

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


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

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


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

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

  • [最差方法]您创建一个
    IAM
    用户(比如Foo)并授予其所需的权限,然后与外部各方共享该权限。这显然是最糟糕的方法,因为现在您不需要区分谁在调用您的资源,因为实际上,总是
    Foo
    谁在调用您
  • 您可以让您的客户在自己的帐户中创建
    IAM
    用户,然后在您的资源策略中将他们列入白名单。考虑到您的资源支持资源级策略(
    S3
    API网关
    do),这是可行的。现在,即使它们确实支持资源级策略,现在将所有客户机创建的所有此类用户列入白名单是一项开销,这些用户可以访问资源
  • 您创建一个
    IAM
    角色,授予it访问您的资源的能力(就
    IAM
    策略而言),然后将您客户的
    IAM
    用户列入白名单,以
    担任该角色。这将是您表示“
    此角色可以访问我的资源,如果您可以担任此角色,您也可以”
    ”。此外,这还阻止您共享凭据,因为
    AWS STS
    会为您生成临时凭据

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