AWS API 网关中 IAM 授权方和 API 密钥在安全性方面的区别

Difference between IAM authorizer and API key in AWS API Gateway in terms of security

我看到一个在线课程,其中讲师解释说为了使您的内部 AWS Api 网关安全(内部意味着用户不需要调用这些端点,它们将被调用通过代码本身)你有两种选择,为 REST API 设置密钥或为其设置 IAM 授权方。然后他解释说,第二个更安全,因为我们将使用我们的凭据(AWS 秘密访问密钥)签名的请求发送到 API 网关以授权调用。他这样做的理由是,如果我们设置一个密钥而不是这样做,那么有权访问代码的人可能会窃取我们的 API 访问密钥。但我认为,如果您想签署 API 调用,您应该将您的 AWS 凭证放入代码中,这样如果有人可以访问我们的代码,他们就可以获取您的 AWS 凭证,然后使用它发出签名请求不应该那么难。

综上所述,我认为有些事情我不知道,请您向我解释一下这些方法中的一种是否比另一种更安全,为什么?

提前致谢。

But I think that if you want to sign your API call you should put your AWS credentials in the code,

不,这是 不好的做法 和安全风险,这正是您提到的原因。如果您 运行 您的代码在 EC2 实例、ECS 容器或 Lambda 函数上调用您的 REST API,您应该使用 IAM 角色.

例如,如果您的代码 运行s 在 EC2 实例上,您将使用 instance role which provides temporary credentials to your app. Also these are not your credentials, but they belong to the role which would only allow for calling the said API, nothing else. This is based on the least privileged principle.