本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定用於解密檔案的受管工作流程
本教學課程說明如何設定包含解密步驟的受管工作流程。本教學課程也會示範如何將加密檔案上傳至 Amazon S3 儲存貯體,然後檢視相同儲存貯體中解密的檔案。
注意
AWS 儲存部落格有一篇文章,說明如何簡單地解密檔案,而無需使用 Transfer Family Managed 工作流程撰寫任何程式碼、使用 PGP 和 加密和解密檔案 AWS Transfer Family
主題
步驟 1:設定執行角色
建立 Transfer Family 可用來啟動工作流程的 AWS Identity and Access Management (IAM) 執行角色。中說明建立執行角色的程序工作流程的 IAM 政策。
注意
在建立執行角色的過程中,請務必在執行角色與 Transfer Family 之間建立信任關係,如中所述建立信任關係。
下列執行角色政策包含啟動您在本教學課程中建立的工作流程所需的所有必要許可。若要使用此範例政策,請以您自己的資訊取代
。user input placeholders
amzn-s3-demo-bucket
將 取代為您上傳加密檔案的 Amazon S3 儲存貯體名稱。
注意
並非每個工作流程都需要此範例中列出的每個許可。您可以根據特定工作流程中的步驟類型來限制許可。每個預先定義步驟類型所需的許可會在 中說明使用預先定義的步驟。自訂步驟所需的許可如 中所述自訂步驟的 IAM 許可。
步驟 2:建立受管工作流程
現在您需要建立包含解密步驟的工作流程。
建立包含解密步驟的工作流程
-
在 https://https://console.aws.amazon.com/transfer/
開啟 AWS Transfer Family 主控台。 -
在左側導覽窗格中,選擇工作流程,然後選擇建立工作流程。
-
輸入下列詳細資訊:
-
輸入描述,例如
Decrypt workflow example
。 -
在名義步驟區段中,選擇新增步驟。
-
-
針對選擇步驟類型,選擇解密檔案,然後選擇下一步。
-
在設定參數對話方塊中,指定下列項目:
-
輸入描述性步驟名稱,例如
decrypt-step
。步驟名稱中不允許空格。 -
針對解密檔案的目的地,選擇 Amazon S3。
-
針對目的地儲存貯體名稱,選擇您在步驟 1 中建立的 IAM 政策
amzn-s3-demo-bucket
中指定為 的相同 Amazon S3 儲存貯體。 -
針對目的地金鑰字首,輸入您要在目的地儲存貯體中存放解密檔案的字首 (資料夾) 名稱,例如
decrypted-files/
。注意
請務必將結尾斜線 (
/
) 新增至字首。 -
在本教學課程中,請清除覆寫現有的 。清除此設定時,如果您嘗試解密具有現有檔案相同名稱的檔案,工作流程處理會停止,而且不會處理新檔案。
選擇下一步以移至檢閱畫面。
-
-
檢閱步驟的詳細資訊。如果一切正確,請選擇建立步驟。
-
您的工作流程只需要單一解密步驟,因此無需設定其他步驟。選擇建立工作流程以建立新的工作流程。
請注意新工作流程的工作流程 ID。下一個步驟將需要此 ID。本教學課程使用
作為範例工作流程 ID。w-1234abcd5678efghi
步驟 3:將工作流程新增至伺服器並建立使用者
現在您已有一個具有解密步驟的工作流程,您必須將其與 Transfer Family 伺服器建立關聯。本教學課程說明如何將工作流程連接至現有的 Transfer Family 伺服器。或者,您可以建立新的伺服器以搭配工作流程使用。
將工作流程連接到伺服器後,您必須建立可 SFTP 到伺服器的使用者,並觸發工作流程執行。
設定 Transfer Family 伺服器以執行工作流程
-
在 https://https://console.aws.amazon.com/transfer/
開啟 AWS Transfer Family 主控台。 -
在左側導覽窗格中,選擇伺服器,然後從清單中選擇伺服器。請確定此伺服器支援 SFTP 通訊協定。
-
在伺服器的詳細資訊頁面上,向下捲動至其他詳細資訊區段,然後選擇編輯。
-
在編輯其他詳細資訊頁面的受管工作流程區段中,選擇您的工作流程,然後選擇對應的執行角色。
-
針對完整檔案上傳的工作流程,請選擇您在 中建立的工作流程步驟 2:建立受管工作流程,例如
w-1234abcd5678efghi
。 -
針對受管工作流程執行角色,選擇您在 中建立的 IAM 角色步驟 1:設定執行角色。
-
-
捲動至頁面底部,然後選擇儲存以儲存變更。
請注意您正在使用的伺服器 ID。您用來存放 PGP 金鑰的 AWS Secrets Manager 秘密名稱部分是以伺服器 ID 為基礎。
新增可觸發工作流程的使用者
-
在 https://https://console.aws.amazon.com/transfer/
開啟 AWS Transfer Family 主控台。 -
在左側導覽窗格中,選擇伺服器,然後選擇您要用於解密工作流程的伺服器。
-
在伺服器詳細資訊頁面上,向下捲動至使用者區段,然後選擇新增使用者。
-
針對您的新使用者,輸入下列詳細資訊:
-
對於 User name (使用者名稱),請輸入
decrypt-user
。 -
針對角色,選擇可存取您伺服器的使用者角色。
-
針對主目錄,選擇您先前使用的 Amazon S3 儲存貯體,例如
amzn-s3-demo-bucket
。 -
對於 SSH 公有金鑰,請貼入對應至您擁有之私有金鑰的公有金鑰。如需詳細資訊,請參閱為服務受管使用者產生 SSH 金鑰。
-
-
選擇新增以儲存您的新使用者。
請注意此伺服器的 Transfer Family 使用者名稱。秘密部分取決於使用者的名稱。為求簡化,本教學課程使用預設秘密,可供伺服器的任何使用者使用。
步驟 4:建立 PGP 金鑰對
使用其中一個支援的 PGP 用戶端來產生 PGP 金鑰對。此程序會在 中詳細說明產生 PGP 金鑰。
產生 PGP 金鑰對
-
在本教學課程中,您可以使用
gpg
(GnuPG
) 2.0.22 版用戶端來產生使用 RSA 做為加密演算法的 PGP 金鑰對。針對此用戶端,請執行下列命令,並提供電子郵件地址和密碼短語。您可以使用任何您喜歡的名稱或電子郵件地址。請務必記住您使用的值,因為您稍後需要在教學課程中輸入這些值。gpg --gen-key
注意
如果您使用的是 2
GnuPG
.3.0 版或更新版本,則必須執行gpg --full-gen-key
。當系統提示您建立金鑰類型時,請選擇 RSA 或 ECC。不過,如果您選擇 ECC,請務必BrainPool為橢圓曲線選擇 NIST或 。請勿選擇 Curve 25519。 -
執行下列命令來匯出私有金鑰。
將 取代為您產生金鑰時使用的電子郵件地址。user@example.com
gpg --output workflow-tutorial-key.pgp --armor --export-secret-key
user@example.com
此命令會將私有金鑰匯出至
workflow-tutorial-key.pgp
檔案。您可以為輸出檔案命名任何您喜歡的名稱。您也可以在新增私有金鑰檔案後將其刪除 AWS Secrets Manager。
步驟 5:將 PGP 私有金鑰存放在 AWS Secrets Manager
您需要以非常具體的方式將私有金鑰存放在 Secrets Manager 中,以便在工作流程對上傳的檔案執行解密步驟時,工作流程可以找到私有金鑰。
注意
當您將秘密存放在 Secrets Manager 時, AWS 帳戶 會產生費用。如需定價的資訊,請參閱 AWS Secrets Manager 定價
在 Secrets Manager 中存放 PGP 私有金鑰
-
登入 AWS Management Console 並在 https://https://console.aws.amazon.com/secretsmanager/
開啟 AWS Secrets Manager 主控台。 -
在左側導覽窗格中,選擇秘密。
-
在秘密頁面上,選擇儲存新的秘密。
-
在選擇秘密類型頁面上,針對秘密類型,選擇其他類型的秘密。
-
在鍵/值對區段中,選擇鍵/值索引標籤。
-
金鑰 – 輸入
PGPPrivateKey
。 -
value – 將私有金鑰的文字貼到值欄位中。
-
-
選擇新增資料列,然後在鍵/值對區段中,選擇鍵/值索引標籤。
-
金鑰 – 輸入
PGPPassphrase
。 -
value – 輸入您在 中產生 PGP 金鑰對時使用的密碼短語步驟 4:建立 PGP 金鑰對。
-
-
選擇下一步。
-
在設定秘密頁面上,輸入秘密的名稱和描述。您可以為特定使用者或可供所有使用者使用的秘密建立秘密。如果您的伺服器 ID 為
,您可以如下所示命名秘密。s-11112222333344445
-
若要為所有使用者建立預設秘密,請命名秘密
aws/transfer/
。s-11112222333344445
/@pgp-default -
若要僅為您先前建立的使用者建立秘密,請將秘密命名為
aws/transfer/
。s-11112222333344445
/decrypt-user
-
-
選擇下一步,然後在設定輪換頁面上接受預設值。然後選擇下一步。
-
在檢閱頁面上,選擇存放以建立和存放秘密。
如需將 PGP 私有金鑰新增至 Secrets Manager 的詳細資訊,請參閱使用 AWS Secrets Manager 來存放 PGP 金鑰。
步驟 6:加密檔案
使用 gpg
程式來加密要在工作流程中使用的檔案。執行下列命令來加密檔案:
gpg -e -r
marymajor@example.com
--openpgp testfile.txt
執行此命令之前,請注意下列事項:
-
對於
-r
引數,請將
取代為您建立 PGP 金鑰對時使用的電子郵件地址。marymajor@example.com
-
--openpgp
旗標為選用。此旗標可讓加密的檔案符合 OpenPGP RFC4880標準。 -
此命令會在
testfile.txt.gpg
與 相同的位置建立名為 的檔案testfile.txt
。
重要
加密檔案以搭配 AWS Transfer Family 工作流程使用時,請務必使用 -r
參數來指定非匿名收件人。匿名加密 (未指定收件人) 可能會導致工作流程中的解密失敗,因為系統無法識別要用於解密的金鑰。此問題的偵錯資訊可在 取得對匿名收件人加密問題進行故障診斷。
步驟 7:執行工作流程並檢視結果
若要執行工作流程,您可以使用您在步驟 3 中建立的使用者連線到 Transfer Family 伺服器。然後,您可以查看您在步驟 2.5 中指定的 Amazon S3 儲存貯體,設定目的地參數以查看解密的檔案。 步驟 5
執行解密工作流程
-
開啟命令終端機。
-
執行下列命令,
將 取代為您實際的端點,並將your-endpoint
取代為您使用者的 SSH 私有金鑰:transfer-key
sftp -i
transfer-key
decrypt-user@your-endpoint
例如,如果私有金鑰存放在 中
~/.ssh/decrypt-user
,而您的端點是s-11112222333344445.server.transfer.us-east-2.amazonaws.com
,則命令如下:sftp -i ~/.ssh/decrypt-user decrypt-user@s-11112222333344445.server.transfer.us-east-2.amazonaws.com
-
執行
pwd
命令。如果成功,此命令將傳回下列項目:Remote working directory: /
amzn-s3-demo-bucket
/decrypt-user您的目錄會反映 Amazon S3 儲存貯體的名稱。
-
執行下列命令以上傳檔案並觸發工作流程執行:
put testfile.txt.gpg
-
對於解密檔案的目的地,您可以在建立工作流程時指定
decrypted-files/
資料夾。現在,您可以導覽至該資料夾並列出內容。cd ../decrypted-files/ ls
如果成功,
ls
命令會列出testfile.txt
檔案。您可以下載此檔案,並確認它與您先前加密的原始檔案相同。