

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

# 控制用戶端對 S3 檔案系統的存取
<a name="s3-files-access-point-policy-examples"></a>

本主題說明如何使用檔案系統政策、IAM 身分政策和網路控制來控制哪些用戶端可以存取您的 S3 檔案系統，以及透過哪些存取點存取。

## S3 Files 存取點
<a name="s3-files-access-point-policy-overview"></a>

S3 檔案存取點是檔案系統的應用程式特定進入點，可簡化大規模管理資料存取。您可以使用存取點對透過存取點提出的所有檔案系統請求強制執行使用者身分和許可，並限制用戶端只能存取指定根目錄及其子目錄中的資料。

存取點會限制用戶端在檔案系統上可執行的操作。它們不限制哪些用戶端可以使用它們。除非檔案系統政策限制，否則您帳戶中具有 `s3files:ClientMount`許可的任何角色都可以透過檔案系統上的任何存取點進行掛載。若要控制哪些用戶端可以使用哪個存取點，請結合三層：網路控制 （防止連線）、檔案系統資源政策 （明確拒絕，可承受身分政策變更） 和 IAM 身分政策 （角色的最低權限）。

S3 檔案`s3files:ClientRootAccess`會針對每個掛載上的檔案系統政策評估 `s3files:ClientMount``s3files:ClientWrite`、 和 。每個掛載也會評估 `s3files:AccessPointArn`條件金鑰，因此您可以撰寫單一拒絕陳述式，封鎖透過您指定的存取點以外的任何存取點存取。如果拒絕或未授予任何必要動作，掛載會在任何檔案操作發生之前失敗。以下兩個區段涵蓋兩個常見需求：將工作負載限制在特定存取點，以及完全拒絕工作負載存取檔案系統。

## 限制對特定存取點的存取
<a name="s3-files-access-point-policy-restrict"></a>

當角色 （例如 EC2 執行個體角色或 ECS 任務角色） 只能透過一個存取點掛載檔案系統時，就會套用此模式。條件索引鍵為 `s3files:AccessPointArn`。政策需要指定存取點`Allow`的 和所有其他存取點`Deny`的明確 。IAM 允許授予是跨身分和資源政策的附加項目；在沒有明確拒絕的情況下，單獨的政策可以授予對不同存取點的存取權。

**檔案系統政策範例：**

```
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowComputeAOnlyViaSpecificAP",
      "Effect": "Allow",
      "Principal": { "AWS": "arn:aws:iam::ACCOUNT:role/compute-a-role" },
      "Action": [
        "s3files:ClientMount",
        "s3files:ClientWrite"
      ],
      "Condition": {
        "StringEquals": {
          "s3files:AccessPointArn": "arn:aws:s3files:REGION:ACCOUNT:file-system/fs-ID/access-point/fsap-ID"
        }
      }
    },
    {
      "Sid": "DenyComputeAIfWrongAP",
      "Effect": "Deny",
      "Principal": { "AWS": "arn:aws:iam::ACCOUNT:role/compute-a-role" },
      "Action": "s3files:Client*",
      "Condition": {
        "StringNotEquals": {
          "s3files:AccessPointArn": "arn:aws:s3files:REGION:ACCOUNT:file-system/fs-ID/access-point/fsap-ID"
        }
      }
    }
  ]
}
```

只有在請求目標為 時，`compute-a-role`才允許該角色掛載和寫入`fsap-ID`，並在此檔案系統上的所有其他存取點上明確拒絕。身分政策無法覆寫資源政策中的明確拒絕，因此即使稍後將更廣泛的 IAM 政策連接到角色，此限制也會保留。

**掛載命令：**

```
sudo mount -t s3files -o accesspoint=fsap-ID fs-ID:/ /mnt/s3files
```

## 透過任何存取點拒絕工作負載存取
<a name="s3-files-access-point-policy-deny"></a>

當角色與 S3 檔案檔案系統共用帳戶，但不得透過任何存取點或直接掛載該帳戶時，就會套用此模式。若要封鎖所有存取點用量，請套用從最強到最弱隔離保證排序的三層。

**1。網路控制。**移除安全群組規則，授予 `compute-b-role`執行個體在 TCP 連接埠 2049 上對掛載目標的存取權。網路控制是最有彈性的 layer，因為可防止掛載嘗試進行任何登入資料交換。即使設定錯誤的政策授予掛載許可，NFS 連線也無法達到掛載目標。

**2. 檔案系統政策中的明確拒絕。**檔案系統政策中的拒絕陳述式會拒絕掛載，即使稍後授予角色更廣泛的 IAM 許可。檔案系統資源政策提供拒絕，即使有人修改`iam:PutRolePolicy`角色的身分政策，該拒絕仍會持續存在。只有具有 的主體`s3files:PutFileSystemPolicy`可以變更此層。

```
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyComputeBOnFileSystem",
      "Effect": "Deny",
      "Principal": { "AWS": "arn:aws:iam::ACCOUNT:role/compute-b-role" },
      "Action": "s3files:Client*",
      "Resource": "*"
    }
  ]
}
```

**3. IAM 身分政策。**請勿授予 角色的`s3files:Client*`許可。這是最後一層，最容易設定錯誤，因為任何具有 的管理員`iam:PutRolePolicy`都可以將掛載許可授予角色。

### 如果沒有檔案系統政策，任何角色都可以透過任何存取點進行掛載
<a name="s3-files-access-point-policy-deny-no-resource-policy"></a>

檔案系統資源政策提供拒絕，只有修改身分政策的許可才能將其移除。如果沒有檔案系統政策，其身分政策`s3files:ClientMount`中具有 的任何角色都可以透過檔案系統上的任何存取點進行掛載。我們建議您使用拒絕基準將檔案系統政策連接到每個檔案系統，然後為每個工作負載新增允許陳述式。

## 存取點隔離的最佳實務
<a name="s3-files-access-point-policy-best-practices"></a>

下表摘要說明常見存取點隔離目標的建議方法。


| 目標 | 建議方法 | 
| --- | --- | 
| 將工作負載限制為單一存取點 | 允許特定存取點 ARN 上的 角色，以及每隔一個存取點上的明確拒絕。請參閱「限制對特定存取點的存取」。 | 
| 封鎖相同帳戶中的角色掛載檔案系統 | 移除連接埠 2049 的網路存取、在檔案系統政策中拒絕，且不在 IAM 中授予 。 | 
| 同一檔案系統上的多個工作負載，每個工作負載都範圍限定於自己的存取點 | 在檔案系統政策中維護每個角色一個允許 \+ 拒絕對，每個都範圍為不同的存取點 ARN。 | 
| 透過存取點的跨帳戶存取 | 使用 檔案系統政策，在特定存取點 ARN 上授予跨帳戶角色。請勿只依賴身分政策。 | 