Apakah mungkin untuk membatasi pengguna / akun AWS ke wilayah tertentu?

24

Kami menjalankan sejumlah layanan AWS di wilayah eu-west-1. Sayangnya tampaknya banyak pengembang dan karyawan kami yang perlu membuat sumber daya sementara melupakan aspek AWS ini dan tidak memilih wilayah ini sebelum meluncurkan instance EC2, membuat ember S3, dll. Akibatnya, mereka sering berakhir di wilayah us-east-1 sejak itu tampaknya merupakan default yang selalu digunakan AWS.

Apakah ada cara melalui IAM (atau cara lain) untuk membatasi akun pengguna untuk hanya meluncurkan / membuat sesuatu dalam wilayah tertentu?

Bruce P.
sumber

Jawaban:

25

Sayangnya Anda tidak dapat melakukan ini secara global. Namun, untuk setiap produk AWS yang mendukungnya, Anda biasanya dapat membatasi akses ke wilayah tertentu.

Misalnya, untuk EC2, Anda dapat melakukan hal berikut:

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

Tentu saja, Anda harus mengeluarkan denyaturan juga jika perlu.

Berikut dokumentasi untuk hal di atas.

EEAA
sumber
Sempurna. Ini persis seperti yang saya butuhkan. Terima kasih!
Bruce P
5
Alih-alih "Condition": { "condition": {} }itu harus menyatakan"Condition": { "StringEquals": {} }
Jasny - Arnold Daniels
Bagaimana dengan layanan lain seperti S3?
Yves M.
7

Gunakan sesuatu seperti ini. Contoh ini membatasi akses ke dua wilayah AWS. Ubah sesuai kebutuhan.

{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Deny",
    "Action": "*",
    "Resource": "*",
    "Condition": {
      "StringNotEquals": {
        "aws:RequestedRegion": [
          "eu-central-1",
          "eu-west-1"
        ]
      }
    }
  }]
}
sandstrom
sumber
3
Dengan yang baru aws:RequestedRegion, ini adalah jawaban yang sekarang paling relevan
majikman
1
Terima kasih, dengan kebijakan ini Anda dapat menggunakan kebijakan AWS default yang tersedia dan hanya melampirkan satu ini secara inline dan Anda secara efektif membatasi layanan apa pun.
lkraider
7

Sejak 25 April 2018, AWS memiliki sumber daya global: RequestedRegion yang dapat Anda gunakan untuk membatasi wilayah tempat pengguna dapat mengirim permintaan. Ini terlepas dari layanan yang regional atau tidak, sehingga Anda dapat menerapkannya ke semua layanan.

Blog Keamanan AWS

Sayangnya Anda tidak dapat menggunakan ini dalam Kebijakan Kontrol Layanan organisasi untuk menerapkannya ke akun secara global, dan Anda harus melampirkan kebijakan tersebut ke setiap prinsipal tunggal dan mengauditnya, jika Anda ingin mengunci akun di wilayah tertentu.

jaferrando
sumber
4

Jawaban yang diterima pada utas ini berikan Syntax Error on Policy. Di bawah ini bekerja untuk saya:

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

}

PUG
sumber
3

Jika Anda hanya meminta tindakan EC2, maka ya, Anda dapat membatasinya sebagaimana disebutkan dalam respons lain. Jika ini layanan lain, saya tidak yakin Anda bisa melakukannya ... mis. AWS Lambda tampaknya tidak memiliki lambda:regionAnda dapat menambah kondisi.

nanodgb
sumber
0

Dari FAQ untuk AWS IAM :

T: Dapatkah pengguna didefinisikan secara regional? Bukan awalnya. Pengguna adalah entitas global, seperti Akun AWS hari ini. Tidak ada wilayah yang harus ditentukan saat mendefinisikan izin pengguna. pengguna dapat menggunakan layanan AWS di wilayah geografis mana pun.

mtak
sumber
3
Wow. Apa jawaban yang ditulis dengan buruk dari Amazon. "Tidak awalnya." Apakah itu menyiratkan bahwa hal itu dapat dilakukan setelah akun dibuat? Apakah itu berarti AWS tidak bisa ketika pertama kali diluncurkan tetapi sekarang bisa? "Tidak ada wilayah yang harus ditentukan saat mendefinisikan izin pengguna." Saya tidak bertanya apakah itu diperlukan. Saya bertanya apakah mungkin untuk melakukannya. "Pengguna dapat menggunakan layanan AWS di wilayah geografis mana pun." Tampaknya tidak lagi berdasarkan apa yang diposting EEAA di atas. Pernyataan "kondisi" di IAM memungkinkan Anda membatasi beberapa layanan berdasarkan wilayah. Terima kasih sama saja.
Bruce P
1
@BruceP - itu bukan jawaban yang buruk. Tidak apa-apa. Pengguna bersifat global. Hak istimewa pengguna dapat dibatasi.
EEAA
0

Saya menemukan ini berfungsi lebih baik (memungkinkan peluncuran / penghentian / penghentian / dll.) Untuk memberikan akses penuh EC2 bagi pengguna untuk hanya satu wilayah - setiap wilayah lain menunjukkan kesalahan selama setiap upaya akses.

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

Yang ini berfungsi untuk saya, saya mencoba membuat kebijakan dengan json yang disebutkan sebagai jawaban yang diterima tetapi tidak berhasil untuk saya.

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

Itulah solusi saat ini - menggunakan "eu-west-1":

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect"    : "Allow",
            "Action"    : "*",
            "Resource"  : "*",
            "Condition": 
            {
                "StringEquals": {
                    "aws:RequestedRegion": "eu-west-1"
                }
            }
        }
    ]
}
Xtigyro
sumber