設定受管理的工作流程以解密檔案 - AWS Transfer Family

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

設定受管理的工作流程以解密檔案

本教學課程說明如何設定包含解密步驟的受管理工作流程。本教學也會示範如何將加密檔案上傳到 Amazon S3 儲存貯體,然後檢視該儲存貯體中的解密檔案。

注意

AWS 存儲博客有一篇文章,描述瞭如何簡單地解密文件而不使用 Transfer Family 託管工作流程編寫任何代碼,使用 PGP 和 AWS Transfer Family.

步驟 1:設定執行角色

建立 Transfer Family 可用來啟動工作流程的 AWS Identity and Access Management (IAM) 執行角色。建立執行角色的程序如中所述工作流程的 IAM 政策

注意

在建立執行角色時,請務必在執行角色與「Transfer Family」之間建立信任關係,如中所述建立信任關係

下列執行角色原則包含啟動您在本教學課程中建立之工作流程所需的所有必要權限。若要使用此範例政策,請以您自己的資訊取代 user input placeholders。以您上傳加密檔案的 Amazon S3 儲存貯體名稱取DOC-EXAMPLE-BUCKET代。

注意

並非每個工作流程都需要此範例中列出的每個權限。您可以根據特定工作流程中的步驟類型來限制權限。每個預先定義步驟類型所需的權限會在中說明使用預定義步驟。自訂步驟所需的權限在中說明自訂步驟的 IAM 許可

{ "Version": "2012-10-17", "Statement": [ { "Sid": "WorkflowsS3Permissions", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectTagging", "s3:GetObjectVersion", "s3:PutObject", "s3:PutObjectTagging", "s3:ListBucket", "s3:PutObjectTagging", "s3:PutObjectVersionTagging", "s3:DeleteObjectVersion", "s3:DeleteObject" ], "Resource": ["arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "arn:aws:s3:::DOC-EXAMPLE-BUCKET"] "Condition": { "StringEquals": { "s3:RequestObjectTag/Archive": "yes" } } }, { "Sid": "DecryptSecret", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "arn:aws:secretsmanager:region:account-id:secret:aws/transfer/*" } ] }

步驟 2:建立受管理的工作流程

現在您需要建立包含解密步驟的工作流程。

若要建立包含解密步驟的工作流程
  1. 請在以下位置開啟 AWS Transfer Family 主控台。 https://console.aws.amazon.com/transfer/

  2. 在左側導覽窗格中,選擇 [工作流程],然後選擇 [建立工作流程]。

  3. 輸入下列詳細資訊:

    • 輸入說明,例如Decrypt workflow example

    • 在「標稱步驟」區段中,選擇「新增步驟」。

  4. 針對 [選擇步驟類型] 選擇 [解密檔案],然後選擇 [下一步]。

  5. 在「設定參數」對話方塊中,指定下列項目:

    • 輸入描述性步驟名稱,例如decrypt-step。步驟名稱中不允許使用空格。

    • 對於解密檔案的目的地,請選擇 Amazon S3。

    • 對於目的地儲存貯體名稱,選擇您在步驟 1 中建立的 IAM 政策DOC-EXAMPLE-BUCKET中指定的相同 Amazon S3 儲存貯體。

    • 針對「目的地 key prefix」,輸入您要在目的地值區中儲存解密檔案的前置字元 (資料夾) 名稱,decrypted-files/例如。

      注意

      確保在前綴中添加尾隨斜杠(/)。

    • 在此自學課程中,請清除「覆寫現有的」。如果清除此設定,如果您嘗試解密具有與現有檔案相同名稱的檔案,工作流程處理會停止,且不會處理新檔案。

    選擇 [下一步] 以移至檢閱畫面。

  6. 檢閱步驟的詳細資訊。如果一切正確,請選擇 [建立步驟]。

  7. 您的工作流程只需要單一解密步驟,因此不需要設定其他步驟。選擇 [建立工作流程] 以建立新工作流程。

記下新工作流程的工作流程 ID。在下一步中,您將需要此 ID。本教學課程使用w-1234abcd5678efghi做為工作流程 ID 範例。

步驟 3:將工作流程新增至伺服器並建立使用者

現在您已經有了解密步驟的工作流程,您必須將其與「Transfer Family」伺服器建立關聯。本自學課程展示如何將工作流程貼附至現有的 Transfer Family 伺服器。或者,您也可以建立新的伺服器來搭配工作流程使用。

將工作流程附加到伺服器之後,您必須建立一個可以 SFTP 到伺服器的使用者,並觸發工作流程以執行。

規劃 Transfer Family 伺服器以執行工作流程的步驟
  1. 請在以下位置開啟 AWS Transfer Family 主控台。 https://console.aws.amazon.com/transfer/

  2. 在左側導覽窗格中,選擇 [伺服器],然後從清單中選擇伺服器。請確定此伺服器支援 SFTP 通訊協定。

  3. 在伺服器的詳細資訊頁面上,向下捲動至 [其他詳細資料] 區段,然後選擇 [編輯]。

  4. 在 [編輯其他詳細資料] 頁面的 [受管理的工作流程] 區段中,選擇您的工作流程,然後選擇對應的執行角色。

  5. 捲動至頁面底部,然後選擇 [儲存] 以儲存變更。

請記下您使用之伺服器的 ID。您用來儲存 PGP 金鑰的 AWS Secrets Manager 密碼名稱部分取決於伺服器 ID。

若要新增可觸發工作流程的使用者
  1. 請在以下位置開啟 AWS Transfer Family 主控台。 https://console.aws.amazon.com/transfer/

  2. 在左側導覽窗格中,選擇 [伺服器],然後選擇要用於解密工作流程的伺服器。

  3. 在伺服器詳細資訊頁面上,向下捲動至「使用」區段,然後選擇「新增使用者」。

  4. 針對您的新使用者,請輸入下列詳細資訊:

    • 對於 User name (使用者名稱),請輸入 decrypt-user

    • 在 [角色] 中,選擇可存取您伺服器的使用者角色。

    • 對於主目錄,請選擇您先前使用的 Amazon S3 儲存貯體,例如DOC-EXAMPLE-BUCKET

    • 如果是 SSH 公開金鑰,請貼上與您擁有的私密金鑰對應的公開金鑰。如需詳細資訊,請參閱 為服務管理的使用者產生 SSH 金鑰

  5. 選擇 [新] 以儲存您的新使用者。

請記下此伺服器的 Transfer Family 使用者名稱。密碼部分取決於使用者的名稱。為了簡單起見,本教程使用了可以由服務器的任何用戶使用的默認密鑰。

步驟 4:建立 PGP key pair

使用其中一個支援的 PGP 用戶端來產生 PGP key pair。此程序會在中詳細說明產生 PGP 金鑰

若要產生 PGP key pair
  1. 在本教學課程中,您可以使用 gpg (GnuPG) 版本 2.0.22 用戶端來產生使用 RSA 做為加密演算法的 PGP key pair。對於此客戶端,運行以下命令,並提供電子郵件地址和密碼。您可以使用任何您喜歡的名稱或電子郵件地址。請務必記住您使用的值,因為您稍後需要在自學課程中輸入這些值。

    gpg --gen-key
    注意

    如果您使用的是 2.3.0 或更高GnuPG版本,則必須運行gpg --full-gen-key。當系統提示您輸入要建立的金鑰類型時,請選擇 RSA 或 ECC。但是,如果您選擇 ECC,請務必BrainPool為橢圓曲線選擇NIST或。不要選擇Curve 25519。

  2. 執行下列命令以匯出私密金鑰。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 定價

在密碼管理員中儲存 PGP 私密金鑰
  1. 請登入 AWS Management Console 並開啟 AWS Secrets Manager 主控台,網址為 https://console.aws.amazon.com/secretsmanager/

  2. 在左側導覽窗格中,選擇秘密

  3. 在「碼」頁面上,選擇「儲存新密碼」。

  4. [選擇密碼類型] 頁面上,對於 [密碼類型],選擇 [其他密碼類型]。

  5. 在「鍵/值對」區段中,選擇「/值」標籤。

    • -輸入PGPPrivateKey

    • value — 將私鑰的文本粘貼到值字段中。

  6. 選擇添加行,然後在「鍵/值對」部分中,選擇「/值」選項卡。

  7. 選擇下一步

  8. [設定密碼] 頁面上,輸入密碼的名稱和說明。您可以為特定使用者或可供所有使用者使用的密碼建立密碼。如果您的服務器 ID 是 s-11112222333344445,則按如下方式命名密碼。

    • 若要為所有使用者建立預設密碼,請為密碼命名aws/transfer/s-11112222333344445/@pgp-default

    • 若只要為先前建立的使用者建立密碼,請為密碼命名aws/transfer/s-11112222333344445/decrypt-user

  9. 選擇 [下一步],然後接受 [設定旋轉] 頁面上的預設值。然後選擇下一步

  10. 在「檢閱」頁面上,選擇「儲存」以建立並儲存密碼。

如需將 PGP 私密金鑰新增至 Secrets Manager 的詳細資訊,請參閱用 AWS Secrets Manager 來儲存您的 PGP 金鑰。

步驟 6:加密檔案

使用此gpg程式加密檔案,以便在工作流程中使用。執行下列命令來加密檔案:

gpg -e -r marymajor@example.com --openpgp testfile.txt

執行此命令之前,請注意下列事項:

  • 對於-r引數,請marymajor@example.com以建立 PGP key pair 時使用的電子郵件地址取代。

  • --openpgp標誌是可選的。這個旗標可讓加密的檔案符合 RFC4880 標準

  • 此指令會在與之相同的testfile.txt.gpg位置建立一個名為的檔案testfile.txt

步驟 7:執行工作流程並檢視結果

若要執行工作流程,請使用您在步驟 3 中建立的使用者連接至「Transfer Family」伺服器。然後,您可以查看在步驟 2.5 中指定的 Amazon S3 儲存貯體,設定目標參數以查看解密的檔案。

執行解密工作流程
  1. 開啟命令終端機。

  2. 運行以下命令,your-endpoint替換為實際端點以及transfer-key用戶的 SSH 私鑰:

    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
  3. 執行 pwd 命令。如果成功,此命令將返回以下內容:

    Remote working directory: /DOC-EXAMPLE-BUCKET/decrypt-user

    您的目錄會反映您的 Amazon S3 儲存貯體的名稱。

  4. 執行下列命令以上傳檔案並觸發工作流程以執行:

    put testfile.txt.gpg
  5. 對於解密檔案的目的地,您在建立工作流程時指定了decrypted-files/資料夾。現在,您可以導航到該文件夾並列出內容。

    cd ../decrypted-files/ ls

    如果成功,該ls命令將列出該testfile.txt文件。您可以下載此檔案,並確認它與您之前加密的原始檔案相同。