골든래빗은 더 탁월한 가치를 제공하는 콘텐츠 프로덕션 & 프로바이더 입니다. 골든래빗은 취미, 경제, 수험서, 만화, IT 등 다양한 분야에서 책을 제작하고 있습니다.골든래빗은 더 탁월한 가치를 제공하는 콘텐츠 프로덕션 & 프로바이더 입니다. 골든래빗은 취미, 경제, 수험서, 만화, IT 등 다양한 분야에서 책을 제작하고 있습니다.

[AWS 03] AWS를 잘 쓰려면 알아야 하는 기본 서비스

2026년 4월 29일조회 1

이 글은 《AWS 잘하는 개발자 되기》에서 발췌했습니다.

AWS 잘하는 개발자 되기

AWS 잘하는 개발자 되기

ISBN 9791194383512지은이 김재욱40,000
교보문고예스24알라딘

[AWS 03] AWS를 잘 쓰려면 알아야 하는 기본 서비스

[학습 목표]

AWS는 제공하는 서비스가 다양하기 때문에 어떤 종류가 있고 어떤 서비스를 제공하는지 파악하는 게 중요합니다. 이번 장에서는 AWS 클라우드의 기본적인 구조와 원리를 파악하고 AWS 권한을 관리하는 서비스를 알아봅시다.

[핵심 키워드]

AWS 웹 서비스 구조, AWS IAM, IAM 사용자, 루트 사용자, IAM 그룹, IAM 정책, AWS 관리형 정책, 고객 관리형 정책, 인라인 정책, IAM 역할. AWS CLI

[학습 코스]

➊ AWS 동작 원리 이해하기 ➝ ➋ 권한 관리 서비스, AWS IAM 파악하기 ➝ ➌ AWS IAM 생성하기

1. AWS에서 동작하는 웹 서비스 구조와 원리 파악하기

3장은 AWS에서 동작하는 웹 서비스의 구조와 원리를 학습합니다. AWS의 웹 서비스 구조는 기본적으로 클라우드 기반으로 구축되며, 그중심이 되는 서비스는 다음과 같은 구성 요소들이 포함됩니다.

AWS IAM : 사용자 및 AWS 리소스에 대한 액세스를 제어하는 권한 관리 서비스

아마존 EC2 : AWS에서 제공하는 가상 클라우드 서버

아마존 RDS : 다양한 데이터베이스 엔진을 제공하는 관계형 데이터베이스

아마존 S3 : 객체(파일 및 데이터)를 저장하는 객체 스토리지 서비스

4가지 서비스는 클라우드에서 웹 서비스를 구성하는 기본 서비스입니다. 클라우드 기반 서버와 스토리지, 데이터베이스, 보안 등의 다양한 기능과 옵션을 제공하여 사용자가 필요한 웹 서비스를 구축하고 운영할 수 있도록 합니다. 다음 그림을 통해 AWS의 4가지 기본 서비스를 이용한 웹 서비스의 구성을 살펴봅시다.

앞의 그림은 AWS의 4가지 기본 서비스(IAM, EC2, RDS, S3)를 이용하여 간단하게 웹 서비스를 구성한 구조입니다.

※ 지금 당장 위의 구성을 이해하지 못해도 괜찮습니다. 3장 학습을 마친 다음 확인해보세요.

➊ 사용자가 AWS 서비스인 세션 매니저Session Manager를 이용하여 EC2 인스턴스로 안전하게 접속을 시도합니다. ➋ EC2 인스턴스에서는 세션 매니저를 이용할 수 있는 권한과 아마존 S3에 대한 액세스 권한을 가진 IAM 역할을 추가합니다. ➌ 아마존 S3에서는 정적 데이터를 관리하거나, EC2 인스턴스와의 상호작용을 통해 데이터를 주고받습니다. ➍ EC2 인스턴스에서 RDS로 접근하여 데이터베이스를 관리하거나 쿼리를 관리할 수 있습니다. ➎ 사용자는 설치한 AWS CLI를 이용하여 접속하고자 하는 AWS 환경으로 세션 매니저 포트 포워딩 세션을 생성합니다. ➏ 포트 포워딩을 세션을 생성하면 사용자 환경과 AWS를 이어주는 세션 매니저 터널Session Manager Tunnel이 생성되며, 생성된 터널을 이용하여 사용자 환경에서 EC2 인스턴스 혹은 RDS로 접속할 수 있습니다.

이렇게 4가지 서비스를 이용하여 간단한 웹 서비스를 구성을 살펴봤습니다. 그 외 다양한 AWS 서비스를 통해 고가용성, 확장성, 보안 등의 기능을 제공받아 웹 서비스 구축에 도움을 받을 수 있습니다. 이제부터 AWS 4가지 기본 서비스가 제공하는 기능을 파악하고 실습을 통해 구성 및 운영하는 방법을 알아보겠습니다.

2. 권한 관리 서비스, AWS IAM 파악하기

AWS에서 권한 관리는 주로 AWS IAM을 활용하여 이루어집니다. 예외로 데이터 관리와 보안에 아마존 S3와 백업과 복원 등을 지원하는 AWS 백업AWS Backup의 백업 볼트와 같은 서비스를 이용해 자체적인 액세스 정책을 설정하여 관리할 수도 있습니다. 이번에는 AWS IAM을 중심으로 AWS 리소스에 대한 액세스 및 권한 관리 방법을 살펴보겠습니다.

2.1 AWS IAM이란?

IAM은 Identity and Access Management의 약자로 AWS 계정 내에서 각 사용자, 그룹 또는 리소스에 대한 권한을 중앙 집중적으로 관리합니다. 이를 통해 AWS 리소스에 대한 액세스를 제어하고 각 사용자에게 필요한 작업만 수행할 수 있는 권한을 부여합니다. 예를 들어 AWS IAM을 구성하는 서비스 중 하나인 IAM 정책을 사용하여 특정 작업 혹은 리소스에 대한 접근을 세부적으로 제어하고 관리할 수 있습니다. AWS IAM에서 사용자 혹은 리소스에 권한을 어떻게 할당는지 그림을 통해 살펴봅시다.

➊ A 사용자에게는 EC2 인스턴스에만 접속할 수 있고 다른 작업은 제한하는 EC2 인스턴스 접속 권한만을 부여합니다. ➋ B 사용자는 RDS에 접근할 수 있는 권한을 부여받고, 다른 작업은 할 수 없습니다. ➌ 권한은 사용자뿐 아니라 리소스에게도 부여하여 특정 작업을 허용할 수도 있습니다. 이제부터 이런 AWS IAM을 구성하는 기능을 살펴보겠습니다.


2.2 AWS IAM 살펴보기

AWS IAM을 구성하는 서비스는 크게 4가지로 나눌 수 있습니다.

IAM 사용자(IAM User) : 개별적으로 식별되는 사용자를 의미하며, AWS 리소스에 접근하는 자격증명을 보유하고 있습니다.

IAM 그룹(IAM Group) : IAM 사용자를 그룹으로 묶어서 정리하는 서비스입니다.

IAM 정책(IAM Policy) : 어떤 사용자 혹은 리소스에 대해 어떤 작업이 허용되는지를 정의하는 서비스입니다.

IAM 역할(IAM Role) : IAM 정책을 담고 있으며, AWS 서비스에 권한을 부여하는 데 사용되는 서비스입니다.

이제부터 AWS IAM의 4가지 서비스의 특징과 AWS 내에서 각각 어떤 활용 방식을 가지는지 살펴보겠습니다.

IAM 사용자

IAM 사용자는 특정 역할과 권한을 갖는 개별 사용자입니다. IAM 사용자는 개별적으로 식별되며, 부여받은 권한을 바탕으로 AWS 리소스를 제어할 수 있습니다. 일반적으로 루트 사용자에 의해 생성 및 관리되며 AWS 내에서 세분화된 권한 관리와 보안 강화에 사용되는 서비스입니다.

루트 사용자와 IAM 사용자의 관계

AWS를 이용할 수 있는 사용자는 루트 사용자와 IAM 사용자로 나눌 수 있습니다. 루트 사용자는 모든 사용자의 최상위 계층에 있으며 관리자administrator 권한을 가지고 있기 때문에 AWS의 모든 작업을 수행할 수 있습니다. 그러나 보안 목적을 위해 루트 사용자의 권한을 최소화하고자 할 때가 있습니다. 이런 루트 사용자에게서 최소한의 권한만을 부여받아 특정 리소스에 접근할 수 있는 것이 IAM 사용자입니다. 조직이나 그룹에서 AWS를 이용할 때 보안과 권한 관리에 루트 사용자를 사용하는 것은 권장하지 않습니다. 각 개별 사용자에게 필요한 권한을 부여하는 것이 일반적이기 때문에 IAM 사용자를 생성하고 해당 사용자에게 필요한 최소한의 리소스에 대한 권한을 부여하는 것이 권장됩니다.

IAM 사용자 접속 방법

그렇다면 IAM 사용자는 어떻게 AWS에 접속을 할까요?

기본적으로 AWS CLIcommand line interface 접속 방법을 지원하며, 추가적으로 AWS 관리 콘솔AWS Management Console 접속 방법을 선택할 수 있습니다.

AWS CLI와 AWS 관리 콘솔이란? AWS CLI는 명령 프롬프트(CMD)에서 AWS 리소스를 관리는 통합 도구입니다. AWS 관리 콘솔은 모든 리소스를 시각적으로 관리할 수 있는 웹 인터페이스이며, 0장에서 AWS에 가입할 때 이용했던 웹사이트가 바로AWS 관리 콘솔입니다.

IAM 그룹

여기서 같은 권한을 가진 IAM 사용자가 20명, 30명 늘어난다면 어떻게 관리해야 할까요? AWS에서는 같은 권한을 가진 사용자를 묶어 관리하는 서비스인 IAM 그룹을 제공합니다.

▼ IAM 사용자 관리를 위한 IAM 그룹 예시

➊ 개발 부서는 개발에 필요한 권한만을 부여받습니다. 이 권한은 해당 부서에 속한 모든 사용자에게 상속되며 이를 통해 개발 부서는 개발에 필요한 리소스에 접근하고 업무를 수행할 수 있습니다. ➋ 보안 부서도 마찬가지로 보안에 필요한 권한만을 부여받으며, 해당 부서에 속한 모든 사용자에게 권한이 상속됩니다. IAM 그룹 기능을 활용하면 권한에 따라 그룹으로 분리하여 효율적으로 권한 부여와 관리를 할 수 있도록 도와줍니다.

실제 운영하는 AWS 계정이라면 IAM 그룹을 만들어 IAM 유저를 관리하는 것을 권장합니다.

IAM 정책

IAM 정책을 통해 IAM 사용자 또는 IAM 그룹, 리소스에 부여할 권한을 생성할 수 있습니다. IAM 정책에서는 AWS 관리형 정책과 고객 관리형 정책, 인라인 정책 3가지로 나누어볼 수 있습니다. 각각 어떤 특징을 가지고 있는지 살펴봅시다.

AWS 관리형 정책은 AWS에서 생성 및 관리하는 정책으로 사용자가 직접 정책을 수정할 수 없으며 정해진 권한만 사용할 수 있습니다. 반면에 고객 관리형 정책은 사용자가 생성하고 관리할 수 있는 정책으로 시각적인 형식이나 JSON 형식으로 권한을 정의할 수 있습니다. 리소스에 대한 특정 액세스 권한을 부여하거나 제한하고 싶을 때 고객 관리형 정책을 사용하는 것이 유용합니다. 마지막으로 인라인 정책은 IAM 사용자, IAM 그룹, IAM 역할에 대해 일대일 관계를 유지하는 정책입니다. 즉 하나의 IAM 사용자, IAM 그룹, IAM 역할에 적용되는 기능이며 각 IAM 사용자, IAM 그룹, IAM 역할이 삭제될 때 적용된 인라인 정책도 함께 삭제됩니다.

IAM 역할

IAM 역할은 IAM 정책을 담을 수 있는 그릇 역할을 하며 IAM 정책이 IAM 사용자, IAM 그룹, IAM 역할에만 적용되는 기능이라면 IAM 역할은 AWS 리소스에 적용되는 기능입니다. 이는 다른 AWS 서비스에서 IAM 역할을 가지고 특정 작업을 수행할 수 있도록 권한을 부여하거나 제한할 때 사용됩니다. 일반적으로 복수의 IAM 정책을 생성하고 IAM 역할에 추가한 다음 해당 IAM 역할을 특정한 리소스에 추가합니다. 복수의 IAM 정책은 각 다른 권한을 정의하는 데 사용할 수 있습니다. IAM 역할이 특정한 권한을 가진 하나의 서비스에만 적용되도록 보장하기 위한 제약조건으로 IAM 역할과 AWS의 서비스는 일대일 대응 관계를 가지며, 생성된 리소스는 한 가지 IAM 역할 만을 부여받을 수 있습니다. IAM 역할이 어떻게 적용되는지 다음 그림으로 이해해봅시다.

➊ AWS에서 제공하는 객체 스토리지 서비스인 S3에 액세스할 수 있는 IAM 정책 및 다른 리소스와 상호작용할 수 있는 IAM 정책을 생성하고, IAM 역할에 추가합니다. ➋ IAM 역할을 AWS 클라우드의 가상 서버인 EC2 인스턴스에 추가합니다. ➌ EC2 인스턴스에서 S3로 액세스할 수 있게 됩니다.

IAM 사용자, IAM 역할에는 최대 20개의 정책을 연결할 수 있습니다.

3. AWS IAM 생성하기

이제 AWS 관리 콘솔을 통해 직접 IAM 사용자를 생성하여 로그인을 시도하겠습니다. IAM 사용자를 생성한 다음 사용자 보안을 위한 MFA 설정과 AWS CLI를 이용할 수 있는 환경을 차례대로 구성하겠습니다.

3.1 클라우드포메이션으로 AWS 사용자 생성하기

01 단계 IAM 사용자 생성을 위한 클라우드포메이션의 전체 코드와 해설입니다. IAM 사용자 생성을 위한 클라우드포메이션 전체 코드는 깃허브 리포지터리 [chapter3] → [IAM]폴더에서 참고하세요.

```IAM_User.yml

#IAM 사용자 파라미터

Parameters: # ➊

UserName:

Description: IAM User Name.

Type: String

UserPassword: # ➋

Description: IAM User Password.

Type: String

NoEcho: true # ➌

```

➊ 먼저 IAM 사용자의 이름과 비밀번호를 입력받을 파라미터를 준비합니다. ➋ 비밀번호의 경우 AWS 콘솔 환경에서의 노출을 피하기 위해 클라우드포메이션 코드 내에서 직접 입력하기보다는 파라미터로 입력받는 것이 좋습니다. ➌ NoEcho를 이용해서 콘솔, 명령줄 도구 또는 API에 표시되지 않도록 입력한 파라미터값을 숨길 수 있으므로 비밀번호 등을 입력할 때는 파라미터와 NoEcho를 활용하도록 합니다.

02 단계 IAM_User.yml 파일에 사용자 생성을 위한 Resources를 추가하겠습니다.

```IAM_User.yml

#IAM 사용자 생성

Resources:

IAMUser:

Type: AWS::IAM::User # ➊

Properties: # ➋

UserName: !Ref UserName # 파라미터에서 입력한 유저 이름을 참조

LoginProfile:

Password: !Ref UserPassword # 파라미터에서 입력한 비밀번호를 참조

ManagedPolicyArns:

- arn:aws:iam::aws:policy/AdministratorAccess # IAM 사용자에게 관리자 권한을 할당

```

➊ IAM 사용자 생성을 위해 Type에는 AWS::IAM::User를 입력합니다. ➋ Properties에 사용자 이름과 비밀번호, 할당할 권한을 지정합니다. 여기서 진행하는 실습은 개인 환경에서의 테스트이기 때문에 관리자 권한을 선택합니다. 개인 환경이 아니라면 작업을 수행할 수 있는 최소한의 권한만을 선택합니다.

03 단계 AWS CLI 환경을 구축하기 위해 IAM 사용자의 액세스 키와 시크릿 키가 필요합니다. AWS 계정에 접근하기 위한 인증 정보로 액세스 키와 시크릿 키가 있습니다. 액세스 키와 시크릿 키는 AWS CLI를 활용하거나 AWS 리소스에 접근, API를 호출할 때 사용합니다. 먼저 IAM 사용자의 액세스 키를 생성하겠습니다.

```IAM_User.yml

#IAM 사용자의 액세스 키와 시크릿 키 생성

IAMUserAccessKey:

Type: AWS::IAM::AccessKey # ➊

Properties:

UserName: !Ref IAMUser

```

➊ Type에 AWS::iam::AccessKey를 넣어 액세스 키를 생성합니다. 액세스 키를 생성하면 ‘.SecretAccessKey’ 형태로 시크릿 키를 불러올 수 있습니다. 그 외 방법으로 클라우드포메이션에서 Outputs를 활용하여 AWS 콘솔에서도 액세스 키와 시크릿 키를 출력할 수 있습니다. 그러나 액세스 키와 시크릿 키는 IAM 사용자의 로그인과 직결되는 정보이므로 유출된다면 불법적인 액세스와 보안 문제가 발생할 수 있습니다. 이런 이유로 액세스 키와 시크릿 키는 Outputs이 아닌 AWS 시크릿 매니저Secrets Manager에 저장하여 관리합니다.

04 단계 생성한 액세스 키와 시크릿 키는 AWS 시크릿 매니저로 관리하고 보관합니다. AWS 시크릿 매니저는 데이터베이스, 애플리케이션의 보안 인증 및 암호를 관리하는 서비스로 AWS는 시크릿 매니저에 보안 암호를 생성하여 암호를 저장하고 관리할 수 있습니다. 보안 암호는 액세스 키와 시크릿 키를 키Key와 값Value 형태로 저장합니다.

```IAM_User.yml

#AWS 시크릿 매니저에 액세스 키와 시크릿 키 저장

AccessKeySecretManager:

Type: AWS::SecretsManager::Secret # ➊

Properties: # ➋

Name: !Sub ${IAMUser}-credentials

SecretString: !Sub "{\"accessKeyId\":\"${IAMUserAccessKey}\",\"secretKeyId\":\"${IAMUserAccessKey.SecretAccessKey}\"}"

```

➊ AWS 시크릿 매니저의 보안 암호를 생성하기 위해 Type에 AWS::SecretsManager::Secret을 넣습니다. ➋ Properties에는 생성할 보안 암호의 이름과 저장할 암호를 입력합니다. 보안 암호는 키Key와 값Value를 가지며, {“Key”:“Value”} 형태로 저장합니다.

3.2 UI로 불러와 AWS 사용자 리소스 생성하기

다음은 AWS IAM 사용자 생성을 어떻게 하는지 UI를 통해 확인해봅시다.

01 단계 우선 클라우드포메이션 스택을 생성합니다. ➊ 클라우드포메이션 스택 이름을 입력합니다. ➋ 파라미터 부분의 사용자 이름과 비밀번호를 입력합니다. 본인이 설정하고자 하는 IAM 사용자의 이름과 비밀번호를 입력합니다. ➌ IAM 리소스를 생성하려면 해당 항목을 체크할 필요가 있습니다. 해당 항목을 체크하고 클라우드포메이션 스택 생성을 진행합니다.

02 단계 IAM 사용자 생성 및 권한을 확인합니다. ➊ IAM 콘솔 화면에서 [사용자]를 클릭합니다. ➋ 생성된 IAM 사용자를 확인할 수 있습니다. ➌ IAM 사용자를 클릭하고 권한 탭에서 IAM 사용자에게 부여한 권한을 확인할 수 있습니다.

03 단계 IAM 사용자의 액세스 키 및 시크릿 키를 확인합니다. ➊ AWS 시크릿 매니저 콘솔 화면으로 접속하면, IAM 사용자와 같은 이름의 보안 암호가 생성되어 있으며, 이를 확인하면 IAM 사용자의 액세스 키와 시크릿 키를 확인할 수 있습니다.

04 단계 로그인을 위한 계정 ID를 확인합니다.

➊ 오른쪽 상단에 있는 아이디를 클릭합니다. ➋ 계정 ID를 확인하고 복사합니다.



05 단계 AWS에 로그인을 시도합니다. ➊ 로그인 화면에서 [IAM 사용자]를 클릭합니다. ➋ 조금 전 확인한 계정 ID를 입력합니다. ➌ 사용자 이름과 암호를 입력하고 로그인을 시도합니다. ➍ 생성한 IAM 사용자로 로그인에 성공한 것을 확인할 수 있습니다.

이제 IAM 사용자를 생성할 수 있는 기능을 활용할 수 있게 되었습니다. 더 나아가 IAM 사용자의 역할 및 권한 설정을 통해 AWS 리소스에 대한 효율적이고 안전한 접근을 구성하는 방법을 익힐 수 있습니다. 정책 생성과 역할 및 권한 설정에 대해서는 04장 ‘가상 클라우드 서버 파악하기’에서 중점적으로 다루겠습니다.

3.3 AWS CLI 환경 구성하기

이번에는 루트 사용자를 이용해 맥OS와 윈도우에서 AWS CLI 환경을 구성해보는 시간을 갖겠습니다. 현재 맥OS을 이용합니다. ‘맥OS에서의 AWS CLI 환경 구성’을 참고하고 윈도우를 이용합니다. ‘윈도우에서의 CLI 환경 구성’을 참고 바랍니다.

맥OS에서의 AWS CLI 환경 구성

AWS CLI 환경을 구성하기에 앞서 먼저 터미널을 이용해 AWS CLI를 로컬 환경에 설치해야 합니다.

01 단계 AWS CLI 설치 명령어를 맥OS 터미널에 입력해줍니다.

▼AWS CLI 설치 명령어

```

// ➊ AWS CLI 패키지 파일 다운로드

curl “https://awscli.amazonaws.com/AWSCLIV2.pkg” -o “AWSCLIV2.pkg”

// ➋ AWS CLI 설치

sudo installer -pkg AWSCLIV2.pkg -target /

// ➍ AWS CLI 버전 확인

aws --version

```

➊ AWS CLI 설치 파일은 AWS에서 공식적으로 제공하고 있기 때문에 ‘curl’ 명령을 사용하여 패키지 파일을 다운로드합니다. ‘-o’ 옵션은 내려받은 패키지 파일 이름을 지정하는 옵션입니다. ➋ 맥OS의 설치 프로그램을 이용하여 내려받은 AWS CLI 패키지 파일을 설치합니다. ‘-target’은 패키지를 설치할 경로를 의미합니다. ➌ 마지막으로 ‘aws –version’ 명령으로 AWS CLI가 로컬 환경에 설치되었는지 확인합니다.

AWS CLI가 잘 설치된 것을 확인한 다음 AWS 관리 콘솔에서 액세스 키와 시크릿 키를 확인합니다. IAM 사용자를 이용한다면 AWS 시크릿 매니저 콘솔 화면의 보안 암호에 저장되어 있는 액세스 키와 시크릿 키를 이용합니다. 루트 사용자를 이용한다면 액세스 키와 시크릿 키를 AWS 관리 콘솔에서 생성할 필요가 있습니다. 생성 과정은 다음을 참고 바랍니다.

02 단계 AWS 콘솔 화면에서 액세스 키를 생성합니다. ➊ AWS 관리 콘솔에서 [보안 자격증명]을 누르고 [AWS IAM 자격증명] 탭을 클릭하면 액세스 키 만들기 화면이 나옵니다. ➋ 액세스 키와 시크릿 키를 생성하기 위해 [액세스 키 만들기] 버튼을 누릅니다.

03 단계 AWS CLI 사용을 위한 액세스 키를 설정합니다. ➊ ‘사용 사례’에서 CLI를 선택하면 간단하게 액세스 키와 시크릿 키를 생성할 수 있습니다. 생성한 액세스 키와 시크릿 키는 별도로 보관하거나 시크릿 매니저에 저장하여 관리하며 외부에 공개하지 않도록 주의합니다.

04 단계 액세스 키 및 시크릿 키를 생성했다면 이제 구성 및 자격증명 파일을 설정합니다.

▼AWS Configure 설정

```

// ➊ AWS 설정 확인

aws configure list

// ➋ AWS 구성 설정 진행

aws configure

// ➌ 액세스 키, 시크릿 키, 리전, 포맷 형식 입력

AWS Access Key ID [None]: 액세스 키

AWS Secret Access Key [None]: 시크릿 키

Default region name [None]: ap-northeast-2

Default output format [None]: json

// ➍ AWS 구성 설정 확인

aws configure list

```

먼저 터미널에서 ➊ ‘aws configure list’ 명령어를 입력하면 아무것도 설정되어 있지 않은 것을 확인할 수 있습니다. ➋ ‘aws configure’ 명령어를 통해 구성 설정을 진행합니다. ➌ 구성 설정에는 액세스 키, 시크릿 키, 리전(ap-northeast-2는 서울 리전), 포맷 형식을 입력합니다. ➍ ‘aws configure list’를 한 번 더 입력하여 구성이 설정된 것을 확인할 수 있습니다.

▼자격증명 파일 설정

```

// ➊ 자격증명 확인(액세스 키와 시크릿 키)

vi ~/.aws/credentials

// ➋ 자격증명 확인(리전과 포맷 형식)

vi ~/.aws/config

// ➌ AWS 사용자 정보 요청

aws sts get-caller-identity

```

구성 설정이 끝났다면, 맥OS의 ‘~/.aws/’ 경로에 자격증명 파일이 만들어지게 됩니다. 자격증명 파일은 credentials 파일과 config 파일로 나눠지는데 ➊ credentials 파일은 민감한 정보를 저장하는 파일로 액세스 키, 시크릿 키에 대한 정보를 저장합니다. ➋ config 파일은 중요하지 않은 정보 즉 리전, 포맷과 같은 정보를 저장합니다. 각 파일에 대한 정보는 ‘aws configure’ 명령어를 통해 자동으로 설정되었기 때문에 별다른 설정은 불필요합니다. ➌ 마지막으로 ‘aws sts get-caller-identity’ 명령어를 입력해 AWS 사용자 정보를 요청하고, 반환된 정보를 확인합니다. 반환된 정보가 있으면, 맥OS 환경에서의 AWS CLI 환경 구성이 완료됩니다.

윈도우에서의 CLI 환경 구성

이번에는 윈도우에서 AWS CLI 환경을 구성해봅시다.

01 단계 다음 ’설치 URL’을 이용하여 AWS에서 제공하는 AWS CLI 설치 파일을 다운로드합니다. AWS CLI 설치 과정은 별다른 설정 없이 Next를 눌러 진행하면 됩니다.

설치 URL : https://awscli.amazonaws.com/AWSCLIV2.msi

▼AWS CLI 버전 확인

```

aws --version

```

AWS CLI 설치가 끝났다면, powershell에서 CLI 버전을 확인하여 AWS CLI가 설치되었는지 확인합니다.

AWS CLI가 잘 설치된 것을 확인한 다음 AWS 관리 콘솔에서 액세스 키와 시크릿 키를 확인합니다. IAM 사용자를 이용한다면 AWS 시크릿 매니저 콘솔 화면의 보안 암호에 저장되어 있는 액세스 키와 시크릿 키를 이용합니다. 루트 사용자를 이용한다면 액세스 키와 시크릿 키를 AWS 관리 콘솔에서 생성할 필요가 있습니다. 생성 과정은 다음을 참고 바랍니다.

02 단계 AWS 콘솔 화면에서 액세스 키를 생성합니다. ➊ AWS 관리 콘솔에서 [보안 자격증명]을 누르고 [보안 자격증명] 탭을 클릭하면 액세스 키 만들기 화면이 나옵니다. ➋ 액세스 키와 시크릿 키를 생성하기 위해 [액세스 키 만들기] 버튼을 누릅니다.

03 단계 AWS CLI 사용을 위한 액세스 키를 설정합니다. ➊ 사용 사례에는CLI를 선택하면 간단하게 액세스 키와 시크릿 키를 생성할 수 있습니다. 생성한 액세스 키와 시크릿 키는 별도로 보관하거나 시크릿 매니저에 저장하여 관리하며 외부에 공개하지 않도록 주의합니다.

04 단계 액세스 키 및 시크릿 키를 생성했다면 이제 구성 및 자격증명 파일을 설정합니다.

▼AWS Configure 설정

```

// ➊ AWS 설정 확인

aws configure list

// ➋ AWS 구성 설정 진행

aws configure

// ➌ 액세스 키, 시크릿 키, 리전, 포맷 형식 입력

AWS Access Key ID [None]: 액세스 키

AWS Secret Access Key [None]: 시크릿 키

Default region name [None]: ap-northeast-2

Default output format [None]: json

// ➍ AWS 구성 설정 확인

aws configure list

```

액세스 키 및 시크릿 키를 생성했다면 이제 구성 및 자격증명 파일을 설정해야 합니다. ➊ powershell에서 aws configure list’ 명령어를 입력하면 아무것도 설정되어 있지 않은 것을 확인할 수 있습니다. ➋ ’aws configure’ 명령어를 통해 구성 설정을 진행합니다. ➌ 구성 설정에는 액세스 키, 시크릿 키, 리전(ap-northeast-2는 서울 리전), 포맷 형식을 입력합니다. ➍ ‘aws configure list’를 한 번 더 입력하여 구성이 설정된 것을 확인할 수 있습니다.

▼AWS 사용자 정보 요청

```

aws sts get-caller-identity

```

구성 설정이 끝났다면, 윈도우는 ‘C:\Users\Administrator\.aws’ 혹은 ‘C:\Users\사용자 명\.aws’ 경로에 자격증명 파일이 만들어지게 됩니다. 자격증명 파일은 credentials 파일과 config 파일로 나눠지는데 credentials 파일은 민감한 정보를 저장하는 파일로 액세스 키, 시크릿 키에 대한 정보를 저장합니다. config 파일은 중요하지 않은 정보 즉 리전, 포맷과 같은 정보를 저장합니다. 각 파일에 대한 정보는 ‘aws configure’ 명령어를 통해 자동으로 설정되었기 때문에 별다른 설정은 불필요합니다. 마지막으로 파워셸에서 ‘aws sts get-caller-identity’ 명령어를 입력해 AWS 사용자 정보를 요청하고, 반환된 정보를 확인합니다. 반환된 정보가 있으면, 윈도우 환경에서의 AWS CLI 환경 구성이 완료됩니다.

3.3.4 AWS MFA 설정하기

01 단계 AWS에서는 루트 사용자 또는 IAM 사용자를 이용할 때 보안을 고려해 MFA 설정이 필수입니다. 조금 전 실습을 통해 AWS CLI 환경을 구성했으며, 이를 이용하여 MFA를 설정하겠습니다. 아직 AWS CLI 환경 구성이 되지 않았다면 ‘맥OS에서의 AWS CLI 환경 구성’ 혹은 ‘윈도우에서의 CLI 환경 구성’을 참고하여 AWS CLI 환경을 구성을 진행합니다.

▼AWS 사용자 정보 요청

```

aws sts get-caller-identity

```

AWS CLI로 MFA를 설정하기 위해 AWS 사용자를 호출합니다.

02 단계 가상 MFA 디바이스를 생성합니다.

▼가상 MFA 디바이스 생성

```

aws iam create-virtual-mfa-device --virtual-mfa-device-name jaewook-kim-mfa --bootstrap-method QRCodePNG --outfile C:\Users\user\Desktop\jaewook-kim-mfa.png

```

‘aws iam create-virtual-mfa-device’ 명령어로 가상 MFA 디바이스를 생성합니다. ‘--virtual-mfa-device-name’ 옵션을 통해 가상 디바이스의 이름을 지정합니다. ‘--bootstrap-method QRCodePNG’ 옵션으로 가상 디바이스의 QR 코드의 이미지를 다운로드합니다. 마지막으로 ‘--outfile’ 옵션으로 내려받을 QR 코드 이미지의 경로를 지정합니다.

03 단계 가상 MFA 디바이스의 시리얼 넘버를 확인합니다.

▼가상 MFA 디바이스 시리얼 넘버 확인

```

"VirtualMFxDevice": {

"SerialNumber": "arn:aws:iam::xxxxxxxxxxxx:mfa/jaewook-kim-mfa"

}

```

가상 MFA 디바이스를 생성하면 시리얼 넘버가 표시됩니다. 다음 단계에 필요하므로 시리얼 넘버를 복사합니다. 그리고 지정한 경로에 QR 코드 이미지가 다운로드되었으며, 해당 QR 코드를 이용해 MFA 디바이스 설정을 진행합니다.

04 단계 가상 MFA 디바이스의 시리얼 넘버를 확인했다면, IAM 사용자에게 MFA 디바이스를 설정합니다.

▼사용자에게 MFA 디바이스 설정

```

aws iam enable-mfa-device --user-name jaewook-kim --serial-number arn:aws:iam::xxxxxxxxxxxx:mfa/jaewook-kim-mfa --authentication-code1 123456 --authentication-code2 789012

```

‘aws iam enable-mfa-device’ 명령어를 이용하여 사용자에게 MFA 디바이스를 설정합니다. ‘--user-name’ 옵션에 MFA 디바이스를 설정할 사용자 이름을 지정합니다. ‘--serial-number’ 옵션은 조금 전 복사한 시리얼 넘버를 지정하고, code1과 code2는 내려받은 QR 코드 이미지를 이용해, 약 30초마다 갱신되는 MFA 코드를 연속 두 번 입력합니다.

Google Authenticator 앱을 이용하면 더 편리하게 QR 코드 스캔 및 MFA 코드를 관리할 수 있습니다.

05 단계 AWS에 로그인을 시도하여 MFA 코드를 요구하는지 확인합니다. MFA 설정 이후 로그인을 시도하면, MFA 코드를 요구하는 것을 확인할 수 있습니다. MFA 코드는 QR 코드를 스캔한 구글 인증 도구 Google Authenticator와 같은 앱을 통해 일회용 MFA 코드를 입력합니다.

06 단계 로그인한 사용자 정보를 확인하면, MFA가 설정되어 있습니다. 이로써 더 안전하게 AWS 계정을 보호할 수 있습니다. 지금까지 AWS IAM에 대한 기본적인 구성과 실습을 다루어보았습니다.

📚 더 읽기

저자 소개

📚AWS 잘하는 개발자 되기》 자주 묻는 질문

Q.AWS를 시작하려는데, 어디서부터 시작해야 할지 막막합니다. 이 책이 도움이 될까요?

AWS 입문을 망설이는 분들을 위해 이 책은 매우 훌륭한 길잡이가 될 수 있습니다. AWS는 방대한 서비스 집합체이기 때문에, 처음 접하는 사람에게는 어디서부터 시작해야 할지 막막하게 느껴질 수 있습니다. 이 책은 바로 이러한 어려움을 해소하기 위해 'AWS를 쓰려면 알아야 하는 넓고 얕은 배경지식'과 'AWS를 잘 쓰려면 반드시 필요한 네트워크 지식'을 체계적으로 정리하여 제공합니다. AWS의 기본적인 개념부터 필수적인 네트워크 지식까지, 탄탄한 기초를 다질 수 있도록 돕는 것이죠. 특히, 3년 연속 〈Japan AWS All Certifications Engineer〉를 수상한 저자의 노하우가 담겨 있어, 이론적인 설명뿐만 아니라 실제 개발 현장에서 마주칠 수 있는 문제들을 해결하는 데에도 큰 도움이 될 것입니다. 입문자뿐만 아니라, 기본을 다시 다지고 싶은 초보 개발자, 대규모 서비스 운영 경험을 엿보고 싶은 중급 개발자 모두에게 유용한 책입니다. AWS 여정을 시작하는 데 든든한 동반자가 되어줄 것입니다. 《AWS 잘하는 개발자 되기》를 통해 AWS 전문가로 발돋움해보세요.

Q.이 책은 어떤 개발자에게 가장 적합한가요? 백엔드 개발 경험이 없어도 괜찮을까요?

《AWS 잘하는 개발자 되기》는 AWS를 처음 접하는 개발자뿐만 아니라, AWS를 사용하고 있지만 더욱 깊이 있는 이해를 원하는 개발자 모두에게 적합합니다. 특히, 백엔드 개발 경험이 부족하더라도 AWS의 기본적인 개념과 네트워크 지식을 쌓을 수 있도록 구성되어 있어, 충분히 따라갈 수 있습니다. 책에서는 AWS를 사용하기 위한 넓고 얕은 배경지식부터 시작하여, AWS를 효율적으로 활용하기 위한 네트워크 지식을 자세하게 설명합니다. 200여 개의 시스템 구성과 도표를 통해 시각적으로 이해를 돕고 있어, 개념을 더욱 명확하게 파악할 수 있습니다. 백엔드 개발 경험이 없더라도, 책에서 제시하는 로드맵을 따라 차근차근 학습하면 AWS를 활용한 개발 능력을 향상시킬 수 있습니다. 3년 연속 〈Japan AWS All Certifications Engineer〉를 수상한 저자의 경험과 노하우가 담겨 있어, 실제 개발 현장에서 마주할 수 있는 문제들을 해결하는 데에도 큰 도움이 될 것입니다. 백엔드 개발 경험이 없더라도 AWS를 배우고 싶다면, 《AWS 잘하는 개발자 되기》가 훌륭한 입문서가 될 것입니다.

Q.이 책에서 다루는 AWS 서비스는 어떤 것들이 있나요? 주요 서비스 위주로 설명되어 있나요?

《AWS 잘하는 개발자 되기》는 AWS의 핵심적인 서비스들을 폭넓게 다루면서도, 각 서비스의 깊이 있는 이해를 돕는 데 초점을 맞추고 있습니다. 단순히 나열하는 것이 아니라, 실제 개발 현장에서 자주 사용되는 주요 서비스들을 중심으로 설명하고, 각 서비스가 어떻게 연동되어 시너지를 내는지 보여줍니다. 이 책은 AWS 입문자와 초급 개발자를 대상으로 하기 때문에, 복잡하고 난해한 고급 기능보다는 기본적인 사용법과 핵심 개념을 중심으로 설명합니다. 3년 연속 〈Japan AWS All Certifications Engineer〉를 수상한 저자는, AWS 서비스를 효과적으로 활용하기 위한 실질적인 팁과 노하우를 아낌없이 공유합니다. 200여 개의 시스템 구성과 도표는 독자들의 이해도를 높이는 데 크게 기여합니다. AWS의 주요 서비스들을 체계적으로 학습하고, 실제 개발에 적용할 수 있는 능력을 키우고 싶다면, 《AWS 잘하는 개발자 되기》가 좋은 선택이 될 것입니다.

Q.책에서 설명하는 네트워크 지식은 어느 정도 수준인가요? 네트워크 기초가 부족해도 이해할 수 있을까요?

《AWS 잘하는 개발자 되기》는 AWS를 효과적으로 사용하기 위해 반드시 필요한 네트워크 지식을 상세하게 다룹니다. 네트워크 기초가 부족한 분들도 쉽게 이해할 수 있도록, 기본적인 개념부터 차근차근 설명합니다. IP 주소, 서브넷, 라우팅, 방화벽 등 네트워크의 핵심 요소들을 그림과 함께 설명하여 시각적인 이해를 돕고, AWS 환경에서 이러한 요소들이 어떻게 적용되는지 명확하게 보여줍니다. 또한, AWS의 Virtual Private Cloud (VPC)와 같은 네트워크 서비스를 설정하고 관리하는 방법을 단계별로 안내하여, 실제 환경에서 네트워크를 구축하고 운영하는 데 필요한 실질적인 능력을 키울 수 있도록 돕습니다. 3년 연속 〈Japan AWS All Certifications Engineer〉를 수상한 저자의 경험을 바탕으로, 네트워크 기초가 부족한 개발자도 AWS를 능숙하게 사용할 수 있도록 돕는 것이 이 책의 목표입니다. 《AWS 잘하는 개발자 되기》를 통해 네트워크 기초를 다지고 AWS 전문가로 거듭나세요.

Q.스터디 모임 '내코부'는 무엇인가요? 책을 읽고 스터디에 참여하면 어떤 도움이 되나요?

'내코부, 내 코드를 부탁해'는 골든래빗에서 운영하는 개발자 성장 프로젝트의 일환으로, 함께 공부하고 토론하며 성장하는 스터디 모임입니다. 《AWS 잘하는 개발자 되기》를 읽고 내코부 스터디에 참여하면, 책의 내용을 더욱 깊이 있게 이해하고 실질적인 활용 능력을 키울 수 있습니다. 스터디에서는 책에서 다루는 AWS 서비스들을 직접 사용해보고, 서로의 경험을 공유하며 배우는 시간을 갖습니다. 또한, AWS 전문가의 멘토링을 통해 어려운 문제를 해결하고, 자신의 프로젝트에 AWS를 적용하는 방법을 배울 수 있습니다. 혼자 공부할 때는 놓치기 쉬운 부분을 스터디 멤버들과 함께 토론하며 보완하고, 다양한 관점을 접할 수 있다는 장점도 있습니다. 스터디를 통해 얻은 지식과 경험은 실제 개발 현장에서 문제를 해결하고, 더 나은 코드를 작성하는 데 큰 도움이 될 것입니다. 내코부 디스코드 채널(discord.com/invite/BYRpaDrfbH)에서 스터디에 참여하고, 함께 성장하는 기회를 잡아보세요. 《AWS 잘하는 개발자 되기》와 내코부 스터디를 통해 AWS 전문가로 도약하세요.

Q.책에 200여 개의 시스템 구성과 도표가 있다고 하는데, 그림 자료가 많은 편인가요? 시각적으로 이해하기 쉬운가요?

네, 《AWS 잘하는 개발자 되기》는 200여 개의 시스템 구성과 도표를 사용하여 AWS의 복잡한 개념을 시각적으로 명확하게 전달하는 데 중점을 두고 있습니다. 단순히 텍스트로만 설명하는 것이 아니라, 그림과 도표를 통해 AWS 서비스의 작동 방식, 아키텍처 구성, 데이터 흐름 등을 한눈에 파악할 수 있도록 돕습니다. 특히, AWS의 다양한 서비스를 조합하여 복잡한 시스템을 구축하는 과정을 그림으로 보여주기 때문에, 전체적인 구조를 이해하는 데 매우 효과적입니다. 또한, 각 도표에는 상세한 설명이 덧붙여져 있어, 그림만으로는 이해하기 어려울 수 있는 부분까지 명확하게 해소해줍니다. 그림 자료가 풍부하고 시각적으로 이해하기 쉽기 때문에, AWS를 처음 접하는 사람도 부담 없이 학습할 수 있습니다. 3년 연속 〈Japan AWS All Certifications Engineer〉를 수상한 저자의 노하우가 담긴 시각 자료들은, 독자들의 AWS 이해도를 높이는 데 크게 기여할 것입니다. 《AWS 잘하는 개발자 되기》로 시각적인 학습을 통해 AWS를 마스터하세요.

Q.이 책을 읽고 AWS Certified Cloud Practitioner 자격증 시험 준비에도 도움이 될까요?

《AWS 잘하는 개발자 되기》는 AWS Certified Cloud Practitioner 자격증 시험 준비에도 충분히 도움이 될 수 있습니다. 이 책은 AWS의 기본적인 개념과 서비스들을 폭넓게 다루고 있으며, 시험에서 자주 출제되는 핵심 내용들을 자세하게 설명합니다. 특히, AWS의 주요 서비스들에 대한 설명은 시험 준비에 필수적인 지식을 제공하며, 200여 개의 시스템 구성과 도표는 AWS 아키텍처에 대한 이해도를 높여줍니다. 또한, 책에서 다루는 네트워크 지식은 시험의 네트워크 관련 문제 해결에 도움이 될 것입니다. 물론, 이 책만으로 모든 시험 문제를 완벽하게 대비할 수는 없지만, AWS Certified Cloud Practitioner 시험의 기본적인 내용을 이해하고 합격에 필요한 기반 지식을 쌓는 데 매우 효과적입니다. 추가적으로 AWS에서 제공하는 공식 문서나 모의고사를 함께 활용하면 더욱 효과적인 시험 준비가 될 것입니다. 《AWS 잘하는 개발자 되기》로 AWS Certified Cloud Practitioner 자격증 취득에 한 걸음 더 다가가세요.