Ist es möglich, AWS-Benutzer / -Konten auf eine bestimmte Region zu beschränken?


24

Wir betreiben eine Reihe von AWS-Diensten in der Region EU-West-1. Leider scheint es, dass viele unserer Entwickler und andere Mitarbeiter, die temporäre Ressourcen erstellen müssen, diesen Aspekt von AWS vergessen und diese Region nicht auswählen, bevor sie EC2-Instanzen starten, S3-Buckets erstellen usw. Infolgedessen landen sie häufig in Die Region USA-Ost-1 ist offenbar die Standardregion, die AWS immer verwendet.

Gibt es eine Möglichkeit über IAM (oder eine andere Möglichkeit), Benutzerkonten so einzuschränken, dass nur Objekte in einer bestimmten Region gestartet / erstellt werden?

Antworten:


25

Leider kann man das nicht global machen. Doch für jedes Produkt AWS , dass es unterstützt, in der Regel Sie können den Zugriff auf einen bestimmten Bereich begrenzen.

Für EC2 können Sie beispielsweise Folgendes tun:

{
  "Statement":[{
    "Effect":"allow",
    "Action":"RunInstances",
    "Resource":"*",
    "Condition":{
      "StringEquals":{
        "ec2:Region":"us-west-1"
        }
      }
    }
  ]
}

Natürlich müssen Sie denygegebenenfalls auch eine Regel herausgeben.

Hier ist die Dokumentation für die oben genannten.


Perfekt. Das sieht genau so aus, wie ich es brauche. Vielen Dank!
Bruce P

5
Stattdessen "Condition": { "condition": {} }sollte"Condition": { "StringEquals": {} }
Jasny - Arnold Daniels

Was ist mit anderen Diensten wie S3?
Yves M.

7

Seit dem 25. April 2018 verfügt AWS über eine globale Ressource aws: RequestedRegion, mit der Sie die Regionen einschränken können, an die ein Benutzer Anforderungen senden kann. Dies ist unabhängig davon, ob der Dienst regional ist oder nicht, sodass Sie ihn auf alle Dienste anwenden können.

AWS-Sicherheitsblog

Leider können Sie dies nicht in der Dienststeuerungsrichtlinie einer Organisation verwenden, um sie global auf ein Konto anzuwenden, und Sie müssen die Richtlinie jedem einzelnen Principal zuordnen und prüfen, ob dies der Fall ist, wenn Sie ein Konto für bestimmte Regionen sperren möchten.


6

Verwenden Sie so etwas. In diesem Beispiel wird der Zugriff auf zwei AWS-Regionen eingeschränkt. Ändern Sie nach Bedarf.

{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Deny",
    "Action": "*",
    "Resource": "*",
    "Condition": {
      "StringNotEquals": {
        "aws:RequestedRegion": [
          "eu-central-1",
          "eu-west-1"
        ]
      }
    }
  }]
}

3
Mit der neuen aws:RequestedRegion, ist dies die Antwort, die jetzt am relevantesten ist
Majikman

1
Vielen Dank, mit dieser Richtlinie können Sie die standardmäßig in AWS verfügbaren Richtlinien verwenden und nur diese inline anfügen, und Sie schränken alle Dienste effektiv ein.
lkraider

4

Akzeptierte Antwort auf diesen Thread gab Syntax Error on Policy. Unten hat für mich gearbeitet:

{
"Statement": [
    {
        "Sid": "Stmt1375943389569",
        "Action": "ec2:*",
        "Effect": "Allow",
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "ec2:Region": "eu-central-1"
            }
        }
    }
]

}


3

Wenn Sie nur nach EC2-Aktionen fragen, können Sie diese, wie in anderen Antworten erwähnt, einschränken. Wenn es sich um andere Dienste handelt, bin ich mir nicht sicher, ob Sie dies tun können ... ZB scheint AWS Lambda keine zu haben, die lambda:regionSie zu einer Bedingung hinzufügen können.


0

Aus den FAQ für AWS IAM :

F: Können Benutzer regional definiert werden? Anfangs nicht. Benutzer sind globale Einheiten, wie es ein AWS-Konto heute ist. Bei der Definition von Benutzerberechtigungen muss keine Region angegeben werden. Benutzer können AWS-Services in jeder geografischen Region nutzen.


3
Wow. Was für eine schlecht geschriebene Antwort von Amazon. "Anfangs nicht." Bedeutet das, dass dies nach der Erstellung des Kontos erfolgen kann? Bedeutet das, dass AWS nicht konnte, als es zum ersten Mal gestartet wurde, aber jetzt? Msgstr "Beim Definieren von Benutzerberechtigungen muss keine Region angegeben werden." Ich habe nicht gefragt, ob es erforderlich ist. Ich fragte, ob das möglich sei. "Benutzer können AWS-Services in jeder geografischen Region nutzen." Anscheinend nicht mehr basierend auf dem, was die EEAA oben gepostet hat. Mit der Anweisung "condition" in IAM können Sie einige Dienste nach Region einschränken. Trotzdem vielen Dank.
Bruce P

1
@ BruceP - es ist keine schlechte Antwort. Es ist vollkommen in Ordnung. Benutzer sind global. Benutzerberechtigungen können eingeschränkt werden.
EEAA

0

Ich fand, dass dies besser funktioniert (ermöglicht das Starten / Stoppen / Beenden von / usw.), um einem Benutzer vollen EC2-Zugriff auf nur eine Region zu gewähren - jede andere Region zeigt Fehler während eines versuchten Zugriffs an.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": "*",
            "Effect": "Allow",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "ec2:Region": "us-east-1"
                }
            }
        }
    ]
}

0

Dieser funktioniert bei mir. Ich habe versucht, eine Richtlinie mit dem als akzeptierte Antwort angegebenen json zu erstellen, aber er funktioniert bei mir nicht.

{
    "Version": "2012-10-17",
    "Statement": [{
        "Action": "ec2:*",
        "Effect": "Allow",
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "ec2:Region": [
                    "us-east-1"
                ]
            }
        }
    }]
}

0

Das ist die aktuelle Lösung - mit "eu-west-1":

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect"    : "Allow",
            "Action"    : "*",
            "Resource"  : "*",
            "Condition": 
            {
                "StringEquals": {
                    "aws:RequestedRegion": "eu-west-1"
                }
            }
        }
    ]
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.