簡體   English   中英

除了訪問 S3 存儲桶中的私有文件夾之外的所有用戶都拒絕訪問

[英]Deny access to all users except one to access private-folder inside S3 bucket

我有一個公共 S3 存儲桶,里面有 2 個文件夾, public-folderprivate-folder

我希望每個人都可以訪問public-folder而我只希望user1以編程方式訪問private-folder

在 S3 存儲桶中,我添加了以下策略:

{
    "Version": "2012-10-17",
    "Id": "Policy1568654876568",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::my-bucket/*"
        },
        {
            "Effect": "Deny",
            "NotPrincipal": {
                "AWS": [
                    "arn-of-user1"
                ]
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::my-bucket/private-folder/*"
        }
    ]
}

在 IAM 中,我為user1創建了一個能夠訪問存儲桶的策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::my-bucket"
        },
        {
            "Action": [
                "s3:DeleteObject",
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::my-bucket/*"
        }
    ]
}

有沒有更好的方法來實現這個目標? 是否可以使用 S3 策略拒絕每個人訪問private-folder ,然后使用我為user1定義的 IAM 策略覆蓋它?

如果您有public-folderprivate-folder ,下面的事情會不會更容易、更自然。 以下內容基於桶及其對象默認私有的事實。

桶策略

它允許公共訪問public-folder

{
    "Version": "2012-10-17",
    "Id": "Policy1568654876568",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::my-bucket/public-folder/*"
        }
    ]
}

用戶政策

它允許在private-folder放置、獲取和刪除對象,以及列出存儲桶。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::my-bucket"
        },
        {
            "Action": [
                "s3:DeleteObject",
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::my-bucket/private-folder/*"
        }
    ]
}

是否可以使用 S3 策略拒絕每個人訪問私有文件夾,然后使用我為 user1 定義的 IAM 策略覆蓋它?

顯式拒絕覆蓋任何允許。 因此,如果您拒絕所有人訪問,則不能使用任何 IAM 策略來允許訪問。

暫無
暫無

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

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