如何允許僅特定 VPC 端點或 IP 位址可存取我的 Amazon S3 儲存貯體?

2 分的閱讀內容
0

我只想允許來自特定 Amazon Virtual Private Cloud (Amazon VPC) 端點或 IP 位址的流量進入我的 Amazon Simple Storage Service (Amazon S3) 儲存貯體。

解決方法

使用儲存區原則指定可存取您 S3 儲存貯體的 VPC 端點、私有 IP 位址或公用 IP 位址。

**警告:**以下範例儲存貯體原則明確拒絕存取允許的 VPC 端點或 IP 地址以外的特定請求。評估您的儲存貯體政策,以判斷其是否影響主控台相關的請求。

如果您的策略拒絕存取所有 S3 動作,則您將無法存取儲存貯體。在儲存儲存貯體政策之前,請務必檢閱。如果您將自己鎖定自己在儲存貯體中,請參閱在意外拒絕所有人存取後,如何重新獲取 Amazon S3 儲存貯體的存取權限?

限制對特定 VPC 端點的存取

若要僅允許來自您指定 VPC 端點的流量,請在儲存區原則中使用 aws:SourceVpce。除非上傳請求來自 vpce-1111111vpce-2222222 VPC 端點,否則下列範例儲存貯體政策會拒絕對儲存貯體的上傳權限:

{   
  "Id": "VPCe",  
  "Version": "2012-10-17",  
  "Statement": [  
    {  
      "Sid": "VPCe",  
      "Action": "s3:PutObject",  
      "Effect": "Deny",  
      "Resource": [  
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET",  
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"  
      ],  
      "Condition": {  
        "StringNotEquals": {  
          "aws:SourceVpce": [  
            "vpce-1111111",  
            "vpce-2222222"  
          ]  
        }  
      },  
      "Principal": "*"  
    }  
  ]  
}

若要在 aws:sourceVpce 條件中使用上述政策,請將適用於 Amazon S3 的 VPC 閘道端點附加至 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體子網路的路由表 2)。端點必須與儲存貯體位於相同的 AWS 區域。

限制對特定私有 IP 位址的存取

若要僅允許來自您指定的私有 IP 位址的流量,請在儲存貯體政策中使用 aws:VpcSourceIp。除非上傳請求來自 **10.1.1.1/32 ** 或 172. 1.1.1/32 私有 IP 位址,否則下列範例值區原則會拒絕對儲存貯體的上傳權限:

{  
  "Id": "VpcSourceIp",  
  "Version": "2012-10-17",  
  "Statement": [  
    {  
      "Sid": "VpcSourceIp",  
      "Action": "s3:PutObject",  
      "Effect": "Deny",  
      "Resource": [  
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET",  
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"  
      ],  
      "Condition": {  
        "NotIpAddress": {  
          "aws:VpcSourceIp": [  
            "10.1.1.1/32",  
            "172.1.1.1/32"  
          ]  
        }  
      },  
      "Principal": "*"  
    }  
  ]  
}

若要在 aws:VpcSourceIP 條件中使用上述原則,您必須將適用於 Amazon S3 的 VPC 閘道端點附加至 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體子網路的路由表。端點必須在與儲存貯體相同的區域中。

限制存取特定公用 IP 位址

若要僅允許來自指定的公用 IP 位址流量,請在儲存貯體政策中使用 aws:SourceIp 金鑰。除非上傳要求來自 ** 11.11.11.11/32 ** 或 ** 22.22.22. 22/32** 公用 IP 位址,否則下列範例儲存貯體政策會拒絕對儲存貯體的上傳權限:

{  
  "Id": "SourceIP",  
  "Version": "2012-10-17",  
  "Statement": [  
    {  
      "Sid": "SourceIP",  
      "Action": "s3:PutObject",  
      "Effect": "Deny",  
      "Resource": [  
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET",  
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"  
      ],  
      "Condition": {  
        "NotIpAddress": {  
          "aws:SourceIp": [  
            "11.11.11.11/32",  
            "22.22.22.22/32"  
          ]  
        }  
      },  
      "Principal": "*"  
    }  
  ]  
}

若要允許同一 AWS 帳戶中的特定 AWS Identity and Access Management (IAM) 實體以存取儲存貯體,請在策略的 Condition (條件) 區塊中包含 aws:PrincipalArn 金鑰:

"Condition": {  
    "ArnNotLike": {  
        "aws:PrincipalArn": [  
            "arn:aws:iam::123456789012:role/role-name",  
            "arn:aws:iam::123456789012:user/user-name",  
            "arn:aws:iam::123456789012:root"  
        ]  
    }  
}

若要允許使用者從 VPC 端點或 IP 位址對儲存貯體執行 S3 動作,您必須明確允許使用者層級權限。您可以修改 IAM 政策儲存貯體政策中的陳述式 以允許使用者層級權限。

AWS 官方
AWS 官方已更新 4 個月前