簡體   English   中英

允許從特定VPC或控制台訪問S3存儲桶

[英]Allow S3 Bucket access from either specific VPC or console

我在S3存儲桶(API密鑰)的文件中存儲了一些應用程序配置。 我將S3存儲桶配置為僅允許通過特定的VPC端點進行訪問,該端點將密鑰與特定環境聯系在一起,並防止例如生產密鑰在登台或測試環境中意外使用。

但是有時我需要修改這些鍵,這很痛苦。 當前存儲桶策略阻止控制台訪問,因此我必須刪除存儲桶策略,更新文件,然后替換該策略。

如何允許從控制台,特定的VPC端點進行訪問,而在其他地方沒有訪問權限?

目前的政策,我已經嘗試過但失敗了:

{
    "Version": "2012-10-17",
    "Id": "Policy12345",
    "Statement": [
        {
            "Sid": "Principal-Access",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::account-id:root"
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::my-keys-staging",
                "arn:aws:s3:::my-keys-staging/*"
            ]
        },
        {
            "Sid": "Access-to-specific-VPCE-only",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::my-keys-staging",
                "arn:aws:s3:::my-keys-staging/*"
            ],
            "Condition": {
                "StringNotEquals": {
                    "aws:sourceVpce": "vpce-vpceid"
                }
            }
        }
    ]
}

如評論中所述,擁有明確的Deny不能被覆蓋。 通過包含與特定VPC綁定的Deny ,您不能添加任何其他Allow元素來抵消該Deny語句。

選項1

一種選擇是將“如果不是從VPC abc拒絕,則”語句更改為“如果從VPC abc拒絕,則允許”語句。 這將允許您向策略中添加其他Allow語句,以允許您從其他位置訪問存儲桶。

但是,這樣做有兩個非常重要的警告:

  1. 任何通過IAM策略具有“通用” S3訪問權限的用戶都可以訪問該存儲桶,並且
  2. 該VPC中的任何角色/用戶都將被允許進入您的存儲桶。

因此,通過將Deny更改為Allow ,您將在存儲桶級別不再具有VPC限制。

這可能會或可能不會在您組織的安全要求之內。

選項2

相反,您可以修改現有的Deny以添加其他條件,這些條件將在“與”情況下起作用:

"Condition": {
  "StringNotEquals": {
    "aws:sourceVpce": "vpce-vpceid",
    "aws:username": "your-username"
  }
}

在以下情況下,這種類型的條件將拒絕請求:

  1. 該請求不是來自您的魔術VPC,並且
  2. 該請求不是來自您的用戶名

因此,除了允許用戶登錄從任何地方訪問存儲桶之外,您應該能夠限制對VPC的請求限制。

注意執行此操作將打開的安全漏洞。 您應該確保將用戶名限制為(a)未分配任何訪問密鑰,並且(b)啟用了MFA。

暫無
暫無

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

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