

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

# 範例 1：為其使用者授予儲存貯體許可的儲存貯體擁有者
<a name="example-walkthroughs-managing-access-example1"></a>

**重要**  
授予許可給 IAM 角色比授予許可給個別使用者更好。如需如何授予許可給 IAM 角色的詳細資訊，請參閱[了解跨帳戶許可和使用 IAM 角色](example-walkthroughs-managing-access-example4.md#access-policies-walkthrough-example4-overview)。

**Topics**
+ [準備演練](#grant-permissions-to-user-in-your-account-step0)
+ [步驟 1：在帳戶 A 中建立資源並授予許可](#grant-permissions-to-user-in-your-account-step1)
+ [步驟 2：測試許可](#grant-permissions-to-user-in-your-account-test)

在此演練中， AWS 帳戶 擁有儲存貯體，而帳戶包含 IAM 使用者。根據預設，使用者沒有許可。父帳戶必須授予使用者許可，使用者才能執行任何任務。儲存貯體擁有者及父帳戶是相同的。因此，若要授予儲存貯體的使用者許可， AWS 帳戶 可以使用儲存貯體政策、使用者政策或兩者。帳戶擁有者將使用儲存貯體政策授予部分許可，並使用使用者政策授予其他許可。

以下是演練步驟的摘要：

![\[顯示 AWS 帳戶授予許可的圖表。\]](http://docs.aws.amazon.com/zh_tw/AmazonS3/latest/userguide/images/access-policy-ex1.png)


1. 帳戶管理員建立儲存貯體政策，並將一組許可授予使用者。

1. 帳戶管理員向使用者連接使用者政策，並授予其他許可。

1. 使用者隨後嘗試透過儲存貯體政策與使用者政策取得的許可。

在此範例中，您將需要 AWS 帳戶。您必須建立管理員使用者，而非使用帳戶的根使用者憑證 (請參閱「[關於使用管理員使用者來建立資源並授予許可](example-walkthroughs-managing-access.md#about-using-root-credentials)」)。我們參考 AWS 帳戶 和管理員使用者，如下表所示。


| 帳戶 ID | 帳戶稱為 | 帳戶中的管理員使用者 | 
| --- | --- | --- | 
|  *1111-1111-1111*  |  帳戶 A  |  AccountAadmin  | 

**注意**  
此範例中的管理員使用者是 **AccountAadmin**，它指的是帳戶 A 而非 **AccountAdmin**。

所有建立使用者與授予許可的任務都是在 AWS 管理主控台完成。為了驗證許可，演練使用命令列工具 AWS Command Line Interface (AWS CLI) 和 AWS Tools for Windows PowerShell，因此您不需要撰寫任何程式碼。

## 準備演練
<a name="grant-permissions-to-user-in-your-account-step0"></a>

1. 請確定您擁有 ， AWS 帳戶 且其擁有具有管理員權限的使用者。

   1. 如有需要 AWS 帳戶，請註冊 。我們將此帳戶稱為帳戶 A。

      1.  前往 **https：// AWS **[https://aws.amazon.com/s3](https://aws.amazon.com/s3)。

      1. 遵循螢幕說明。

         AWS 當您的帳戶處於作用中狀態且可供您使用時， 會透過電子郵件通知您。

   1. 在帳戶 A 中建立管理員使用者 **AccountAadmin**。使用帳戶 A 憑證來登入 [IAM 主控台](https://console.aws.amazon.com/iam/home?#home)，然後執行下列操作：

      1. 建立使用者 **AccountAadmin**，並記下使用者安全憑證。

         如需說明，請參閱《IAM 使用者指南》**中的[在 AWS 帳戶中建立 IAM 使用者](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html)。

      1. 連接給予完整存取權的使用者政策，以授予 **AccountAadmin** 管理員權限。

         如需說明，請參閱《IAM 使用者指南》**中的[管理 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage.html)。

      1. 記下 **AccountAadmin** 的 **IAM 使用者登入 URL**。登入 AWS 管理主控台時，您必須使用此 URL。如需如何尋找登入 URL 的詳細資訊，請參閱《[IAM 使用者指南》中的以 IAM 使用者 AWS 管理主控台 身分登入](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started_how-users-sign-in.html) 。 **記下各個帳戶的 URL。

1. 設定 AWS CLI 或 AWS Tools for Windows PowerShell。確定依照下列方式儲存管理員使用者憑證：
   + 如果使用 AWS CLI，`AccountAadmin`請在組態檔案中建立設定檔 。
   + 如果使用 AWS Tools for Windows PowerShell，請確定您將工作階段的登入資料儲存為 `AccountAadmin`。

   如需說明，請參閱[為逐步解說設定工具](policy-eval-walkthrough-download-awscli.md)。

## 步驟 1：在帳戶 A 中建立資源並授予許可
<a name="grant-permissions-to-user-in-your-account-step1"></a>

使用帳戶 A `AccountAadmin`中使用者的登入資料和特殊 IAM 使用者登入 URL，登入 AWS 管理主控台 並執行下列動作：

1. 建立儲存貯體和 IAM 使用者的資源

   1. 在 Amazon S3 主控台中建立儲存貯體。請注意您建立儲存貯 AWS 區域 體的 。如需說明，請參閱[建立一般用途儲存貯體](create-bucket-overview.md)。

   1. 在 [IAM 主控台](https://console.aws.amazon.com/iam/)中，執行下列步驟：

      1. 建立名為 Dave 的使用者。

         如需逐步說明，請參閱《IAM 使用者指南》**中的[建立 IAM 使用者 (主控台)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_console)。

      1. 記下 `UserDave` 憑證。

      1. 記下使用者 Dave 的 Amazon Resource Name (ARN)。在 [IAM 主控台](https://console.aws.amazon.com/iam/)中，選取使用者，**摘要** 索引標籤隨即提供使用者 ARN。

1. 授予許可。

   由於儲存貯體擁有者和使用者所屬的父帳戶相同， AWS 帳戶 可以使用儲存貯體政策、使用者政策或兩者來授予使用者許可。在本範例中兩種方式都會使用。若物件也屬於相同帳戶，儲存貯體擁有者即可以儲存貯體政策或 IAM 政策來授予物件許可。

   1. 在 Amazon S3 主控台中，將下列儲存貯體政策連至 *awsexamplebucket1*。

      此政策具有兩個陳述式。
      + 第一個陳述式會授予 Dave 儲存貯體操作許可 `s3:GetBucketLocation` 與 `s3:ListBucket`。
      + 第二個陳述式則會授予 `s3:GetObject` 許可。因為帳戶 A 也擁有該物件，所以帳戶管理員能夠授予 `s3:GetObject` 許可。

      在 `Principal` 陳述式中，Dave 將以其 ARN 識別。如需政策元素的詳細資訊，請參閱「[Amazon S3 中的政策和許可](access-policy-language-overview.md)」。

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Sid": "statement1",
                  "Effect": "Allow",
                  "Principal": {
                      "AWS": "arn:aws:iam::111122223333:user/Dave"
                  },
                  "Action": [
                      "s3:GetBucketLocation",
                      "s3:ListBucket"
                  ],
                  "Resource": [
                      "arn:aws:s3:::awsexamplebucket1"
                  ]
              },
              {
                  "Sid": "statement2",
                  "Effect": "Allow",
                  "Principal": {
                      "AWS": "arn:aws:iam::111122223333:user/Dave"
                  },
                  "Action": [
                      "s3:GetObject"
                  ],
                  "Resource": [
                      "arn:aws:s3:::awsexamplebucket1/*"
                  ]
              }
          ]
      }
      ```

------

   1. 使用下列政策，建立使用者 Dave 的內嵌政策。政策也會將 `s3:PutObject` 許可授予使用者 Dave。您必須提供儲存貯體名稱以更新政策。

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

****  

      ```
      {
         "Version":"2012-10-17",		 	 	 
         "Statement": [
            {
               "Sid": "PermissionForObjectOperations",
               "Effect": "Allow",
               "Action": [
                  "s3:PutObject"
               ],
               "Resource": [
                  "arn:aws:s3:::awsexamplebucket1/*"
               ]
            }
         ]
      }
      ```

------

      如需說明，請參閱《IAM 使用者指南》**中的[管理 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_inline-using.html)。請記得您需要使用帳戶 A 憑證來登入主控台。

## 步驟 2：測試許可
<a name="grant-permissions-to-user-in-your-account-test"></a>

使用 Dave 的憑證，驗證該許可可用。您可以從下列兩個程序中使用其中一項來進行：

**使用 測試許可 AWS CLI**

1. 透過新增下列`UserDaveAccountA`設定檔來更新 AWS CLI 組態檔案。如需詳細資訊，請參閱[為逐步解說設定工具](policy-eval-walkthrough-download-awscli.md)。

   ```
   [profile UserDaveAccountA]
   aws_access_key_id = access-key
   aws_secret_access_key = secret-access-key
   region = us-east-1
   ```

1. 驗證 Dave 可執行使用者政策中授予的操作。使用下列 AWS CLI `put-object`命令上傳範例物件。

   命令中的 -`--body` 參數會識別要上傳的來源檔案。例如，若檔案位於 Windows 電腦 C: 磁碟機的根目錄，可以指定 `c:\HappyFace.jpg`。`--key` 參數提供物件的金鑰名稱。

   ```
   aws s3api put-object --bucket awsexamplebucket1 --key HappyFace.jpg --body HappyFace.jpg --profile UserDaveAccountA
   ```

   執行下列 AWS CLI 命令以取得 物件。

   ```
   aws s3api get-object --bucket awsexamplebucket1 --key HappyFace.jpg OutputFile.jpg --profile UserDaveAccountA
   ```

**使用 測試許可 AWS Tools for Windows PowerShell**

1. 以 `AccountADave` 身分儲存 Dave 的憑證。然後使用這些憑證對物件進行 `PUT` 和 `GET` 操作。

   ```
   set-awscredentials -AccessKey AccessKeyID -SecretKey SecretAccessKey -storeas AccountADave
   ```

1. 使用使用者 Dave 的儲存登入資料， AWS Tools for Windows PowerShell `Write-S3Object`使用 命令上傳範例物件。

   ```
   Write-S3Object -bucketname awsexamplebucket1 -key HappyFace.jpg -file HappyFace.jpg -StoredCredentials AccountADave
   ```

   下載上述已上傳的物件。

   ```
   Read-S3Object -bucketname awsexamplebucket1 -key HappyFace.jpg -file Output.jpg -StoredCredentials AccountADave
   ```