Amazon EC2 사용 설정 - Amazon Elastic Compute Cloud

Amazon EC2 사용 설정

Amazon EC2 인스턴스를 처음으로 설정하려면 이 섹션의 작업을 완료합니다.

작업을 마치면 Amazon EC2 시작하기 자습서를 사용할 준비가 됩니다.

AWS 계정에 가입

AWS 계정이 없는 경우 다음 절차에 따라 계정을 생성합니다.

AWS 계정에 가입
  1. https://portal.aws.amazon.com/billing/signup을 엽니다.

  2. 온라인 지시 사항을 따릅니다.

    등록 절차 중 전화를 받고 전화 키패드로 확인 코드를 입력하는 과정이 있습니다.

    AWS 계정 루트 사용자에 가입하면 AWS 계정 루트 사용자가 생성됩니다. 루트 사용자에게는 계정의 모든 AWS 서비스 및 리소스에 액세스하는 권한이 있습니다. 보안 모범 사례는 관리 사용자에게 관리자 액세스 권한을 할당하고, 루트 사용자만 루트 사용자 액세스 권한이 필요한 태스크를 수행하는 것입니다.

AWS에서는 가입 프로세스가 완료된 후 확인 이메일이 전송됩니다. 언제든지 https://aws.amazon.com/으로 이동하고 내 계정(My Account)을 선택하여 현재 계정 활동을 보고 계정을 관리할 수 있습니다.

관리 사용자 생성

AWS 계정에 가입한 후 일상적인 태스크에 루트 사용자를 사용하지 않도록 관리 사용자를 생성합니다.

AWS 계정 루트 사용자 보호
  1. 루트 사용자를 선택하고 AWS 계정 이메일 주소를 입력하여 AWS Management Console에 계정 소유자로 로그인합니다. 다음 페이지에서 암호를 입력합니다.

    루트 사용자를 사용하여 로그인하는 데 도움이 필요하면 AWS 로그인 User Guide루트 사용자로 로그인을 참조하세요.

  2. 루트 사용자에 대해 다중 인증(MFA)을 활성화합니다.

    지침은 IAM 사용 설명서AWS 계정 루트 사용자용 가상 MFA 디바이스 활성화(콘솔)를 참조하세요.

관리 사용자 생성
  • 일상적인 관리 태스크의 경우 AWS IAM Identity Center에서 관리 사용자에게 관리 액세스 권한을 부여합니다.

    지침을 보려면 AWS IAM Identity Center 사용 설명서시작하기를 참조하세요.

관리자 사용자로 로그인
  • IAM Identity Center 사용자로 로그인하려면 IAM Identity Center 사용자를 생성할 때 이메일 주소로 전송된 로그인 URL을 사용합니다.

    IAM Identity Center 사용자로 로그인하는 데 도움이 필요한 경우 AWS 로그인 사용 설명서AWS 액세스 포털에 로그인을 참조하세요.

키 페어 생성

AWS에서는 퍼블릭 키 암호화를 사용하여 인스턴스에 대한 로그인 정보를 보호합니다. Linux 인스턴스에는 암호가 없으므로 인스턴스에 안전하게 로그인하기 위해 키 페어를 사용합니다. 인스턴스를 시작할 때 키 페어의 이름을 지정한 다음 프라이빗 키를 제공하여 SSH를 사용하여 로그인할 때

키 페어를 아직 생성하지 않은 경우 Amazon EC2 콘솔을 사용하여 생성할 수 있습니다. 여러 AWS 리전에서 인스턴스를 시작하려면 각 리전에서 키 페어를 생성해야 합니다. 리전에 대한 자세한 내용은 섹션을 참조하세요리전 및 영역

키 페어를 만들려면
  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 탐색 창에서 [Key Pairs]를 선택합니다.

  3. Create key pair(키 페어 생성)를 선택합니다.

  4. 이름에 키 페어를 설명하는 이름을 입력합니다. Amazon EC2는 사용자가 키 이름으로 지정한 이름에 퍼블릭 키를 연결합니다. 키 이름에는 최대 255자의 ASCII 문자를 포함할 수 있습니다. 선행 또는 후행 공백을 포함할 수 없습니다.

  5. 키 페어 유형(Key pair type)에서 RSA 또는 ED25519를 선택합니다. ED25519 키는 Windows 인스턴스에서 지원되지 않습니다.

  6. 프라이빗 키 파일 형식(Private key file format)에서 프라이빗 키를 저장할 형식을 선택합니다. OpenSSH에서 사용할 수 있는 형식으로 프라이빗 키를 저장하려면 pem을 선택합니다. PuTTY에서 사용할 수 있는 형식으로 프라이빗 키를 저장하려면 ppk를 선택합니다.

  7. Create key pair(키 페어 생성)를 선택합니다.

  8. 브라우저에서 프라이빗 키 파일이 자동으로 다운로드됩니다. 기본 파일 이름은 키 페어의 이름으로 지정한 이름이며, 파일 이름 확장명은 선택한 파일 형식에 따라 결정됩니다. 안전한 장소에 프라이빗 키 파일을 저장합니다.

    중요

    이때가 사용자가 프라이빗 키 파일을 저장할 수 있는 유일한 기회입니다.

  9. macOS 또는 Linux 컴퓨터에서 SSH 클라이언트를 사용하여 Linux 인스턴스에 연결할 계획이면 사용자만 프라이빗 키 파일을 읽을 수 있도록 다음 명령으로 해당 권한을 설정합니다.

    chmod 400 key-pair-name.pem

    이러한 권한을 설정하지 않으면 이 키 페어를 사용하여 인스턴스에 연결할 수 없습니다. 자세한 내용은 오류: 보호되지 않는 프라이빗 키 파일 섹션을 참조하세요.

자세한 내용은 Amazon EC2 키 페어 및 Linux 인스턴스 섹션을 참조하세요.

보안 그룹 생성

보안 그룹은 연결된 인스턴스에 대한 방화벽 역할을 하여 인스턴스 수준에서 인바운드 트래픽과 아웃바운드 트래픽을 모두 제어합니다. SSH를 사용하여 IP 주소에서 인스턴스에 연결할 수 있게 하는 규칙을 보안 그룹에 추가해야 합니다. 어디서나 인바운드 및 아웃바운드 HTTP/HTTPS 액세스를 허용하는 규칙을 추가할 수도 있습니다.

여러 AWS 리전에서 인스턴스를 시작하려면 각 리전에서 보안 그룹을 생성해야 합니다. 리전에 대한 자세한 내용은 섹션을 참조하세요리전 및 영역

필수 조건

로컬 컴퓨터의 퍼블릭 IPv4 주소가 필요합니다. Amazon EC2 콘솔의 보안 그룹 편집기는 퍼블릭 IPv4 주소를 자동으로 검색할 수 있습니다. 또는 인터넷 브라우저에서 "내 IP 주소"와 같은 검색 구문을 사용하거나 Check IP 서비스를 사용할 수도 있습니다. 고정 IP 주소가 없는 방화벽 뒤나 ISP(인터넷 서비스 공급자)를 통해 연결되어 있는 경우 클라이언트 컴퓨터가 사용하는 IP 주소의 범위를 찾아야 합니다.

다음 방법 중 하나를 사용하여 사용자 지정 보안 그룹을 생성할 수 있습니다.

New console
최소 권한으로 보안 그룹을 생성하려면
  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 위의 탐색 모음에서 보안 그룹의 AWS 리전을 선택합니다. 보안 그룹은 리전에 고유하므로 키 페어를 생성한 리전과 동일한 리전을 선택해야 합니다.

  3. 왼쪽 탐색 창에서 [Security Groups]를 선택합니다.

  4. 보안 그룹 생성을 선택합니다.

  5. [기본 세부 정보(Basic details)]에서 다음을 수행합니다.

    1. 새 보안 그룹의 이름과 설명을 입력합니다. 기억하기 쉬운 이름을 사용합니다(예: 사용자 이름, 뒤에 _SG_ 및 리전 이름). 예를 들어, me_SG_uswest2로 지정할 수 있습니다.

    2. VPC 목록에서 리전의 기본 VPC를 선택합니다.

  6. [인바운드 규칙(Inbound rules)]에서 인스턴스에 특정 트래픽이 도달할 수 있도록 허용하는 규칙을 생성합니다. 예를 들어 HTTP 및 HTTPS 트래픽을 허용하는 웹 서버에 대해 다음 규칙을 사용합니다. 더 많은 예제는 다양한 사용 사례에 대한 보안 그룹 규칙를 참조하세요.

    1. [Add another rule]을 선택합니다. Type(유형)에서 HTTP를 선택합니다. Source(소스)에서 Anywhere(위치 무관)를 선택합니다.

    2. [Add another rule]을 선택합니다. 유형에서 HTTPS를 선택합니다. Source(소스)에서 Anywhere(위치 무관)를 선택합니다.

    3. [Add another rule]을 선택합니다. [유형(Type)]에서 SSH를 선택합니다. [소스(Source)]에서 다음 중 하나를 수행합니다.

      • [내 IP(My IP)]를 선택하여 로컬 컴퓨터의 퍼블릭 IPv4 주소를 자동으로 추가합니다.

      • [사용자 지정(Custom)]을 선택하고 컴퓨터 또는 네트워크의 퍼블릭 IPv4 주소를 CIDR 표기법으로 지정합니다. 개별 IP 주소를 CIDR 표기법으로 지정하려면 라우팅 접미사 /32를 추가합니다(예: 203.0.113.25/32). 회사 또는 라우터에서 주소를 범위로 할당하는 경우 전체 범위(예: 203.0.113.0/24)를 지정합니다.

      주의

      보안상의 이유로, SSH 유형의 규칙에 대해 [소스(Source)]를 [위치 무관(Anywhere)]으로 선택해서는 안 됩니다. 이렇게 하면 인터넷의 모든 IP 주소에서 인스턴스에 액세스할 수 있습니다. 테스트 환경에서 잠시 사용하는 것은 괜찮지만 프로덕션 환경에서는 안전하지 않습니다.

  7. [아웃바운드 규칙(Outbound rules)]에서 모든 아웃바운드 트래픽을 허용하는 기본 규칙을 유지합니다.

  8. 보안 그룹 생성을 선택합니다.

Old console
최소 권한으로 보안 그룹을 생성하려면
  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 [Security Groups]를 선택합니다.

  3. 보안 그룹 생성을 선택합니다.

  4. 새 보안 그룹의 이름과 설명을 입력합니다. 기억하기 쉬운 이름을 사용합니다(예: 사용자 이름, 뒤에 _SG_ 및 리전 이름). 예를 들어, me_SG_uswest2로 지정할 수 있습니다.

  5. VPC 목록에서 리전의 기본 VPC를 선택합니다.

  6. 인바운드 규칙(Inbound rules) 탭에서 다음 규칙을 생성합니다(각 새 규칙에 대해 규칙 추가(Add rule) 선택).

    • 유형(Type) 목록에서 HTTP를 선택하고 소스(Source)위치 무관(Anywhere)(0.0.0.0/0)으로 설정되어 있는지 확인합니다.

    • 유형 목록에서 HTTPS를 선택하고 소스위치 무관(0.0.0.0/0)으로 설정되어 있는지 확인합니다.

    • 유형 목록에서 SSH, 를 선택합니다. 필드를 로컬 컴퓨터의 퍼블릭 IPv4 주소로 자동으로 채우려면 소스 상자에서 내 IP를 선택하면 됩니다. 또는 사용자 지정을 선택하고 컴퓨터 또는 네트워크의 퍼블릭 IPv4 주소를 CIDR 표기법으로 지정해도 됩니다. 개별 IP 주소를 CIDR 표기법으로 지정하려면 라우팅 접미사 /32를 추가합니다(예: 203.0.113.25/32). 회사에서 주소를 범위로 할당하는 경우 전체 범위(예: 203.0.113.0/24)를 지정합니다.

      주의

      보안상의 이유로, 모든 IP 주소에서 인스턴스에 대한 SSH 액세스를 허용해서는 안 됩니다. 테스트 환경에서 잠시 사용하는 것은 괜찮지만 프로덕션 환경에서는 안전하지 않습니다.

  7. 아웃바운드 규칙(Outbound rules) 탭에서 모든 아웃바운드 트래픽을 허용하는 기본 규칙을 유지합니다.

  8. 보안 그룹 생성을 선택합니다.

AWS CLI

AWS CLI를 사용하여 보안 그룹을 생성할 때 모든 아웃바운드 트래픽을 허용하는 아웃바운드 규칙이 보안 그룹에 자동으로 추가됩니다. 인바운드 규칙은 자동으로 추가되지 않으므로 직접 추가해야 합니다.

이 절차에서는 create-security-group 및 authorize-security-group-ingress AWS CLI 명령을 결합하여 보안 그룹을 만들고 지정된 인바운드 트래픽을 허용하는 인바운드 규칙을 추가합니다. 다음 절차의 대안은 명령을 개별적으로 실행하여 먼저 보안 그룹을 만들고, 보안 그룹에 인바운드 규칙을 추가합니다.

보안 그룹을 생성하고 보안 그룹에 인바운드 규칙 추가

create-security-group 및 authorize-security-group-ingress AWS CLI 명령을 다음과 같이 실행합니다.

aws ec2 authorize-security-group-ingress \ --region us-west-2 \ --group-id $(aws ec2 create-security-group \ --group-name myname_SG_uswest2 \ --description "Security group description" \ --vpc-id vpc-12345678 \ --output text \ --region us-west-2) \ --ip-permissions \ IpProtocol=tcp,FromPort=80,ToPort=80,IpRanges='[{CidrIp=0.0.0.0/0,Description="HTTP from anywhere"}]' \ IpProtocol=tcp,FromPort=443,ToPort=443,IpRanges='[{CidrIp=0.0.0.0/0,Description="HTTPS from anywhere"}]' \ IpProtocol=tcp,FromPort=22,ToPort=22,IpRanges='[{CidrIp=172.31.0.0/16,Description="SSH from private network"}]' \ IpProtocol=tcp,FromPort=22,ToPort=22,IpRanges='[{CidrIp=203.0.113.25/32,Description="SSH from public IP"}]'

여기에서:

  • --region - 인바운드 규칙을 생성할 리전을 지정합니다.

  • --group-id - create-security-group 명령과 다음 파라미터를 지정하여 보안 그룹을 생성합니다.

    • --group-name - 새 보안 그룹의 이름을 지정합니다. 기억하기 쉬운 이름(예: 사용자 이름)을 사용하고, 뒤에 _SG_ 및 리전 이름을 추가합니다. 예: myname_SG_uswest2.

    • --description - 보안 그룹에서 허용하는 트래픽을 파악하는 데 도움이 되는 설명을 지정합니다.

    • --vpc-id - 해당 리전의 기본 VPC를 지정합니다.

    • --output - 명령의 출력 형식으로 text를 지정합니다.

    • --region - 보안 그룹을 생성할 리전을 지정합니다. 인바운드 규칙에 지정한 리전과 같아야 합니다.

  • --ip-permissions - 보안 그룹에 추가할 인바운드 규칙을 지정합니다. 이 예제의 규칙은 모든 위치의 HTTP 및 HTTPS 트래픽을 수락하고, 프라이빗 네트워크(회사 또는 라우터가 특정 범위의 주소를 할당하는 경우) 및 지정된 퍼블릭 IP 주소(예: CIDR 표기법으로 표시된 컴퓨터 또는 네트워크의 퍼블릭 IPv4 주소)의 SSH 트래픽을 수락하는 웹 서버에 대한 규칙입니다.

    주의

    보안상의 이유로 SSH 규칙이 포함된 CidrIp에 0.0.0.0/0을 지정하지 마세요. 이렇게 하면 인터넷의 모든 IP 주소에서 인스턴스에 액세스할 수 있습니다. 테스트 환경에서 잠시 사용하는 것은 괜찮지만 프로덕션 환경에서는 안전하지 않습니다.

PowerShell

AWS Tools for Windows PowerShell를 사용하여 보안 그룹을 생성할 때 모든 아웃바운드 트래픽을 허용하는 아웃바운드 규칙이 보안 그룹에 자동으로 추가됩니다. 인바운드 규칙은 자동으로 추가되지 않으므로 직접 추가해야 합니다.

이 절차에서는 New-EC2SecurityGroup 및 Grant-EC2SecurityGroupIngress AWS Tools for Windows PowerShell 명령을 결합하여 보안 그룹을 만들고 지정된 인바운드 트래픽을 허용하는 인바운드 규칙을 추가합니다. 다음 절차의 대안은 명령을 개별적으로 실행하여 먼저 보안 그룹을 만들고, 보안 그룹에 인바운드 규칙을 추가합니다.

보안 그룹을 생성하는 방법

New-EC2SecurityGroup 및 Grant-EC2SecurityGroupIngress AWS Tools for Windows PowerShell 명령을 다음과 같이 실행합니다.

Import-Module AWS.Tools.EC2 New-EC2SecurityGroup -GroupName myname_SG_uswest2 -Description 'Security group description' -VpcId vpc-12345678 -Region us-west-2 | ` Grant-EC2SecurityGroupIngress ` -GroupName $_ ` -Region us-west-2 ` -IpPermission @( (New-Object -TypeName Amazon.EC2.Model.IpPermission -Property @{ IpProtocol = 'tcp'; FromPort = 80; ToPort = 80; Ipv4Ranges = @(@{CidrIp = '0.0.0.0/0'; Description = 'HTTP from anywhere'}) }), (New-Object -TypeName Amazon.EC2.Model.IpPermission -Property @{ IpProtocol = 'tcp'; FromPort = 443; ToPort = 443; Ipv4Ranges = @(@{CidrIp = '0.0.0.0/0'; Description = 'HTTPS from anywhere'}) }), (New-Object -TypeName Amazon.EC2.Model.IpPermission -Property @{ IpProtocol = 'tcp'; FromPort = 3389; ToPort = 3389; Ipv4Ranges = @( @{CidrIp = '172.31.0.0/16'; Description = 'RDP from private network'}, @{CidrIp = '203.0.113.25/32'; Description = 'RDP from public IP'} ) }) )

보안 그룹:

  • -GroupName - 새 보안 그룹의 이름을 지정합니다. 기억하기 쉬운 이름(예: 사용자 이름)을 사용하고, 뒤에 _SG_ 및 리전 이름을 추가합니다. 예: myname_SG_uswest2.

  • -Description - 보안 그룹에서 허용하는 트래픽을 파악하는 데 도움이 되는 설명을 지정합니다.

  • -VpcId - 해당 리전의 기본 VPC를 지정합니다.

  • -Region - 보안 그룹을 생성할 리전을 지정합니다.

인바운드 규칙:

  • -GroupName - $_ 지정을 통해 생성하는 보안 그룹을 참조합니다.

  • -Region - 인바운드 규칙을 생성할 리전을 지정합니다. 보안 그룹에 지정한 리전과 같아야 합니다.

  • -IpPermission - 보안 그룹에 추가할 인바운드 규칙을 지정합니다. 이 예제의 규칙은 모든 위치의 HTTP 및 HTTPS 트래픽을 수락하고, 프라이빗 네트워크(회사 또는 라우터가 특정 범위의 주소를 할당하는 경우) 및 지정된 퍼블릭 IP 주소(예: CIDR 표기법으로 표시된 컴퓨터 또는 네트워크의 퍼블릭 IPv4 주소)의 RDP 트래픽을 수락하는 웹 서버에 대한 규칙입니다.

    주의

    보안상의 이유로 RDP 규칙이 포함된 CidrIp에 0.0.0.0/0을 지정하지 마세요. 이렇게 하면 인터넷의 모든 IP 주소에서 인스턴스에 액세스할 수 있습니다. 테스트 환경에서 잠시 사용하는 것은 괜찮지만 프로덕션 환경에서는 안전하지 않습니다.

자세한 내용은 Linux 인스턴스에 대한 Amazon EC2 Amazon 보안 그룹 섹션을 참조하세요.