⭐️ Amazon Web Service/AWS IAM

[AWS IAM] 특정 리전에서만 사용 가능정책, MFA force 정책 적용하기

mini_world 2020. 11. 2. 14:08
목차 접기

 

안녕하세요 😉😘

AWS 계정을 잘 관리하지 못해 보안사고가 종종 발생하고는 합니다. 
계정 유출 사고가 발생하면, 모든 리전에서 생성할 수 있는 리소스는 모두 사용하기때문에 눈깜짝할 사이에 몇천만원이 과금될수있습니다!!! 

이런 경우를 사전에 방지하기위해, AWS계정 담당자는 지속해서 모니터링하고 불법적, 비인가적인 사용자를 파악하는것이 매우 중요합니다.

적어도, 사용하고 있는 리전에서만 (예를들어, 서울리전만 사용을 허용한다던지) AWS 서비스를 사용하며,
MFA 할당이 되어있지 않다면 아무런 작업을 할 수 없도록 장치해놓을 수 있습니다.

이번 포스팅에서는 IAM 그룹을 만들고, 그룹에 여러가지 기본적인 정책을 할당한 후 유저를 만들어보도록 하겠습니다.!

각 항목에서 아래 "더보기"를 클릭합니다 :)




🌟 1. 그룹 생성

아래 더보기를 클릭하여 자세한내용을 확인하세요!

더보기
이번 단계에서는, 그룹을 생성합니다.
사용자마다 정책을 할당하는것보다, 직무/역할기반으로 그룹을 생성, 정책을 할당하고 사용자를 그룹에 할당하는것이 좋습니다. 

AWS 콘솔에 로그인 한 후, IAM 서비스의 콘솔에 접속합니다.

 

IAM 콘솔 왼쪽 네비게이션바에서 새로운 그룹을 생성해야합니다.
왼쪽 상단의 "새로운 그룹 생성"을 클릭합니다.

 

그룹생성 단계1에서 그룹 이름(seoul-user-group)을 입력하고 다음단계로 넘어갑니다.

그룹생성 단계2에서 정책을 연결할 수 있습니다.
하지만, 정책을 나중에 할당할 예정이므로 아무것도 선택하지 않고 다음단계로 넘어갑니다.

그룹생성 단계3에서 검토 후 "그룹생성"을 클릭합니다.

그룹이 정상적으로 생성되었는지 확인합니다.



🌟 2. 정책 생성

아래 더보기를 클릭하여 자세한내용을 확인하세요!     

          2-1) RegionLimited-Policy : 특정 리전에서만 사용 가능하도록 제한

더보기

사용자 스스로가 MFA를 할당하고 사용할 수 있도록 권한을 부여하는 정책입니다.
이 정책을 할당하지 않으면 사용자는 스스로 MFA Device를 생성할수 없습니다.

IAM 콘솔 왼쪽 "정책"에서 "정책생성"을 클릭합니다.

정책 생성 페이지에서 Json 탭을 선택하고 아래의 정책을 넣어줍니다.
  복사붙여넣기하여 사용하세요.😁

 

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Deny",
            "Action": "*",
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringNotEquals": {
                    "aws:RequestedRegion": [
                        "us-east-1",
                        "ap-northeast-2"
                    ]
                }
            }
        }
    ]
}

 

정책을 이름과 설명을 넣고 정책을 생성합니다.
- 이름: UG-MFA-SelfManage-Policy
- 설명: Use this IAM policy to allow users to self-manage an MFA device.

다음 단계로 넘어갑니다.

          2-2) UG-MFA-SelfManage-Policy : 사용자 스스로가 MFA를 할당하고 사용할 수 있도록 권한 부여


더보기

특정 리전에서만 사용 가능하도록 제한하는 정책입니다.
이 정책에서 허용하는 리전은 미국 동부 (버지니아 북부) us-east-1, 아시아 태평양 (서울) ap-northeast-2입니다.
AWS 서비스는 모두 서울리전에서만 사용중이므로, 서울리전을 허용합니다. 
IAM, Route53등 사용리전이 "글로벌"로 표기되는 서비스를 위해 us-east-1 허용이 필요합니다.

IAM 콘솔 왼쪽 "정책"에서 "정책생성"을 클릭합니다.

정책 생성 페이지에서 Json 탭을 선택하고 아래의 정책을 넣어줍니다. 복사붙여넣기하여 사용하세요.😁

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "iam:DeactivateMFADevice",
                "iam:EnableMFADevice",
                "iam:ResyncMFADevice",
                "iam:CreateVirtualMFADevice",
                "iam:ListMFADevices",
                "iam:GetUser",
                "iam:CreateAccessKey",
                "iam:DeleteVirtualMFADevice"
            ],
            "Resource": "*"
        }
    ]
}

정책을 이름과 설명을 넣고 정책을 생성합니다.
- 이름: UG-RegionLimited-Policy
- 설명: only allow using us-east-1 and np-northeast-2 region

완료되었습니다! 다음 단계로 넘어가주세요!

       

          2-3) UG-ForceUsingMFA-Policy : MFA를 사용하지 않는경우 사용제한

더보기

MFA를 사용하지 않는경우 사용을 제한하는 정책입니다.
이 정책을 할당하지 않으면, MFA Device를 할당하지 않아도 허용된 모든 리소스를 사용할 수 있습니다.

IAM 콘솔 왼쪽 "정책"에서 "정책생성"을 클릭합니다.

 

정책 생성 페이지에서 Json 탭을 선택하고 아래의 정책을 넣어줍니다. 복사붙여넣기하여 사용하세요.😁
** Condition 부분에 BoolIfExists 에서 Bool 로 조건을 바꾸었습니다. BoolIfExists로 하면 액세스 키로 하는거 다 권한오류나와요...ㅠ Bool 로 넣으세요!!!!!!

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "NotAction": "iam:*",
            "Resource": "*",
            "Condition": {
                "Bool": {
                    "aws:MultiFactorAuthPresent": "false"
                }
            }
        }
    ]
}

정책을 이름과 설명을 넣고 정책을 생성합니다.
- 이름: UG-ForceUsingMFA-Policy
- 설명: enable MFA on all using all AWS services.

정책 생성이 완료되었습니다.!

다음단계로 갑시다!



🌟 3. 그룹에 정책 할당

아래 더보기를 클릭하여 자세한내용을 확인하세요!     

더보기

seoul-user-group 그룹에 정책을 할당하겠습니다. 
IAM 콘솔 왼쪽 네비게이션바에서 "그룹"을 클릭한 후 "seoul-user-group"를 선택합니다.

하위 "권한"탭에서 "정책연결"을 클릭합니다.

위에서 생성한 정책 3개를 연결합니다.
필터에서 UG를 검색한 후 세개의 정책을 모두 연결 시켰습니다. "정책연결'을 클릭합니다.

정책이 연결된것을 확인합니다. 
이제 이 그룹에 연결된 사용자는 서울리전과 버지니아 리전에서만 AWS서비스 사용이 가능하며, MFA 2차인증 없이는 콘솔을 사용할 수 없습니다.

이제, AWS서비스 허용정책/IAM Password Change 정책을 연결합니다.
다시한번 "정책연결"을 클릭합니다. 필터에서 power을 검색하고, powerUserAccess를 연결합니다.
Administrator는 모든 권한이 다 있어 스스로 IAM정책을 변경할 수 있으며, PowerUser는 그룹관리등의 IAM 권한이 빠져있습니다.

필터에서 pass을 검색하고, IAMUserChangePassword를 연결하고 "정책연결"을 클릭합니다.

이제, 모든 정책이 연결되었습니다.
아래 모든 정책이 잘 할당되어있는지 확인합니다.

만약 특정 권한을 할당하려면, "PowerUserAccess" 정책 분리하고 새로운 정책을 연결해서 사용할 수 있습니다!



🌟 4. 사용자 생성

아래 더보기를 클릭하여 자세한내용을 확인하세요!    

더보기

왼쪽 네비게이션바에서 "사용자"를 선택하고 "사용자 추가"를 클릭합니다. 

사용자 이름과 액세스유형, 비밀번호 재설정 필요에 체크한 후 "다음:권한"을 클릭합니다.

생성해놓은 그룹에 지금 사용자를 추가합니다.
그룹에 "Seoul-user-group"을 선택하고 "다음:태그"를 클릭합니다. 

사용자에 태그를 할당하고 "다음:검토"를 클릭합니다.

검토페이지에서 사용자 검토한 후 "사용자 만들기"를 클릭합니다.

사용자 생성이 완료되었습니다 .
".csv 다운로드"를 클릭여 사용자 계정정보를 저장합니다. 

완료되었습니다.
이제 마지막 단계, 정상동작 테스트를 진행하겠습니다 :)



🌟 5. 정상 동작 테스트

아래 더보기를 클릭하여 자세한내용을 확인하세요!     

더보기

생성한 사용자 계정으로 로그인합니다. 

최초 로그인 시 비밀번호를 변경해야 로그인 가능합니다.
비밀번호를 변경합니다.

콘솔에 로그인되었습니다.! 
MFA를 할당하지 않았기때문에 EC2 목록이 보이지 않습니다. 
아래와 같이 "인스턴스 데이터를 가져오는 중 오류발생: You are not authorized to perform this operation" 오류가 발생합니다.

이게...! 정상입니다..!!

이제 MFA를 등록하기위해 "내 보안 자격증명"을 선택합니다.

"MFA 디바이스 할당"을 클릭합니다.

가상 MFA디바이스를 등록합니다.

이제 MFA 디바이스 등록이 완료되었습니다.
로그아웃 후 다시 로그인하여 권한을 확인합니다.

계정으로 로그인 시, 아까와는 다르게 MFA인증이 필요합니다.

MFA코드로 인증 후 로그인 합니다.

이제, 서울리전의 EC2 목록이 정상적으로 보이는것이 확인됩니다.
이제 다른 리전으로 들어가 인스턴스의목록이 보이지 않는것을 확인합니다.

서울 외의 다른 리전에서는 EC2의 목록이 제대로 출력되지않습니다.
서울 및 버지니아 리전 외에는 사용이 불가능합니다.

모든 테스트 완료되었습니다! :)


 

728x90