У меня в аккаунте два VPC. Один для DEV и один для производства. Я хочу создать пользователя IAM, который должен видеть только экземпляры DEV EC2 в консоли и должен иметь возможность создавать или перезагружать экземпляры. Он не должен видеть производственные экземпляры EC2. Я попробовал с помощью политики ниже и получил ошибку как "An error occurred fetching address data: You are not authorized to perform this operation."
Моя политика IAM ...
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"ec2:Describe*",
"ec2:RebootInstances",
"ec2:RunInstances",
"ec2:CreateTags"
],
"Effect": "Allow",
"Resource": "*",
"Condition": {
"StringEquals": {
"ec2:Region:VPC": "us-west-2:vpc/vpc-00000000"
}
}
}
]
}
Я мог бы кое-что сделать здесь с помощью приведенной ниже политики. Но не смог применить теги. Дело в том, что пользователь не может переименовывать какие-либо другие теги в другие теги в PRODUCTION VPC, когда я вставляю приведенное ниже правило, тогда пользователь может также изменять теги других экземпляров VPC ...
{
"Effect": "Allow",
"Action": "ec2:CreateTags",
"Resource": [
"*"
]
}
Вот мое текущее правило, которое может читать другие экземпляры VPC, но только для чтения. Меня это устраивает. Но я не могу создавать экземпляры с тегами ...
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "NonResourceBasedReadOnlyPermissions",
"Action": [
"ec2:Describe*",
"ec2:CreateKeyPair",
"ec2:CreateSecurityGroup",
"iam:GetInstanceProfiles",
"iam:ListInstanceProfiles"
],
"Effect": "Allow",
"Resource": "*"
},
{
"Sid": "IAMPassRoleToInstance",
"Action": [
"iam:PassRole"
],
"Effect": "Allow",
"Resource": "arn:aws:iam::818755641843:role/EC2LaunchVansDEV"
},
{
"Sid": "AllowInstanceActions",
"Effect": "Allow",
"Action": [
"ec2:RebootInstances",
"ec2:RunInstances",
"ec2:StartInstances",
"ec2:AttachVolume",
"ec2:DetachVolume",
"ec2:CreateTags"
],
"Resource": "arn:aws:ec2:us-west-2:818755641843:instance/*",
"Condition": {
"StringEquals": {
"ec2:InstanceProfile": "arn:aws:iam::818755641843:instance-profile/EC2LaunchVansDEV"
}
}
},
{
"Sid": "EC2RunInstances",
"Effect": "Allow",
"Action": [
"ec2:RunInstances",
"ec2:CreateTags"
],
"Resource": "arn:aws:ec2:us-west-2:818755641843:instance/*",
"Condition": {
"StringEquals": {
"ec2:InstanceProfile": "arn:aws:iam::818755641843:instance-profile/EC2LaunchVansDEV"
}
}
},
{
"Sid": "EC2RunInstancesSubnet",
"Effect": "Allow",
"Action": [
"ec2:RunInstances",
"ec2:CreateTags"
],
"Resource": "arn:aws:ec2:us-west-2:818755641843:subnet/*",
"Condition": {
"StringEquals": {
"ec2:vpc": "arn:aws:ec2:us-west-2:818755641843:vpc/vpc-5b0f3c3f"
}
}
},
{
"Sid": "RemainingRunInstancePermissions",
"Effect": "Allow",
"Action": "ec2:RunInstances",
"Resource": [
"arn:aws:ec2:us-west-2:818755641843:volume/*",
"arn:aws:ec2:us-west-2::image/*",
"arn:aws:ec2:us-west-2::snapshot/*",
"arn:aws:ec2:us-west-2:818755641843:network-interface/*",
"arn:aws:ec2:us-west-2:818755641843:key-pair/*",
"arn:aws:ec2:us-west-2:818755641843:security-group/*"
]
},
{
"Sid": "EC2VpcNonresourceSpecificActions",
"Effect": "Allow",
"Action": [
"ec2:DeleteNetworkAcl",
"ec2:DeleteNetworkAclEntry",
"ec2:DeleteRoute",
"ec2:DeleteRouteTable",
"ec2:AuthorizeSecurityGroupEgress",
"ec2:AuthorizeSecurityGroupIngress",
"ec2:RevokeSecurityGroupEgress",
"ec2:RevokeSecurityGroupIngress",
"ec2:DeleteSecurityGroup",
"ec2:CreateTags"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"ec2:vpc": "arn:aws:ec2:us-west-2:818755641843:vpc/vpc-5b0f3c3f"
}
}
}
]
}
В DescribeInstances
действие не может быть ограничено ec2:Vpc
состояние. Фактически, это часть набора действий API, которые не разрешают разрешения на уровне ресурсов, полный список см. Здесь:
Я считаю, что лучше всего разделить на несколько учетных записей и разделить их там.
Смотрите также:
Сейчас это невозможно без дополнительных уловок, например. по тегам, потому что эти действия не поддерживаю VPC в условиях:
RebootInstances
StartInstances
StopInstances
TerminateInstances
Но все они поддерживают регион в условиях, поэтому вы можете переместить среду разработки в конкретный регион.