Групповая политика IAM для ограничения доступа к средам и версиям
У меня есть два приложения, развернутые в ElasticBeanstalk, распределенные по пяти различным средам.
Мне нужно ограничить доступ для команды разработчиков только для некоторых из этих сред, у них не должно быть никакого доступа к продукту - даже не должно быть видно.
Мне очень трудно отлаживать это и получать очень странные результаты при тестировании. Кажется, IAM "смущает себя" время от времени? Во время тестирования я получаю разные сообщения об ошибках, так что это еще более затрудняет тестирование и отладку.
Эта политика у меня до сих пор.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1",
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::<mybeanstalkbucket>",
"arn:aws:s3:::tecvirt",
"arn:aws:s3:::<mybeanstalkbucket>/*",
"arn:aws:s3:::tecvirt/*"
]
},
{
"Sid": "Stmt2",
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets",
"s3:ListBucket"
],
"Resource": "*"
},
{
"Sid": "Stmt5",
"Action": [
"elasticbeanstalk:Describe*",
"elasticbeanstalk:CreateApplicationVersion",
"elasticbeanstalk:DeleteApplicationVersion",
"elasticbeanstalk:UpdateApplicationVersion",
"elasticbeanstalk:UpdateApplication",
"elasticbeanstalk:RestartAppServer",
"elasticbeanstalk:SwapEnvironmentCNAMEs",
"elasticbeanstalk:UpdateEnvironment",
"elasticbeanstalk:UpdateApplicationVersion",
"elasticbeanstalk:Check*",
"elasticbeanstalk:List*",
"elasticbeanstalk:RequestEnvironmentInfo",
"elasticbeanstalk:RetrieveEnvironmentInfo"
],
"Effect": "Allow",
"Resource": [
"arn:aws:elasticbeanstalk:us-east-1::solutionstack/*",
"arn:aws:elasticbeanstalk:us-east-1:<myaccount>:environment/tecvirt-app/mock",
"arn:aws:elasticbeanstalk:us-east-1:<myaccount>:environment/tecvirt-app/hmlg2",
"arn:aws:elasticbeanstalk:us-east-1:<myaccount>:environment/tecvirt-scheduler/hmlg",
"arn:aws:elasticbeanstalk:us-east-1:<myaccount>:applicationversion/tecvirt-app/*",
"arn:aws:elasticbeanstalk:us-east-1:<myaccount>:applicationversion/tecvirt-scheduler/*"
]
},
{
"Sid": "Stmt4",
"Effect": "Allow",
"Action": [
"elasticbeanstalk:Describe*",
"elasticbeanstalk:Check*",
"elasticbeanstalk:List*",
"elasticbeanstalk:RequestEnvironmentInfo",
"elasticbeanstalk:RetrieveEnvironmentInfo",
"elasticbeanstalk:ValidateConfigurationSettings"
],
"Resource": [
"arn:aws:elasticbeanstalk:us-east-1:<myaccount>:application/tecvirt-app",
"arn:aws:elasticbeanstalk:us-east-1:<myaccount>:application/tecvirt-scheduler"
]
},
{
"Sid": "Stmt3",
"Effect": "Allow",
"Action": [
"elasticloadbalancing:Describe*",
"ec2:Describe*",
"autoscaling:Describe*",
"cloudwatch:Describe*",
"cloudwatch:List*",
"cloudwatch:Get*",
"sns:Get*",
"sns:List*",
"cloudformation:Describe*",
"cloudformation:Get*",
"cloudformation:List*",
"cloudformation:Validate*",
"cloudformation:Estimate*",
"rds:Describe*",
"sqs:Get*",
"sqs:List*"
],
"Resource": [
"*"
]
}
]
}
И это сообщение об ошибке, которое я получаю:
A problem occurred while loading your page: Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: 7CDFC747CB76D158)
... что очень мало помогает, так как не говорит мне, какого разрешения мне не хватает. В любом случае, не должно быть ни одного, поскольку я дал с помощью политики почти все мыслимые разрешения на доступ к папке Beanstalk для группы.
И еще одна странная вещь: если я войду с пользователем в этой группе и получу доступ к S3, я смогу свободно получить доступ к папке и всем ее объектам.