1. Azure Cloud Shell이란?
먼저 Azure Cloud Shell이 무엇인지에 대해 알아보고 가겠습니다.
Azure Cloud Shell은 Azure의 클라우드 기반 Command Line 환경입니다.
Azure 리소스를 관리하기 위해 브라우저에서 액세스할 수 있는 인증된 대화형 터미널로 Bash, Powershell 두 가지 환경이 제공됩니다.
이를 통해 로컬 환경에서 Azure CLI를 설치하거나 환경을 구성하지 않고도 Azure를 관리할 수 있습니다.
Azure Portal (https://portal.azure.com/)에 접근하면 하기 스크린샷과 같은 아이콘이 우측 상단에 보입니다.

이게 바로 Azure Cloud Shell로, Azure 환경에 대한 관리를 웹 상에서 간단하게 할 수 있는 Command Line 도구입니다.
2. 가상 네트워크에서 Cloud Shell 사용하기 - Private Endpoint
첫 번째로 Cloud Shell이 사용하는 Storage Account의 Files에 대해 private endpoint를 생성하면 Local PC에서 접근이 어렵지 않을까 하는 생각에 테스트를 진행해 보았습니다.
2.1 Azure Cloud Shell 용 Storage Account 생성하기
앞서 설명 드린 것과 같이 Azure Portal의 우측 상단에서 Cloud Shell을 실행합니다.

Cloud Shell을 사용하기 위해서는 새로운 Storage Account를 생성해야 합니다.

위와 같이 [새로 만들기] 옵션을 클릭하여 Storage Account와 리소스 그룹을 생성합니다.
2.2 가상 네트워크 생성하기
Private Endpoint를 생성하기 위해서 가상 네트워크를 먼저 생성합니다.
- [기본 사항] 탭

- [IP 주소] 탭

- [검토 + 만들기] 탭을 클릭하여 유효성을 검사한 후 가상 네트워크를 생성합니다.
2.3 Storage Account에 Private Endpoint 연결하기
Cloud Shell 실행 시 생성한 Storage Account의 [공용 네트워크 액세스] 상태는 기본적으로 "모든 네트워크에서 사용"
입니다.
공용 네트워크 액세스를 차단하기 위해 [공용 네트워크 액세스] 상태를 "사용 안 함"으로 변경해야 합니다.
Azure Portal로 이동하여 [Storage Account] > [보안 + 네트워킹] > [네트워킹] 탭 > [방화벽 및 가상 네트워크]에서 공용 네트워크 액세스에 대한 옵션을 [사용 안 함]으로 변경합니다.

[저장] 버튼을 클릭하여 해당 내용을 저장합니다.
다음으로 [프라이빗 엔드포인트] 연결 탭을 클릭하여 Storage Account에 대한 Private Endpoint를 생성합니다.
- [기본 사항] 탭

- [리소스] 탭

- [가상 네트워크] 탭

- [DNS] 탭

위와 같은 설정을 마무리한 후 [검토 + 만들기] 탭으로 이동하여 Private Endpoint 생성을 완료합니다.
2.4 Local PC에서 Cloud Shell 접근하기
Cloud Shell을 실행한 후 ⚙️ 버튼을 클릭하여 [사용자 설정 다시 설정] 버튼을 클릭합니다.

사용자 설정 다시 설정 창이 표시되면 [초기화]를 클릭합니다.

Azure Cloud Shell 시작 창이 표시되면 [Bash]를 클릭합니다.

다시 한번, 스토리지와의 연결을 위해 하기와 같은 설정을 진행합니다.
이번에는 [새로 만들기] 옵션이 아닌 [기존 항목 사용] 옵션을 사용해야 합니다.

과연! 결과는 어떨까요?

접근은 가능하지만 Azure file share에 접근이 되지 않아 cloud drive를 이용할 수 없다는 Error Message가 출력됩니다.
이 경우 Azure CLI 명령어는 사용할 수 있으나 git clone을 통해 가져온 파일의 경우는 Azure file share에 영구히 저장되지 않게 됩니다.
실제로 테스트를 한번 진행해 보겠습니다.
az group list -o table 명령어를 통해 현재 구독에 존재하는 리소스 그룹의 리스트를 테이블 형식으로 확인해 보겠습니다.

명령어가 정상적으로 실행되는 것을 확인할 수 있습니다.
다음은 git clone 명령어를 통해 GitHub에 있는 소스 코드를 Cloud Shell로 가지고 와 보겠습니다.
git clone https://github.com/carlosalexei/aks-workshop.git 명령어를 사용하여 Cloud Shell에 소스 코드를 가지고 옵니다. 그후 ls를 입력하여 aks-workshop이라는 directory가 생성된 것을 확인합니다.

clone 해 온 소스 코드가 Cloud Shell을 다시 시작해도 여전히 남아 있는지 확인하기 위해 하기 스크린샷처럼 전원 버튼을 클릭합니다.

[다시 시작] 버튼을 클릭하여 Cloud Shell을 다시 시작합니다.

ls -al 명령어를 사용하여 확인해 보면 동일한 위치임에도 불구하고 aks-workshop이라는 directory가 보이지 않는 것을 확인할 수 있습니다.

이를 통해, 상기 테스트한 방법으로는 Local PC에서 Cloud Shell을 사용하여 Azure 인프라를 관리하는 것을 막지 못한다는 것을 알 수 있습니다. 단순히 Cloud Shell이 재실행되거나 다시 연결될 때 Cloud Shell에 업로드한 폴더나 파일에 대한 부분이 휘발되는 것일 뿐, 접근 제어와 command 실행 제어와는 Private Endpoint가 관련이 없다는 것을 확인하였습니다.
'Cloud > Azure' 카테고리의 다른 글
Azure Private Subnet과 Azure NAT Gateway란? (0) | 2024.04.23 |
---|---|
Azure Cloud Shell에 Private하게 접근하기 (2) (0) | 2024.04.03 |
Application Gateway에 SSL 인증서를 적용하여 HTTPS로 Application 접근하기 (0) | 2024.03.22 |
Azure Firewall의 SNAT와 DNAT 공부 하기 (0) | 2024.03.22 |
Azure Firewall을 사용하여 Spoke 간 통신하기 (1) | 2024.03.22 |
댓글