AWS 사용자 / 계정을 특정 지역으로 제한 할 수 있습니까?


24

eu-west-1 리전에서 여러 AWS 서비스를 운영하고 있습니다. 불행히도 임시 리소스를 생성해야하는 많은 개발자와 다른 직원은 AWS의 이러한 측면을 잊어 버리고 EC2 인스턴스를 시작하고 S3 버킷을 생성하기 전에이 리전을 선택하지 않는 것 같습니다. AWS가 항상 사용하는 기본값 인 것처럼 보이므로 us-east-1 리전입니다.

IAM (또는 다른 방법)을 통해 특정 지역 내에서만 항목을 시작 / 만들도록 사용자 계정을 제한하는 방법이 있습니까?

답변:


25

불행히도 전 세계적 으로이 작업을 수행 할 수 없습니다. 그러나이를 지원하는 각 AWS 제품에 대해 일반적으로 특정 리전으로의 액세스를 제한 할 수 있습니다 .

예를 들어 EC2의 경우 다음을 수행 할 수 있습니다.

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

물론, 당신은 발행해야합니다 deny 적절한 규칙 .

위의 문서는 다음과 같습니다 .


완전한. 이것은 내가 필요한 것 같습니다. 감사!
Bruce P

5
대신에 "Condition": { "condition": {} }그것을 명시해야"Condition": { "StringEquals": {} }
Jasny - 아놀드 다니엘스

S3와 같은 다른 서비스는 어떻습니까?
Yves M.

7

이런 식으로 사용하십시오. 이 예에서는 두 AWS 리전으로의 액세스를 제한합니다. 필요에 따라 수정하십시오.

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

3
새로운 것과 함께 aws:RequestedRegion, 이것은 지금 가장 관련이있는 답변입니다
majikman

1
이 정책을 사용하면 기본 AWS 사용 가능 정책을 사용하고이 정책을 인라인으로 만 연결할 수 있으며 모든 서비스를 효과적으로 제한 할 수 있습니다.
lkraider

7

2018 년 4 월 25 일부터 AWS에는 사용자가 요청을 보낼 수있는 리전을 제한하는 데 사용할 수있는 전역 리소스 aws : RequestedRegion이 있습니다. 이는 서비스가 지역적이든 아니든 독립적이므로 모든 서비스에 적용 할 수 있습니다.

AWS 보안 블로그

불행히도 조직의 서비스 제어 정책에서이 정책을 사용하여 전 세계 계정에 적용 할 수 없으며, 특정 지역에 계정을 잠 그려면 모든 단일 보안 주체에 정책을 연결하고 감사해야합니다.


4

이 글타래에 허용 된 답변이 제공되었습니다 Syntax Error on Policy. 아래는 나를 위해 일했습니다.

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

}


3

EC2 조치 만 요청하면 다른 응답에서 언급 한대로 제한 할 수 있습니다. 다른 서비스라면 할 수 있을지 모르겠습니다. 예를 들어 AWS Lambda는 lambda:region조건에 추가 할 수 있는 것으로 보이지 않습니다 .


0

AWS IAM에 대한 FAQ에서 :

Q : 사용자를 지역별로 정의 할 수 있습니까? 처음에는 아닙니다. 사용자는 오늘날 AWS 계정과 같은 글로벌 엔터티입니다. 사용자 권한을 정의 할 때 지역을 지정할 필요가 없습니다. 사용자는 모든 지역에서 AWS 서비스를 사용할 수 있습니다.


3
와우. 아마존의 답변이 잘못되었습니다. "처음에는 아닙니다." 계정을 만든 후에 수행 할 수 있다는 의미입니까? AWS가 처음 시작되었을 때는 불가능했지만 지금은 가능하지 않습니까? "사용자 권한을 정의 할 때 지역을 지정할 필요가 없습니다." 나는 그것이 필요한지 묻지 않았다. 그렇게 할 수 있는지 물었습니다. "사용자는 모든 지역에서 AWS 서비스를 사용할 수 있습니다." 분명히 EEAA가 위에 게시 한 내용을 기반으로하지 않습니다. IAM의 "condition"문을 사용하면 일부 서비스를 지역별로 제한 할 수 있습니다. 고마워요
Bruce P

1
@BruceP-그것은 나쁜 대답이 아닙니다. 완벽하게 괜찮습니다. 전 세계 사용자 입니다. 사용자 권한 이 제한 될 수 있습니다.
EEAA

0

이 기능이 더 잘 작동하여 (시작 / 중지 / 종료 등) 사용자에게 한 지역에만 완전한 EC2 액세스 권한을 부여했습니다. 다른 모든 지역에서는 액세스 시도 중 오류가 표시됩니다.

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

0

이것은 저에게 효과적이며, json이 허용되는 답변으로 언급 된 정책을 만들려고했지만 저에게는 효과가 없습니다.

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

0

"eu-west-1"을 사용하는 현재 솔루션입니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect"    : "Allow",
            "Action"    : "*",
            "Resource"  : "*",
            "Condition": 
            {
                "StringEquals": {
                    "aws:RequestedRegion": "eu-west-1"
                }
            }
        }
    ]
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.