[英]Deny access to all users except one to access private-folder inside S3 bucket
我有一個公共 S3 存儲桶,里面有 2 個文件夾, public-folder
和private-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-folder
和private-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.