Azure Blob 저장소 SFTP 연결하기

Azure
작성자
Roronoa
작성일
2022-12-01 15:36
조회
1272
Azure Blob 저장소 SFTP 연결하기

이기능이 GA 되기를 매우 오랫동안 기다려왔습니다. 데이터 사일로 관점으로 생각했을때 저장소가 전체적으로 다른 스타일과 다른 프로토콜 또는 다양한 형식 때문에 하나로 통일 되지 못하여서 비용이 더 많이 들고 변환이 필요해서 비용 부담이 증가 하는 경우가 많이 있습니다. 보통 데이터가 여러 형식으로 저장되어 불일치가 일어날수 있습니다. 오브젝트 스토리지는 여러가지 데이터 형식의 프로토콜을 지원하지 않기 때문에 통합에 대한 대상의 관점보다는 다른 용도로의 관점에서 가장 보편적인 스토리지 였습니다. 물론 점점 다양한 방식을 모두 제공하지만 장점과 단점을 명백하게 가지고 있는 데이터 스토리지 입니다. 일반적인 엔터프라이즈 회사의 온프레미스의 경우 레거시 파일은 대부분 SFTP를 지원하고 있고 레거시 프로그램들은 SFTP를 통해서 파일을 저장 하는 경우가 많이 있습니다. 기존의 레거시 앱도 코드변경 없이 중앙 집중식으로 다른 프로토콜을 지원한다고 생각하면 될듯 합니다.

2022년도에 조금 늦게 이 기능이 Azure Blob 에서 지원되게 되었습니다. 이기능이 GA 되기를 매우 오랫동안 기다려왔습니다 AWS S3 SFTP는 2018년 11월에 나왔는데 조금 늦긴 하지만 Azure Blob 도 드디어 2022년 10월 22일 정식 GA 되었습니다. 

또한 온프레미스 시절부터 써오던 파일질라 , WinSCP 등등의 클라이언트 들로 SFTP를 통해서 직접 접속 할 수 있는 매우 편한 기능입니다.

 

필수 조건

SFTP 를 Blob에서 사용하기 위한 필수 조건은 계층 구조 네임스페이스 입니다.

azure

그림001

1.그림001에서 보이는 것처럼 녹색 부분은 Azure 스토리지 플랫폼 이며 일반적인 Blob 기능은 모두 오브젝트 스토리지이므로 Rest 서비스만 제공하게 됩니다. 그러나 여러 다른 프로토콜도 사용하기 위에서 계층 구조 네임스페이스라는 디렉토리 계층 구조를 구성을 해야 됩니다.

이런 중간 과정을 오브젝트스토리지에 끼여 넣었기 때문에 여러 다른 디렉토리 구조를 사용할 수 있는 것입니다. 그림003에서 옵션 선택만 하면 사용할 수 있습니다.

azure

그림002

2.그림002는 Azure Blob Storage를 만드는 과정이며 빨간색 박스에 있는 표준 이나 프리미엄 어카운트만 SFTP 가 사용 가능합니다.

예전 버전은 SFTP 가 불가능하며 이유는 위에 설명한 계층 구조 네임스페이스가 새로운 버전만 지원하기 때문입니다.
azure

그림003

3.그림003은 스토리지 어카운트를 만드는 과정에서 Hierarchical namespace (계층 구조 네임스페이스) 를 

선택 해야지 만 SFTP를 만들수 있습니다. 빨간색 박스와 파란색 박스를 선택해야합니다.

azure

그림004

4.그림004는 만들기 직전에 확인 페이지 이며 해당 부분이 설정이 되어야 합니다.
azure

그림005

5.그림005에서 보면 이제 SFTP 가 빨간 박스처럼 활성화 된것을 볼수 있습니다. 또한 파란박스에 있는 로컬 유저가 필요합니다.

SFTP는 AD를 제공하지 않으며 SFTP 전용 유저가 필요합니다.
azure

그림006

6.유저 이름을 넣고 SSH password와 key pair를 체크하고 키이름을 넣고 다음을 누릅니다.

azure

그림007

7.컨테이너가 blob안에 없기 때문에 하나 생성합니다. 저는 img 라고 컨테이너를 생성했습니다
azure

그림008

8. 생성하면 바로 SSH 비밀번호가 나오며 이 비밀번호를 잘 저장해놓습니다.
azure

그림009

9. 자 이번엔 클라우드 쉘을 통해서 SFTP 서버에 접속하기 위해서 클라우드 쉘을 그림 009의 화살표에 있는 박스를 선택해서 클라우드 쉘을 선택합니다. 선택하고 나면 클라우드 쉘이 저장되어야 할 저장소를 지정하게 됩니다.
azure

그림010

10. Blob container의 img 라는 컨테이너 안에 마운트 될 디폴트 홈 디렉토리 하나를 그림010처럼 하나 만듭니다
azure

그림011

11.홈 디렉토리를 지정합니다. img/directory001 로 지정합니다
azure

그림012

12. 클라우드 쉘에 파일을 사진 파일을 하나 올리기 위해서 빨간색 화살표에 있는 업로드 버튼을 누르고

로컬에 있는 사진 파일을 클라우드 쉘에 올립니다.
azure

그림013

13.그림013에서 보면 빨간색 화살표를 보면 dir을 입력하면 123.png 파일이 클라우드 쉘로 잘 업로드가 되어 있습니다. 이번엔 분홍생 화살표에 있는 Connection String을 카피 한 후에 sftp 커멘드와 함께 Connection String을 입력하면 비밀번호를 입력하라는 메세지가 나옵니다. 그림008에서 저장해놓았던 ssh 비밀번호를 입력하면 sftp> 으로 노란색 화살표처럼 변경됩니다.

이제 put 이라는 명령어로 클라우드 쉘에 있는 123.png파일을 업로드 해봅니다. put 123.png 라고 명령어를 입력하면 업로드 됩니다.
azure

그림014

14.해당 컨테이너인 img 컨테이너의 directory001이라는 디렉토리 밑에 확123.png가 있을을 그림014에서 확인 할 수 있습니다.

 

현재 보여준 방법은 파워쉘을 사용해서 업로드 한 방법이며 하기의 지원되는 클라이언트 프로그램들을 통해서 매우 쉽게 업로드 할수 있습니다.

 

지원되는 클라이언트 프로그램들

  • AsyncSSH 2.1.0+

  • Axway

  • Cyberduck 7.8.2+

  • edtFTPjPRO 7.0.0+

  • FileZilla 3.53.0+

  • libssh 0.9.5+

  • Maverick Legacy 1.7.15+

  • Moveit 12.7

  • OpenSSH 7.4+

  • paramiko 2.8.1+

  • PuTTY 0.74+

  • QualysML 12.3.41.1+

  • RebexSSH 5.0.7119.0+

  • Salesforce

  • ssh2js 0.1.20+

  • sshj 0.27.0+

  • SSH.NET 2020.0.0+

  • WinSCP 5.10+

  • Workday

  • XFB.Gateway

  • JSCH 0.1.54+


 

결론

SFTP를 사용해서 클라이언트에 쉽게 접근 가능하게 만든 기능이며 이 기능을 통해서 Azure Blob에 rest 가 아닌 방법으로 접근 할 수 있기 때문에 기존의 온프레미스에 오래된 방법으로 blob에 통합이 되는 데이터 사일로 관점에서 매우 매력적인 옵션입니다. 물론 Blob에 해당 기능만 되는 것이며 기존의 Blob이 가지고 있는 느린 네트워크 레이턴시를 극복한건은 아니기 때문에 용도에 맞게 사용되어야 합니다. 혹시라도 로컬에 있는 SFTP 서버보다 느리게 업로드 되고 다운로드 된다라고 생각을 한다면 당연한 거기 때문에 비교하지 않아야 합니다. 원천적으로 Blob은 오브젝트 스토리지 이지 파일스토리지가 아니기 때문입니다. 

 

2022년 10월 22일 마이크로소프트 GA 링크

https://azure.microsoft.com/en-us/updates/sftp-support-for-azure-blob-storage-now-generally-available/?WT.mc_id=AZ-MVP-5002667