簡體   English   中英

EC2 (VPC) 拒絕 AWS S3 訪問點訪問

[英]AWS S3 Access point access denied from EC2 (VPC)

我有以下場景,我嘗試使用訪問點訪問 S3 存儲桶內容,但是出現AccessDenied錯誤。

  1. 具有公有子網的客戶 VPC
  2. 此子網下具有公有 IP 的 EC2 實例
  3. 將 IAM 角色分配給 EC2 實例以擁有對 S3 的完全訪問權限
  4. 創建 S3 存儲桶my-test-bucket和訪問點“my-test-ap”,提供默認策略和 VPC ID 以限制通過 Internet 的訪問
  5. ssh到 EC2 實例並運行命令 - aws s3 ls --Bucket my-test-bucketaws s3api list-objects --bucket -my-test-bucket ,列出aws s3api list-objects --bucket -my-test-bucket中的所有內容
  6. 現在運行像aws s3api list-objects --bucket arn:aws:s3:us-east-1:my-account-id:accesspoint/my-test-ap給我“AccessDenied”消息

接入點策略

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:us-east-1:my-account-id:accesspoint/my-test-ap",
            "Condition": {
                "StringEquals": {
                    "s3:AccessPointNetworkOrigin": "VPC"
                }
            }
        }
    ]
}

請注意確定缺少什么才能使其正常工作。

為了重現您的情況,我執行了以下操作:

  • 創建了一個 Amazon S3 存儲桶
  • 使用公有子網創建了一個新的 Amazon VPC(使用 VPC 向導)
  • 使用允許所有 Amazon S3 訪問的 IAM 角色啟動了一個 Amazon EC2 實例
  • SSH登錄,確認可以訪問S3
  • 在存儲桶上創建了一個 S3 訪問點:
    • Network origin = VPC
    • 指向新的 VPC
    • “阻止所有公共訪問”設置為 true(全部被阻止)
    • 沒有接入點策略(這與您的情況不同)

然后我嘗試使用以下方法訪問存儲桶:

 aws s3api list-objects-v2 --bucket arn:aws:s3:ap-southeast-2:1111:accesspoint/my-access-point

結果: AccessDenied

然后我添加了一個VPC Endpoint ,因為創建訪問點 - Amazon Simple Storage Service說:

要將訪問點與 VPC 一起使用,您必須修改 VPC 終端節點的訪問策略。 VPC 終端節點允許流量從您的 VPC 流向 Amazon S3。 它們具有訪問控制策略,用於控制允許 VPC 內的資源與 S3 交互的方式。 如果 VPC 終端節點策略授予對訪問點和底層存儲桶的訪問權限,則從您的 VPC 到 S3 的請求僅通過訪問點成功。

然后我能夠成功訪問存儲桶

因此,從 VPC 訪問 S3 接入點時似乎需要 VPC 端點

示例如下所示: 使用 VPC 終端節點和 S3 訪問點管理 Amazon S3 訪問 | AWS 存儲博客

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM