

# 傳輸中資料的加密
<a name="encryption-of-data-in-transit"></a>

 您可以掛載檔案系統，以便使用業界標準 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 授權進行掛載](https://docs.aws.amazon.com/efs/latest/ug/mounting-fs-mount-helper.html#mounting-IAM-option)。

下列 EFS 檔案系統政策範例，會強制執行傳輸中進行加密，並具有下列特性：
+ `effect` 為 `allow`。
+ 所有 IAM 實體的主體都設定為 `*`。
+ 動作設定為 `ClientMount`、`ClientWrite` 與 `ClientRootAccess`。
+ 授予許可的條件設定為 `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 主控台](https://console.aws.amazon.com/efs)。

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

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

1. 選擇 **File system policy** (檔案系統政策)，然後選擇 **Edit** (編輯)。 File system policy (檔案系統政策) 頁面會隨即顯示。  
![](http://docs.aws.amazon.com/zh_tw/whitepapers/latest/efs-encrypted-file-systems/images/image8.jpeg)

   *建立檔案系統政策*

1. 在**政策選項**中，建議您選擇下列可用的預先設定之政策選項：
   + 根據預設防止根存取
   + 根據預設強制執行唯讀存取
   + 對所有用戶端強制執行傳輸中加密

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

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

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

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

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

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

   您也可以使用 AWS CloudFormation 或 AWS 開發套件，以程式設計方式建立檔案系統政策，或是直接使用 Amazon EFS API 建立檔案系統政策。如需建立檔案系統政策的詳細資訊，請參閲《*Amazon EFS 使用者指南*》中的[建立檔案系統政策](https://docs.aws.amazon.com/efs/latest/ug/create-file-system-policy.html)。

## 設定傳輸中資料的加密
<a name="setting-up-encryption-of-data-in-transit"></a>

 若要設定傳輸中資料的加密，建議您在每個用戶端上下載 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。

1.  掛載檔案系統： 

   ```
         sudo mount -t efs -o tls {{file-system-id}}
         {{efs-mount-point}}
   ```
   +  `mount -t efs` 會叫用 EFS 掛載協助程式。 
   +  使用 EFS 掛載協助程式進行掛載時，不支持使用檔案系統的 DNS 名稱或使用掛載目標的 IP 地址，請改用檔案系統 ID。 
   +  根據預設，EFS 掛載協助程式會使用 AWS 建議的掛載選項。不建議覆寫這些預設掛載選項，但在出現情況時，我們提供執行此動作的彈性。建議您徹底測試所有覆寫的掛載選項，了解這些變更對於檔案系統存取與效能的影響。 
   +  下表顯示 EFS 掛載協助程式所使用的預設掛載選項。     
[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/whitepapers/latest/efs-encrypted-file-systems/encryption-of-data-in-transit.html)
   +  將下列一行新增至 `/etc/fstab`，任一系統重新啟動之後，就會自動重新掛載您的檔案系統。 

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

## 使用傳輸中資料的加密
<a name="using-encryption-of-data-in-transit"></a>

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

 使用 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}}
```