使用 API Gateway 的跨账户 IAM 身份验证调用我的 API 时,如何解决“HTTP 403 Forbidden(HTTP 403 禁止)”错误?

1 分钟阅读
0

我使用跨账户 AWS Identity and Access Management(AWS IAM)实体(用户或角色)调用了 Amazon API Gateway API。我收到了“HTTP 403 Forbidden(HTTP 403 禁止)”错误。

解决方法

REST API

要访问 API Gateway REST API,请在 API Gateway 控制台中为 API 方法开启 IAM 身份验证。然后,使用 IAM 策略以及资源策略为您的 API 用户指定权限。

确保跨账户 IAM 实体具有调用 API 的权限,并且允许在资源策略中访问。

在此示例中,账户 A 111111111 的 REST API 启用了 IAM 身份验证。用户 1 尝试从账户 B 999999999 调用。账户 B 中的用户 1 附加了以下 IAM policy:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "execute-api:Invoke",
        "execute-api:ManageConnections"
      ],
      "Resource": "arn:aws:execute-api:us-east-1:111111111:AB12CDEF34/*/*/*"
    }
  ]
}

为允许账户 A 中账户 B 的 IAM 用户调用跨账户存取权限,请使用类似于以下内容的资源策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::999999999:user/User1"
      },
      "Action": "execute-api:Invoke",
      "Resource": "arn:aws:execute-api:us-east-1:111111111:AB12CDEF34/stage/*/*"
    }
  ]
}

有关更多信息,请参阅我如何为 API Gateway REST API 激活 IAM 身份验证?

HTTP API

如需访问 API Gateway HTTP API,您可以使用 sts: AssumeRole API 操作来担任 HTTP API 账户的角色。担任的角色提供临时安全凭证,可用于在其他账户中调用 HTTP API。

确保用于调用 HTTP API 的临时安全凭证正确且未过期。

有关更多信息,如何为 API Gateway HTTP API 提供跨账户 IAM 授权?


相关信息

API Gateway 资源策略示例

AWS 官方
AWS 官方已更新 2 年前