728x90

Bastion 구성은 Azure CLI를 활용하여 구성하였습니다.

Azure Bastion이란

Azure Bastion은 Public IP 주소를 통한 노출 없이 VM(가상 머신)에 대한 더 안전하고 원활한 RDP(원격 데스크톱 프로토콜) 및 SSH(Secure Shell) 프로토콜 액세스를 제공하는 완전 관리형 서비스입니다.

⚠ 보호된 VM과 Azure Bastion 호스트는 서브넷이 다르지만 동일한 가상 네트워크에 연결되어 있습니다.

1. 사용자는 Azure Portal에 접속하여 연결하려는 VM을 선택합니다.
2. Azure Portal에서 대상 VM을 호스트하는 가상 네트워크를 통해 Azure Bastion에 연결 합니다.
3. Azure Bastion이 대상 VM에 대한 연결을 시작합니다.
4. RDP 또는 SSH 세션이 관리자 콘솔의 브라우저에서 열립니다. Azure Bastion은 사용자 지정 패키지를 통해 세션 정보를 스트리밍합니다. 이러한 패키지는 TLS로 보호됩니다.
5. VPC Peering을 통해 중앙 집중식 허브 가상 네트워크에 구성된 Azure Bastion 호스트를 통해 추가 베스천 호스트를 배포하지 않고도 VM에 연결하는 데 사용할 수 있습니다.

Azure Bastion을 사용하면 RDP/SSH를 인터넷에 직접 공개하지 않아도 됩니다. 대신 Secure Sockets Layer(SSL)를 사용하여 안전하게 Azure Bastion에 연결하고 Private IP를 사용하여 VM에 연결할 수 있습니다.


1. 리소스 그룹 만들기

  • Subscription : Azure 구독 1
  • Resource group : myBastionRG
  • Region : Korea Central
az group create --name "myBastionRG" -l "Korea Central"

2. Azure KeyVault 생성하기

생성된 리소스 그룹 myBastionRG에 키 자격 증명 모음을 만듭니다.

az keyvault create --name "colla-credential-vault" --resource-group "myBastionRG"
❗ Vault name은 Globaly Unique 해야 하고, 이름은 문자로 시작하고 09, az, A~Z 및 -만 포함된 1-127자 길이의 문자열이어야 합니다.

3. ssh Key 생성하기

서버 접속에 사용할 ssh Key를 생성 합니다.
생성된 key는 ~/.ssh/ 경로 안에 public key, private key가 생성되게 됩니다.

ssh-keygen -t rsa

4. Key 등록하기

Azure KeyVault에 서버 접근에 필요한 private key를 등록 합니다.

az keyvault secret set --vault-name "colla-credential-vault" --name "privatekey" --file ~/.ssh/id_rsa

VM과 함께 사용할 Key Vault의 액세스 정책을 업데이트 합니다.

az keyvault update -n colla-credential-vault -g myBastionRG --set properties.enabledForDeployment=true

5. 가상 네트워크(VPC) 생성하기

가상 네트워크는 Azure에서 프라이빗 네트워크의 기본 구성 요소입니다. 이 네트워크를 사용하여 VM과 같은 Azure 리소스가 서로 인터넷을 통해 안전하게 통신할 수 있습니다.

가상 네트워크 환경과 VM연결을 위한 Subnet을 구성합니다.

az network vnet create --resource-group myBastionRG \
--name MyVnet \
--address-prefixes 10.1.0.0/16 \
--subnet-name MySubnet \
--subnet-prefixes 10.1.0.0/24

6. Bastion Host용 Subnet 추가하기

기존 가상 네트워크에서 AzureBastionSubnet이라는 서브넷을 추가합니다.

az network vnet subnet create \
  --resource-group myBastionRG \
  --vnet-name MyVnet \
  --name AzureBastionSubnet \
  --address-prefixes 10.1.1.0/24

Azure Bastion의 공용 IP 주소를 만듭니다.

az network public-ip create \
  --resource-group myBastionRG \
  --name MyBastionIp \
  --sku Standard

7. 가상 머신 만들기

인터넷에 노출되지 않는 Linux VM을 만듭니다. VM에 생성에 필요한 키는 기존에 만들어 둔 public key를 등록합니다.

az vm create \
  --resource-group myBastionRG \
  --name myVM1 \
  --image UbuntuLTS \
  --size Standard_D2as_v4 \
  --admin-username azureuser \
  --public-ip-address "" \
  --public-ip-sku Standard \
  --ssh-key-values ~/.ssh/id_rsa.pub

8. BastionHost 생성하기

Azure Bastion 리소스를 만듭니다.

az network bastion create \
  --name MyBastion \
  --public-ip-address MyBastionIp \
  --resource-group myBastionRG \
  --vnet-name MyVnet 

9. 내부 VM에 연결 하기

1. 사용자 이름 azureuser 를 입력합니다.
2. Azure Key Vault의 SSH 프라이빗 키를 선택합니다.
3.Azure Key Vault 자격증명과 할당된 키를 선택합니다.
4. 연결을 선택합니다.
5. 원격 셸에서 시스템을 업데이트하는 다음 명령과 같은 Linux 명령을 입력합니다.

sudo apt-get -y update

결과

Reference

1. https://docs.microsoft.com/ko-kr/azure/bastion/vnet-peering
2. https://docs.microsoft.com/ko-kr/azure/bastion/bastion-connect-vm-ssh-windows
3. https://docs.microsoft.com/ko-kr/learn/modules/connect-vm-with-azure-bastion/1-introduction
4. https://docs.microsoft.com/ko-kr/learn/modules/intro-to-azure-bastion/3-how-azure-bastion-works
5. https://docs.microsoft.com/ko-kr/azure/bastion/create-host-cli
6. https://docs.microsoft.com/ko-kr/azure/bastion/bastion-connect-vm-ssh-windows

728x90
반응형

+ Recent posts