728x90

[이론] 개념 정리

 

# 1. VirtualBox Network

 

  • Bridge (VMnet0): 공유기에서 직접 가상머신으로 IP 할당 => 인터넷 연결 O
  • NAT (VMnet8, enp0s3): 외부와 통신 => 인터넷 연결 O
  • Host-only (VMnet1, enp0s8): 호스트 PC와 외부 통신 X => 인터넷 연결 X

 

# 2. 패키지 설치

 

$ apt-tranport-https : 패키지 관리자가 https를 통해 데이터 및 패키지에 접근할 수 있도록 함

 

$ ca-certificates : certificate authority에서 발행되는 디지털 서명, SSL 인증서의 PEM 파일이 포함되어 있어 SSL 기반 앱이 SSL 연결이 되어 있는지 확인할 수 있음, curl은 기본적으로 https 사이트의 SSL 인증서를 검증함

 

$ curl : URL을 사용하여 데이터를 전송하기 위한 명령줄 도구 및 라이브러리, 특정 웹사이트에서 데이터 다운로드할 때 사용

 

$ software-properties-common : 리포지토리의 추상화, 소프트웨어 소스 관리, PPA를 추가하거나 제거할 때 사용

 

 

wget vs curl

  • 공통점: 웹 사이트에서 데이터를 다운로드할 수 있음
  • curl이 wget보다 다양한 프로토콜 지원, 다양한 플랫폼에서 빌드/작동 가능, 자동 압축해제 지원

 

PPA

  • Personal Package Archive, 개인 패키지 저장소.
  • 개발자가 소스코드를 업로드하면 자동으로 패키지화 함.
  • 사용자가 다운로드받아 설치할 수 있게 해주는 소프트웨어 저장소.

 

# 3. GPG 키

GPG란

  • 강력한 암호화 프로그램
  • RSA 방식 사용
  • 나의 이메일을 암호화하는 데 사용
  • 대부분의 리눅스 배포판에는 패키지 저장소 인증을 위해 gpg1.x버전이 포함되어 있음

 

# 4. 리포지토리 등록

  • 저장소 설정
  • $ lsb_release -cs : Ubuntu 배포판 이름 반환
728x90
728x90

[실습 II] Docker 설치 실행

 

# 1. ssh 접속

 

MacBook-Pro:~ user$ ssh hjk@192.168.56.102

hjk@192.168.56.102's password: [해당 사용자 계정 비밀번호 입력]



Welcome to Ubuntu 18.04.5 LTS (GNU/Linux 5.4.0-42-generic x86_64)

…

 

 

# 2. apt 업데이트

 

hjk@hjk-VirtualBox:~$ sudo apt-get update

 

 

# 3. 패키지 설치

 

hjk@hjk-VirtualBox:~$ sudo apt-get install -y \
> apt-transport-https \
> ca-certificates \
> curl \
> software-properties-common

 

 

# 4. GPG 키 추가

 

hjk@hjk-VirtualBox:~$ sudo  curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -



OK

 

 

# 5. GPG 키 확인

 

hjk@hjk-VirtualBox:~$ sudo apt-key fingerprint 0EBFCD88



pub   rsa4096 2017-02-22 [SCEA]

      9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88

uid           [ unknown] Docker Release (CE deb) <docker@docker.com>

sub   rsa4096 2017-02-22 [S]

 

 

# 6. 리포지토리 등록

 

hjk@hjk-VirtualBox:~$ sudo add-apt-repository \
> "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
> $(lsb_release -cs) \
> stable"

[sudo] hjk의 암호: [해당 사용자 계정 비밀번호 입력]



hjk@hjk-VirtualBox:~$ sudo apt-get update

 

 

# 7. Docker 설치하기

 

hjk@hjk-VirtualBox:~$ sudo apt-get install docker-ce

[sudo] hjk의 암호: [해당 사용자 계정 비밀번호 입력]

 

 

# 8. Docker 작동 확인 - Hello world 실행

 

# Docker 이미지가 로컬 환경에 없을 경우, 이미지 다운로드 시간 소요

 

hjk@hjk-VirtualBox:~$ sudo docker container run ubuntu:latest /bin/echo 'Hello world'

[sudo] hjk의 암호: 



Unable to find image 'ubuntu:latest' locally

latest: Pulling from library/ubuntu

c549ccf8d472: Pull complete 

Digest: sha256:aba80b77e27148d99c034a987e7da3a287ed455390352663418c0f2ed40417fe

Status: Downloaded newer image for ubuntu:latest

Hello world

 

 

# Docker 이미지가 로컬 환경에 있을 경우(로컬 캐시), 빠른 속도로 실행되는 컨테이너 확인

 

hjk@hjk-VirtualBox:~$ sudo docker container run ubuntu:latest /bin/echo 'Hello world'



Hello world

 

 

# 9. Docker 버전 확인

 

hjk@hjk-VirtualBox:~$ sudo docker version



Client: Docker Engine - Community
 Version:           20.10.7
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        f0df350
 Built:             Wed Jun  2 11:56:40 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.7
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       b0f5bc3
  Built:            Wed Jun  2 11:54:48 2021
  OS/Arch:          linux/amd64
  Experimental:     false

 containerd:
  Version:          1.4.6
  GitCommit:        d71fcd7d8303cbf684402823e425e9dd2e99285d

runc:
  Version:          1.0.0-rc95
  GitCommit:        b9ee9c6314599f1b4a7f497e1f1f856fe433d3b7

 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

 

# 10. Docker 실행 환경 확인

 

# docker 실행 환경의 상세 설정 표시

 

hjk@hjk-VirtualBox:~$ sudo docker system info



Server:

 Containers: 2 # 컨테이너 수
  Running: 0
  Paused: 0
  Stopped: 2
  
 Images: 1

 Server Version: 20.10.7 # Docker 버전

 Storage Driver: overlay2 # 스토리지 드라이버 종류

…

 OSType: linux # OS 종류

 Architecture: x86_64 # 아키텍처

…

 

 

# 11. Docker 디스크 이용 상황

 

# Docker가 사용하고 있는 디스크의 이용 상황 표시

 

hjk@hjk-VirtualBox:~$ sudo docker system df



TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE

Images          1         1         72.75MB   0B (0%)

Containers      2         0         0B        0B

Local Volumes   0         0         0B        0B

Build Cache     0         0         0B        0B

 

 

# 상세 내용 확인 시 -v 옵션 사용

 

hjk@hjk-VirtualBox:~$ sudo docker system df -v



Images space usage:



REPOSITORY   TAG       IMAGE ID       CREATED      SIZE      SHARED SIZE   UNIQUE SIZE   CONTAINERS

ubuntu       latest    9873176a8ff5   3 days ago   72.75MB   0B            72.75MB       2



Containers space usage:



CONTAINER ID   IMAGE           COMMAND                  LOCAL VOLUMES   SIZE      CREATED             STATUS                         NAMES

23397a442583   ubuntu:latest   "/bin/echo 'Hello wo…"   0               0B        About an hour ago   Exited (0) About an hour ago   confident_davinci

a8e81469bebc   ubuntu:latest   "/bin/echo 'Hello wo…"   0               0B        About an hour ago   Exited (0) About an hour ago   interesting_wilson



Local Volumes space usage:



VOLUME NAME   LINKS     SIZE



Build cache usage: 0B



CACHE ID   CACHE TYPE   SIZE      CREATED   LAST USED   USAGE     SHARED
728x90
728x90

[실습 I] Docker 설치  실행

 

실습 환경

 

 

우분투 설치

 

가상 머신 이름 입력

 

메모리 크기 입력 (8GB)

 

가상 하드 디스크 파일 형식 선택 (VDI)

 

동적 할당: 생성 속도가 빠름, 호스트 PC의 스토리지를 절약할 수 있음

고정 크기: 디스크 속도가 빠름, 다른 가상 서버와 공유할 수 있음

가상 하드 디스크 할당 형식 선택 (동적 할당)

 

가상 하드 디스크 크기 설정 (100GB)

 

가상 머신 생성을 마친 후 시스템 설정 창 열기

 

시스템 탭 > 마더보드 > 메모리 크기 확인

 

시스템 탭 > 프로세서 > 프로세서 개수: 4 변경

 

저장소 탭 > ios 파일 삽입

 

다운로드 받은 ios 파일 선택

 

오디오 해제

 

USB 컨트롤러 해제

 

네트워크 > 어댑터 1 > NAT

 

네트워크 > 어댑터 2 > 호스트 전용 어댑터

 

Download updates while installing Ubuntu 체크 해제

 

사용자 이름 및 비밀번호 입력

 

설치 완료 후 검은 창이 뜬다면 시스템 전원을 강제로 종료하고 재시작 수행

 

* windows에서 docker 설치 시 설정해주어야 함. (그러나 hyper-v 사용 시 가상 머신 사용 불가)
* windows에서 docker 사용은 권장하지 않음.

제어판 > 프로그램 > Windows 기능 켜기/끄기 > Hyper-V 체크 해제

 

Ubuntu 설치 후 외부 SSH 원격 접근 설정

 

~$ sudo su - 									# root로 변경(암호는 jeff)
root@docker-host1~# ifconfig 						# not command
root@docker-host1~# apt-get update 					# apt는 무조건 업데이트 먼저 실행
root@docker-host1~# apt-get -y install net-tools

root@docker-host1~# apt-get -y install openssh-server
root@docker-host1~# /etc/init.d/ssh start
root@docker-host1~# apt-get install vim 				# 일반 vi 편집기 설치
root@docker-host1~# vi /etc/ssh/sshd_config 			# 원격 root 접근 허용
	31 PermitRootLogin yes
	32 #PermitRootLogin prohibit-password
root@docker-host1~# /etc/init.d/ssh restart
root@docker-host1~# ping 192.168.56.1

 

설정 후 Putty(외 원격 접속 도구)를 이용하여 접속이 제대로 되는지 확인

ubuntu 터미널에서 ifconfig 명령어 실행 > enp0s8 IP 주소 확인
putty 연결

 

Docker 엔진 설치

 

root@docker-host1~# exit

# 설치 고려사항 리눅스 커널 정보(3.10 이상)와 64비트 확인(x86_64)

~$ uname -a
~$ sudo apt-get install -y \						# 패키지 설치
	  apt-transport-https \
	  ca-certificates \
	  curl \
	  software-properties-common
~$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -	# GCP 키 추가
~$ sudo apt-key fingerprint 0EBFCD88					# GCP 키 확인

# debian 계열의 docker repository 추가 후 apt update 수행(/etc/apt/sources.list에 기록)

~$ sudo add-apt-repository \
> "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
> $(lsb_release -cs) \
> stable"

~$ cat /etc/apt/sources.list 		# repository 정보 추가 확인
... 
 deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable
~$ sudo apt-get update
[sudo password for jeff]: 
~$ apt-cache policy docker-ce
 
~$ sudo apt-get -y install docker-ce	# docker CE 버전 설치
~$ sudo docker version
~$ sudo usermod -aG docker jeff	# sudo 없이 docker 사용하기
~$ sudo systemctl enable docker
~$ sudo systemctl restart docker
~$ sudo reboot
~$ docker version (Server: Docker Engine Version: 19.03.13)

 

설정이 성공적으로 완료되었다면 Client와 Server 확인 가능

 

 

도커 허브 로그인 성공

 

728x90
728x90

[이론 II] 컨테이너 서비스 이해와 Docker 활용

 

 

가상 머신 vs 컨테이너

 

출처: https://hackaday.com/2018/09/05/intro-to-docker-why-and-how-to-use-containers-on-any-system/

 

VMs Containers
 - 가상 머신은 물리적 머신보다 속도가 느리고 성능이 떨어진다.
 - Guest OS 설치가 필수다.
 - 이미지에 OS가 포함되어 무겁다.
 - 컨테이너는 가상 머신보다 속도가 빠르고 성능이 좋다.
 - 컨테이너는 호스트 OS의 커널을 공유하여 사용한다.
 - 이미지가 가볍다.

 

 

Docker란?

 

  • 리눅스 컨테이너 기반의 오픈 소스 가상화 플랫폼이다.
  • 애플리케이션을 신속하게 구축 및 배포할 수 있다.
  • Guest OS가 없다.
  • Guest OS는 하드웨어의 의존적인 명령어를 사용하여 성능 저하를 불러온다 => 가상 머신이 컨테이너보다 성능이 떨어지는 이유

 

 

Docker Architecture

 

  • 클라이언트: 데몬과 Unix 소켓 또는 네트워크 인터페이스를 통해 REST API를 사용하여 통신한다.
  • 데몬: Docker 컨테이너를 빌드, 실행, 배포하는 작업을 수행한다.
  • 레지스트리: Docker 이미지를 저장한다. (기본적으로 Docker Hub에서 이미지를 찾도록 구성됨)
  • 객체: 이미지, 컨테이너, 네트워크, 볼륨, 플러그인 및 기타 객체

 

출처: https://docs.docker.com/get-started/overview/

 

 

이미지와 컨테이너

 

이미지(실행 파일)

  • 프로그램, 라이브러리, 소스를 설치하고 파일로 생성한 것

 

컨테이너(프로세스)

  • 이미지를 실행한 상태

 

 

Docker Command

 

 docker build  이미지 생성
 docker pull  이미지 다운로드
 docker run  이미지 생성 > 이미지 실행 > 컨테이너 시작
 docker images  다운로드한 이미지 목록 출력
 docker ps -a  정지된 컨테이너까지 모두 출력 
 docker start  컨테이너 시작
 docker restart  컨테이너 재부팅
 docker attach  컨테이너 접속
 docker exec  컨테이너 내부에서 명령 실행
 docker stop  컨테이너 정지
 docker rm  컨테이너 삭제
 docker rmi  컨테이너 이미지 삭제

 

 

 

728x90
728x90

[이론 I] 컨테이너 서비스 이해와 Docker 활용

 

클라우드 서비스 모델

 

 

시스템 기반의 구성 요소

 

  • [하드웨어] 물리적인 요소 - 서버 장비 본체, 스토리지, 전원 장치 등
  • [네트워크] 라우터, 스위치, 방화벽, 네트워크 장비들의 연결을 위한 케이블 배선
  • [OS] 하드웨어나 네트워크 장비 제어를 위한 기본 소프트웨어
     A. 클라이언트 OS - Windows / macOS
     B. 서버 OS - Windows Server / Unix / Linux
  • [미들웨어] 서버 OS 상에서 서버가 특정 역할을 다하기 위한 기능을 갖고 있는 소프트웨어
     A. 상용
     B. 오픈 소스

 

Linux kernel

 

  • 하드웨어 제어에 관한 OS의 핵심이 되는 기능
  • [디바이스 관리]
    A. Linux 커널은 하드웨어를 디바이스 드라이버라는 소프트웨어를 이용하여 제어
    B. 하드웨어 - CPU / 메모리 / 디스크 / 입출력 장치
  • [프로세스 관리]
    A. PID라는 식별자를 붙여 관리
    B. 프로세스의 실행을 위해 필요한 CPU를 효율적으로 할당
  • [메모리 관리]
    A. 프로그램/데이터를 물리 메모리에 효율적으로 할당
    B. swap : 가상 메모리 영역
    C. 스왑아웃 : 메모리상에 전개된 이용 빈도가 낮은 데이터를 스왑으로 보냄
    D. 스왑인 : 스왑상의 데이터를 메모리로 되돌림 하드웨어 제어에 관한 OS의 핵심이 되는 기능

Linux Shell

 

  • Linux 커널을 조작할 때 이용
  • 쉘은 사용자가 내린 명령을 커맨드로 받음 > Linux 커널에 전달
  • 기능
    A. 애플리케이션 실행/정지/재실행
    B. 환경변수 관리
    C. 명령 이력 관리(명령 히스토리)
    D. 명령 실행 결과 표시 및 파일 출력
  • 쉘 스크립트
    A. 쉘에서 실행하고자 하는 명령을 모아서 텍스트 파일에 기술한 것
    B. 제어 구문 사용 가능 > 조건 분기 또는 반복 처리 수행

 

Linux File System

 

 

  • Linux에서 하드 디스크나 USB 메모리, CD, DVD 등과 같은 데이터에 액세스하기 위한 장치
  • VFS (Virtual File System) : 가상 파일 시스템
    A. 각 디바이스를 파일로 취급
    B. 다양한 파일 시스템을 일관된 형태로 인식하도록 함

 

Linux Directory

 

 

인프라 구성 관리 툴 개요

 

  • [Bootstrapping] OS의 시작을 자동화하는 툴
    A. OS 설치
    B. 가상 환경 설정
    C. 네트워크 구성 설정
    D. KickStart - Red Hat 계열 Linux 배포판에서 사용 가능
    E. Vargrant - 로컬 PC에 가상 환경을 만들기

 

  • [Configuration] OS나 미들웨어의 설정을 자동화하는 툴
    A. OS 설정 (보안/서비스 시작 등)
    B. 미들웨어 (각종 서버)의 설치 및 설정
    C. Chef, Ansible, Puppet, Itamae

 

  • [Orchestration] 여러 서버의 관리를 자동화하는 툴
    A. 애플리케이션 배포
    B. 서버군의 오케스트레이션
    C. Kubernetes - 여러 컨테이너를 통합 관리하는 툴
728x90
728x90

CloudEndure

온프레미스에서 AWS 환경으로 마이그레이션 I - WordPress 설치

아키텍처 구성도

 

사전 작업

- 가상 머신에 WordPress 설치 (CentOS7, Apache2, MariaDB, PHP)

 

마이그레이션 작업

  1. CloudEndure 계정 등록
  2. CloudEndure 콘솔에 로그인
  3. 프로젝트 설정
  4. 자격 증명 생성 및 사용 (정책 생성, IAM 사용자 및 자격 증명 생성, AWS 자격 증명 적용)
  5. 복제 설정 구성
  6. CloudEndure 에이전트 설치
  7. WordPress 콘텐츠 생성
  8. 대상 머신 Blueprint 구성
  9. 대상 머신 테스트

 

WordPress 설치

 

VMware Tools 설치

더보기

# VMware Tools 설치

mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom
cp /mnt/cdrom/VMwareTools-version.tar.gz /tmp/
ls /mnt/cdrom
cd /tmp
tar -zxvf VMwareTools-version.tar.gz
cd vmware-tools-distrib
./vmware-install.pl

# pl 실행 에러 시
yum install –y perl

# ifconfig 명령어 설치
yum install -y net-tools

Install VM ware Tools

 

Apache 설치

더보기

# 아파치 설치

yum -y update
yum -y install httpd
systemctl start httpd
systemctl enable httpd
firewall-cmd --add-service=http --permanent
firewall- cmd --add-service=https --permanent
firewall-cmd --reload
systemctl status httpd.service
웹 브라우저 열기
http://IP 주소 접속

테스트 페이지 확인

 

MariaDB 설치

더보기

yum install -y mariadb-server mariadb
systemctl start mariadb
systemctl enable mariadb
systemctl status mariadb
mysql_secure_installation
엔터
mariadb root 계정의 비밀번호를 생성할 것인가
y
새로 추가할 root 계정의 비밀번호 등록
It12345!
인증된 계정만 접속할 수 있도록 anonymous 계정을 삭제할 것인가
y
mariadb root 계정이 외부에서 접속하지 못하도록 할 것인가
y
테스트용 DB를 삭제할 것인가
y
설정을 바로 적용할 것인가
y

MariaDB 설치 및 구성 완료

 

PHP 설치

더보기

# PHP 설치

yum install -y wget
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh epel-release-latest-7.noarch.rpm
wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm
rpm -Uvh remi-release-7.rpm
yum install -y yum-utils
yum-config-manager --enable remi-php72
yum -y install php php-mysql php-gd
vi /var/www/html/index.php
<?php phpinfo(); ?>
systemctl restart httpd

# 웹 브라우저 열기
http://IP 주소/index.php 접속

# 소스 코드가 그대로 출력될 경우
vi /etc/httpd/conf/httpd.conf
AddType application/x-httpd-php .html .php7 .php
AddType application/x-httpd-php-source .phps
systemctl restart httpd

PHP 테스트 페이지 확인
테스트 페이지 대신 소스 코드가 출력될 경우

 

WordPress 설치 및 구성

더보기

mysql -uroot -pIt12345!
CREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
GRANT ALL ON wordpress.* TO 'user'@'localhost' IDENTIFIED BY 'It12345!';
exit
yum install -y wget
wget "http://wordpress.org/latest.tar.gz"
tar -xvzf latest.tar.gz -C /var/www/html
ll /var/www/html/
chown -R apache: /var/www/html/wordpress
ll /var/www/html/
vi /etc/httpd/conf/httpd.conf
systemctl restart httpd.service


# 웹 브라우저 열기
http://ip주소/wp-admin/setup-config.php

 

 

한국어 선택

 

설치 시작

 

앞서 생성한 정보 입력

 

wp-config.php 파일 생성

더보기

cd /var/www/html/wordpress/
vi wp-config.php
systemctl restart httpd

wp-config.php 파일 생성

 

WordPress에서 사용할 사이트 제목과 WordPress 관리 계정 생성

 

생성 완료

 

로그인

 

WordPress 관리자 페이지 확인

 

①http://IP주소를 입력하여 WordPress 페이지 확인

728x90
728x90

Monitoring

루트 계정에 대한 계정 활동 모니터링 및 알림 설정

  1. CloudWatch Events 규칙은 AWS Root 사용자 계정 API의 모든 이벤트 감지
  2. AWS Lambda 함수 트리거
  3. Lambda 함수는 Root API 이벤트 처리
  4. SNS 주제에 메시지 게시
    - 제목: Root API 호출이 감지된 AWS 계정 ID 또는 AWS 계정 별칭과 API 활동 유형 포함
  5. SNS 주제는 이벤트에 대한 알림을 구독자에게 이메일 전송

사전 작업

  1. 모든 AWS 리전에 대해 다중 리전 AWS CloudTrail 추적 생성 및 활성화
  2. RootActivityLambda.zip 파일을 S3 버킷에 업로드

 

CloudTrail 추적 활성화

  • 모든 리전에 적용되는 추적은 모든 리전에서 S3 버킷으로 로그 파일을 전송함
  • 추적을 생성하면 사용자가 지정한 이벤트에 대한 로깅을 자동으로 시작함
  • 계정에 대한 추적 생성 시 이점
  • 1) 로그 이벤트를 Amazon CloudWatch Logs로 보내 지정된 이벤트를 자동으로 모니터링함
  • 2) Amazon Athena로 사용자 활동을 분석하고 로그를 쿼리하는 옵션

 

CloudTrail 콘솔 > 추적 생성

 

 

로그 파일 SSE-KMS 암호화 > SSE-S3 대신 SSE-KMS로 로그 파일을 암호화 할 경우 활성화

추가 설정
 > 로그 파일 검증 : 로그 다이제스트를 S3 버킷으로 전송
 > SNS 알림 전송 : 로그가 버킷으로 전송될 때마다 알림
                - 여러 이벤트를 로그 파일에 저장
                - CloudTrail의 모든 이벤트가 아닌 모든 로그 파일에 대한 SNS 알림 전송

 

 

CloudWatch Logs > 로그 파일을 전송하도록 구성
태그 > CloudTrail 추적과 CloudTrail 로그 파일이 포함된 Amazon S3 버킷을 모두 식별

 

관리 이벤트 : 기본
데이터 이벤트 : 추가 요금 부과
Insight 이벤트 : 추가 요금 부과

 

생성 완료

 

 

RootActivityLambda.zip 다운로드

 

S3 버킷에 파일 업로드

 

CloudFormation을 이용한 배포

  1. RootAPIMonitor.json 템플릿을 이용한 스택 생성
  2. us-east-1 리전에서 스택 생성
    - Root API 로그인은 글로벌 이벤트이며 us-east-1에서 기록됨
  3. 매개 변수 정보 입력
  4. 선택 기능 수신 확인 선택
  5. CloudFormation 스택 완료 시 SNSSubscriptions에 제공된 이메일로 전송 된 SNS 구독 이메일 확인

 

객체 URL 복사

 

복사한 객체 URL 입력

 

파라미터 입력
SNSSubscriptions : SNS 주제를 구독할 이메일 주소
SNSTopicName : 생성할 SNS 주제의 고유한 이름
Lambda Timeout : Lambda 함수 제한 시간 값
LambdaS3Bucket : Lambda 함수 zip 파일이 저장된 S3 버킷의 이름
LambdaS3Key : Lambda 함수 zip 파일의 이름

파라미터 입력

 

스택 생성 완료

 

파라미터 값에 입력한 이메일 주소로 구독 확인 메일이 수신됨 

 

이후 루트 계정에서 로그인을 하면 메일로 알림을 받음

 

728x90
728x90

AWS IAM

보안 모범 사례 II - 사용자 계정

  1. MFA 활성화
  2. IAM 사용자 및 그룹 관리 (개별 IAM 사용자 생성, 그룹을 사용한 권한 할당)
  3. IAM 비밀번호 정책 적용
  4. 액세스 키 회전

 

MFA 활성화

 

AWS 공식 홈페이지에서 안내하는 가상 MFA 디바이스 설정과 호환되는 애플리케이션 목록 확인

 

애플리케이션 설치

 

IAM 콘솔 > 사용자 > 생성한 사용자 > 보안 자격 증명 > 할당된 MFA 디바이스 > 관리

 

가상 MFA 디바이스

 

어플리케이션 실행 > 바코드 스캔

 

QR 코드 표시 > QR 코드 스캔 > MFA 코드 두 번 입력 > MFA 할당

 

MFA가 할당된 것을 확인할 수 있음

 

IAM 사용자 및 그룹 관리

user라는 사용자 계정을 추가하고 AdministratorAccess 정책이 적용되도록 Administrator 그룹에 추가한다.

 

 

액세스 키 회전

사용자 계정만 해당되는 항목

 

 

최초 액세스 키가 활성 상태이므로 두 번째 액세스 키를 생성한다.

 

 

새 액세스 키를 사용하도록 모든 애플리케이션과 도구를 업데이트한다.

최초 액세스 키를 아직도 사용하고 있는지 확인하고 사용 내역이 없다면 삭제대신 비활성화를 시킨다.

 

 

 

새 액세스 키를 정상적으로 사용하고 있는지 확인하고 최초 액세스 키를 삭제한다.

728x90

+ Recent posts