Network Security

NSG(Network Security Group)

- 가상 네트워크 트래픽 제한

- 서브넷 또는 네트워크 인터페이스에 연결

- 보안 규칙을 사용하여 네트워크 트래픽 allow 또는 deny

- subnet과 NIC 둘 다에 NSG 설정 시, 두 수준 모두에 allow 규칙이 있어야 트래픽이 허용됨(subnet 및 NIC에 대해 독립적으로 평가됨)

 

Load Balancing

ASG(Application Security Groups)

- 가상 머신(웹 서버, 애플리케이션 서버)을 논리적으로 그룹화

- 트래픽 흐름을 제어하는 규칙 정의

- 보안을 강화하기 위해 ASG를 NSG로 포장

 

Service Endpoint

- VNet(가상 네트워크) Service Endpoint는 Azure 백본 네트워크에서 최적화된 경로를 통해 Azure 서비스에 대한 안전한 직접 연결을 제공한다. 

- Service Endpoint를 사용하면 가상 네트워크에 대해 중요한 Azure 서비스 리소스를 보호할 수 있다. 

- VNet에 public IP 주소가 없어도 private IP 주소를 통해 Azure Service Endpoint에 연결할 수 있다.

service endpoint


실습) NSG, ASG
조직에는 두 개의 서버 그룹이 있다. 웹 서버 및 관리 서버. 각 서버 그룹은 자체 ASG에 있어야 한다.
관리 서버로 RDP를 전송할 수 있어야 하고, 웹 서버는 인터넷에서 액세스할 때 IIS 웹 페이지를 표시해야 한다.
또한 트래픽이 올바르게 라우팅되도록 하려면 NSG를 만들어야 한다.

실습 구성도
NSG

가상 네트워크 myVirtualNetwork를 만들고, mySubnet이라는 서브넷을 만든 후

myNSG라는 네트워크 보안 그룹을 생성하여 이 서브넷에 연결시킨다.

 

Inbound 규칙 추가

myNSG에 Inbound 규칙을 추가한다.

myAsgWebServers ASG에는 80,443 포트로 들어오는 것을 허용하고 (웹)

myAsgMgmtServers ASG에는 3389 포트로 들어오는 것을 허용한다. (원격 접속)

myVmMgmt

myVmMgmt 로 원격 접속을 한 후, 여기서 myVmWeb에 원격 접속을 한다.

myVmMgmt는 원격 접속 포트를 허용해줬기 때문에 외부에서 들어올 수 있지만,  myVmWeb은 허용하지 않았기 때문에 외부에서 곧바로 접속이 불가능하기 때문이다.

외부에서 접속

myVmWeb에서 powershell 명령어를 통해 웹 서버를 설치하고

(Install-WindowsFeature -name Web-Server -IncludeManagementTools)

public IP를 확인한 후, 접속해본다. 80,443번 포트로 들어오는 것을 허용해놨기 때문에 접속에 성공할 수 있다. 


Host Security(Server)

Endpoint Protection

- Endpoint System : 사용자와 직접 상호 작용하는 컴퓨터 시스템

- 엔드포인트를 보호하기 위해서 맬웨어 방지 솔루션 설치. Cloud와 통합하여 상태를 모니터링할 수도 있다.

Virtual Machine Templates
- Resource Manager Templates를 사용하여 VM을 정의한다. 
이를 사용하면 VM을 쉽게 배포 그리고 다시 배포할 수 있다. 새로 업데이트되어 보안이 강화된 OS를 강제로 배포하려는 경우 VM을 주기적으로 다시 배포하는 것이 좋은데, 템플릿을 사용하면 쉽게 배포가 가능하다.

Remote Access Management
- Windows 기반 가상 시스템을 위한 RDP(원격 데스크톱 프로토콜)
- Linux 기반 가상 시스템을 위한 SSH(Secure Shell Protocol)
- SSL을 통한 포털을 통한 RDP/SSH의 기반 서브넷

Update Management
- 전반적으로 업데이트 상태를 평가하고 on-premise 및 Azure 환경에 대해 Windows 서버 및 Linux 서버 업데이트를 관리할 수 있다.

Disk Encryption
- 운영 체제 및 데이터 디스크를 암호화하여 제공할 수 있다.
- Windows는 BitLocker, Linux는 DM-Crypt 이용
- Azure Key Vault와 통합되어 디스크 암호화 키 및 비밀을 제어 및 관리할 수 있다. 


Container Security

ACI(Azure Container Instance)
: 간단한 애플리케이션, 작업 자동화 및 빌드 작업 등 컨테이너에서 작동하는 시나리오용 PaaS 서비스
- 빠른 시작 시간(Azure에서 몇 초만에 컨테이너를 시작할 수 있음) / Public IP 와 DNS로 컨테이너 액세스 가능 / 애플리케이션이 VM에 있는 것처럼 컨테이너에서 격리되도록 보장

 

※ 1. 도커 호스트가 vm 인 경우 docker를 설치하고 로그인을 한 후에 image를 Azure Container Registry에 있는 걸 다운
※ 2. 도커 호스트가 Azure Container Instance인 경우에 docker를 설치하지 않고 Azure Conatainer Registry 에 있는 걸 바로 다운받아 서비스 할 수 있음
(ACI가 좋은 이유는 Public IP가 컨테이너마다 부여되고, docker를 따로 안깔아도 된다는 점)

ACR(Azure Container Registry)
: 컨테이너 이미지를 저장하고 배포하는 서비스
- Azure CLI 또는 표준 docker login 명령을 사용하여 레지스트리에 로그인 >  Azure Container Registry는 HTTPS를 통해 컨테이너 이미지를 전송하고 TLS를 지원하여 클라이언트 연결을 보호
- RBAC(역할기반 액세스 컨트롤) 을 사용하여 사용자 또는 시스템에 세분화된 권한을 레지스트리에 할당할 수 있음

 

AKS(Azure Kubuernetes Service)
컨테이너 기반 애플리케이션 배포 및 관리를 간소화하는 서비스


실습) ACR과 AKS 구성하기 & 보안 활동
1. Dockerfile을 사용하여 이미지를 빌드
2. Azure Container Registry를 사용하여 이미지 저장
3. Azure Kubernetes 서비스를 구성
4. 내부 및 외부 모두에서 컨테이너 애플리케이션을 보호하고 액세스

먼저, 환경 구성

New-Item -Path "C:\" -Name "LabFiles" -ItemType "directory"

Start-BitsTransfer -Source 'https://github.com/MicrosoftLearning/AZ500-AzureSecurityTechnologies/archive/master.zip' -Destination C:\LabFiles

Expand-Archive -Path 'C:\LabFiles\master.zip' -DestinationPath 'C:\LabFiles'

Move-item -Path "C:\LabFiles\AZ500-AzureSecurityTechnologies-master\AllFiles\Labs\09*" -Destination "C:\LabFiles" -confirm:$false

실습 구성도

  • Task 1: Create an Azure Container Registry
az group list --query "[?name=='AZ500LAB09']" -o table
az acr create --resource-group AZ500LAB09 --name az500$RANDOM$RANDOM --sku Basic
az acr list --resource-group AZ500LAB09

Azure Cloudshell (bash)를 이용해

image를 저장할 Azure Container Regisrty를 생성한다.

  • Task 2: Create a Dockerfile, build a container and push it to Azure Container Registry
echo FROM nginx > Dockerfile
ACRNAME=$(az acr list --resource-group AZ500LAB09 --query '[].{Name:name}' --output tsv)
az acr build --image sample/nginx:v1 --registry $ACRNAME --file Dockerfile .

nginx 이미지를 담고있는 Dockerfile을 이용해 컨테이너를 생성하고, Task1에서 만들었던 ACR에 넣어준다.

 

  • Task 3: Create an Azure Kubernetes Service

Kubernetes Service를 하나 생성하고 배포된 것을 확인한다.

 

  • Task 4: Give AKS permission to access the ACR

이전에 생성한 Azure Container Registry 인스턴스를 사용하도록 AKS 클러스터를 구성한다.

 

  • Task 5: Deploy an external facing container from ACR to AKS

처음에 받아뒀던 파일을 cloudshell 업로드/다운로드 기능을 활용하여 업로드한다.
yaml 파일 24번째 줄에서 내가 만든 ACR 이름으로 바꿔줘야 한다.

 

  • Task 6: Verify you can access the container externally

 

  • Task 7: Deploy an internal facing container from ACR to AKS

external yaml 파일과 똑같이 24번째 줄에서 수정을 하고

 

  • Task 8: Verify you can access the container internally

external pod에서 internal pod가 동작중인지 확인해본다.


실습 2) Azure Kubernetes Service 이용
이 때 image는 Azure Container Registry에 저장된 것을 사용

① Resouce Group 생성
② ACR를 GUI로 생성하세요
ACR 서버 : yerimcr.azurecr.io
ACR Username : yerimcr
Password : Kv1=A1A60MDBp5kSRI7m6GLP/qu5JMaY

③ CentOS VM을 하나 생성하여 docker를 설치합니다.
yum install epel-release -y
yum update -y
vi /etc/sysconfig/selinux --> selinux=disabled로 수정
reboot
curl -sSL http://get.docker.com | bash
systemctl start docker

④ nginx, jesuswithme/verify-pod를 다운로드하여 nginx는 내용을 수정하세요
docker pull nginx
docker pull jesuswithme/verify-pod
docker run -d --name testing -p 80:80 nginx
docker exec -it testing /bin/bash
/# find -name "index.html" >> index.html 수정하기 위해 위치를 찾고
/# echo "Hello" > ./usr/share/nginx/html/index.html
/# exit
(VM으로 만든 컨테이너는 http://VM의publicIP:컨테이너포트번호로 확인한다)

⑤ ACR에 맞는 tag를 넣어서 이미지를 생성합니다.
docker tag 이미지 ACR서버/ACR에저장할이미지이름:태그명
docker commit 컨테이너ID ACR서버/ACR에저장할이미지이름:태그명
(docker images 하면 확인가능)

⑥ VM에서 ACR에 Image를 업로드합니다
docker login ACR서버 -u ACRusername
docker push ACR서버/이미지이름:태그명
(이제 ACR에서 올라간 이미지 확인 가능!!)

⑦ ACI에서 Container를 실행합니다
생성 중간에 Azure Container Registry 선택 후 여기에 업로드 한 이미지로 생성
생긴 Container의 Public IP로 접속

⑧ AKS를 구성합니다.

⑨ AKS에서 Deployment와 Service를 생성하여 Pod에 접속하게 합니다. 
yaml파일을 이용하려면 VM에서 다운로드하여 사용하세요
(vm) curl -sSL http://down.cloudshell.kr/down/k8slab.sh | bash
(vm) ls -l
(vm) cd k8s
(vm) cat 명령어로 deployment 대한 yaml 파일 확인하고 복사

AKS에서 deployment를 생성(복사한 yaml파일 활용)

(Cloudshell-Bash) az aks get-credentials -g yerimRG -n yrkube
(Cloudshell-Bash) kubectl get deployment -o wide
(Cloudshell-Bash) kubectl expose deployment app-deploy  --port=80 --type=LoadBalancer
(Cloudshell-Bash) kubectl get svc -o wide >>서비스 Public IP로 접속

'Study > Cloud' 카테고리의 다른 글

AZ500 (Azure Firewall 구현)  (0) 2022.08.18
AZ500 (Implement Platform Protection)  (0) 2022.08.18
AZ500 (Hybrid Identity)  (0) 2022.08.18
AZ500 (Identity and Access)  (0) 2022.08.17
AZ104 (NAT)  (0) 2022.08.12

실습) 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

Route table을 만들어 서브넷과 연동, Route를 추가한다.

Task 3: Configure an application rule

application rule 생성

www.bing.com에 대한 아웃바운드 액세스를 허용하는 Firewall application rule 생성 

 

Task 4: Configure a network rule

Network rule 추가

53번 포트(DNS)의 두 IP 주소(209.244.0.3, 209.244.0.4)에 대한 아웃바운드 액세스를 허용하는 Firewall network rule 생성

 

Task 5: Configure the virtual machine DNS servers

NIC에 DNS Server 추가

Task 6: Test the firewall

Srv-Jump VM

Srv-Jump VM에 접속한 다음, Srv-Work에 원격접속을 시도한다.

Srv-Work 상에서 Bing과 Microsoft를 각각 접속해본다.

www.bing.com 은 접속이 되지만, www.microsoft.com  은 접속이 되지 않는다.

'Study > Cloud' 카테고리의 다른 글

AZ500 (Network, Host, Container)  (0) 2022.08.19
AZ500 (Implement Platform Protection)  (0) 2022.08.18
AZ500 (Hybrid Identity)  (0) 2022.08.18
AZ500 (Identity and Access)  (0) 2022.08.17
AZ104 (NAT)  (0) 2022.08.12
  • Defense in Depth (심층방어)

보안이 필요한 지점

  • Azure Firewall

Outbound SNAT = 안→밖
Inbound DNAT = 밖→안

 

  • Firewall Rules
    - NAT Rules = Port Forwarding (밖→안)
    - Application Rules = 웹 관련 rule (안→밖)
    - Network Rules = 나머지 rule (안→밖)

 

  • VPN Forced Tunneling
    vnet에 있는 서버들이 서브넷으로 나눠져 있음(모두 인터넷 나갈 수 있음) → on-premise와 VPN으로 연결 → on-premise를 거쳐서 인터넷을 나가도록 하는 것을 VPN Forced Tunneling이라고 한다

vpn forced tunneling

 

  • User Defined Routes and Network Virtual Appliance
    중간에 정보를 수집하기 위한 장치
    UDR : 기본 시스템 경로를 재정의, 서브넷과 연결
    NVA : 네트워크 간 네트워크 트래픽 흐름을 제어

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

vnet과 그 서브넷 생성

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

private vm

Trace route를 위한 ICMP가 Windows 방화벽을 통과하지 않도록 설정한다. 

myvmPublic VM도 위와 같은 설정을 해준다!!

 

Task 11: Turn on IP forwarding within myVmNva

nva vm

 

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으로는 트래픽을 직접 라우팅하는 것을 볼 수 있다.

기본적으로는 서브넷 간에 트래픽을 직접 라우팅하기 때문이다.

'Study > Cloud' 카테고리의 다른 글

AZ500 (Network, Host, Container)  (0) 2022.08.19
AZ500 (Azure Firewall 구현)  (0) 2022.08.18
AZ500 (Hybrid Identity)  (0) 2022.08.18
AZ500 (Identity and Access)  (0) 2022.08.17
AZ104 (NAT)  (0) 2022.08.12

Azure AD Connect
- 사내 AD를 Azure로 Sync(사용자 계정과 그룹 계정이 복사됨. 암호는 복사안되어 로컬에서 확인해야 함)

Azyre AD Connect cloud sync
- AD 사용자 계정을 만들면 Azure AD 서비스를 이용하기 위해서 수동으로 등록할 수도 있다. (Start-ADSyncSyncCycle)
동기화를 중단할 수도 있다.

Authentication Option

  1. Password Hash Synchronization(PHS) : 사내 pw를 동기화할때 암호화 하여 Azure AD에 등록됨
  2. Pass-through authentication(PTA) : 사내 ad에서 인증을 받아야 함
  3. AD FS : 조건 기반 인증(특수 조건 만족하는 직원만 인증)

PHS
- on-premise 암호를 해시로 암호화 하여 Azure AD에 동기화
- on-premise에 있는 암호를 사용하여 Azure AD 서비스에 로그인
- 사용자의 생산성 향상 및 헬프데스크 비용 절감

PTA★

Pass-through authentication

- 모든 웹 브라우저 기반 응용 프로그램과 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 설정

'Study > Cloud' 카테고리의 다른 글

AZ500 (Azure Firewall 구현)  (0) 2022.08.18
AZ500 (Implement Platform Protection)  (0) 2022.08.18
AZ500 (Identity and Access)  (0) 2022.08.17
AZ104 (NAT)  (0) 2022.08.12
AZ104 (Container, Kubernetes)  (0) 2022.08.12

<Cloud 종류>

  • 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 등을 못하게 막는 것 

- 대상 : 구독, 리소스 그룹, 리소스


출처&nbsp;https://365tips.be/en/user-servers-workstations-analysis-in-active-directory-for-a-security-assessment/

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는 인증과 권한에 사용

  1. Cloud indentities : Azure AD에만 있는 users
  2. Directory-syncronized identities : on-premises에 있는 users를 동기화
  3. Guest : Azure 바깥에 있는 users

Azure AD Groups 

- users 모음(permission 주기 위한)

  1. Security Groups : 모든 멤버에게 한 번에 permission 주기
  2. Microsoft 365 groups : 이메일, 캘린더, files 등에 접근 가능한 그룹

- Types 

  1. Assigned : 수동으로 추가
  2. Dynamic User : 사용자의 속성값을 보고 자동적으로 추가/삭제
  3. Dynamic Device(Security Group only) : 디바이스의 속성값을 보고 자동적으로 추가/삭제

Administrative Units in Azure AD

- 어떤 user, group에 특정 role을 부여하는 것

Passwordless

ex) Windows hello(생체인식), FIDO2 보안 키, Microsoft Authenticator 앱

- 보안성 강화 : 공격 위험 줄일 수 있음

- 사용자 환경 개선 : 어디서나 편리하게 데이터에 액세스


Azure AD Identity Protection 

Risk Events - 각 탐지된 리스크가 risk event에 기록으로 남음 

User Risk Policy

- user sign-in 할 때 적용됨

- 특정 조건(risk level)에 따라 달라짐

- access, block 설정

Multi-Factor Authentication

- 다단계 인증

1) Account lock : 인증이 안되면 잠궈버림

2) Block/Unblock : mfa 요청 사항 시 block/unblock

3) Fraud Alerts : 경고 

Conditinal Access

- 상황에 따라 Allow, Require MFA, Block 로 Identity 보호

 


실습) MFA - Conditional Access - Identity Protection 

실습 구성

1. Azure AD multi-factor authentication
2. Azure AD conditional access
3. Azure AD Identity Protection

 

Exercise 1: Implement Azure MFA

Task 1: Activate Azure AD Premium P2 trial

Azure AD Premium P2 라이센스가 필요하다

Task 2: Create Azure AD users and groups.

user 생성

Task 3: Assign Azure AD Premium P2 licenses to Azure AD users

각 user들에게 License 추가

Task 4: Configure Azure MFA settings.

MFA - service settings 탭에선 검증 옵션을 선택할 수 있다.

MFA - users 탭에서 aaduser1에 대해 Multi-factor을 Enable로 변경한다. 

(좌) Fraud Alert , (우) 보안 기본값 사용여부 NO로 설정하여 우리가 설정한 대로 동작하게 한다.

Fraud alert 창에선 여러 옵션을 선택할 수 있다.

- 사용자의 이상 행위를 제출하도록 허용/불허

- 이상 행위 보고하는 사용자 자동 차단 허용/불허

- 이상 행위 신고코드 설정

 

 

Task 5: Validate MFA configuration

하단에 I want to set up a different method 탭을 사용하면, phone, email 등으로 인증이 가능하다.


Exercise 2: Implement Azure AD Conditional Access Policies

Task 1 - Configure a conditional access policy

새로운 access policy를 생성

사용자 선택 칸에서 aaduser2를 선택한다.

클라우드 앱 선택 칸에서는 Microsoft Azure Management를 선택한다.

Muti-Factor Authentication 필요 확인란을 선택하여 On을 선택한다.

각 설정을 마친 뒤 가장 마지막 옵션 Enable policy 를 On으로 설정한 후 create를 마친다.

 

 

Task 2 - Test the conditional access policy.

그리고 나서 aaduser2로 로그인하면 aaduser1과 같이 다중 인증을 요구하는 창이 뜬다.


Exercise 3: Implement Azure AD Identity Protection

Task 1: Enable Azure AD Identity Protection

Task 2: Configure a user risk policy

User risk policy 설정

Task 3: Configure sign-in risk policy

sign-in risk 설정

 

Task 4: Simulate risk events against the Azure AD Identity Protection policies

 

ⓐ InPrivate Internet Explorer 창에서 https://www.torproject.org/projects/torbrowser.html.en Windows 버전을 다운로드하여 설치한다.

Tor은 'The Onion Router'의 약칭이다. 네트워크 우회와 익명화를 위해 사용하는 툴 중 하나며, 딥 웹과 다크 웹에 이용되는 소프트웨어이다. 



ⓑ 설치가 완료되면 ToR 브라우저를 시작하고 초기 페이지의 Connect 옵션을 사용한 후 Application Access Panel(https://myapps.microsoft.com)을 찾는다.

ⓒ 먼저, aaduser3계정으로 로그인을 시도한다.

※  "로그인이 차단되었습니다"라는 메시지가 표시된다. ToR Browser 사용과 관련된 로그인 위험 증가를 고려해 block 했으며 aaduser3이 MFA로 구성되어 있지 않기 때문이다.

ⓓ aduser1 계정으로 로그인한다.

※ 이번에는 의심스러운 활동 탐지 메시지가 표시된다. 이 계정은 MFA로 구성되었으므로 다중 인증을 시도한다.

ⓔ 확인을 완료하고 성공적으로 로그인했는지 확인한다.

Task 5: Review the Azure AD Identity Protection reports

Security 탭에서 위험한 사용자 관리, 위험 탐지 등과 관련된 정보를 볼 수도 있다.

'Study > Cloud' 카테고리의 다른 글

AZ500 (Implement Platform Protection)  (0) 2022.08.18
AZ500 (Hybrid Identity)  (0) 2022.08.18
AZ104 (NAT)  (0) 2022.08.12
AZ104 (Container, Kubernetes)  (0) 2022.08.12
AZ104 (App Services)  (0) 2022.08.12

보통 공인 IP가 없는 경우는 외부로부터의 공격을 막기 위해서이다. ex) 서버 공격 못 하도록 공인IP 설정 xx

그럼에도 밖으로 나가고 싶다면 NAT Gateway를 설정하면 된다. 

 

'Study > Cloud' 카테고리의 다른 글

AZ500 (Hybrid Identity)  (0) 2022.08.18
AZ500 (Identity and Access)  (0) 2022.08.17
AZ104 (Container, Kubernetes)  (0) 2022.08.12
AZ104 (App Services)  (0) 2022.08.12
AZ104 (Virtual Machine Management)  (0) 2022.08.12

- Compare Containers to VM

VM은 상대적으로 컨테이너에 비해 무겁다

컨테이너는 배포가 훨씬 빠르다

Fault tolerance : 하나 죽어도 된다

- Container 장점

Paas Service : 다운만 받으면 된다

PIP와 DNS 이름이 할당된다

Startup 시간이 빠르다

분리 가능

CPU 몇개, 메모리 몇개 구성 수정이 가능하다

VNet 연결이 가능하다

- Container Group

컨테이너 실행

- Docker Platform

기본적으로 도커를 사용


Kubernetes

- node는 VM

 

- AKS Networking

서비스 그룹은 Pod을 여러개 구성한 것

 

- AKS Storage

pod에 대한 볼륨을 node의 바깥 (Azure Files, Azure managed disk)으로 지정하여 데이터를 보호해야 한다

 

- AKS Scaling
Worker Node를 자동으로 늘려줌(Autoscaler)


실습 ) Azure에서 Docker 사용하기

실습 구성도

절차는 아래와 같다.

 

  1.  Azure 컨테이너 인스턴스를 사용하여 도커 이미지 배포
  2.  Azure 컨테이너 인스턴스의 기능 검토

Task 1 : Azure 컨테이너 인스턴스를 사용하여 도커 이미지 배포

URL 복사 


Task 2 : Azure 컨테이너 인스턴스의 기능 검토

컨테이너의 주소로 접속한다. 로그에서도 이를 확인할 수 있다. 

 


실습 ) Azure Kubernetes 사용하기

실습 구성도

Azure 컨테이너 인스턴스를 사용하여 실행하기에 적합하지 않은 다수의 다중 계층 응용 프로그램이 있다고 가정한다.

따라서 컨테이너 오케스트레이터인 Kubernetes를 사용하고, 관리 오버헤드를 최소화하기 위해 Azure Kubernetes Service의 단순화된 구현 환경 및 확장 기능을 테스트해본다.

절차는 아래와 같다.


  1.  Azure Kubernetes 서비스 클러스터 배포
  2.  Azure Kubernetes 서비스 클러스터에 Pod 배포
  3.  Azure Kubernetes 서비스 클러스터에서 컨테이너형 워크로드 확장

Task 1 : Azure Kubernetes 서비스 클러스터 배포 & Task 2 : Azure Kubernetes 서비스 클러스터에 Pod 배포

 


Task 3 : Azure Kubernetes 서비스 클러스터에서 컨테이너형 워크로드 확장


+) 모든 리소스 삭제

az group list --query "[?starts_with(name,'az104-09c')].name" --output tsv
az group list --query "[?starts_with(name,'az104-09c')].[name]" --output tsv | xargs -L1 bash -c 'az group delete --name $0 --no-wait --yes'

'Study > Cloud' 카테고리의 다른 글

AZ500 (Identity and Access)  (0) 2022.08.17
AZ104 (NAT)  (0) 2022.08.12
AZ104 (App Services)  (0) 2022.08.12
AZ104 (Virtual Machine Management)  (0) 2022.08.12
AZ104 (Azure Storage)  (0) 2022.08.10

Platform As A Service

(Platform : 다 있음. 시장. 없는게 없음)

- Azure App Service Plans

웹 사이트 구축

성능 ,가격, 기능이 다름

한 앱 서비스에 대한 한개 이상의 앱이 구성될 수 있음

- App Service Plan Pricing

** Standard를 추천 (Auto-scaling 가능. 과부하 시 5개까지 늘어남)

- Scale Up과 Scale Out 가능

- Plan Scaling 변경이 가능

- Create an App Service

이름은 반드시 고유해야 함

- Deployment Slots 생성

서비스 중단 없이 업그레이드 하는 기능

(Standard는 ~5개)

- Secure App Service

인증 기능 추가 (identity provider 추가)

그 서비스를 Azure AD에 넣는 것임(그 사이트에 접속하면 인증 요청을 받아라. )

- Custom Domain

dns zones > create > record set 추가 > txt record type > app service > custom domain > add custom domain > validate 

 

 


실습) Web Apps 구현

이 실습에서의 절차는 아래와 같다.

  1. Azure 웹 앱 만들기
  2. Deployment Slots 만들기
  3. 웹 앱 배포 설정 구성
  4. Deployment Slots에 코드 배포
  5. Deployment Slots Swap
  6. Azure 웹 앱의 자동 스케일링 구성 및 테스트

 


Task 1 : Azure 웹 앱 만들기

위와 같은 설정의 웹 앱을 하나 만든다.

웹앱 이름은 yrleewa.

생성한 웹 사이트는 PHP 런타임 스택을 사용하여 Windows 서버에서 실행된다. 


Task 2 : Deployment Slots 만들기

현재 생성한 기본 페이지 확인

이 웹 페이지의 URL 주소는 https://yrleewa.azurewebsites.net 이다.

Deployment Slot을 하나 만든다.

이 deployment slot의 URL 주소는 https://yrleewa-staging.azurewebsites.net 이다.


Task 3 : 웹 앱 배포 설정 구성

Local Git에 연결시키기 위해 Delpoyment Center에서 설정하는 과정이 필요하다.
credentials 탭의 맨 아래 부분 User Scope를 작성하고 Save


Task 4 : Deployment Slots에 코드 배포

 

Azure Cloud Shell(PowerShell)에서 진행한다.

git clone https://github.com/Azure-Samples/php-docs-hello-world
Set-Location -Path $HOME/php-docs-hello-world/

Git으로부터 예시 웹 사이트 코드를 가져온다.

git remote add [deployment_user_name] [git_clone_url]
git push [deployment_user_name] master

[deployment_user_name]에는 Task 3에서 가장 마지막에 입력했던 User Scope 정보를 넣어주면 된다.

 

이렇게 하게 되면 다운로드 받은 정보를 나의 web app으로 가져올 수 있다.
따라란. 바뀌었다.


Task 5 : Deployment Slots Swap

 

만들었던 Deployment Slot와 Swap을 진행한다.

현재 yrleewa는 git에서 가져온 hello world!를 표시하는 페이지이며, yrleewa-staging 은 바꾸지 않은 기본 페이지이다.

Swap 진행!

Swap을 했기 때문에 yrleewa-staging의 내용이 뜨게 된다.

(클라이언트는 같은 URL을 사용하는 것이지만 사실 내부적으로 이 페이지는 yrleewa-staging 의 내용을 보여주는 것이다.)


Task 6 : Azure 웹 앱의 자동 스케일링 구성 및 테스트

scale out에서 scale rule을 수정한다.
이러한 설정으로 변경해준다.

위 설정은 대기 시간 없이 가능한 한 빨리 자동 스케일링을 트리거하는 것이므로 오로지 테스트를 하기 위한 설정이다. 

1분동안 CPU 사용률이 10% 이상이 되면 최대 2개의 web application을 Scale Out 한다.

 

과부하오게 설정. 계속해서 request 보냄
Process Explorer

프로세스 탐색기를 사용하면 인스턴스 수와 해당 리소스 활용률을 쉽게 모니터링할 수 있다.

인스턴스가 2개가 되었으므로 테스트 성공


** 모든 리소스 삭제하기

Get-AzResourceGroup -Name 'az104-09a*'
Get-AzResourceGroup -Name 'az104-09a*' | Remove-AzResourceGroup -Force -AsJob

 

'Study > Cloud' 카테고리의 다른 글

AZ104 (NAT)  (0) 2022.08.12
AZ104 (Container, Kubernetes)  (0) 2022.08.12
AZ104 (Virtual Machine Management)  (0) 2022.08.12
AZ104 (Azure Storage)  (0) 2022.08.10
AZ104 (Load Balancing Services)  (0) 2022.08.10

※ 클라우드 서비스

Virtual Machine은 IaaS의 일부이다. 

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도 운영체제, 애플리케이션 및 데이터를 저장하는 공간으로 디스크를 사용한다.
    모든 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 

실습 절차는 아래와 같다.


  1. Azure 포털 및 Azure 리소스 관리자 템플릿을 사용하여 영역 복원 Azure VM 배포
  2. VM extenstion을 사용하여 Azure VM 구성
  3. Azure VM을 위해 컴퓨팅 및 스토리지 확장
  4. Azure Portal을 사용하여 Azure VM Scale Set 구축
  5. VM Extension을 사용하여 Azure VM Scale Set 구성

Task 1 : Azure VM 배포

vm0을 배포하고 그 template를 사용하여, 이름과 zone만 바꾸어 vm1을 손쉽게 배포할 수 있다.

vm0과 vm1을 배포하는데, 생성할 때 Availability Zone을 선택해서 각각 Zone1, Zone2에 포함되도록 구성한다.


Task 2 : VM extenstion을 사용하여 Azure VM 구성
이전 작업에서 배포한 두 개의 VM에 Windows Web Server(IIS)을 설치한다.

 

방법 1) 아래와 같이 명령어를 입력하는 방법 (VM0)

Set-AzVMCustomScriptExtension -ResourceGroupName az104-08-rg01 -VMName az104-08-vm0 -Location EastUS -ExtensionName "IIS" -FileURI 'https://raw.githubusercontent.com/godeploy/AZ104/master/Module08/az104-08-install_IIS.ps1' -Run 'az104-08-install_IIS.ps1'

** Set-AzVMCustomScriptExtension 명령어는 Azure VM(가상 머신)에서 스크립트를 다운로드하고 실행하도록 한다.

 

방법 2) 아래와 같이 Template에 리소스를 추가해주는 방법 (VM1)

vm1에서 Export template 탭을 찾아 Deploy를 선택한다.
Edit template를 통해 VM1의 설정을 바꿔준다.

** 이렇게 하면 VM 내부로 들어가서 설정을 바꾸지 않아도 Azure Portal에서 곧바로 VM 설정을 바꿀 수 있다.

 20번째 줄 "resources": [  바로 아래 부분에 아래 코드를 추가해준다. (customScriptExtension이라는 확장 프로그램을 추가하는 것이다.)

    {
        "type": "Microsoft.Compute/virtualMachines/extensions",
        "name": "az104-08-vm1/customScriptExtension",
        "apiVersion": "2018-06-01",
        "location": "[resourceGroup().location]",
        "dependsOn": [
            "az104-08-vm1"
        ],
        "properties": {
            "publisher": "Microsoft.Compute",
            "type": "CustomScriptExtension",
            "typeHandlerVersion": "1.7",
            "autoUpgradeMinorVersion": true,
            "settings": {
                "commandToExecute": "powershell.exe Install-WindowsFeature -name Web-Server -IncludeManagementTools && powershell.exe remove-item 'C:\\inetpub\\wwwroot\\iisstart.htm' && powershell.exe Add-Content -Path 'C:\\inetpub\\wwwroot\\iisstart.htm' -Value $('Hello World from ' + $env:computername)"
          }
        }
    },  

 

결과

추가하고 나면, 리소스가 2개로 변경되었음을 알 수 있다.

이제 VM1의 Run command 기능을 이용해 VM0(10.80.0.4)의 웹 사이트에 접근해본다.

VM0과 VM1이 잘 통신되는 것을 확인할 수 있다.


Task 3 : Azure VM을 위해 컴퓨팅 및 스토리지 확장

방법 1) Azure Portal GUI 사용하기(VM0)

(vm0) Size를 제일 작은걸로 변경하고, Disk0, Disk1 추가

vm0의 Run command 기능을 이용하여 새로 생성한 두 개의 Disk로 구성된 Z 드라이브를 생성한다.

New-StoragePool -FriendlyName storagepool1 -StorageSubsystemFriendlyName "Windows Storage*" -PhysicalDisks (Get-PhysicalDisk -CanPool $true)
New-VirtualDisk -StoragePoolFriendlyName storagepool1 -FriendlyName virtualdisk1 -Size 2046GB -ResiliencySettingName Simple -ProvisioningType Fixed
Initialize-Disk -VirtualDisk (Get-VirtualDisk -FriendlyName virtualdisk1)
New-Partition -DiskNumber 4 -UseMaximumSize -DriveLetter Z

 

방법 2) template로 변경하기 (VM1)

(vm1) 30번째 줄 수정하여 vmSize 변경, 49번째 줄에 dataDisk를 추가하여 디스크 2개를 생성

vm1의 Run command 기능을 이용하여 새로 생성한 두 개의 Disk로 구성된 Z 드라이브를 생성한다.


Task 4 : Azure Portal을 사용하여 Azure VM Scale Set 구축

 

Scale Set을 새로 생성한다.

주의사항: Region을 선택할 때, Availability Zone을 사용할 수 있는 지역을 선택한다. / PIP를 enable로 하여 부여받는다./ storage account를 생성한다.

 

Task 4의 결과 구성도


 Task 5 : VM Extension을 사용하여 Azure VM Scale Set 구성

 

아래 명령어를 로컬 컴퓨터의 Powershell에서 입력하여 Extension을 위한 파일을 다운 받는다.

Start-BitsTransfer -Source "https://raw.githubusercontent.com/godeploy/AZ104/master/Module08/az104-08-install_IIS.ps1" -Destination $home/downloads/az104-08-install_IIS.ps1

 

파일 업로드

Task 4에서 만들었던 Storage Account에 들어가 'scripts' 컨테이너를 만들어 다운로드 받은 파일을 업로드 한다.

 

Task 4에서 만들었던 Scale Sets에서 해당 Extensions 찾아서 적용

이렇게 되면 해당 scale set에 속하는 VM 들에 웹서버가 설치된다. (다운로드 받은 파일이 Windows Web Server(IIS) 설치 후, 자신의 이름이 뜨도록 하는 스크립트임.)

 

scale set에 해당하는 VM 두개를 Upgrade 해준다.


** 모든 리소스 삭제하기

Get-AzResourceGroup -Name 'az104-08*'
Get-AzResourceGroup -Name 'az104-08*' | Remove-AzResourceGroup -Force -AsJob

 

 

'Study > Cloud' 카테고리의 다른 글

AZ104 (Container, Kubernetes)  (0) 2022.08.12
AZ104 (App Services)  (0) 2022.08.12
AZ104 (Azure Storage)  (0) 2022.08.10
AZ104 (Load Balancing Services)  (0) 2022.08.10
AZ104 (NSG, ASG)  (0) 2022.08.09

Azure Storage 

파일, 메시지, 테이블 및 기타 유형의 정보를 저장하는 데 사용할 수 있는 서비스

Azure Storage 데이터 서비스

  • Azure Blob : 텍스트 및 이진 데이터에 대한 확장성이 뛰어난 개체 저장소
  • Azure Files : 클라우드 또는 온-프레미스 배포에 대한 관리되는 파일 공유 서비스
  • Azure Queue : 애플리케이션 구성 요소 간에 안정적인 메시징을 위한 메시징 저장소
  • Azure Table : 클라우드에 구조화된 NoSQL 데이터를 저장하는 서비스
  • Azure Disk : 연결된 가상 하드 디스크에서 데이터를 영구적으로 저장 및 액세스할 수 있음

 

Determine Replication Strategies

Azure Storage의 일시적인 오류, 네트워크 또는 정전, 대규모 자연 재해 등 계획되지 않은 이벤트로부터 데이터를 보호하기 위해 항상 여러 복사본을 가지고 있어야 한다. Replication은 Storage 계정의 오류 발생 시에도 가용성 및 내구성을 충족하도록 한다.

왼쪽부터 차례로 LRS, ZRS, GRS, RA-GRS

  • 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

  • GZRS/RA-GZRS
    ZRS의 고가용성과 GRS의 보호하는 기능을 결합한 것이다.
    ZRS를 사용하여 기본 지역에 있는 3개의 Azure 가용성 영역에서 데이터를 동기적으로 복사한다. 그런 다음 보조 지역의 단일 물리적 위치에 데이터를 비동기적으로 복사한다. 보조 지역 내에서 데이터는 항상 LRS를 사용하여 동기적으로 세 번 복제된다. (Six replicas, 3+1 zones, Two Regions)

 

Storage Endpoint 보호

- 방화벽 및 가상 네트워크

가상 네트워크 또는 공용 IP의 특정 서브넷에서 스토리지 계정에 대한 액세스를 제한한다.
(서브넷 및 가상 네트워크는 스토리지 계정과 동일한 Azure 영역에 있어야 한다.)

 


Blob Storage

Storage Account 계정 내에서 Container에 필요한 만큼 Blob을 그룹화 할 수 있다.

Blob Storage는 문서, 미디어 파일, 애플리케이션 설치 관리자와 같은 텍스트 또는 이진 데이터와 같은 데이터 등 모든 유형을 저장할 수 있다. 

  • 브라우저에 이미지나 문서 직접 제공
  • 설치와 같은 분산 액세스를 위한 파일 저장
  • 비디오 및 오디오 스트리밍
  • 데이터 백업용
  • 온-프레미스 또는 호스팅 서비스 분석을 위한 데이터 저장

Blob Access 계층

데이터 사용량의 특정 패턴에 맞게 최적화되어 있다.

필요에 맞는 것을 선택해야 효율적인 비용으로 사용할 수 있다.

  • Hot : 데이터에 자주 액세스하는 경우 가장 적합
  • Cool : 자주 액세스하지 않으며 30일 이상 저장해야 하는 대량의 데이터 저장 시 
  • Archive : 검색 시간은 오래 걸리지만 180일 이상 데이터 저장 시

실습) Azure Storage 구현

구성도

액세스 빈도가 낮은 파일을 저렴한 스토리지 계층에 배치하여 스토리지 비용을 최소화하고자 한다. 또한 Azure 스토리지가 제공하는 네트워크 액세스, 인증, 권한 부여 및 복제를 비롯한 다양한 보호 메커니즘을 살펴본다.

 

  1. Lab 환경 프로비저닝
  2. Azure Storage account 생성 및 구성
  3. Blob 스토리지 관리
  4. Azure 스토리지에 대한 인증 및 권한 부여 관리
  5. Azure 파일 공유 생성 및 구성
  6. Azure 스토리지 네트워크 액세스 관리

Task 1 : Lab 환경 구성

Azure Cloud Shell 에서 아래 명령어를 통해 환경을 구성한다.

IEX (iwr 'https://raw.githubusercontent.com/godeploy/AZ104/master/Module07/getdeployment.ps1')

Task 2 : Azure Storage account 생성 및 구성

storage account 생성

※ 참고 : Storage Account 이름은 전역에서 고유하다

Replication을 RA-GRS로 설정하니 Primary 뿐만 아니라 Secondary endpoint도 있다.
Replication을 GRS로 변경했더니 Primary endpoint만 보인다.
LRS로 변경하여 기본 설정을 마친다.
Access Tier를 Hot에서 Cool로 변경한다.

자주 사용하지 않는 데이터의 경우 Access Tier를 Cool로 설정을 해놔야 효과적으로 관리할 수 있기 때문이다. 


Task 3 : Blob 스토리지 관리

Storage를 하나 만들고, Container를 생성하여 txt 파일을 업로드 한다.
Blob 스토리지 관리 종류

 

BLOB를 다운로드하고 액세스 계층을 변경하고(현재 핫으로 설정됨), 리스를 획득하면 리스 상태가 잠금(현재 잠금 해제됨)으로 변경되며 BLOB가 수정 또는 삭제되지 않도록 보호하고 사용자 지정 메타데이터를 할당할 수 있습니다(임의 키 및 값 쌍 지정). 또한 Azure 포털 인터페이스 내에서 파일을 먼저 다운로드하지 않고 직접 편집할 수 있습니다. 스냅샷을 생성할 수도 있고 SAS 토큰을 생성할 수도 있습니다


Task 4 : Azure 스토리지에 대한 인증 및 권한 부여 관리

Container Access 형식이 Private로 되어 있기 때문에 보이지 않는 것이다.

해당 데이터에 대한 SAS 토큰을 생성하고, SAS URL로 접속해본다.
컨테이너에 대한 인증 권한이 없다
컨테이너의 IAM에 가서 Storage Blob Data Owner 권한을 부여한다.


Task 5 : Azure File Shares 구현

Storage의 File shares를 생성. Connect 방법 Copy
vm의 Run command 탭을 이용해 붙여넣기한다

이제 파일이 공유되었다. 아래 명령어를 통해 vm에서 폴더를 만들고, 파일 또한 만든다.

New-Item -Type Directory -Path 'Z:\az104-07-folder'
New-Item -Type File -Path 'Z:\az104-07-folder\az-104-07-file.txt'

다시 공유 폴더를 확인해보니 성공적으로 업로드 된 것을 알 수 있다.


+) 모든 리소스 삭제하기 (Azure Cloud PowerShell)

Get-AzResourceGroup -Name 'az104-07*'
Get-AzResourceGroup -Name 'az104-07*' | Remove-AzResourceGroup -Force -AsJob

'Study > Cloud' 카테고리의 다른 글

AZ104 (App Services)  (0) 2022.08.12
AZ104 (Virtual Machine Management)  (0) 2022.08.12
AZ104 (Load Balancing Services)  (0) 2022.08.10
AZ104 (NSG, ASG)  (0) 2022.08.09
AZ104 (관리자 도구)  (0) 2022.08.08

+ Recent posts