傳輸中資料的加密 - 使用 Amazon Elastic File System 加密檔案資料

傳輸中資料的加密

您可以掛載檔案系統,以便使用業界標準 AES-256 加密的傳輸層安全性 1.2 (TLS),加密傳輸中的所有 NFS 流量。TLS 是一組業界標準的密碼編譯通訊協定,用於為透過網路交換的資訊進行加密。AES-256 是 256 位元加密密碼,用於 TLS 中的資料傳輸。建議您在存取檔案系統的每個用戶端上,都設定傳輸中的加密。

您可以使用 IAM 政策,針對 NFS 用戶端存取 Amazon EFS 強制執行傳輸中的加密。當用戶端連接至檔案系統時,Amazon EFS 會評估檔案系統的 IAM 資源政策 (稱為檔案系統政策) 以及任何以身分區分的 IAM 政策,來決定要授予的適當之檔案系統存取許可。您可以在檔案系統資源政策中,使用 aws:SecureTransport 條件金鑰,強制 NFS 用戶端在連接至 EFS 檔案系統時,要使用 TLS。

注意

您必須使用 EFS 掛載協助程式,掛載您的 Amazon EFS 檔案系統,才能使用 IAM 授權來控制 NFS 用戶端的存取權。如需詳細資訊,請參閲《Amazon EFS 使用者指南》中的使用 IAM 授權進行掛載

下列 EFS 檔案系統政策範例,會強制執行傳輸中進行加密,並具有下列特性:

  • effectallow

  • 所有 IAM 實體的主體都設定為 *

  • 動作設定為 ClientMountClientWriteClientRootAccess

  • 授予許可的條件設定為 SecureTransport。只有對使用 TLS 連接至檔案系統的 NFS 用戶端,才授予存取權。

    { “Version”: “2012-10-17”, “Id”: “ExamplePolicy01”, “Statement”: [ { “Sid”: “VisualEditior0”, “Effect”: “Allow”, “Principal”: { “AWS”: “*”, }, “Action”: [ “elasticfilesystem:ClientRootAccess”, “elasticfilesystem:ClientMount”, “elasticfilesystem:ClientWrite” ], “Condition”: { “Bool”: { “aws:SecureTransport”: “true” } } } ] }

    您可以使用 Amazon EFS 主控台或 AWS CLI,建立檔案系統政策。

使用 EFS 主控台建立檔案系統政策:

  1. 開啟 Amazon EFS 主控台

  2. 選擇 File Systems (檔案系統)。

  3. 在 File systems (檔案系統) 頁面上,選擇您要對其編輯或建立檔案系統政策的檔案系統。該檔案系統的詳細資訊頁面會隨即顯示。

  4. 選擇 File system policy (檔案系統政策),然後選擇 Edit (編輯)。 File system policy (檔案系統政策) 頁面會隨即顯示。

    File system policy interface with policy options and JSON editor for custom configurations.

    建立檔案系統政策

  5. 政策選項中,建議您選擇下列可用的預先設定之政策選項:

    • 根據預設防止根存取

    • 根據預設強制執行唯讀存取

    • 對所有用戶端強制執行傳輸中加密

    若您選擇預先設定的政策,則政策 JSON 物件會隨即顯示在 Policy editor (政策編輯器) 面板中。

  6. 使用 Grant additional permissions (授予其他許可),可將檔案系統許可授予給其他 IAM 主體 (包括其他 AWS 帳戶)。選擇 Add (新增),接著輸入要為其授予許可之實體的主體 ARN,然後選擇要授予的 Permissions (許可)。

  7. 根據您的需求,使用 Policy editor (政策編輯器) 自訂預先設定的政策,或是依需求建立您自己的政策。當您使用編輯器時,預先設定的政策選項會變為無法使用。若要復原政策變更,請選擇 Clear (清除)。

    當您清除編輯器時,預先設定的政策會再次變為可用。

  8. 完成政策的編輯或建立後,請選擇 Save (儲存)。

    檔案系統的詳細資訊頁面會隨即顯示,並會顯示 File system policy (檔案系統政策) 中的政策。

    您也可以使用 AWS CloudFormation 或 AWS 開發套件,以程式設計方式建立檔案系統政策,或是直接使用 Amazon EFS API 建立檔案系統政策。如需建立檔案系統政策的詳細資訊,請參閲《Amazon EFS 使用者指南》中的建立檔案系統政策

設定傳輸中資料的加密

若要設定傳輸中資料的加密,建議您在每個用戶端上下載 EFS 掛載協助程式。EFS 掛載協助程式是 AWS 提供的開放原始碼公用程式,可用於簡化 EFS 的使用,包括設定傳輸中資料的加密。根據預設,掛載協助程式會使用 EFS 建議的掛載選項。

下列 Linux 發行版本支援 EFS 掛載協助程式:

  • Amazon Linux 2017.09+

  • Amazon Linux 2+

  • Debian 9+

  • Fedora 28+

  • Red Hat Enterprise Linux / CentOS 7+

  • Ubuntu 16.04+

設定傳輸中資料的加密:

  1. 安裝 EFS 掛載協助程式:

    • 針對 Amazon Linux,請使用此命令:

      sudo yum install -y amazon-efs-utils
    • 針對其他 Linux 發行版本,請從 GitHub 下載並安裝。

      amazon-efs-utils 套件會自動安裝下列相依內容:NFS 用戶端 (nfs-utils)、網路轉送 (stunnel)、OpenSSL 與 Python。

  2. 掛載檔案系統:

    sudo mount -t efs -o tls file-system-id efs-mount-point
    • mount -t efs 會叫用 EFS 掛載協助程式。

    • 使用 EFS 掛載協助程式進行掛載時,不支持使用檔案系統的 DNS 名稱或使用掛載目標的 IP 地址,請改用檔案系統 ID。

    • 根據預設,EFS 掛載協助程式會使用 AWS 建議的掛載選項。不建議覆寫這些預設掛載選項,但在出現情況時,我們提供執行此動作的彈性。建議您徹底測試所有覆寫的掛載選項,了解這些變更對於檔案系統存取與效能的影響。

    • 下表顯示 EFS 掛載協助程式所使用的預設掛載選項。

      選項 描述
      nfsvers=4.1 NFS 通訊協定版本
      rsize=1048576 NFS 用戶端針對每個網路 READ 請求,可接收的資料位元組上限)
      wsize=1048576 NFS 用戶端針對每個網路 WRITE 請求,可傳送的資料位元組上限
      hard NFS 用戶端在 NFS 請求逾時後的復原行為,以便讓 NFS 請求在伺服器回覆之前無限期重試。
      timeo=600 NFS 用戶端重試 NFS 請求之前,等待回應的逾時值 (單位為十秒)
      retrans=2 NFS 用戶端在嘗試進一步的復原動作之前,重試請求的次數
      noresvport 告訴 NFS 用戶端在重新建立網路連線時,使用新的 TCP 來源連接埠
    • 將下列一行新增至 /etc/fstab,任一系統重新啟動之後,就會自動重新掛載您的檔案系統。

      file-system-id efs-mount-point efs _netdev, tls, iam 0 0

使用傳輸中資料的加密

若您的組織受到需要加密傳輸中資料之公司或法規政策的限制,建議您在存取檔案系統的每個用戶端上,使用傳輸中資料的加密。加密與解密設定於連接層級中,能增添另一層的安全性。

使用 EFS 掛載協助程式來掛載檔案系統,會設定及維持用戶端與 Amazon EFS 之間的 TLS 1.2 通道,並會透過此加密通道來路由所有 NFS 流量。用於建立加密 TLS 連接的憑證,由 Amazon Certificate Authority (CA) 所簽署,並受到大多數現代 Linux 發行版本的信任。EFS 掛載協助程式也繁衍出一個看門狗程序,以監視每個檔案系統的所有安全通道,並確保其正在執行。

使用 EFS 掛載協助程式建立與 Amazon EFS 的加密連線之後,不需要其他使用者輸入或組態。使用者連接與應用程序在存取檔案系統時,並不會感覺到正在進行加密。

成功掛載並使用 EFS 掛載協助程式建立 EFS 檔案系統的加密連線後,掛載命令的輸出會顯示掛載的檔案系統,並會使用 localhost (127.0.0.1) 作為網路轉送來建立加密通道。請參閲下列輸出範例。

127.0.0.1:/ on efs-mount-point type nfs4 (rw,relatime,vers=4.1,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=20059,timeo=600,retrans=2,sec=sys,clientaddr=127.0.0.1,local_lock=none,addr=127.0.0.1)

若要將 efs-mount-point 對應至 EFS 檔案系統,請在 /var/log/amazon/efs 中查詢 mount.log 檔案,並找到上次成功的掛載作業。使用下列簡單的 grep 命令即可完成。

grep -E "Successfully mounted.*efs-mount-point" /var/log/amazon/efs/mount.log | tail -1

此 grep 命令的輸出,將會傳回掛載的 EFS 檔案系統之 DNS 名稱。請參閲以下輸出範例。

2018-03-15 07:03:42,363 - INFO - Successfully mounted file-system-id.efs.region.amazonaws.com at efs-mount-point