2013-08-04 4 views
5

У вас возникли проблемы с пониманием политики и директив S3 IAM? Не можете ли вы обернуть голову своей документацией? Я сделал.Amazon S3 Bucket and Folder Policy для доступа IAM?

У меня была ситуация, когда мне приходилось блокировать несколько пользователей IAM из определенной папки, а несколько ведер, кроме одного, и большинство их решений и примерных решений были примерно такими же ясными, как и грязь, насколько я был заинтересован. После прочесывания сети и не найдя то, что я искал, я натолкнулся на ресурс (http://blogs.aws.amazon.com/security/post/Tx1P2T3LFXXCNB5/Writing-IAM-policies-Grant-access-to-user-specific-folders-in-an-Amazon-S3-bucke), который был ясен и действительно полезен, но он нуждался в некоторой модификации, а результат - политика, которую вы видите ниже ....

То, что он делает, позволяет пользователю получить доступ к определенной папке в ведре, но DENIES доступ к любой другой указанной папке в том же ковше. Имейте в виду, что вы не сможете заблокировать их от просмотра содержимого папки, и вы не заблокируете их, увидев, что есть другие ведра, которые не могут быть помогли. Однако у них не будет доступа к ведро/папке по вашему выбору.

ответ

7
{ 
"Version":"2012-10-17", 
"Statement": [ 
    { 
    "Sid": "AllowUserToSeeBucketListInTheConsole", 
    "Action": ["s3:ListAllMyBuckets", "s3:GetBucketLocation"], 
    "Effect": "Allow", 
    "Resource": ["arn:aws:s3:::*"] 
    }, 
    { 
    "Sid": "AllowRootAndHomeListingOfCompanyBucket", 
    "Action": ["s3:ListBucket"], 
    "Effect": "Allow", 
    "Resource": ["arn:aws:s3:::yourbucketname"], 
    "Condition":{"StringEquals":{"s3:prefix":["","yourfoldername/"],"s3:delimiter":["/"]}} 
    }, 
    { 
    "Sid": "AllowListingOfUserFolder", 
    "Action": ["s3:ListBucket"], 
    "Effect": "Allow", 
    "Resource": ["arn:aws:s3:::yourbucketname"], 
    "Condition":{"StringLike":{"s3:prefix":["yourfoldername/*"]}} 
    }, 
    { 
    "Sid": "AllowAllS3ActionsInUserFolder", 
    "Effect": "Allow", 
    "Action": ["s3:GetObject"], 
    "Resource": ["arn:aws:s3:::yourbucketname/yourfoldername/*"] 
    }, 
{ 
     "Action": [ 
     "s3:*" 
     ], 
     "Sid": "Stmt1375581921000", 
     "Resource": [ 
"arn:aws:s3:::yourbucketname/anotherfolder1/*", 
"arn:aws:s3:::yourbucketname/anotherfolder2/*", 
"arn:aws:s3:::yourbucketname/anotherfolder3/*", 
"arn:aws:s3:::yourbucketname/anotherfolder4/*" 
     ], 
     "Effect": "Deny" 
    } 
] 
} 
+1

вы также должны быть в состоянии отрицать через ** NotResource ** - ' "NotResource": [ "" Арн: AWS: s3 ::: yourbucketname/yourfoldername/*»] '- а не список все исключения – drzaus

+1

И хорошим инструментом для отладки политик (или, по крайней мере, их проверки) является симулятор политики IAM https://policysim.aws.amazon.com/home/index.jsp – drzaus