Czy można ograniczyć użytkowników / konta AWS do określonego regionu?

24

Prowadzimy szereg usług AWS w regionie eu-west-1. Niestety wydaje się, że wielu naszych programistów i innych pracowników, którzy muszą utworzyć tymczasowe zasoby, zapomina o tym aspekcie AWS i nie wybiera tego regionu przed uruchomieniem instancji EC2, tworzeniem segmentów S3 itp. W rezultacie często kończą w region us-east-1, ponieważ wydaje się być domyślnym, którego zawsze używa AWS.

Czy istnieje jakiś sposób poprzez IAM (lub w inny sposób) ograniczyć konta użytkowników, aby uruchamiać / tworzyć rzeczy tylko w określonym regionie?

Bruce P.
źródło

Odpowiedzi:

25

Niestety nie możesz tego zrobić na całym świecie. Jednak dla każdego produktu AWS, który go obsługuje, zwykle można ograniczyć dostęp do określonego regionu.

Na przykład dla EC2 możesz wykonać następujące czynności:

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

Oczywiście w denystosownych przypadkach należy również wydać regułę.

Oto dokumentacja powyższego.

EEAA
źródło
Doskonały. To wygląda dokładnie tak, jak potrzebuję. Dzięki!
Bruce P
5
Zamiast "Condition": { "condition": {} }tego należy podać"Condition": { "StringEquals": {} }
Jasny - Arnold Daniels
Co z innymi usługami, takimi jak S3?
Yves M.
7

Użyj czegoś takiego. Ten przykład ogranicza dostęp do dwóch regionów AWS. Zmodyfikuj w razie potrzeby.

{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Deny",
    "Action": "*",
    "Resource": "*",
    "Condition": {
      "StringNotEquals": {
        "aws:RequestedRegion": [
          "eu-central-1",
          "eu-west-1"
        ]
      }
    }
  }]
}
sandstrom
źródło
3
W przypadku nowej aws:RequestedRegionjest to najbardziej
aktualna
1
Dziękujemy, dzięki tej polityce możesz korzystać z domyślnych dostępnych polityk AWS i dołączyć tylko jedną wewnętrzną i skutecznie ograniczyć wszelkie usługi.
lkraider
7

Od 25 kwietnia 2018 r. AWS ma globalny aws zasobów: RequestedRegion, którego można użyć do ograniczenia regionów, do których użytkownik może wysyłać żądania. Jest to niezależne od usługi o zasięgu regionalnym lub nie, więc możesz zastosować ją do wszystkich usług.

Blog bezpieczeństwa AWS

Niestety nie możesz tego użyć w polityce kontroli usług organizacji, aby zastosować ją do konta globalnie, i musisz dołączyć zasadę do każdej jednostki głównej i sprawdzić, czy tak jest, jeśli chcesz zablokować konto w niektórych regionach.

jaferrando
źródło
4

Zaakceptowano odpowiedź w tym wątku Syntax Error on Policy. Poniżej działało dla mnie:

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

}

MOPS
źródło
3

Jeśli poprosisz tylko o działania EC2, to tak, możesz to ograniczyć, jak wspomniano w innych odpowiedziach. Jeśli to inne usługi, nie jestem pewien, czy możesz to zrobić ... np. AWS Lambda nie wydaje się, lambda:regionabyś mógł dodać do warunku.

nanodgb
źródło
0

Z FAQ dla AWS IAM :

P: Czy użytkownicy mogą być definiowani regionalnie? Początkowo nie. Użytkownicy są podmiotami globalnymi, podobnie jak dziś konto AWS. Podczas definiowania uprawnień użytkownika nie trzeba określać regionu. użytkownicy mogą korzystać z usług AWS w dowolnym regionie geograficznym.

mtak
źródło
3
Łał. Co za źle napisana odpowiedź od Amazon. „Nie początkowo”. Czy to oznacza, że ​​można to zrobić po utworzeniu konta? Czy to oznacza, że ​​AWS nie mógł, kiedy został uruchomiony, ale teraz? „Podczas definiowania uprawnień użytkownika nie trzeba określać regionu”. Nie zapytałem, czy to było wymagane. Zapytałem, czy można to zrobić. „użytkownicy mogą korzystać z usług AWS w dowolnym regionie geograficznym”. Najwyraźniej już nie w oparciu o to, co opublikował EEAA powyżej. Instrukcja „warunek” w IAM pozwala ograniczyć niektóre usługi według regionu. Dziękuję tak samo.
Bruce P
1
@BruceP - to nie jest zła odpowiedź. Jest całkowicie w porządku. Użytkownicy są globalni. Uprawnienia użytkownika można ograniczyć.
EEAA
0

Uważam, że działa to lepiej (pozwala na uruchomienie / zatrzymanie / zakończenie / itp.), Aby udzielić użytkownikowi pełnego dostępu EC2 tylko do jednego regionu - każdy inny region pokazuje błąd podczas każdej próby dostępu.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": "*",
            "Effect": "Allow",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "ec2:Region": "us-east-1"
                }
            }
        }
    ]
}
Al Joslin
źródło
0

Ten działa dla mnie, próbowałem stworzyć politykę z jsonem wymienionym jako akceptowana odpowiedź, ale to nie działa dla mnie.

{
    "Version": "2012-10-17",
    "Statement": [{
        "Action": "ec2:*",
        "Effect": "Allow",
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "ec2:Region": [
                    "us-east-1"
                ]
            }
        }
    }]
}
Pranav Kumar
źródło
0

Takie jest obecne rozwiązanie - używając „eu-west-1”:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect"    : "Allow",
            "Action"    : "*",
            "Resource"  : "*",
            "Condition": 
            {
                "StringEquals": {
                    "aws:RequestedRegion": "eu-west-1"
                }
            }
        }
    ]
}
Xtigyro
źródło