2023-07-30 19:37:08 +00:00
import json
2019-06-30 11:47:17 +00:00
2023-11-30 15:55:51 +00:00
import boto3
import pytest
2023-07-30 19:37:08 +00:00
from botocore . exceptions import ClientError
2023-11-30 15:55:51 +00:00
2024-01-07 12:03:33 +00:00
from moto import mock_aws
2019-06-30 11:47:17 +00:00
2019-07-01 16:21:54 +00:00
invalid_policy_document_test_cases = [
2019-06-30 15:04:02 +00:00
{
" document " : " This is not a json document " ,
" error_message " : " Syntax errors in policy. " ,
} ,
{
" document " : {
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
}
} ,
" error_message " : " Policy document must be version 2012-10-17 or greater. " ,
} ,
{
" document " : {
" Version " : " 2008-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
} ,
} ,
" error_message " : " Policy document must be version 2012-10-17 or greater. " ,
} ,
{
" document " : {
" Version " : " 2013-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
} ,
} ,
" error_message " : " Syntax errors in policy. " ,
} ,
{
" document " : { " Version " : " 2012-10-17 " } ,
" error_message " : " Syntax errors in policy. " ,
} ,
{
" document " : { " Version " : " 2012-10-17 " , " Statement " : [ " afd " ] } ,
" error_message " : " Syntax errors in policy. " ,
} ,
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
} ,
" Extra field " : " value " ,
} ,
" error_message " : " Syntax errors in policy. " ,
} ,
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
" Extra field " : " value " ,
} ,
} ,
" error_message " : " Syntax errors in policy. " ,
} ,
{
" document " : {
" Version " : " 2012-10-17 " ,
" Id " : [ " cd3a324d2343d942772346-34234234423404-4c2242343242349d1642ee " ] ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
} ,
} ,
" error_message " : " Syntax errors in policy. " ,
} ,
{
" document " : {
" Version " : " 2012-10-17 " ,
" Id " : { } ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
} ,
} ,
" error_message " : " Syntax errors in policy. " ,
} ,
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " invalid " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
} ,
} ,
" error_message " : " Syntax errors in policy. " ,
} ,
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " invalid " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
} ,
} ,
" error_message " : " Actions/Conditions must be prefaced by a vendor, e.g., iam, sdb, ec2, etc. " ,
} ,
2019-06-30 18:33:17 +00:00
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" NotAction " : " " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
} ,
} ,
" error_message " : " Actions/Conditions must be prefaced by a vendor, e.g., iam, sdb, ec2, etc. " ,
} ,
2019-06-30 16:48:27 +00:00
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " a a:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
} ,
} ,
" error_message " : " Vendor a a is not valid " ,
} ,
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:List:Bucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
} ,
} ,
" error_message " : " Actions/Condition can contain only one colon. " ,
} ,
2019-06-30 18:33:17 +00:00
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : [
{
" Effect " : " Allow " ,
" Action " : " s3s:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
} ,
{
" Effect " : " Allow " ,
" Action " : " s:3s:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
} ,
] ,
} ,
" error_message " : " Actions/Condition can contain only one colon. " ,
} ,
2019-06-30 15:04:02 +00:00
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " invalid resource " ,
} ,
} ,
" error_message " : ' Resource invalid resource must be in ARN format or " * " . ' ,
} ,
2019-07-01 16:21:54 +00:00
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : [
{
" Sid " : " EnableDisableHongKong " ,
" Effect " : " Allow " ,
" Action " : [ " account:EnableRegion " , " account:DisableRegion " ] ,
" Resource " : " " ,
" Condition " : {
" StringEquals " : { " account:TargetRegion " : " ap-east-1 " }
} ,
} ,
{
" Sid " : " ViewConsole " ,
" Effect " : " Allow " ,
" Action " : [ " aws-portal:ViewAccount " , " account:ListRegions " ] ,
" Resource " : " " ,
} ,
] ,
} ,
" error_message " : ' Resource must be in ARN format or " * " . ' ,
} ,
2019-06-30 18:33:17 +00:00
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s:3:ListBucket " ,
" Resource " : " sdfsadf " ,
} ,
} ,
" error_message " : ' Resource sdfsadf must be in ARN format or " * " . ' ,
} ,
2019-06-30 15:04:02 +00:00
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : [ " adf " ] ,
} ,
} ,
" error_message " : ' Resource adf must be in ARN format or " * " . ' ,
} ,
2019-06-30 16:48:27 +00:00
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : { " Effect " : " Allow " , " Action " : " s3:ListBucket " , " Resource " : " " } ,
} ,
" error_message " : ' Resource must be in ARN format or " * " . ' ,
} ,
2019-06-30 18:33:17 +00:00
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" NotAction " : " s3s:ListBucket " ,
" Resource " : " a:bsdfdsafsad " ,
} ,
} ,
" error_message " : ' Partition " bsdfdsafsad " is not valid for resource " arn:bsdfdsafsad:*:*:*:* " . ' ,
} ,
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" NotAction " : " s3s:ListBucket " ,
" Resource " : " a:b:cadfsdf " ,
} ,
} ,
" error_message " : ' Partition " b " is not valid for resource " arn:b:cadfsdf:*:*:* " . ' ,
} ,
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" NotAction " : " s3s:ListBucket " ,
" Resource " : " a:b:c:d:e:f:g:h " ,
} ,
} ,
" error_message " : ' Partition " b " is not valid for resource " arn:b:c:d:e:f:g:h " . ' ,
} ,
2019-07-01 15:30:59 +00:00
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " aws:s3:::example_bucket " ,
} ,
} ,
" error_message " : ' Partition " s3 " is not valid for resource " arn:s3:::example_bucket:* " . ' ,
} ,
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : [
" arn:error:s3:::example_bucket " ,
" arn:error:s3::example_bucket " ,
] ,
} ,
} ,
" error_message " : ' Partition " error " is not valid for resource " arn:error:s3:::example_bucket " . ' ,
} ,
2019-06-30 15:04:02 +00:00
{
" document " : { " Version " : " 2012-10-17 " , " Statement " : [ ] } ,
" error_message " : " Syntax errors in policy. " ,
} ,
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : { " Effect " : " Allow " , " Action " : " s3:ListBucket " } ,
} ,
" error_message " : " Policy statement must contain resources. " ,
} ,
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : { " Effect " : " Allow " , " Action " : " s3:ListBucket " , " Resource " : [ ] } ,
} ,
" error_message " : " Policy statement must contain resources. " ,
} ,
2019-06-30 16:48:27 +00:00
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : { " Effect " : " Allow " , " Action " : " invalid " } ,
} ,
2022-07-30 03:25:56 +00:00
" error_message " : " Actions/Conditions must be prefaced by a vendor, e.g., iam, sdb, ec2, etc. " ,
2019-06-30 16:48:27 +00:00
} ,
2019-06-30 15:04:02 +00:00
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : { " Effect " : " Allow " , " Resource " : " arn:aws:s3:::example_bucket " } ,
} ,
" error_message " : " Policy statement must contain actions. " ,
} ,
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
} ,
} ,
" error_message " : " Syntax errors in policy. " ,
} ,
{
" document " : { " Version " : " 2012-10-17 " , " Statement " : { " Effect " : " Allow " } } ,
" error_message " : " Policy statement must contain actions. " ,
} ,
2019-06-30 16:48:27 +00:00
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : [ ] ,
" Resource " : " arn:aws:s3:::example_bucket " ,
} ,
} ,
" error_message " : " Policy statement must contain actions. " ,
} ,
2019-06-30 15:04:02 +00:00
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : [
{ " Effect " : " Deny " } ,
{
2019-06-30 11:47:17 +00:00
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
} ,
2019-06-30 15:04:02 +00:00
] ,
} ,
" error_message " : " Policy statement must contain actions. " ,
} ,
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
2019-06-30 11:47:17 +00:00
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
2019-06-30 15:04:02 +00:00
" Resource " : " arn:aws:iam:::example_bucket " ,
2019-06-30 11:47:17 +00:00
} ,
} ,
2019-06-30 15:04:02 +00:00
" error_message " : ' IAM resource path must either be " * " or start with user/, federated-user/, role/, group/, instance-profile/, mfa/, server-certificate/, policy/, sms-mfa/, saml-provider/, oidc-provider/, report/, access-report/. ' ,
} ,
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
2019-06-30 11:47:17 +00:00
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
2019-06-30 15:04:02 +00:00
" Resource " : " arn:aws:s3::example_bucket " ,
2019-06-30 11:47:17 +00:00
} ,
2019-06-30 14:36:49 +00:00
} ,
2019-06-30 15:04:02 +00:00
" error_message " : " The policy failed legacy parsing " ,
} ,
2019-07-01 15:30:59 +00:00
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : { " Effect " : " Allow " , " Resource " : " arn:aws:s3::example_bucket " } ,
} ,
" error_message " : " The policy failed legacy parsing " ,
} ,
2019-06-30 15:04:02 +00:00
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
2019-06-30 11:47:17 +00:00
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
2019-06-30 15:04:02 +00:00
" Resource " : " arn:aws " ,
} ,
2019-06-30 11:47:17 +00:00
} ,
2019-06-30 15:04:02 +00:00
" error_message " : " Resource vendor must be fully qualified and cannot contain regexes. " ,
} ,
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
2019-06-30 11:47:17 +00:00
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
2019-06-30 15:04:02 +00:00
" Resource " : { " a " : " arn:aws:s3:::example_bucket " } ,
2019-06-30 11:47:17 +00:00
} ,
} ,
2019-06-30 15:04:02 +00:00
" error_message " : " Syntax errors in policy. " ,
} ,
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Deny " ,
" Action " : " s3:ListBucket " ,
" Resource " : [ " adfdf " , { } ] ,
} ,
} ,
" error_message " : " Syntax errors in policy. " ,
} ,
2019-06-30 18:33:17 +00:00
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" NotAction " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
" NotResource " : [ ] ,
} ,
} ,
" error_message " : " Syntax errors in policy. " ,
} ,
2019-06-30 16:48:27 +00:00
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Deny " ,
" Action " : [ [ ] ] ,
" Resource " : " arn:aws:s3:::example_bucket " ,
} ,
} ,
" error_message " : " Syntax errors in policy. " ,
} ,
2019-06-30 18:33:17 +00:00
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" NotAction " : " s3s:ListBucket " ,
" Action " : [ ] ,
" Resource " : " arn:aws:s3:::example_bucket " ,
} ,
} ,
" error_message " : " Syntax errors in policy. " ,
} ,
2019-06-30 16:48:27 +00:00
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : { } ,
" Resource " : " arn:aws:s3:::example_bucket " ,
} ,
} ,
" error_message " : " Syntax errors in policy. " ,
} ,
2019-06-30 15:04:02 +00:00
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
2019-06-30 11:47:17 +00:00
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
2019-06-30 15:04:02 +00:00
" Resource " : " arn:aws:s3:::example_bucket " ,
" Condition " : [ ] ,
2019-06-30 11:47:17 +00:00
} ,
} ,
2019-06-30 15:04:02 +00:00
" error_message " : " Syntax errors in policy. " ,
} ,
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
2019-06-30 11:47:17 +00:00
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
2019-06-30 15:04:02 +00:00
" Resource " : " arn:aws:s3:::example_bucket " ,
" Condition " : " a " ,
2019-06-30 11:47:17 +00:00
} ,
} ,
2019-06-30 15:04:02 +00:00
" error_message " : " Syntax errors in policy. " ,
} ,
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
2019-06-30 11:47:17 +00:00
" Action " : " s3:ListBucket " ,
2019-06-30 15:04:02 +00:00
" Resource " : " arn:aws:s3:::example_bucket " ,
" Condition " : { " a " : " b " } ,
2019-06-30 11:47:17 +00:00
} ,
} ,
2019-06-30 15:04:02 +00:00
" error_message " : " Syntax errors in policy. " ,
} ,
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
2019-06-30 11:47:17 +00:00
" Effect " : " Allow " ,
2019-06-30 15:04:02 +00:00
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
" Condition " : { " DateGreaterThan " : " b " } ,
2019-06-30 11:47:17 +00:00
} ,
} ,
2019-06-30 15:04:02 +00:00
" error_message " : " Syntax errors in policy. " ,
} ,
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
2019-06-30 11:47:17 +00:00
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
2019-06-30 15:04:02 +00:00
" Resource " : " arn:aws:s3:::example_bucket " ,
" Condition " : { " DateGreaterThan " : [ ] } ,
2019-06-30 11:47:17 +00:00
} ,
} ,
2019-06-30 15:04:02 +00:00
" error_message " : " Syntax errors in policy. " ,
} ,
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
2019-06-30 14:36:49 +00:00
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
2019-06-30 15:04:02 +00:00
" Resource " : " arn:aws:s3:::example_bucket " ,
" Condition " : { " DateGreaterThan " : { " a " : { } } } ,
2019-06-30 14:36:49 +00:00
} ,
2019-06-30 11:47:17 +00:00
} ,
2019-06-30 15:04:02 +00:00
" error_message " : " Syntax errors in policy. " ,
} ,
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
2019-06-30 11:47:17 +00:00
" Effect " : " Allow " ,
2019-06-30 15:04:02 +00:00
" Resource " : " arn:aws:s3:::example_bucket " ,
" Condition " : { " DateGreaterThan " : { " a " : { } } } ,
2019-06-30 11:47:17 +00:00
} ,
} ,
2019-06-30 15:04:02 +00:00
" error_message " : " Syntax errors in policy. " ,
} ,
2019-07-01 15:30:59 +00:00
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
" Condition " : { " x " : { " a " : " 1 " } } ,
} ,
} ,
" error_message " : " Syntax errors in policy. " ,
} ,
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
" Condition " : { " ForAnyValue::StringEqualsIfExists " : { " a " : " asf " } } ,
} ,
} ,
" error_message " : " Syntax errors in policy. " ,
} ,
2019-06-30 15:04:02 +00:00
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
2019-06-30 14:36:49 +00:00
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
2019-06-30 15:04:02 +00:00
" Resource " : " arn:aws:s3:::example_bucket " ,
" Condition " : [
{ " ForAllValues:StringEquals " : { " aws:TagKeys " : " Department " } }
] ,
2019-06-30 14:36:49 +00:00
} ,
} ,
2019-06-30 15:04:02 +00:00
" error_message " : " Syntax errors in policy. " ,
} ,
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
2019-06-30 11:47:17 +00:00
" Effect " : " Allow " ,
2019-06-30 15:04:02 +00:00
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:iam:us-east-1::example_bucket " ,
2019-06-30 11:47:17 +00:00
} ,
} ,
2019-06-30 15:04:02 +00:00
" error_message " : " IAM resource arn:aws:iam:us-east-1::example_bucket cannot contain region information. " ,
} ,
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
2019-06-30 11:47:17 +00:00
" Action " : " s3:ListBucket " ,
2019-06-30 15:04:02 +00:00
" Resource " : " arn:aws:s3:us-east-1::example_bucket " ,
2019-06-30 11:47:17 +00:00
} ,
} ,
2019-06-30 15:04:02 +00:00
" error_message " : " Resource arn:aws:s3:us-east-1::example_bucket can not contain region information. " ,
} ,
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
" Sid " : { } ,
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
2019-06-30 11:47:17 +00:00
} ,
} ,
2019-06-30 15:04:02 +00:00
" error_message " : " Syntax errors in policy. " ,
} ,
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
" Sid " : [ ] ,
" Effect " : " Allow " ,
2019-06-30 14:36:49 +00:00
" Action " : " s3:ListBucket " ,
2019-06-30 15:04:02 +00:00
" Resource " : " arn:aws:s3:::example_bucket " ,
2019-06-30 14:36:49 +00:00
} ,
2019-06-30 12:03:18 +00:00
} ,
2019-06-30 15:04:02 +00:00
" error_message " : " Syntax errors in policy. " ,
} ,
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : [
{
" Sid " : " sdf " ,
2019-06-30 12:03:18 +00:00
" Effect " : " Allow " ,
2019-06-30 15:04:02 +00:00
" Action " : " s3:ListBucket " ,
2019-06-30 12:03:18 +00:00
" Resource " : " arn:aws:s3:::example_bucket " ,
2019-06-30 15:04:02 +00:00
} ,
{ " Sid " : " sdf " , " Effect " : " Allow " } ,
] ,
} ,
" error_message " : " Statement IDs (SID) in a single policy must be unique. " ,
} ,
2019-06-30 18:33:17 +00:00
{
" document " : {
" Statement " : [
{
" Sid " : " sdf " ,
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
} ,
{ " Sid " : " sdf " , " Effect " : " Allow " } ,
]
} ,
" error_message " : " Policy document must be version 2012-10-17 or greater. " ,
} ,
2019-06-30 15:04:02 +00:00
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" NotAction " : " s3:ListBucket " ,
" Action " : " iam:dsf " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
} ,
} ,
" error_message " : " Syntax errors in policy. " ,
} ,
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
" NotResource " : " * " ,
} ,
} ,
" error_message " : " Syntax errors in policy. " ,
} ,
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " denY " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
} ,
} ,
" error_message " : " The policy failed legacy parsing " ,
} ,
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
2019-06-30 12:03:18 +00:00
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
2019-06-30 15:04:02 +00:00
" Condition " : { " DateGreaterThan " : { " a " : " sdfdsf " } } ,
2019-06-30 12:03:18 +00:00
} ,
2019-06-30 14:36:49 +00:00
} ,
2019-06-30 15:04:02 +00:00
" error_message " : " The policy failed legacy parsing " ,
} ,
{
" document " : {
" Statement " : {
" Effect " : " Allow " ,
2019-06-30 14:36:49 +00:00
" Action " : " s3:ListBucket " ,
2019-06-30 15:04:02 +00:00
" Resource " : " arn:aws:s3:::example_bucket " ,
" Condition " : { " DateGreaterThan " : { " a " : " sdfdsf " } } ,
}
} ,
" error_message " : " Policy document must be version 2012-10-17 or greater. " ,
} ,
2019-07-01 15:30:59 +00:00
{
" document " : {
" Statement " : {
" Effect " : " denY " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
}
} ,
" error_message " : " Policy document must be version 2012-10-17 or greater. " ,
} ,
2019-06-30 15:04:02 +00:00
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Condition " : { " DateGreaterThan " : { " a " : " sdfdsf " } } ,
} ,
} ,
" error_message " : " The policy failed legacy parsing " ,
2019-06-30 18:33:17 +00:00
} ,
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" NotAction " : " s3:ListBucket " ,
" Resource " : " arn:aws::::example_bucket " ,
} ,
} ,
" error_message " : " The policy failed legacy parsing " ,
} ,
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " allow " ,
" Resource " : " arn:aws:s3:us-east-1::example_bucket " ,
} ,
} ,
" error_message " : " The policy failed legacy parsing " ,
2019-07-01 15:30:59 +00:00
} ,
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : [
{
" Sid " : " sdf " ,
" Effect " : " aLLow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
} ,
{ " Sid " : " sdf " , " Effect " : " Allow " } ,
] ,
} ,
" error_message " : " The policy failed legacy parsing " ,
} ,
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" NotResource " : " arn:aws:s3::example_bucket " ,
} ,
} ,
" error_message " : " The policy failed legacy parsing " ,
} ,
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
" Condition " : { " DateLessThanEquals " : { " a " : " 234-13 " } } ,
} ,
} ,
" error_message " : " The policy failed legacy parsing " ,
} ,
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
" Condition " : {
" DateLessThanEquals " : { " a " : " 2016-12-13t2:00:00.593194+1 " }
} ,
} ,
} ,
" error_message " : " The policy failed legacy parsing " ,
} ,
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
" Condition " : {
" DateLessThanEquals " : { " a " : " 2016-12-13t2:00:00.1999999999+10:59 " }
} ,
} ,
} ,
" error_message " : " The policy failed legacy parsing " ,
} ,
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
" Condition " : { " DateLessThan " : { " a " : " 9223372036854775808 " } } ,
} ,
} ,
" error_message " : " The policy failed legacy parsing " ,
} ,
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:error:s3:::example_bucket " ,
" Condition " : { " DateGreaterThan " : { " a " : " sdfdsf " } } ,
} ,
} ,
" error_message " : " The policy failed legacy parsing " ,
2019-07-01 16:21:54 +00:00
} ,
{
" document " : {
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws::fdsasf " ,
} ,
} ,
" error_message " : " The policy failed legacy parsing " ,
2019-06-30 15:04:02 +00:00
} ,
2019-07-01 16:21:54 +00:00
]
valid_policy_documents = [
{
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : [ " arn:aws:s3:::example_bucket " ] ,
} ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " iam: asdf safdsf af " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
} ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : [ " arn:aws:s3:::example_bucket " , " * " ] ,
} ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " * " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
} ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : [
{
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
}
] ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " service-prefix:action-name " ,
" Resource " : " * " ,
" Condition " : {
" DateGreaterThan " : { " aws:CurrentTime " : " 2017-07-01T00:00:00Z " } ,
" DateLessThan " : { " aws:CurrentTime " : " 2017-12-31T23:59:59Z " } ,
} ,
} ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " fsx:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
} ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:iam:::user/example_bucket " ,
} ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s33:::example_bucket " ,
} ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:fdsasf " ,
} ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
" Condition " : { } ,
} ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
" Condition " : { " ForAllValues:StringEquals " : { " aws:TagKeys " : " Department " } } ,
} ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:cloudwatch:us-east-1::example_bucket " ,
} ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:ec2:us-east-1::example_bucket " ,
} ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:invalid-service:::example_bucket " ,
} ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:invalid-service:us-east-1::example_bucket " ,
} ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
" Condition " : {
" DateGreaterThan " : { " aws:CurrentTime " : " 2017-07-01T00:00:00Z " } ,
" DateLessThan " : { " aws:CurrentTime " : " 2017-12-31T23:59:59Z " } ,
} ,
} ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
" Condition " : { " DateGreaterThan " : { } } ,
} ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
" Condition " : { " DateGreaterThan " : { " a " : [ ] } } ,
} ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
" Condition " : { " a " : { } } ,
} ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : {
" Sid " : " dsfsdfsdfsdfsdfsadfsd " ,
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
} ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : [
{
" Sid " : " ConsoleDisplay " ,
" Effect " : " Allow " ,
" Action " : [
" iam:GetRole " ,
" iam:GetUser " ,
" iam:ListRoles " ,
" iam:ListRoleTags " ,
" iam:ListUsers " ,
" iam:ListUserTags " ,
] ,
" Resource " : " * " ,
} ,
{
" Sid " : " AddTag " ,
" Effect " : " Allow " ,
" Action " : [ " iam:TagUser " , " iam:TagRole " ] ,
" Resource " : " * " ,
" Condition " : {
" StringEquals " : { " aws:RequestTag/CostCenter " : [ " A-123 " , " B-456 " ] } ,
" ForAllValues:StringEquals " : { " aws:TagKeys " : " CostCenter " } ,
2019-10-31 15:44:26 +00:00
} ,
2019-07-01 16:21:54 +00:00
} ,
] ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" NotAction " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
} ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Deny " ,
" Action " : " s3:* " ,
" NotResource " : [
" arn:aws:s3:::HRBucket/Payroll " ,
" arn:aws:s3:::HRBucket/Payroll/* " ,
] ,
} ,
} ,
{
" Version " : " 2012-10-17 " ,
" Id " : " sdfsdfsdf " ,
" Statement " : {
" Effect " : " Allow " ,
" NotAction " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
} ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " aaaaaadsfdsafsadfsadfaaaaa:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
} ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3-s:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
} ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3.s:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
} ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" NotAction " : " s3:ListBucket " ,
" NotResource " : " * " ,
} ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : [
{
" Sid " : " sdf " ,
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
} ,
{
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
} ,
] ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
" Condition " : { " DateGreaterThan " : { " a " : " 01T " } } ,
} ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
" Condition " : { " x " : { } , " y " : { } } ,
} ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
" Condition " : { " StringEqualsIfExists " : { " a " : " asf " } } ,
} ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
" Condition " : { " ForAnyValue:StringEqualsIfExists " : { " a " : " asf " } } ,
} ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
" Condition " : { " DateLessThanEquals " : { " a " : " 2019-07-01T13:20:15Z " } } ,
} ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
" Condition " : {
" DateLessThanEquals " : { " a " : " 2016-12-13T21:20:37.593194+00:00 " }
} ,
} ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
" Condition " : { " DateLessThanEquals " : { " a " : " 2016-12-13t2:00:00.593194+23 " } } ,
} ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : {
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::example_bucket " ,
" Condition " : { " DateLessThan " : { " a " : " -292275054 " } } ,
} ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : [
{
" Sid " : " AllowViewAccountInfo " ,
" Effect " : " Allow " ,
" Action " : [
" iam:GetAccountPasswordPolicy " ,
" iam:GetAccountSummary " ,
" iam:ListVirtualMFADevices " ,
] ,
" Resource " : " * " ,
} ,
{
" Sid " : " AllowManageOwnPasswords " ,
" Effect " : " Allow " ,
" Action " : [ " iam:ChangePassword " , " iam:GetUser " ] ,
" Resource " : " arn:aws:iam::*:user/$ { aws:username} " ,
} ,
{
" Sid " : " AllowManageOwnAccessKeys " ,
" Effect " : " Allow " ,
" Action " : [
" iam:CreateAccessKey " ,
" iam:DeleteAccessKey " ,
" iam:ListAccessKeys " ,
" iam:UpdateAccessKey " ,
] ,
" Resource " : " arn:aws:iam::*:user/$ { aws:username} " ,
} ,
{
" Sid " : " AllowManageOwnSigningCertificates " ,
" Effect " : " Allow " ,
" Action " : [
" iam:DeleteSigningCertificate " ,
" iam:ListSigningCertificates " ,
" iam:UpdateSigningCertificate " ,
" iam:UploadSigningCertificate " ,
] ,
" Resource " : " arn:aws:iam::*:user/$ { aws:username} " ,
} ,
{
" Sid " : " AllowManageOwnSSHPublicKeys " ,
" Effect " : " Allow " ,
" Action " : [
" iam:DeleteSSHPublicKey " ,
" iam:GetSSHPublicKey " ,
" iam:ListSSHPublicKeys " ,
" iam:UpdateSSHPublicKey " ,
" iam:UploadSSHPublicKey " ,
] ,
" Resource " : " arn:aws:iam::*:user/$ { aws:username} " ,
} ,
{
" Sid " : " AllowManageOwnGitCredentials " ,
" Effect " : " Allow " ,
" Action " : [
" iam:CreateServiceSpecificCredential " ,
" iam:DeleteServiceSpecificCredential " ,
" iam:ListServiceSpecificCredentials " ,
" iam:ResetServiceSpecificCredential " ,
" iam:UpdateServiceSpecificCredential " ,
] ,
" Resource " : " arn:aws:iam::*:user/$ { aws:username} " ,
} ,
{
" Sid " : " AllowManageOwnVirtualMFADevice " ,
" Effect " : " Allow " ,
" Action " : [ " iam:CreateVirtualMFADevice " , " iam:DeleteVirtualMFADevice " ] ,
" Resource " : " arn:aws:iam::*:mfa/$ { aws:username} " ,
} ,
{
" Sid " : " AllowManageOwnUserMFA " ,
" Effect " : " Allow " ,
" Action " : [
" iam:DeactivateMFADevice " ,
" iam:EnableMFADevice " ,
" iam:ListMFADevices " ,
" iam:ResyncMFADevice " ,
] ,
" Resource " : " arn:aws:iam::*:user/$ { aws:username} " ,
} ,
{
" Sid " : " DenyAllExceptListedIfNoMFA " ,
" Effect " : " Deny " ,
" NotAction " : [
" iam:CreateVirtualMFADevice " ,
" iam:EnableMFADevice " ,
" iam:GetUser " ,
" iam:ListMFADevices " ,
" iam:ListVirtualMFADevices " ,
" iam:ResyncMFADevice " ,
" sts:GetSessionToken " ,
] ,
" Resource " : " * " ,
" Condition " : { " BoolIfExists " : { " aws:MultiFactorAuthPresent " : " false " } } ,
} ,
] ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : [
{
" Sid " : " ListAndDescribe " ,
" Effect " : " Allow " ,
" Action " : [
" dynamodb:List* " ,
" dynamodb:DescribeReservedCapacity* " ,
" dynamodb:DescribeLimits " ,
" dynamodb:DescribeTimeToLive " ,
] ,
" Resource " : " * " ,
} ,
{
" Sid " : " SpecificTable " ,
" Effect " : " Allow " ,
" Action " : [
" dynamodb:BatchGet* " ,
" dynamodb:DescribeStream " ,
" dynamodb:DescribeTable " ,
" dynamodb:Get* " ,
" dynamodb:Query " ,
" dynamodb:Scan " ,
" dynamodb:BatchWrite* " ,
" dynamodb:CreateTable " ,
" dynamodb:Delete* " ,
" dynamodb:Update* " ,
" dynamodb:PutItem " ,
] ,
" Resource " : " arn:aws:dynamodb:*:*:table/MyTable " ,
} ,
] ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : [
{
" Effect " : " Allow " ,
" Action " : [ " ec2:AttachVolume " , " ec2:DetachVolume " ] ,
" Resource " : [ " arn:aws:ec2:*:*:volume/* " , " arn:aws:ec2:*:*:instance/* " ] ,
" Condition " : {
" ArnEquals " : {
" ec2:SourceInstanceARN " : " arn:aws:ec2:*:*:instance/instance-id "
}
2019-10-31 15:44:26 +00:00
} ,
2019-07-01 16:21:54 +00:00
}
] ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : [
{
" Effect " : " Allow " ,
" Action " : [ " ec2:AttachVolume " , " ec2:DetachVolume " ] ,
" Resource " : " arn:aws:ec2:*:*:instance/* " ,
" Condition " : {
" StringEquals " : { " ec2:ResourceTag/Department " : " Development " }
} ,
} ,
{
" Effect " : " Allow " ,
" Action " : [ " ec2:AttachVolume " , " ec2:DetachVolume " ] ,
" Resource " : " arn:aws:ec2:*:*:volume/* " ,
" Condition " : {
" StringEquals " : { " ec2:ResourceTag/VolumeUser " : " $ { aws:username} " }
} ,
} ,
] ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : [
{
" Sid " : " StartStopIfTags " ,
" Effect " : " Allow " ,
" Action " : [
" ec2:StartInstances " ,
" ec2:StopInstances " ,
" ec2:DescribeTags " ,
] ,
" Resource " : " arn:aws:ec2:region:account-id:instance/* " ,
" Condition " : {
" StringEquals " : {
" ec2:ResourceTag/Project " : " DataAnalytics " ,
" aws:PrincipalTag/Department " : " Data " ,
}
} ,
}
] ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : [
{
" Sid " : " ListYourObjects " ,
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : [ " arn:aws:s3:::bucket-name " ] ,
" Condition " : {
" StringLike " : {
" s3:prefix " : [
" cognito/application-name/$ { cognito-identity.amazonaws.com:sub} "
]
}
} ,
} ,
{
" Sid " : " ReadWriteDeleteYourObjects " ,
" Effect " : " Allow " ,
" Action " : [ " s3:GetObject " , " s3:PutObject " , " s3:DeleteObject " ] ,
" Resource " : [
" arn:aws:s3:::bucket-name/cognito/application-name/$ { cognito-identity.amazonaws.com:sub} " ,
" arn:aws:s3:::bucket-name/cognito/application-name/$ { cognito-identity.amazonaws.com:sub}/* " ,
] ,
} ,
] ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : [
{
" Effect " : " Allow " ,
" Action " : [ " s3:ListAllMyBuckets " , " s3:GetBucketLocation " ] ,
" Resource " : " * " ,
} ,
{
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : " arn:aws:s3:::bucket-name " ,
" Condition " : {
" StringLike " : { " s3:prefix " : [ " " , " home/ " , " home/$ { aws:userid}/* " ] }
} ,
} ,
{
" Effect " : " Allow " ,
" Action " : " s3:* " ,
" Resource " : [
" arn:aws:s3:::bucket-name/home/$ { aws:userid} " ,
" arn:aws:s3:::bucket-name/home/$ { aws:userid}/* " ,
] ,
} ,
] ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : [
{
" Sid " : " ConsoleAccess " ,
" Effect " : " Allow " ,
" Action " : [
" s3:GetAccountPublicAccessBlock " ,
" s3:GetBucketAcl " ,
" s3:GetBucketLocation " ,
" s3:GetBucketPolicyStatus " ,
" s3:GetBucketPublicAccessBlock " ,
" s3:ListAllMyBuckets " ,
] ,
" Resource " : " * " ,
} ,
{
" Sid " : " ListObjectsInBucket " ,
" Effect " : " Allow " ,
" Action " : " s3:ListBucket " ,
" Resource " : [ " arn:aws:s3:::bucket-name " ] ,
} ,
{
" Sid " : " AllObjectActions " ,
" Effect " : " Allow " ,
" Action " : " s3:*Object " ,
" Resource " : [ " arn:aws:s3:::bucket-name/* " ] ,
} ,
] ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : [
{
" Sid " : " AllowViewAccountInfo " ,
" Effect " : " Allow " ,
" Action " : [ " iam:GetAccountPasswordPolicy " , " iam:GetAccountSummary " ] ,
" Resource " : " * " ,
} ,
{
" Sid " : " AllowManageOwnPasswords " ,
" Effect " : " Allow " ,
" Action " : [ " iam:ChangePassword " , " iam:GetUser " ] ,
" Resource " : " arn:aws:iam::*:user/$ { aws:username} " ,
} ,
{
" Sid " : " AllowManageOwnAccessKeys " ,
" Effect " : " Allow " ,
" Action " : [
" iam:CreateAccessKey " ,
" iam:DeleteAccessKey " ,
" iam:ListAccessKeys " ,
" iam:UpdateAccessKey " ,
] ,
" Resource " : " arn:aws:iam::*:user/$ { aws:username} " ,
} ,
{
" Sid " : " AllowManageOwnSigningCertificates " ,
" Effect " : " Allow " ,
" Action " : [
" iam:DeleteSigningCertificate " ,
" iam:ListSigningCertificates " ,
" iam:UpdateSigningCertificate " ,
" iam:UploadSigningCertificate " ,
] ,
" Resource " : " arn:aws:iam::*:user/$ { aws:username} " ,
} ,
{
" Sid " : " AllowManageOwnSSHPublicKeys " ,
" Effect " : " Allow " ,
" Action " : [
" iam:DeleteSSHPublicKey " ,
" iam:GetSSHPublicKey " ,
" iam:ListSSHPublicKeys " ,
" iam:UpdateSSHPublicKey " ,
" iam:UploadSSHPublicKey " ,
] ,
" Resource " : " arn:aws:iam::*:user/$ { aws:username} " ,
} ,
{
" Sid " : " AllowManageOwnGitCredentials " ,
" Effect " : " Allow " ,
" Action " : [
" iam:CreateServiceSpecificCredential " ,
" iam:DeleteServiceSpecificCredential " ,
" iam:ListServiceSpecificCredentials " ,
" iam:ResetServiceSpecificCredential " ,
" iam:UpdateServiceSpecificCredential " ,
] ,
" Resource " : " arn:aws:iam::*:user/$ { aws:username} " ,
} ,
] ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : [
{
" Action " : " ec2:* " ,
" Resource " : " * " ,
" Effect " : " Allow " ,
" Condition " : { " StringEquals " : { " ec2:Region " : " region " } } ,
}
] ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : [
{
" Effect " : " Allow " ,
" Action " : " rds:* " ,
" Resource " : [ " arn:aws:rds:region:*:* " ] ,
} ,
{ " Effect " : " Allow " , " Action " : [ " rds:Describe* " ] , " Resource " : [ " * " ] } ,
] ,
2019-09-11 02:43:50 +00:00
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : [
{
" Sid " : " " ,
" Effect " : " Allow " ,
" Action " : " rds:* " ,
" Resource " : [ " arn:aws:rds:region:*:* " ] ,
} ,
{
" Sid " : " " ,
" Effect " : " Allow " ,
" Action " : [ " rds:Describe* " ] ,
" Resource " : [ " * " ] ,
} ,
2023-09-01 07:06:19 +00:00
] ,
} ,
{
" Version " : " 2012-10-17 " ,
" Statement " : [
{
" Sid " : " " ,
" Effect " : " Allow " ,
" Action " : [ " s3:* " ] ,
" Resource " : [
" arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point " ,
" arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/* " ,
] ,
} ,
2019-09-11 02:43:50 +00:00
] ,
2019-07-01 16:21:54 +00:00
} ,
]
2019-06-30 11:47:17 +00:00
2019-06-30 15:04:02 +00:00
2020-11-25 10:48:05 +00:00
@pytest.mark.parametrize ( " invalid_policy_document " , invalid_policy_document_test_cases )
2024-01-07 12:03:33 +00:00
@mock_aws
2020-11-25 10:48:05 +00:00
def test_create_policy_with_invalid_policy_document ( invalid_policy_document ) :
2019-06-30 15:04:02 +00:00
conn = boto3 . client ( " iam " , region_name = " us-east-1 " )
2020-10-06 05:54:49 +00:00
with pytest . raises ( ClientError ) as ex :
2019-06-30 15:04:02 +00:00
conn . create_policy (
PolicyName = " TestCreatePolicy " ,
2020-11-25 10:48:05 +00:00
PolicyDocument = json . dumps ( invalid_policy_document [ " document " ] ) ,
2019-06-30 15:04:02 +00:00
)
2023-07-30 19:37:08 +00:00
resp = ex . value . response
assert resp [ " Error " ] [ " Code " ] == " MalformedPolicyDocument "
assert resp [ " ResponseMetadata " ] [ " HTTPStatusCode " ] == 400
assert resp [ " Error " ] [ " Message " ] == invalid_policy_document [ " error_message " ]
2019-07-01 16:21:54 +00:00
2020-11-25 10:48:05 +00:00
@pytest.mark.parametrize ( " valid_policy_document " , valid_policy_documents )
2024-01-07 12:03:33 +00:00
@mock_aws
2020-11-25 10:48:05 +00:00
def test_create_policy_with_valid_policy_document ( valid_policy_document ) :
2019-07-01 16:21:54 +00:00
conn = boto3 . client ( " iam " , region_name = " us-east-1 " )
conn . create_policy (
PolicyName = " TestCreatePolicy " , PolicyDocument = json . dumps ( valid_policy_document )
2019-10-31 15:44:26 +00:00
)