教學課程:使用 Linux 防禦主機設定私人網路存取 - Amazon Managed Workflows for Apache Airflow

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

教學課程:使用 Linux 防禦主機設定私人網路存取

本教學將逐步引導您如何建立 SSH 通道,從您的電腦到 Apache 氣流網頁伺服器的步驟,以便為您的 Amazon 管理的 Apache 氣流環境的工作流程。它假設您已經建立了一個 Amazon MWAA 環境。一旦設定完成,Linux 防禦主機就像跳躍伺服器一樣,允許從您的電腦與 VPC 中的資源進行安全連線。然後,您將使用 SOCKS 代理管理附加元件來控制瀏覽器中的代理設定,以存取 Apache 氣流使用者介面。

私人網路

本教學課程假設您已為 Apache Airflow 頁伺服器選擇私人網路存取模式。

此影像顯示具有私有 Web 伺服器之 Amazon MWAA 環境的架構。

私有網路存取模式可將 Apache Airflow UI 的存取權限限制為 Amazon VPC 中已授予您環境 IAM 政策存取權的使用者。

當您創建具有私有 Web 服務器訪問權限的環境時,必須將所有依賴項打包到 Python wheel 存檔(.whl)中,然後.whlrequirements.txt. 有關使用 wheel 打包和安裝依賴項的說明,請參閱使用 Python wheel 管理依賴關係

下圖顯示 Amazon MWAA 主控台上哪裡可以找到私人網路選項。

此影像顯示 Amazon MWAA 主控台上哪裡可以找到私人網路選項。

使用案例

您可以在建立 Amazon MWAA 環境之後使用本教學課程。您必須使用與環境相同的 Amazon VPC、VPC 安全群組和公有子網路。

開始之前

  1. 檢查使用者權限。請確定您在 AWS Identity and Access Management (IAM) 中的帳戶具有足夠的許可來建立和管理 VPC 資源。

  2. 使用您的 Amazon MWAA VPC。本教學課程假設您要將防禦主機與現有 VPC 產生關聯。Amazon VPC 必須與您的 Amazon MWAA 環境位於相同的區域,並且具有兩個私有子網路 (如中所定義)。建立網VPC路

  3. 建立 SSH 金鑰。您必須在與 Amazon MWAA 環境相同的區域中建立 Amazon EC2 安全殼層金鑰 (.pem),才能連線到虛擬伺服器。如果您沒有安全殼層金鑰,請參閱 Amazon EC2 使用者指南中的建立或匯入 key pair

目標

在本教學中,您將執行下列作業:

  1. 使用現有 VPC 的AWS CloudFormation 範本建立 Linux 防禦主機執行個體。

  2. 使用連接埠上的輸入規則,授權堡壘執行個體安全性群組的輸入流量。22

  3. 將來自 Amazon MWAA 環境安全群組的輸入流量授權到堡壘執行個體的安全群組。

  4. 建立防禦執行個體的 SSH 通道。

  5. 安裝並配置火狐瀏覽器的 FoxyProxy 附加元件,以查看 Apache 氣流使用者介面。

步驟 1:建立堡壘執行個體

下節說明使用主控台上現有 VPC 的AWS CloudFormation 範本建立 linux 堡壘執行個體的 AWS CloudFormation 步驟。

若要建立 Linux 防禦主機
  1. 在主控台上開啟 [部署快速入門] 頁 AWS CloudFormation 面。

  2. 使用導覽列中的區域選擇器,選擇與 Amazon MWAA 環境相同的 AWS 區域。

  3. 選擇下一步

  4. 在「堆疊名稱」文字欄位中輸入名稱,例如mwaa-linux-bastion

  5. 在 [數] 的 [網路組態] 窗格中,選擇下列選項:

    1. 選擇您的 Amazon MWAA 環境的虛擬私人雲端識別碼。

    2. 選擇您的 Amazon MWAA 環境的公有子網路 1 識別碼。

    3. 選擇您的 Amazon MWAA 環境的公有子網路 2 識別碼。

    4. 允許的堡壘外部存取 CIDR 中輸入最小的可能位址範圍 (例如,內部 CIDR 範圍)。

      注意

      識別範圍的最簡單方法是使用與公用子網路相同的 CIDR 範圍。例如,建立網VPC路頁面上範 AWS CloudFormation 本中的公用子網路為10.192.10.0/2410.192.11.0/24

  6. Amazon EC2 組態窗格上,選擇下列項目:

    1. 在金鑰配對名稱的下拉式清單中選擇您的 SSH 金鑰

    2. 防禦主機名稱中輸入名稱

    3. TCP 轉送選擇

      警告

      在此步驟中,必須將 TCP 轉送設定為 true。否則,您將無法在下一步中建立 SSH 通道。

  7. 選擇下一步下一步

  8. 選取確認,然後選擇 [建立堆疊]。

若要深入了解 Linux 防禦主機的架構,請參閱AWS 雲端上的 Linux 防禦主機:架構。

第二步:創建 ssh 隧道

下面的步驟描述如何創建 ssh 隧道到你的 Linux 堡壘。SSH 通道會從您的本地 IP 地址接收請求到 linux 堡壘,這就是為什麼 Linux 堡壘的 TCP 轉發在之前的步驟true中設置為的原因。

macOS/Linux
若要透過指令行建立隧道
  1. 在 Amazon EC2 主控台上開啟執行個體頁面。

  2. 選擇執行個體。

  3. 複製在公共 IPv4 DNS 中的地址。例如 ec2-4-82-142-1.compute-1.amazonaws.com

  4. 在命令提示字元中,瀏覽至儲存 SSH 金鑰的目錄。

  5. 執行下列命令以使用 ssh 連線到堡壘執行個體。以中的 SSH 金鑰名稱取代範例值mykeypair.pem

    ssh -i mykeypair.pem -N -D 8157 ec2-user@YOUR_PUBLIC_IPV4_DNS
Windows (PuTTY)
要創建使用 PuTTY 隧道
  1. 在 Amazon EC2 主控台上開啟執行個體頁面。

  2. 選擇執行個體。

  3. 複製在公共 IPv4 DNS 中的地址。例如 ec2-4-82-142-1.compute-1.amazonaws.com

  4. 打開 PuTTY,選擇會話

  5. 在「主機名稱」中輸入主機名稱,作為您的使用者 @ 您的公用 _IPV4_ DNS,並將連埠輸入為。 22

  6. 展開 SSH 索引標籤,選取驗證。在用於身份驗證的私鑰文件中,選擇您的本地「ppk」文件。

  7. 在 [SSH] 下,選擇 [通道] 索引標籤,然後選取 [動] 和 [動] 選項。

  8. 在 [來源通訊埠] 中,新增8157連接埠 (或任何其他未使用的連接埠),然後將 [目的地通訊埠] 保留空白。選擇新增

  9. 選擇工作階段標籤,然後輸入工作階段名稱。例如:SSH Tunnel

  10. 選擇儲存開啟

    注意

    您可能需要輸入公開金鑰的密語。

注意

如果您收到Permission denied (publickey)錯誤訊息,我們建議您使用 AWSSupport-疑難排解工具,然後選擇執行此自動化 (主控台) 來疑難排解 SSH 設定。

步驟三:將堡壘安全群組設定為輸入規則

透過附加到這些伺服器的特殊維護安全性群組,允許從伺服器存取伺服器並定期存取網際網路。下列步驟說明如何將堡壘安全群組設定為環境 VPC 安全性群組的輸入流量來源。

  1. 在 Amazon MWAA 主控台上開啟「環境」頁面

  2. 選擇一個環境。

  3. 在 [網路] 窗格中,選擇 [VPC 安全性群組]。

  4. 選擇 Edit inbound Rules (編輯傳入規則)。

  5. 選擇新增規則

  6. 在「來」下拉式清單中選擇您的 VPC 安全群組 ID。

  7. 將其餘選項保留空白,或設定為其預設值。

  8. 選擇儲存規則

第四步:複製 Apache 氣流網址

下列步驟說明如何開啟 Amazon MWAA 主控台,並將 URL 複製到 Apache 氣流使用者介面。

  1. 在 Amazon MWAA 主控台上開啟「環境」頁面

  2. 選擇一個環境。

  3. 複製氣流使用者介面中的 URL 以進行後續步驟。

步驟五:設定代理伺服器設定

如果您使用 SSH 通道搭配動態連接埠轉送,您必須使用 SOCKS 代理管理附加元件,以控制在瀏覽器中的代理設定。例如,您可以使用 Chromium 的--proxy-server功能啟動瀏覽器會話,或者在 Mozilla FireFox 瀏覽器中使用 FoxyProxy 擴展程序。

選項一:使用本地端口轉發設置 SSH 隧道

如果您不想使用 SOCKS 代理伺服器,您可以使用本機連接埠轉送來設定 SSH 通道。下列範例命令會透過轉送本機連接埠 8157 上的流量來存取 Amazon EC2 ResourceManagerWeb 介面。

  1. 開啟新的命令提示視窗。

  2. 鍵入下列命令以開啟 SSH 通道。

    ssh -i mykeypair.pem -N -L 8157:YOUR_VPC_ENDPOINT_ID-vpce.YOUR_REGION.airflow.amazonaws.com:443 ubuntu@YOUR_PUBLIC_IPV4_DNS.YOUR_REGION.compute.amazonaws.com

    -L表示使用本地端口轉發,它允許您指定用於將數據轉發到節點本地 Web 服務器上標識的遠程端口的本地端口。

  3. http://localhost:8157/在您的瀏覽器中輸入。

    注意

    您可能需要使用https://localhost:8157/

選項二:通過命令行代理

大多數 Web 瀏覽器允許您通過命令行或配置參數配置代理。例如,使用 Chromium,您可以使用以下命令啟動瀏覽器:

chromium --proxy-server="socks5://localhost:8157"

這將啟動一個瀏覽器會話,該會使用您在先前步驟中創建的 ssh 隧道來代理其請求。您可以打開您的私人 Amazon MWAA 環境網址(使用 https://),如下所示:

https://YOUR_VPC_ENDPOINT_ID-vpce.YOUR_REGION.airflow.amazonaws.com/home.

選項三:使用火狐瀏覽 FoxyProxy 器代理

下面的例子演示了一個 FoxyProxy 標準(版本 7.5.1)配置火狐瀏覽器。 FoxyProxy 提供了一組代理管理工具。它可讓您針對符合 Apache 氣流 UI 所使用之網域對應之網域模式的 URL 使用代理伺服器。

  1. 在 Firefox 中,開啟標FoxyProxy 準擴充功能頁面。

  2. 選擇新增至火狐瀏覽器

  3. 選擇新增

  4. 選擇瀏覽器工具欄中的 FoxyProxy 圖標,然後選擇「選項」。

  5. 複製以下代碼並在本地保存為mwaa-proxy.json用您的阿帕奇氣流網址替換您的主機名稱中的樣本值。

    { "e0b7kh1606694837384": { "type": 3, "color": "#66cc66", "title": "airflow", "active": true, "address": "localhost", "port": 8157, "proxyDNS": false, "username": "", "password": "", "whitePatterns": [ { "title": "airflow-ui", "pattern": "YOUR_HOST_NAME", "type": 1, "protocols": 1, "active": true } ], "blackPatterns": [], "pacURL": "", "index": -1 }, "k20d21508277536715": { "active": true, "title": "Default", "notes": "These are the settings that are used when no patterns match a URL.", "color": "#0055E5", "type": 5, "whitePatterns": [ { "title": "all URLs", "active": true, "pattern": "*", "type": 1, "protocols": 1 } ], "blackPatterns": [], "index": 9007199254740991 }, "logging": { "active": true, "maxSize": 500 }, "mode": "patterns", "browserVersion": "82.0.3", "foxyProxyVersion": "7.5.1", "foxyProxyEdition": "standard" }
  6. 在「從 FoxyProxy 6.0+ 匯入設定」窗格中,選擇「匯入設定」,然後選取mwaa-proxy.json檔案。

  7. 選擇確定

第六步:打開 Apache 氣流用戶界面

下列步驟說明如何開啟 Apache 氣流使用者介面。

  1. 在 Amazon MWAA 主控台上開啟「環境」頁面

  2. 選擇「開啟氣流 UI」。

後續步驟?