AWS MFA(Multi Factor Auth.)가 설정된 상태입니다. PC가 바뀌어서 aws console 접속도 안되고, MFA 키값 저장도 안해서 MFA 인증 설정을 할 수 없는 난처한 상황입니다. 그렇지만 EC2 서버 접속은 가능하고, aws configure에 액세스 키와 시크릿 키는 모두 저장된 상태입니다.

​이렇게 난감한 상황에서 바로 MFA 비활성화해서 AWS Console을 로그인하는 방법이 필요합니다. 해결책은 아래에 있습니다.

1. aws configure 확인

 aws ec2 접속한 상태에서 aws 접속 키는 아래와 같이 저장되어 있음을 확인합니다.

ubuntu@ip-100-0-11-89:~$ aws configure list
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                <not set>             None    None
access_key     ****************2Q6Z shared-credentials-file
secret_key     ****************ufYS shared-credentials-file
    region           ap-northeast-2      config-file    ~/.aws/config
ubuntu@ip-100-0-11-89:~$

2. MFA의 SerialNumber 확인

MFA 비활성화 위해 아래 명령어를 사용해서 이전에 설정한 MFA SerialNumber 값을 확인합니다. 즉, arn:aws:iam::061234567890:mfa/manager 값을 별도로 보관합니다.

ubuntu@ip-100-0-11-89:~/temp$ aws iam list-virtual-mfa-devices
{
    "VirtualMFADevices": [
        {
            "SerialNumber": "arn:aws:iam::061234567890:mfa/manager",
            "User": {
                "Path": "/",
                "UserName": "mspmanager",
                "UserId": "ABCDE5QJOOGZE123QABCD",
                "Arn": "arn:aws:iam::061234567890:user/manager",
                "CreateDate": "2022-02-20T11:10:00Z",
                "PasswordLastUsed": "2022-03-25T05:09:39Z"
            },
            "EnableDate": "2022-03-25T00:22:35Z"
        }
    ]
}

3. aws iam deactivate-mfa-device 구문으로 비활성화

aws iam deactivate-mfa-device 구문을 수행하며 바로 MFA가 비활성화된다. 즉시 id/pw 만으로 aws console 로그인이 가능해진다.

- 구문 : aws iam deactivate-mfa-device --user-name [IAM 유저] --serial-number [시리얼넘버]

ubuntu@ip-100-0-11-89:~$ aws iam deactivate-mfa-device --user-name manager --serial-number arn:aws:iam::061234567890:mfa/manager

MFA 활성화가 되면, AWS Console에 접속하여 아이디와 비밀번호 입력만으로 로그인이 되는지 확인합니다. 위 순서대로 차근차근 수행했다면, 다른 오류없이 정상 로그인이 될 것입니다.

'AWS' 카테고리의 다른 글

[기초] AWS 아키텍처로 서브넷, EC2, RDS 이해하기  (1) 2023.04.08

AWS의 어려운 용어를 이해하기에 앞서, 생활속의 경험들로 개념을 잡아봅니다.

AWS의 일상 비유

아래는 AWS 클라우드 아키텍처 구성도를 우리가 살고 있는 집 또는 아파트에 빗댄 비유입니다. 크게 보면, 우리 아파트는 공원(보도/화단)과 집 안의 거실 그리고 안방으로 구분할 수 있어요. 우리집에 살고 있는 나와 우리 가족들은 출입문을 통해서 거실로 들어가고 냉장고에서 맛있는 음식도 꺼내 먹을 수 있어요. 그러나 우리 집에 살고 있지 않는 친척이나 친구들, 심지어 도둑(사기꾼)은 공식적인 경로를 통해서만 방문을 할 수 있겠죠. 그건 경비실을 통하거나 인터폰을 통해서 우리 집에 방문하게 됩니다.

그러나 고민해야 할 부분이 있습니다. 극단적이긴 하지만, 만약에 냉장고에 불이 났다고 가정하면, 빠르게 옆에 떨어져 있는 독립된 공간인 안방으로 이동시켜주면 됩니다. 그렇다면 우리는 냉장고에서 아이스크림을 꺼내먹는 일을 멈추지 않아도 되겠죠. 이것이 바로 '안방'이라는 공간은 존재하는 이유입니다. 비유가 극단적이어서 완전히 와닿진 않을 수 있지만, 스토리의 흐름은 이렇습니다.

실 AWS 아키텍처

위에서 구구절절 비유을 들어서 하나의 스토리를 가정해보았습니다. 위의 출입문은 EC2 자원으로 구성한 Bastion host이고, 음식을 대접하는 EC2는 중요한 비즈니스 로직을 처리하는 애플리케이션 서버(WAS)라고 이해하면 됩니다. 또한 중요한 정보를 저장하고 조회하는 냉장고는 DB 또는 NoSQL 서버라고 보면 됩니다. 마지막으로 외부의 방문이나 침입을 경비실은 로드밸런서(Loadbalancer) 서비스인 ELB(Elastic LoadBalancer)라고 보면 됩니다. 여기서 외부에서 직접 통신이 필요한 경비실과 출입문은 인터넷 환경에서 직접 접속이 가능한 퍼블릭 서브넷(Public Subnet)이고, 인터넷과 직접 접근이 불가능한 우리집의 거실과 안방은 프라이빗 서브넷(Private Subnet)이라고 보시면 됩니다.

  • 초록색 공간 = 공원/보도/화단 => 퍼블릭 서브넷(Public Subnet)
  • 파란색 공간 = 거실/안방 => 프라이빗 서브넷(Private Subnet)

만약 AWS를 처음 접한 초보자 분께서는 일단은 단순하게 아래와 같은 구성으로 애플리케이션을 만들어보길 권고합니다. 그리고 나서 이중화를 어떻게 해야할지, 가용성을 어떻게 높힐지, AWS 자원사용에 대한 비용은 어떻게 줄일 수 있는지 같이 고민하는 시간을 갖도록 하겠습니다.

비록 아래 그림은 클라우드 자원들이 인터넷과 직접 통신이 가능한 퍼블릭 서브넷(Public Subnet)에 위치하므로, 여러분이 생성한 자원은 미국에서, 태국에서, 영국에서,, 등 전세계예서 노출되어 있는 상태입니다. 

인터넷 환경에 직접 노출된 위험한 상태

일반적으로 안전한 서비스를 구성하기 위해서는 최소한 아래와 같은 구성이 필요하다. 서비스를 주요 수행하는 EC2와 RDS는 임의 접근이 불가능하도록 프라이빗한 공간에 위치시키는게 안전할 것이다.

 

외위 추가적이고, 필수적인 자원들(Security Gruop, NACL, EC2, RDS, ELB 등)은 매우 쉬운 용어로 설명할 예정입니다.​

 

'AWS' 카테고리의 다른 글

[TIP] AWS MFA 비활성화 처리(aws cli)  (0) 2023.04.08

+ Recent posts