跳至内容

如何解决使用受 IP 限制的 IAM 角色访问 SSE-KMS 加密的 S3 对象时出现的 Access Denied 错误?

1 分钟阅读
0

我想使用 AWS Identity and Access Management (IAM) 角色下载采用 SSE-KMS 加密的 Amazon Simple Storage Service (Amazon S3) 对象。但是,我收到了“Access Denied”错误。

解决方法

使用 AWS Key Management Service (AWS KMS) 密钥 (SSE-KMS) 的服务器端加密利用转发访问会话 (FAS) 发起 AWS KMS API 请求,而 IP 地址限制可能会无意中拒绝这些请求。当您使用受 IP 限制的 IAM 角色并尝试下载使用 SSE-KMS 加密的 Amazon S3 对象时,可能会收到“Access Denied”错误。

要修改附加到您的 IAM 用户的策略以包含 aws:ViaAWSService 条件,请完成以下步骤:

  1. 打开您当前用于限制 IP 地址的 IAM 用户策略。限制策略示例:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Deny",
          "Action": "*",
          "Resource": "*",
          "Condition": {
            "NotIpAddress": {
              "aws:SourceIp": [
                "IP ADDRESS"
              ]
            }
          }
        }
      ]
    }
  2. 修改该策略以包含 aws:ViaAWSService 条件。IAM 用户策略示例:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Deny",
          "Action": "*",
          "Resource": "*",
          "Condition": {
            "NotIpAddress": {
              "aws:SourceIp": [
                "IP ADDRESS"
              ]
            },
            "Bool": {
              "aws:ViaAWSService": "false"
            }
          }
        }
      ]
    }

    **注意:**aws:ViaAWSService 条件现在可允许 AWS 服务在 IP 地址限制下代表您发起 API 调用。

相关信息

IP 地址条件运算符

AWS 官方已更新 4 个月前