Question

AWS 웹 콘솔상으로 루트 계정이 접속할 때 IP를 제한 하는 방법이 있나요?


Answer


AWS 모범 사례에 따르면 일상적인 작업에 루트 사용자를 사용하지 않는 것을 권장하고 있습니다.

또한 ROOT 계정의 IP 접속 제한에 대한 해결 방안은 없습니다.

대책 방안으로서 ROOT 계정과 근접한 권한을 가질 수 있는 새로운 유저를 생성하고 해당 유저에 특정한 정책을 부여하여 담당자님이 원하시는 바와 같이 특정 IP만 AWS Console에 접근 가능 하도록 할 수 있습니다.

실제로 해당 유저를 통해 AWS 서비스를 이용하는 것이 모범 사례로 보여지고 있습니다.


덧붙여, ROOT 계정에 루트 사용자 보안 인증에 대해 MFA를 구성함으로서 이중 보안을 통해 담당자님의 계정을 보호하시길 권유드립니다.

# MFA 설정 방법은 아래 문서를 참고 하시길 바랍니다.

https://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/id_credentials_mfa_enable_virtual.html

  

1. AWS IAM 서비스에 접근하여 '사용자'를 선택합니다.


2. '사용자 추가'를 선택합니다.


3. 사용자 이름을 기입하고 암호를 선택한 뒤, 암호를 입력합니다.

(실제 AWS Login 시 해당 사용자 이름과 암호가 필요합니다.) 



4. '기존 정책 직접 연결'을 선택하신 후, 실제 Root 권한을 갖게 될 'AdministratorforAccess' 정책을 선택합니다


5. 사용자를 생성하게 되면 다음과 같이 해당 유저로 콘솔에 접근할 수 있는 URL이 생성 됩니다.


6. 해당 URL을 선택하여 생성한 유저로 콘솔에 로그인합니다.


7. 특정 IP로 접근하기 위한 정책을 설정하기 위해 '정책'을 선택 후, '정책 생성'을 클릭합니다.


8. 정책 편집을 위해 JSON을 클릭합니다.


9. 해당 JSON을 복사하신 다음 '사무실 IP'에 담당자님 IP를 기입한 후 정책 이름 기입하여 정책 생성을 완료합니다.

{

    "Version": "2012-10-17",

    "Statement": {

        "Effect": "Deny",

        "Action": "*",

        "Resource": "*",

        "Condition": {

            "NotIpAddress": {

                "aws:SourceIp": [

                    "(사무실 IP)/32"

                ]

            },

            "Bool": {"aws:ViaAWSService": "false"}

        }

    }

}

참고로 위의 정책에서는 aws:ViaAWSService 라는 키가 false로 되어 있어 서비스에 의해 요청이 수행되지 않은 경우에만 IP 주소를 허용합니다.

만약 서비스에 의해 요청이 수행되는 경우 조건을 걸고 싶으시다면 "Bool": {"aws:ViaAWSService": "false"} 부분을 "Bool": {"aws:ViaAWSService": "true"} 로 변경 해주세요.


또한 위와 같은 정책을 사용 시 AWS CloudShell에서 시작된 API 요청은 회사의 IP 주소 범위에서 시작되지 않으며, AWS 서비스를 통해 호출되지 않으므로 CloudShell 요청이 거부됩니다. 

거부 문에서 CloudShell 요청을 제외하려면 다음 조건을 추가해 주세요.

"StringNotLike": {

  "aws:userAgent": "*aws-cli*"

}


10. 마지막으로 생성된 정책에 들어가서 연결을 클릭한 다음 생성한 유저를 선택하여 연결을 정책 연결을 해주시면 담당자님이 원하는 IP로만 해당 유저로 콘솔 접근이 가능해집니다.