

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

# 使用存取點
<a name="efs-access-points"></a>

EFS *存取點*是 EFS 檔案系統的應用程式特定進入點，可讓您更輕鬆地管理共用資料集的應用程式存取。存取點可以針對透過存取點發出的所有檔案系統請求，強制執行使用者身分 (包括使用者的 POSIX 群組)。存取點也可以針對檔案系統強制執行不同的根目錄，讓用戶端只能存取指定目錄或其子目錄中的資料。

您可以使用 AWS Identity and Access Management (IAM) 政策來強制執行特定應用程式使用特定存取點。透過結合 IAM 政策與存取點，您可以輕鬆地為應用程式提供特定資料集的安全存取權。

您可以使用 AWS 管理主控台、 AWS Command Line Interface (AWS CLI) 和 Amazon EFS API，為現有的 EFS 檔案系統建立存取點。如需建立存取點的逐步程序，請參閱 [建立存取點](create-access-point.md)。

## 存取點可與掛載目標搭配使用
<a name="accesspoints-and-mount-targets"></a>

在使用存取點之前，您必須在 VPC 中建立至少一個掛載目標。掛載目標提供 EFS 檔案系統的網路連線，而存取點則提供存取控制和應用程式特定的進入點。

存取點會繼承掛載目標的可用區域置放。
+ 安全群組會套用至掛載目標層級，而非存取點層級。
+ 存取點可在您具有掛載目標的所有可用區域中使用。
+ IAM 條件金鑰`elasticfilesystem:AccessedViaMountTarget`可確保檔案系統存取只會透過掛載目標進行，這同時適用於直接掛載和存取點掛載。

使用存取點掛載檔案系統時，您可以使用 EFS 掛載協助程式。在掛載命令中，包含檔案系統 ID、存取點 ID 和 `tls` 掛載選項，如下列範例所示。

```
$ mount -t efs -o tls,iam,accesspoint=fsap-abcdef0123456789a fs-abc0123def456789a: /localmountpoint
```

如需使用存取點掛載檔案系統的詳細資訊，請參閱 [使用 EFS 存取點進行掛載](mounting-access-points.md)。

**Topics**
+ [存取點可與掛載目標搭配使用](#accesspoints-and-mount-targets)
+ [使用存取點強制執行使用者身分](enforce-identity-access-points.md)
+ [使用存取點強制採用根目錄](enforce-root-directory-access-point.md)
+ [在 IAM 政策中使用存取點](access-points-iam-policy.md)

# 使用存取點強制執行使用者身分
<a name="enforce-identity-access-points"></a>

您可以使用存取點，來強制執行透過存取點提出之所有檔案系統要求的使用者和群組資訊。若要啟用此功能，您必須在建立存取點時指定要強制採用的作業系統身分。

做為此程序的一部分，請提供下列資訊：
+ 使用者 ID：使用者的數字 POSIX 使用者 ID。
+ 群組 ID：使用者的數字 POSIX 群組 ID。
+ 次要群組 ID：選填的次要群組 ID 清單。

啟用使用者強制執行時，Amazon EFS 會將 NFS 用戶端的使用者和群組 ID 取代為在所有檔案系統操作的存取點上設定的身分。使用者強制執行也會執行下列項目：
+ 新檔案和目錄的擁有者和群組會設定為存取點的使用者 ID 和群組 ID。
+ 在評估檔案系統許可時，EFS 會考慮使用者 ID、群組 ID 和存取點的次要群組 ID。EFS 會忽略 NFS 用戶端的 ID。

**重要**  
強制執行使用者身分必須遵守 `ClientRootAccess` IAM 許可。  
例如，在某些情況下，您可能會將存取點使用者 ID、群組 ID 或這兩者同時設定為根 (也就是說，將 UID、GID 或者兩者同時設定為 0)。在此類情況下，您必須將 `ClientRootAccess` IAM 許可授與 NFS 用戶端。

# 使用存取點強制採用根目錄
<a name="enforce-root-directory-access-point"></a>

您可以使用存取點覆寫檔案系統的根目錄。強制執行根目錄時，使用存取點的 NFS 用戶端會使用存取點上設定的根目錄，而不是檔案系統的根目錄。

您可以在建立存取點時設定存取點 `Path` 屬性來啟用此功能。此 `Path` 屬性是檔案系統根目錄的完整路徑，適用於透過此存取點提出的所有檔案系統要求。完整路徑的長度不能超過 100 個字元。最多可以包含四個子目錄。

當您在存取點上指定根目錄時，它會成為掛載存取點之 NFS 用戶端之檔案系統的根目錄。例如，假設存取點的根目錄為 `/data`。在此情況下，使用存取點掛載 `fs-12345678:/` 的效果與不使用存取點掛載 `fs-12345678:/data` 的效果相同。

在存取點中指定根目錄時，請確定已設定目錄權限，以允許存取點的使用者成功掛載檔案系統。請特別確定執行位元已為存取點使用者、群組或所有人設定。例如，目錄權限值 755 可讓目錄使用者擁有者列出檔案、建立檔案和裝載，以及所有其他使用者列出檔案和裝載。

## 建立存取點的根目錄
<a name="create-root-directory-access-point"></a>

如果檔案系統上不存在存取點的根目錄路徑，Amazon EFS 會使用擁有權和許可來自動建立根目錄。如果您在建立時未指定目錄擁有權和許可權，Amazon EFS 將不會建立根目錄。此方法可以為特定使用者或應用程式佈建檔案系統存取，而無需從 Linux 主機掛載檔案系統。如需建立根目錄，您可以在建立存取點時，使用下列屬性來設定根目錄擁有權和許可：
+ `OwnerUid`：用來做為根目錄擁有者的數字 POSIX 使用者 ID。
+ `OwnerGiD`：用來做為根目錄擁有者群組的數字 POSIX 群組 ID。
+ 許可：目錄的 Unix 模式。常見的組態是 755。確定已為存取點使用者設定執行位元，以便他們能夠掛載。此組態賦與目錄擁有者在目錄中輸入、列出和寫入新檔案的許可。也賦與所有其他使用者輸入和列出檔案的許可。如需使用 Unix 檔案和目錄模式的詳細資訊，請參閱 [網路檔案系統 (NFS) 層級的使用者、群組和許可](accessing-fs-nfs-permissions.md)。

只有指定目錄的 OwnUid、OwnGID 和許可時，Amazon EFS 才會建立存取點根目錄。如果您未提供此資訊，則 Amazon EFS 不會建立根目錄。如果根目錄不存在，嘗試使用存取點掛載將會失敗。

當您使用存取點掛載檔案系統時，如果該目錄不存在，則會建立存取點的根目錄，前提是在建立存取點時指定了根目錄的 OwnerUid 和許可。如果存取點上設定的根目錄在掛載前已經存在，存取點則不會覆寫現有的許可。如果您刪除根目錄，EFS 會在下次使用存取點掛載檔案系統時將其重新建立。

**注意**  
如果您未指定存取點擁有權和許可權，Amazon EFS 將不會建立根目錄。掛載存取點的所有嘗試都將失敗。

## 存取點根目錄的安全模型
<a name="root-directory-security-access-point"></a>

當根目錄覆寫生效時，Amazon EFS 的表現就會跟啟用了 `no_subtree_check` 選項的 Linux NFS 伺服器一樣。

在 NFS 通訊協定中，伺服器會產生檔案控制點，用戶端在存取檔案時會使用此控制點作為唯一的參考。EFS 會安全地產生檔案控制點，EFS 檔案系統無法預測此控制點，且此控制點是 EFS 檔案系統所特有的。當根目錄覆寫就緒時，Amazon EFS 不會揭露指定根目錄外檔案的檔案控制代碼。不過，在某些情況下，使用者可能會透過頻外機制，取得其存取點以外之檔案的檔案控制點。例如，如果使用者可以存取第二個存取點，可能就會這麼做。如果使用者這麼做，他們可以對檔案執行讀取和寫入操作。

系統一律會強制執行檔案擁有權和存取許可，以供在使用者存取點根目錄內外存取檔案。

# 在 IAM 政策中使用存取點
<a name="access-points-iam-policy"></a>

您可以使用 IAM 政策來強制執行由其 IAM 角色識別的特定 NFS 用戶端，僅能來存取特定的存取點。若要執行此作業，請使用 `elasticfilesystem:AccessPointArn` IAM 條件金鑰。`AccessPointArn` 是用來掛載檔案系統之存取點的 Amazon Resource Name (ARN)。

以下是檔案系統政策範例，此政策允許 IAM 角色 `app1` 使用存取點 `fsap-01234567` 存取檔案系統。此政策也允許 `app2` 透過存取點 `fsap-89abcdef` 使用檔案系統。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "MyFileSystemPolicy",
    "Statement": [
        {
            "Sid": "App1Access",
            "Effect": "Allow",
            "Principal": { "AWS": "arn:aws:iam::111122223333:role/app1" },
            "Action": [
                "elasticfilesystem:ClientMount",
                "elasticfilesystem:ClientWrite"
            ],
            "Resource": "arn:aws:elasticfilesystem:us-east-1:111122223333:file-system/*",
            "Condition": {
                "StringEquals": {
                    "elasticfilesystem:AccessPointArn" : "arn:aws:elasticfilesystem:us-east-1:222233334444:access-point/fsap-01234567"
                }
            }
        },
        {
            "Sid": "App2Access",
            "Effect": "Allow",
            "Principal": { "AWS": "arn:aws:iam::111122223333:role/app2" },
            "Action": [
                "elasticfilesystem:ClientMount",
                "elasticfilesystem:ClientWrite"
            ],
            "Resource": "arn:aws:elasticfilesystem:us-east-1:111122223333:file-system/*",
            "Condition": {
                "StringEquals": {
                    "elasticfilesystem:AccessPointArn" : "arn:aws:elasticfilesystem:us-east-1:222233334444:access-point/fsap-89abcdef"
                }
            }
        }
    ]
}
```

------