실습) Azure 방화벽을 설치하면 인바운드 및 아웃바운드 네트워크 액세스를 제어할 수 있다.
Workload-SN 서브넷과 Jump-SN 서브넷이 있는 가상 네트워크 상에서 Workload-SN의 모든 아웃바운드 워크로드 트래픽은 사용자가 지정하는 route를 통해 방화벽을 통과하여 나간다. 이번 실습에서는 www.bing.com에 대한 아웃바운드 트래픽만 허용하는 Firewall Application Rule을 만들고 외부 DNS 서버 검색을 허용하는 Firewall Network Rule을 생성해본다.
Task 1: Deploy the Azure firewall
Task 2: Create a default route
Task 3: Configure an application rule
www.bing.com에 대한 아웃바운드 액세스를 허용하는 Firewall application rule 생성
Task 4: Configure a network rule
53번 포트(DNS)의 두 IP 주소(209.244.0.3, 209.244.0.4)에 대한 아웃바운드 액세스를 허용하는 Firewall network rule 생성
Firewall Rules - NAT Rules = Port Forwarding (밖→안) - Application Rules = 웹 관련 rule (안→밖) - Network Rules = 나머지 rule (안→밖)
VPN Forced Tunneling vnet에 있는 서버들이 서브넷으로 나눠져 있음(모두 인터넷 나갈 수 있음) → on-premise와 VPN으로 연결 → on-premise를 거쳐서 인터넷을 나가도록 하는 것을 VPN Forced Tunneling이라고 한다
User Defined Routes and Network Virtual Appliance 중간에 정보를 수집하기 위한 장치 UDR : 기본 시스템 경로를 재정의, 서브넷과 연결 NVA : 네트워크 간 네트워크 트래픽 흐름을 제어
실습) NVA Azure는 기본적으로 가상 네트워크 내의 모든 서브넷 간에 트래픽을 라우팅한다. 하지만, 사용자 정의 route를 생성하여 Azure의 기본 라우팅을 재정의할 수 있다. NVA(Network Virtual Appliance)는 서브넷 간 트래픽을 라우팅하는 경우에 유용하다.
Task 1: Create a route table & Task 2: Create a route
Route Table을 하나 만들고, Route를 추가하여 정의해준다.
10.0.1.0/24로 갈때는 생성한 라우팅 테이블(10.0.2.4)을 거치라고 하는 것이다.
Task 3: Associate a route table to a subnet & Task 4: Add subnets to the virtual network
Task 5: Associate myRouteTablePublic to your Public subnet
생성한 라우팅 테이블과 Public 서브넷을 연결시켜준다.
Task 6: Create an NVA
NVA는 라우팅 및 방화벽 최적화와 같은 네트워크 기능을 지원하는 VM이다.
Task 7: Turn on IP forwarding
NVA VM의 Network Interface와 DMZ를 연결한다.
Task 8: Create public and private virtual machines
각 서브넷(public, private)에 VM을 하나씩 생성한다.(myvmPublic, myvmPrivate)
Task 9: Route traffic through an NVA & Task 10: Enable ICMP through the Windows firewall
Trace route를 위한 ICMP가 Windows 방화벽을 통과하지 않도록 설정한다.
myvmPublic VM도 위와 같은 설정을 해준다!!
Task 11: Turn on IP forwarding within myVmNva
Task 12: Test the routing of network traffic
myVmPublic VM →→ myVmPrivate VM
첫 번째 홉은 10.0.2.4 (myNVA의 IP 주소)
두 번째 홉은 10.0.1.4 (myVmPrivate의 private IP 주소)
Task5의 결과로 트래픽을 myvmPrivate로 직접 전송하지 않고 NVA를 통해 전송한 것을 알 수 있다.
myVmPrivate VM →→ myVmPublic VM으로는 트래픽을 직접 라우팅하는 것을 볼 수 있다.
Pass-through authentication(PTA) : 사내 ad에서 인증을 받아야 함
AD FS : 조건 기반 인증(특수 조건 만족하는 직원만 인증)
PHS - on-premise 암호를 해시로 암호화 하여 Azure AD에 동기화 - on-premise에 있는 암호를 사용하여 Azure AD 서비스에 로그인 - 사용자의 생산성 향상 및 헬프데스크 비용 절감
PTA★
- 모든 웹 브라우저 기반 응용 프로그램과 Microsoft Office 클라이언트 응용 프로그램에 대한 사용자 로그인 지원 - Azure AD Connect를 통해 활성화할 수 있음 - 사용자 로그인뿐만 아니라 조직에서 다른 Azure AD 기능(MFA 및 셀프 서비스 암호 재설정)을 사용할 수 있음
Federation with Azure AD - 도메인 간 신뢰 관계로 연결해놓은 것 - 다른 조직과 연동(쿠팡에서 회원가입할 때 네이버로 가입하는 등) - 모든 user의 인증은 on-premise에서 이뤄짐
Password Writeback - 암호는 on-premise에 있는데, Azure AD에서 암호를 재설정하면 다시 on-premise로 이 정보가 저장되어야 함
++ Lab06 끝나고 추가로 해봐야할 것 1. IT ou 계정으로 azure 포탈 접속(o) 2. Sales ou 계정으로 azure 포탈 접속(x) 3. IT ou에서 계정만들어서 powershell sync 명령어(Start-ADSyncSyncCycle) 4. IT ou 계정 MFA 설정
IaaS(Infrastructure as a Service) : 상/하수도, 전기, 도로, 항만, 통신 / Network, Server Computer, Firewall, VPN
PaaS(Platform as a Service) : 시장(거기에 가면 모든 물건을 구매할 수 있다) Amazon, 쿠팡 / OS 및 관련 프로그램 설치 (App Service, Azure SQL, VM with Visual Studio, Azure Container Instance(도커), Azure Kubernetes Service)
SaaS(Software as a Service) : 음식, 장난감, 스포츠, 놀이공원, 핸드폰 / Application (DB, Spread Sheet, Document, 통신...) / Microsoft 365, ZOOM, EverNote
CaaS(Code as a Service) : VM, Network, Firewall 하기 위해서 Code로 구축하기(DebOps) / GUI(Azure Portal) -> CLI(Azure PowerShell, Azure CLI) -> Template(ARM Template) -> Code(Terraform으로 작업을 하면 AWS, Azure, GCP 등등의 VM을 한 방에 생성할 수 있다(표준)) -> Ansible(VM 관리)
DaaS(Desktop as a Service) : WDS(Windows Desktop Service ; AWS, Azure) 데스크톱을 빌림
** DevOps : Development & Operations(개발 및 운영). 개발자가 운영도 같이 해라
** Serverless Computing : Cloud에서 Kubernetes 운영, Azure의 App Service 등
<Azure 보안 기술>
Shared Responsibility Model
- 서비스를 어떻게 하느냐에 따라 신경 쓸 부분(책임)이 달라진다.
- IaaS > PaaS > SaaS 순으로 고객이 할 일이 줄어든다. 보안이 높아진다.
Azure Cloud Security Advantages
- 클라우드 사용 시 보안성이 매우 높다
Azure Hierarchy
- Management Group : 구독을 관리하는 그룹
- Management Group(이건 잘 안씀) > Subscription(그 계정을 위한 제품과 서비스를 준비함) > Resource Group(리소스를 논리적으로 묶어 관리함. 리소스끼리는 life cycle이 같음) > Resource
Azure Policy
- Resource에 Property를 적용(type, locations, tag, SKU 등)
- 먼저 조사 후 그 규정에 준수하고 있지 않은 Resource를 체크한다
- 장점 : 강제와 규정을 통한 확실한 관리 가능/범위 조정 가능
Azue Role-Based Access Control
- 특정 유저, 그룹에게 특정 자원 액세스 통제권 줌. "자원"에 대해서!!
- OWNER, Contributor, Reader 등
- Azure AD와 다른 수준임(AAD에서 유저에게 role 주는 경우. Azue Portal에 접속하게 하기 위해서. Global admin, Application admin 등)
** RBAC - 해당 자원에 대해 뭐할건지, 어떤 역할을 둘건지. Azure Resource에 대해 누가 접근할 수 있는지.
** Azure Policy - 자원을 만들 때 어떤 규칙을 꼭 준수해야 한다.
Built-in Roles for Azure Resources
Owner : resource에 대한 모든 것 관리
Contributor : resource 접근 통제 권한은 없고 owner와 같음
Reader : 볼 수 있지만 수정 불가
User Access Administrator 등등
Resource Locks
- Read-only, Delete 등을 못하게 막는 것
- 대상 : 구독, 리소스 그룹, 리소스
Azure Active Directory
Roles
Global Administrator : 모든 관리 기능(Resource가 아니라 Azure AD에 대해서) > 가능하면 5명 이내로 지정하는 것을 추천
Security Administrator : Microsoft 365 등에서 보안 관리
Billing Administrator : 구독 관리, 서비스 상태 모니터링 등 관리
Global Reader , Application Administrator , Application Developer; Azure Information Protection Administrator 등등
Azure AD Domain Service
- Azure VNet을 도메인으로 관리
- On-premise 상의 Active Directory와 통합
Azure AD Users
- 모든 사용자는 account를 가지고 있어야 함
- account는 인증과 권한에 사용
Cloud indentities : Azure AD에만 있는 users
Directory-syncronized identities : on-premises에 있는 users를 동기화
Guest : Azure 바깥에 있는 users
Azure AD Groups
- users 모음(permission 주기 위한)
Security Groups : 모든 멤버에게 한 번에 permission 주기
Microsoft 365 groups : 이메일, 캘린더, files 등에 접근 가능한 그룹
- Types
Assigned : 수동으로 추가
Dynamic User : 사용자의 속성값을 보고 자동적으로 추가/삭제
Dynamic Device(Security Group only) : 디바이스의 속성값을 보고 자동적으로 추가/삭제
Administrative Units in Azure AD
- 어떤 user, group에 특정 role을 부여하는 것
Passwordless
ex) Windows hello(생체인식), FIDO2 보안 키, Microsoft Authenticator 앱
IaaS 는 인터넷을 통해 프로비저닝 및 관리되는 컴퓨팅 인프라로, 수요에 따라 신속하게 스케일 업 및 스케일 다운하여 사용한 것에 대해서만 비용을 지불할 수 있다.
Virtual Machine
① 기본 개념
VNet Azure에서는 가상 네트워크(VNet)를 사용하여 외부로부터 가상 머신을 보호할 수 있다. 동일한 VNet의 VM 및 서비스는 서로 액세스할 수 있다.
VM 위치 설정 Azure는 전 세계에 서버와 디스크로 가득 찬 데이터 센터를 보유하고 있다. 이러한 데이터 센터는 중복성과 가용성을 제공하기 위해 지리적 지역으로 그룹화 한다. (East US, North Europe, Southeast Asia..)
가격 책정 모든 VM에 대해 두 가지 구독 비용(컴퓨팅과 스토리지)이 별도로 청구된다.
- 컴퓨팅 비용 : 예를 들면, VM을 사용한 시간에 따라 비용 청구. Linux보다 Windows가 더 비쌈 - 스토리지 비용 : VM이 사용하는 스토리지에 대해 별도 요금이 부과됨. VM 상태와 상관없이 디스크가 사용한 스토리지에 대해 비용이 부과됨
Sizing 작업량에 따라 적절한 VM 크기를 결정해야 한다. 사용 중간에 크기를 변경할 수도 있다.
가상머신 스토리지 다른 컴퓨터와 마찬가지로, VM도 운영체제, 애플리케이션 및 데이터를 저장하는 공간으로 디스크를 사용한다. 모든 VM에는 적어도 두 개의 디스크(운영체제 디스크와 임시 디스크)가 있다. 또, 하나 이상의 데이터 디스크가 있을 수도 있다. 모든 디스크는 VHD(가상 하드 디스크)로 저장된다.
- 운영체제 디스크 기본으로 등록되는 디스크로, 기본적으로 C: 드라이브로 레이블이 지정된다. - 임시 디스크 단기 스토리지, 페이지나 스왑 파일 등의 데이터 저장 전용 공간. Windows에서는 기본적으로 D: 드라이브, Linux에서는 /dev/sdb 이다. - 데이터 디스크 애플리케이션 데이터 또는 유지해야 하는 기타 데이터 저장 - 관리 디스크 VHD. 가상화된 디스크로, Azure의 I/O 저장소 개체인 페이지 Blob에 저장된다. 사용 가능한 디스크 유형으로는 Ultra SSD, Premium SSD, Standard SSD, Standard HDD가 있다.
Connection 1. Windows 기반 VM : RDP(원격 데스크톱 프로토콜) 클라이언트를 통해 연결 2. Linux 기반 VM : SSH(Secure SHell) 클라이언트를 통해 연결. 예를들면 PuTTY 3. Bastion 연결 : 완전한 PaaS 서비스. SSL을 통해 Azure Portal에서 직접 VM에 연결하여 안전하고 원활한 RDP/SSH 연결이 가능하다. Bastion을 통해 연결할 때는 VM의 Public IP가 필요가 없다!
② 가상머신 유지보수(재해 복구 및 백업 기술)
VM을 사용할 때, 예상하거나 예상하지 못한 오류에 대비해야 한다. (하드웨어 중지, 자연재해, 업데이트 및 업그레이드 등)
Availability Set 관련 VM 그룹을 배포하는 데 사용되는 중복성과 가용성을 제공하기 위한 논리적 집합으로, 같은 Availability Set에 배치된 VM은 동일한 기능을 수행하고 동일한 소프트웨어가 설치되어 있다.
AS(가용성 집합)에 포함된 VM은 Update Domain 혹은 Fault Domain에 할당된다. 각 AS는 최대 3개의 FD와 20개의 UD로 구성할 수 있다. - UD(Update Domain) : 동시에 다시 부팅할 수 있는 VM 그룹. 한번에 하나의 UD만 재부팅됨 - FD(Fault Domain) : 공통 전원과 네트워크 스위치를 공유하는 VM 그룹
가상 머신을 Availability Set에 배치하더라도 운영 체제 또는 애플리케이션별 오류로부터 애플리케이션을 보호할 수는 없다. 따라서 Availability Zone을 살펴보자.
Availability Zone Availability Zone은 각 데이터 센터를 물리적으로 별도로 위치시킨 영역이다. 모든 AZ 사용 Region에 최소 3개의 AZ가 존재한다.
따라서 데이터 센터 오류 발생 시 애플리케이션과 데이터를 보호할 수 있다.
Scaling (Vertical, Horizontal) 1. Vertical Scaling = "Scale Up & Scale Down" 작업량에 따라 VM의 크기를 늘리거나 줄이는 것 ex) 주말에는 VM 크기를 줄이기 2. Horizontal Scaling = "Scale Out & Scale In" 작업량에 따라 VM의 숫자를 늘리거나 줄이는 것 ex) 특정 서비스가 몰리면 VM을 늘려 부하 감소
VM Scale Sets scale set을 사용하면 부하 분산된 VM의 그룹을 손쉽게 만들고 관리할 수 있다. ex) 리소스 수요 변화에 따라 자동으로 애플리케이션 크기 조정(자동 크기 조정 옵션 사용), 대규모 작업(최대 1000개의 VM 인스턴스 지원) 등 ..
사용하는 이유? → 중복성과 향상된 성능을 제공하기 위해 애플리케이션은 일반적으로 여러 인스턴스 간에 분산된다. 고객은 인스턴스 중 하나에 요청을 배포하는 Load Balancer를 통해 애플리케이션에 액세스할 수 있다. 유지 관리를 수행하거나 애플리케이션 인스턴스를 업데이트해야 하는 경우, 고객은 사용 가능한 다른 애플리케이션 인스턴스에 배포되어야 한다. 또한, 추가적으로 고객 요구에 맞추려면 애플리케이션을 실행하는 애플리케이션 인스턴스의 수를 늘려야 할 수도 있다. 이럴 때 Scale Set을 통해 VM을 한꺼번에 관리할 수 있다.
VM Extension Azure VM에서 배포 후 구성 및 자동화 태스크를 제공하는 간단한 애플리케이션 ex) 가상 머신에 소프트웨어를 설치해야 하거나, 바이러스 백신을 통해 가상 머신을 보호해야 하거나, 가상 머신 내부에 구성 스크립트가 필요한 경우
실습) Virtual Machine Management
실습 절차는 아래와 같다.
Azure 포털 및 Azure 리소스 관리자 템플릿을 사용하여 영역 복원 Azure VM 배포
VM extenstion을 사용하여 Azure VM 구성
Azure VM을 위해 컴퓨팅 및 스토리지 확장
Azure Portal을 사용하여 Azure VM Scale Set 구축
VM Extension을 사용하여 Azure VM Scale Set 구성
Task 1 : Azure VM 배포
vm0과 vm1을 배포하는데, 생성할 때 Availability Zone을 선택해서 각각 Zone1, Zone2에 포함되도록 구성한다.
Task 2 : VM extenstion을 사용하여 AzureVM 구성 이전 작업에서 배포한 두 개의 VM에 Windows Web Server(IIS)을 설치한다.
Azure Storage의 일시적인 오류, 네트워크 또는 정전, 대규모 자연 재해 등 계획되지 않은 이벤트로부터 데이터를 보호하기 위해 항상 여러 복사본을 가지고 있어야 한다. Replication은 Storage 계정의 오류 발생 시에도 가용성 및 내구성을 충족하도록 한다.
LRS 기본 지역의 단일 물리적 위치 내에서 데이터를 동기적으로 세 번 복사한다. (Three replicas, One Region) 가장 저렴한 복제 옵션. 재해 발생 시 모든 복제본이 손실되거나 복구할 수 없을 수도 있다. 하지만, 데이터 손실에 유의할 필요가 없는 경우 사용하기 적합하다.
ZRS 단일 지역의 3개 스토리지 클러스터에 데이터를 복제한다. (Three replicas, Three zones, One Region) 각 스토리지 클러스터는 다른 클러스터와 물리적으로 분리되어 있다.
GRS/RA-GRS (기본 복제 옵션) LRS를 사용하여 기본 지역의 단일 물리적 위치 내에서 데이터를 동기적으로 세 번 복사한다. 그런 다음 보조 지역의 단일 물리적 위치에 데이터를 비동기적으로 복사한다. 보조 지역 내에서 데이터는 항상 LRS를 사용하여 동기적으로 세 번 복제된다. (Six replicas, Two Regions)
GZRS/RA-GZRS ZRS의 고가용성과 GRS의 보호하는 기능을 결합한 것이다. ZRS를 사용하여 기본 지역에 있는 3개의 Azure 가용성 영역에서 데이터를 동기적으로 복사한다. 그런 다음 보조 지역의 단일 물리적 위치에 데이터를 비동기적으로 복사한다. 보조 지역 내에서 데이터는 항상 LRS를 사용하여 동기적으로 세 번 복제된다. (Six replicas, 3+1 zones, Two Regions)
Storage Endpoint 보호
- 방화벽 및 가상 네트워크
가상 네트워크 또는 공용 IP의 특정 서브넷에서 스토리지 계정에 대한 액세스를 제한한다. (서브넷 및 가상 네트워크는 스토리지 계정과 동일한 Azure 영역에 있어야 한다.)
Blob Storage
Blob Storage는 문서, 미디어 파일, 애플리케이션 설치 관리자와 같은 텍스트 또는 이진 데이터와 같은 데이터 등 모든 유형을 저장할 수 있다.
브라우저에 이미지나 문서 직접 제공
설치와 같은 분산 액세스를 위한 파일 저장
비디오 및 오디오 스트리밍
데이터 백업용
온-프레미스 또는 호스팅 서비스 분석을 위한 데이터 저장
Blob Access 계층
데이터 사용량의 특정 패턴에 맞게 최적화되어 있다.
필요에 맞는 것을 선택해야 효율적인 비용으로 사용할 수 있다.
Hot : 데이터에 자주 액세스하는 경우 가장 적합
Cool : 자주 액세스하지 않으며 30일 이상 저장해야 하는 대량의 데이터 저장 시
Archive : 검색 시간은 오래 걸리지만 180일 이상 데이터 저장 시
실습) Azure Storage 구현
액세스 빈도가 낮은 파일을 저렴한 스토리지 계층에 배치하여 스토리지 비용을 최소화하고자 한다. 또한 Azure 스토리지가 제공하는 네트워크 액세스, 인증, 권한 부여 및 복제를 비롯한 다양한 보호 메커니즘을 살펴본다.
자주 사용하지 않는 데이터의 경우 Access Tier를 Cool로 설정을 해놔야 효과적으로 관리할 수 있기 때문이다.
Task 3 : Blob 스토리지 관리
BLOB를 다운로드하고 액세스 계층을 변경하고(현재 핫으로 설정됨), 리스를 획득하면 리스 상태가 잠금(현재 잠금 해제됨)으로 변경되며 BLOB가 수정 또는 삭제되지 않도록 보호하고 사용자 지정 메타데이터를 할당할 수 있습니다(임의 키 및 값 쌍 지정). 또한 Azure 포털 인터페이스 내에서 파일을 먼저 다운로드하지 않고 직접 편집할 수 있습니다. 스냅샷을 생성할 수도 있고 SAS 토큰을 생성할 수도 있습니다
Task 4 : Azure 스토리지에 대한 인증 및 권한 부여 관리
Container Access 형식이 Private로 되어 있기 때문에 보이지 않는 것이다.
2. Front Door (≒CDN) : Contents를 여러 Server에 복사시킴(예를 들어, IOS 업데이트 등. 전세계가 한 곳에 집중되지 않도록 여러 곳에 Contents를 복사시켜놓고 사람들이 가까운 곳에 접속할 수 있도록 함)
: CDN을 사용하면 그냥 Storage Account를 통해 다운받는 것보다 서비스가 훨~씬 빠르다!
3. Load Balancer
Azure Load Balancer는 OSI(Open Systems Interconnect) 모델의 계층 4에서 작동한다.
로드 밸런서의 Frontend에 들어오는 인바운드 트래픽을 VM(가상 머신) 등의 백 엔드 리소스 또는 서비스 그룹에 분산한다.
Public Load Balancer 공용 로드 밸런서는 가상 네트워크 내부의 VM(가상 시스템)에 아웃바운드 연결을 제공할 수 있다. 이러한 연결은 private IP 주소를 public IP 주소로 변환하여 수행된다. 공용 로드 밸런서는 VM에 대한 인터넷 트래픽 로드 밸런싱을 위해 사용된다.
Internal Load Balancer
프런트 엔드에서만 전용 IP가 필요한 경우 내부(또는 전용) 로드 밸런서가 사용된다. 내부 로드 밸런서는 가상 네트워크 내에서 트래픽을 로드 밸런싱하는 데 사용된다. 로드 밸런서 프런트 엔드는 하이브리드 시나리오에서 온프레미스 네트워크에서 액세스할 수 있다.
- Backend Pool 트래픽을 분산하기 위해 백엔드 주소 풀에는 로드 밸런서에 연결된 가상 NIC 또는 인스턴스 IP 주소가 있다.
- Load Balancer Rules
백 엔드 풀 내의모든인스턴스에 들어오는 트래픽이 배포되는 방법을 정의하는 데 사용된다. Frontend IP 및 port 집합을 Backend pool 및 port 집합에 매핑한다.
- Healthprove Backend pool의 인스턴스 상태를 확인하는데 사용된다.
4. Traffic Manager (≒GSLB) : DNS 서버가 해당 지역과 가까운 곳과 연결시켜줌 (지역에 따라 홈페이지의 IP주소가 다름)
실습) Traffic Management 구현
이번 Lab에서는 트래픽을 허브를 통해 흐르게 하여 스포크간 연결(Hub & Spoke)을 구현하고 Azure 로드 밸런서(계층 4) 및 Azure 애플리케이션 게이트웨이(계층 7)를 사용하여 가상 머신 간에 트래픽을 분산하도록 한다.