Est-il possible de restreindre les utilisateurs / comptes AWS à une région spécifique?

24

Nous exécutons un certain nombre de services AWS dans la région eu-west-1. Malheureusement, il semble que beaucoup de nos développeurs et autres employés qui ont besoin de créer des ressources temporaires oublient cet aspect d'AWS et ne sélectionnent pas cette région avant de lancer des instances EC2, de créer des compartiments S3, etc. En conséquence, ils se retrouvent souvent dans la région us-east-1 car cela semble être la valeur par défaut qu'AWS utilise toujours.

Existe-t-il un moyen via IAM (ou d'une autre manière) de restreindre les comptes d'utilisateurs pour ne lancer / créer que des éléments dans une région spécifique?

Bruce P
la source

Réponses:

25

Malheureusement, vous ne pouvez pas le faire à l'échelle mondiale. Cependant, pour chaque produit AWS qui le prend en charge, vous pouvez généralement limiter l'accès à une certaine région.

Par exemple, pour EC2, vous pouvez effectuer les opérations suivantes:

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

Bien sûr, vous devrez également émettre une denyrègle le cas échéant.

Voici la documentation de ce qui précède.

EEAA
la source
Parfait. Cela ressemble exactement à ce dont j'ai besoin. Merci!
Bruce P
5
Au lieu de cela, "Condition": { "condition": {} }il faut indiquer"Condition": { "StringEquals": {} }
Jasny - Arnold Daniels
Qu'en est-il des autres services comme S3?
Yves M.
7

Utilisez quelque chose comme ça. Cet exemple restreint l'accès à deux régions AWS. Modifiez au besoin.

{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Deny",
    "Action": "*",
    "Resource": "*",
    "Condition": {
      "StringNotEquals": {
        "aws:RequestedRegion": [
          "eu-central-1",
          "eu-west-1"
        ]
      }
    }
  }]
}
sandstrom
la source
3
Avec le nouveau aws:RequestedRegion, c'est la réponse qui est maintenant la plus pertinente
majikman
1
Merci, avec cette politique, vous pouvez utiliser les politiques disponibles par défaut d'AWS et attacher uniquement celle-ci en ligne et vous limitez efficacement tous les services.
lkraider
7

Depuis le 25 avril 2018, AWS dispose d'une ressource globale aws: RequestedRegion que vous pouvez utiliser pour limiter les régions auxquelles un utilisateur peut envoyer des demandes. Ceci est indépendant du fait que le service soit régional ou non, vous pouvez donc l'appliquer à tous les services.

Blog sur la sécurité AWS

Malheureusement, vous ne pouvez pas utiliser cela dans la stratégie de contrôle des services d'une organisation pour l'appliquer à un compte global, et vous devez attacher la stratégie à chaque principal et vérifier qu'il en est ainsi, si vous souhaitez verrouiller un compte dans certaines régions.

jaferrando
la source
4

Réponse acceptée sur ce fil donné Syntax Error on Policy. Ci-dessous a fonctionné pour moi:

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

}

CARLIN
la source
3

Si vous ne demandez que des actions EC2, alors oui, vous pouvez le limiter comme mentionné dans d'autres réponses. S'il s'agit d'autres services, je ne suis pas sûr que vous puissiez le faire ... Par exemple, AWS Lambda ne semble pas en avoir un que lambda:regionvous pouvez ajouter à une condition.

nanodgb
la source
0

De la FAQ pour AWS IAM :

Q: Les utilisateurs peuvent-ils être définis au niveau régional? Pas au départ. Les utilisateurs sont des entités mondiales, comme c'est le cas aujourd'hui pour un compte AWS. Aucune région ne doit être spécifiée lors de la définition des autorisations utilisateur. les utilisateurs peuvent utiliser les services AWS dans n'importe quelle région géographique.

mtak
la source
3
Sensationnel. Quelle réponse mal écrite d'Amazon. "Pas au départ." Cela signifie-t-il que cela peut être fait après la création du compte? Cela signifie-t-il qu'AWS ne pouvait pas le faire lors de son lancement, mais qu'il le peut maintenant? "Aucune région ne doit être spécifiée lors de la définition des autorisations utilisateur." Je n'ai pas demandé si c'était nécessaire. J'ai demandé s'il était possible de le faire. "les utilisateurs peuvent utiliser les services AWS dans n'importe quelle région géographique." Apparemment plus sur la base de ce que l'EEAA a publié ci-dessus. L'instruction "condition" dans IAM vous permet de restreindre certains services par région. Merci tout de même.
Bruce P
1
@BruceP - ce n'est pas une mauvaise réponse. C'est parfaitement bien. Les utilisateurs sont mondiaux. Les privilèges des utilisateurs peuvent être limités.
EEAA
0

J'ai trouvé que cela fonctionnait mieux (permet de lancer / arrêter / terminer / etc.) Pour accorder un accès EC2 complet à un utilisateur à une seule région - chaque autre région affiche une erreur lors de toute tentative d'accès.

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

Celui-ci fonctionne pour moi, j'ai essayé de créer une politique avec le json mentionné comme réponse acceptée mais cela ne fonctionne pas pour moi.

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

C'est la solution actuelle - en utilisant "eu-west-1":

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