如何编写IAM策略以提供完整的s3访问权限但一个目录

时间:2019-06-27 13:23:08

标签: amazon-web-services amazon-s3 amazon-iam

我试图将所有权限授予单个s3存储桶,但授予单个文件夹。我正在尝试使用明确拒绝文件夹名称为北京路径之类的 buck123-test / china / Beijing /。存储桶名称为buck123-test。

{
"Version": "2012-10-17",
"Statement": [
    {
        "Sid": "Stmt1561641021576",
        "Action": [
            "s3:ListBucket"
        ],
        "Effect": "Allow",
        "Resource": "arn:aws:s3:::buck123-test"
    },
    {
        "Sid": "Stmt1561639869054",
        "Action": "s3:*",
        "Effect": "Deny",
        "Resource": "arn:aws:s3:::buck123-test/china/Beijing"
    }
]

}

由于上述政策不起作用,我如何达到我的要求

2 个答案:

答案 0 :(得分:2)

您的策略缺少针对存储桶中的对象的Allow操作。

那又如何呢? (未经测试,让我们报告是否可行)

{
"Version": "2012-10-17",
"Statement": [
    {
        "Sid": "Stmt1561641021576",
        "Action": [
            "s3:*"
        ],
        "Effect": "Allow",
        "Resource": ["arn:aws:s3:::buck123-test", "arn:aws:s3:::buck123-test/*"]
    },
    {
        "Sid": "Stmt1561639869054",
        "Action": "s3:*",
        "Effect": "Deny",
        "Resource": "arn:aws:s3:::buck123-test/china/Beijing/*"
    }
]

}

请注意,您需要两个资源。 ListBucket和其他存储桶级操作仅需要存储桶名称资源。 /*资源是诸如PutGet

这样的对象级操作所必需的

答案 1 :(得分:0)

修改后的答案,您错过了政策文档中的一些关键内容,请尝试这样做,因为它应该起作用,但是我尚未对此进行测试。

如果要允许用户使用GetObject,PutObject等,则可以添加其他操作。

folds <- 3
set.seed(42)
cvIndex <- createFolds(dataset$Outcome, folds, returnTrain = T)

fit.control <- trainControl(method = "cv",
                            index = cvIndex,
                            number = folds,
                            classProbs = TRUE, 
                            summaryFunction = twoClassSummary,
                            allowParallel = FALSE)


SVMCaret <- train(Outcome ~ ., data = dataset, method = "svmLinear", 
                 metric = 'ROC', 
                 trControl = fit.control)