SAS 系統管理 (97)

教學目標

初步了解 SAS 9 與 SAS Viya 有關 FTP 資料傳輸操作的重點概念。

重點概念

首先企業目前在各種法規的要求下皆必須重新檢視傳輸檔案的安全性,然而許多企業針對傳輸檔案主要還是以 FTP 為主,所謂 FTP 主要是用於網路上的檔案雙向傳輸,全名為「File Transfer Protocol」,其有下載和上傳的動作,下載主要是從遠端主機將檔案複製至本端主機上,上傳主要是將檔案從本機主機複製至遠端主機上。

接著 FTP 相關連接埠主要有二個,分別為建立命令連線的 21 Port 和傳輸資料連線的 20 Port,請注意建立命令連線的 21 Port 必須要開通防火牆,但是 20 Port 則是建議開通防火牆,若沒有開通則為主動式連線,反之則為被動式連線,所謂主動式連線則是客戶端會開啟一個連接埠 (>1023) 要求伺服器連線進行,但是企業網路環境,通常不允許防火牆系統連線至客戶端電腦,因此被動式連線就能夠解決由伺服器連線至客戶端的資訊安全問題,但是伺服器必須開啟一定範圍的連接埠 (>1023) 給客戶端進行連線,並且確保防火牆已開通,所以若是基於資訊安全考量,則僅建議開通命令連線的 21 Port 和特定範圍的資料連線 Ports。

連線類型 命令連線 資料連線
主動式 用戶端 port N -> 伺服器 port 21 伺服器 port 20 -> 用戶端 N+1
被動式 用戶端 port N -> 伺服器 port 21 用戶端 port N+1 -> 伺服器 port P

(註:N>1023, P>1023。)

當了解 FTP 資料傳輸基本概念之後,我們更能夠在 SAS 9 或 SAS Viya 中使用 FILENAME 敘述式直接存取 FTP 伺服器進行資料傳輸的操作,以利在企業中進行資料管理之應用,請參考以下程式碼。

1
2
3
4
5
6
7
FILENAME outfile FTP '檔案名稱' host='FTP 伺服器' user='帳號' pass='密碼' ;
DATA _null_;
FILE outfile ;
DO i=1 TO 10;
PUT i=;
END;
RUN;

再來企業會要求達到更安全的 FTP 資料傳輸,避免傳輸資料被竊聽或竄改的風險,此時主要就會有兩種,分別為 FTPS 和 SFTP,所謂 FTPS 主要是加密的 FTP,又稱為「FTP-SSL」和「FTP-over-SSL」,其會透過安全通訊層 (SSL) 或傳輸層安全 (TLS) 通訊協定加密保護傳輸中的資料,傳輸模式主要有隱含模式和外顯模式,隱含模式主要是從連線一開始就使用 SSL Socket 進行安全連線,預設連接埠為 990 Port,外顯模式主要是收到「AUTH SSL」指令之後,內容才會開始進行加密。然而企業若要進行更安全的 FTP 資料傳輸,主要還是以 SFTP 為主。

最後 SFTP 主要是安全的 FTP,全名為「Secure File Transfer Protocol」,SFTP 是安全殼層Secure Shell (SSH) 通訊協定傳輸的子系統,因此依賴 SSHD 保護程序,預設連接埠為 22 Port,當 FTP 客戶端軟體連接到 SFTP 伺服器時,就會將私密金鑰與伺服器上的公開金鑰進行運算,若是配對正確,就會完成身份驗證進行操作。當了解 SFTP 資料傳輸基本概念之後,我們更能夠在 SAS 9 或 SAS Viya 中使用 FILENAME 敘述式直接存取 SFTP 伺服器進行資料傳輸的操作,以利在企業中進行資料管理之應用,請參考以下程式碼。

1
2
3
4
5
6
7
8
FILENAME outfile SFTP '檔案名稱' host="SFTP 伺服器" 
optionsx='-i [私密金鑰檔案名稱]' user="帳號" ;
DATA _null_;
FILE outfile;
DO i=1 to 10;
PUT i=;
END;
RUN;

請注意官方文件有提到不支援密碼驗證,此外我們若是使用 Windows 則可以透過 Putty 工具產生公開金鑰和私密金鑰,並且透過以下指令,主要就是將產生的公開金鑰檔案 (xxx.ppk) 複製至 SFTP 伺服器中。

1
# ssh-keygen -i -f [PuTTY 產生公開金鑰檔案名稱] >> ~/.ssh/authorized_keys

相關資源