

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

# 配置使用存取點的 IAM 原則
設定 IAM 政策

Amazon S3 存取點支援 AWS Identity and Access Management (IAM) 資源政策，可讓您依資源、使用者或其他條件控制存取點的使用。若要讓應用程式或使用者能夠透過存取點存取物件，存取點和基礎儲存貯體或 Amazon FSx 檔案系統都必須允許該請求。

**重要**  
您在存取點政策中包含的限制僅適用透過該存取點進行的請求。將存取點連接至儲存貯體並不會變更基礎資源的行為。所有未透過您的存取點對儲存貯體執行的現有操作，將繼續像以前一樣運作。

當您使用 IAM 資源政策時，請務必先從 解決安全警告、錯誤、一般警告和建議， AWS Identity and Access Management Access Analyzer 再儲存政策。IAM Access Analyzer 會比對 IAM [政策文法](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_grammar.html)和[最佳實務](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)來執行政策檢查，以驗證您的政策。這些檢查會產生問題清單並提供建議，協助您撰寫具有功能性且符合安全最佳實務的政策。

若要進一步了解如何使用 IAM Access Analyzer 驗證政策，請參閱《IAM 使用者指南》**中的 [IAM Access Analyzer 政策驗證](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html)。若要檢視 IAM Access Analyzer 傳回的警告、錯誤和建議清單，請參閱 [IAM Access Analyzer 政策檢查參考](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-reference-policy-checks.html)。

## 存取點的政策範例


下列範例示範如何建立 IAM 原則以控制透過存取點進行的請求。

**注意**  
存取點政策中授予的權限只有在基礎儲存貯體也允許相同的存取時才有效。您可以透過兩種方式完成此操作：  
**(建議)** 如[將存取控制委派給存取點](#access-points-delegating-control)中所述，將儲存貯體的存取控制委派給存取點。
將存取點政策中包含的相同權限新增至基礎儲存貯體的政策。範例 1 存取點政策範例示範如何修改基礎儲存貯體原則，以允許必要的存取。

**Example 1 - 授予存取點政策**  
下列存取點政策會透過帳戶 `Jane` 中的存取點 `123456789012`，將帳戶 `GET` 中 IAM 使用者 `PUT` 的許可授予具有字首 `Jane/` 的 *`my-access-point`* 和 *`123456789012`* 物件。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
    {
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::123456789012:user/Jane"
        },
        "Action": ["s3:GetObject", "s3:PutObject"],
        "Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/Jane/*"
    }]
}
```

**注意**  
若要讓存取點政策有效地授予存取權給 *`Jane`*，基礎儲存貯體也必須允許對 *`Jane`* 的相同存取權。您可以將存取控制從儲存貯體委派給存取點，如[將存取控制委派給存取點](#access-points-delegating-control)中所述。或者，您可以將下列政策新增至基礎儲存貯體，將必要的權限授予 Jane。請注意，存取點和儲存貯體原則之間的 `Resource` 項目有所不同。  

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
    {
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::123456789012:user/Jane"
        },
        "Action": ["s3:GetObject", "s3:PutObject"],
        "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/Jane/*"
    }]    
}
```

**Example 2 - 具有索引標籤條件的存取點政策**  
下列存取點政策會透過在帳戶 *`123456789012`* 中已將索引標籤金鑰 *`data`* 設定為 *`finance`* 值的物件存取點，將帳戶 *`123456789012`* 中 IAM 使用者 *`Mateo`* 的許可授予 `GET` 和 *`my-access-point`*。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
    {
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::123456789012:user/Mateo"
        },
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/*",
        "Condition": {
            "StringEquals": {
                "s3:ExistingObjectTag/data": "finance"
            }
        }
    }]
}
```

**Example 3 - 允許儲存貯體清單的存取點政策**  
下列存取點政策允許帳戶 *`123456789012`* 中的 IAM 使用者 `Arnav` 檢視帳戶 *`123456789012`* 中儲存貯體基礎存取點 *`my-access-point`* 中包含的物件 。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
    {
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::123456789012:user/Arnav"
        },
        "Action": "s3:ListBucket",
        "Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point"
    }]
}
```

**Example 4 - 服務控制政策**  
下列服務控制政策需要使用虛擬私有雲端 (VPC) 網路來源建立所有新的存取點。有了此政策，組織中的使用者就無法建立可從網際網路存取的新存取點。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
    {
        "Effect": "Deny",
        "Action": "s3:CreateAccessPoint",
        "Resource": "*",
        "Condition": {
            "StringNotEquals": {
                "s3:AccessPointNetworkOrigin": "VPC"
            }
        }
    }]
}
```

**Example 5 - 將 S3 操作限制在 VPC 網路來源的儲存貯體政策**  
以下儲存貯體政策會將儲存貯體 `amzn-s3-demo-bucket` 的所有 S3 物件操作的存取限制在具有 VPC 網路來源的存取點。  
使用類似此範例所示的陳述式之前，請確定您不需要使用存取點不支援的功能，例如跨區域複寫。  
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": [
                "s3:AbortMultipartUpload",
                "s3:BypassGovernanceRetention",
                "s3:DeleteObject",
                "s3:DeleteObjectTagging",
                "s3:DeleteObjectVersion",
                "s3:DeleteObjectVersionTagging",
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:GetObjectLegalHold",
                "s3:GetObjectRetention",
                "s3:GetObjectTagging",
                "s3:GetObjectVersion",
                "s3:GetObjectVersionAcl",
                "s3:GetObjectVersionTagging",
                "s3:ListMultipartUploadParts",
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:PutObjectLegalHold",
                "s3:PutObjectRetention",
                "s3:PutObjectTagging",
                "s3:PutObjectVersionAcl",
                "s3:PutObjectVersionTagging",
                "s3:RestoreObject"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Condition": {
                "StringNotEquals": {
                    "s3:AccessPointNetworkOrigin": "VPC"
                }
            }
        }
    ]
}
```

## 條件索引鍵


S3 存取點具有您可以在 IAM 政策中使用的條件金鑰，來控制對資源的存取。下列條件金鑰僅代表 IAM 政策的一部分。如需完整政策範例，請參閱 [存取點的政策範例](#access-points-policy-examples)、[將存取控制委派給存取點](#access-points-delegating-control) 和 [授予跨帳戶存取點的許可](#access-points-cross-account)。

**`s3:DataAccessPointArn`**  
此範例顯示您可以用來比對存取點 ARN 的字串。下列範例符合區域 *`123456789012`*中 AWS 帳戶 的所有存取點*`us-west-2`*：  

```
"Condition" : {
    "StringLike": {
        "s3:DataAccessPointArn": "arn:aws:s3:us-west-2:123456789012:accesspoint/*"
    }
}
```

**`s3:DataAccessPointAccount`**  
此範例顯示一個字串運算子，您可以使用它來比對存取點擁有者的帳戶 ID。下列範例會比對 AWS 帳戶 *`123456789012`* 擁有的所有存取點。  

```
"Condition" : {
    "StringEquals": {
        "s3:DataAccessPointAccount": "123456789012"
    }
}
```

**`s3:AccessPointNetworkOrigin`**  
此範例顯示一個字串運算子，您可以使用它來比對網路來源，`Internet` 或 `VPC`。下列範例僅會比對存取點與 VPC 來源。  

```
"Condition" : {
    "StringEquals": {
        "s3:AccessPointNetworkOrigin": "VPC"
    }
}
```

如需搭配 Amazon S3 使用條件索引鍵的詳細資訊，請參閱服務授權參考**中的 [Amazon S3 的動作、資源和條件索引鍵](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html)。

如需依 S3 資源類型列出 S3 API 操作許可的詳細資訊，請參閱[Amazon S3 API 操作所需的許可](using-with-s3-policy-actions.md)。

## 將存取控制委派給存取點


您可以將儲存貯體的存取控制委派給儲存貯體的存取點。下列範例儲存貯體政策允許完整存取儲存貯體擁有者帳戶所擁有的所有存取點。因此，對此儲存貯體的所有存取皆由連接至其存取點的政策所控制。我們建議您針對不需要直接存取儲存貯體的所有使用案例，以此方式設定儲存貯體。

**Example 6 - 將存取控制委派給存取點的儲存貯體政策**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement" : [
    {
        "Effect": "Allow",
        "Principal" : { "AWS": "*" },
        "Action" : "*",
        "Resource" : [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*"],
        "Condition": {
            "StringEquals" : { "s3:DataAccessPointAccount" : "111122223333" }
        }
    }]
}
```

## 授予跨帳戶存取點的許可


若要建立另一個帳戶所擁有之儲存貯體的存取點，您必須先指定儲存貯體名稱和帳戶擁有者 ID 來建立存取點。然後，儲存貯體擁有者必須更新儲存貯體政策，以授權來自存取點的請求。建立存取點類似於建立 DNS CNAME，其中存取點不會提供儲存貯體內容的存取權。所有儲存貯體存取權都由儲存貯體政策控制。下列範例儲存貯體政策允許儲存貯體上來自受信任 AWS 帳戶所擁有之存取點的 `GET` 和 `LIST` 請求。

將 *Bucket ARN* 取代為儲存貯體的 ARN。

**Example 7 – 將許可委派給另一個 的儲存貯體政策 AWS 帳戶**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement" : [
    {
        "Effect": "Allow",
        "Principal" : { "AWS": "*" },
        "Action" : ["s3:GetObject","s3:ListBucket"],
        "Resource" : ["arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*"],
        "Condition": {
            "StringEquals" : { "s3:DataAccessPointAccount" : "Access point owner's account ID" }
        }
    }]
}
```
跨帳戶存取權的存取點僅適用於連接到 S3 儲存貯體的存取點。您無法將存取點連接至另一個 擁有的 Amazon FSx 檔案系統上的磁碟區 AWS 帳戶。