範例 3:授予對其未擁有之物件的許可的儲存貯體擁有者
重要
將權限授予 IAM 角色比授予個別使用者更好。若要了解如何操作,請參閱 了解跨帳戶許可和使用 IAM 角色。
此範例的情況是儲存貯體擁有者想要授予物件存取許可,但儲存貯體擁有者未擁有儲存貯體中的所有物件。在此範例中,儲存貯體擁有者嘗試使用它自己的帳戶將許可授予使用者。
儲存貯體擁有者可以讓其他 AWS 帳戶 上傳物件。預設情況下,儲存貯體擁有者不會擁有由另一個 AWS 帳戶 寫入儲存貯體的物件。物件由將其寫入 S3 儲存貯體的帳戶擁有。如果儲存貯體擁有者未擁有儲存貯體中的物件,則物件擁有者必須先使用物件存取控制清單 (ACL) 將許可授予儲存貯體擁有者。然後,儲存貯體擁有者可以授予其未擁有的物件許可。如需更多詳細資訊,請參閱 Amazon S3 儲存貯體和物件擁有權。
如果儲存貯體擁有者為儲存貯體套用儲存貯體擁有者強制執行的 S3 物件所有權設定,則儲存貯體擁有者會擁有儲存貯體中的所有物件,包括由另一個 AWS 帳戶 寫入的物件。此方法可解決物件不屬於儲存貯體擁有者的問題。然後,您可以將許可委派給您自己帳戶中的使用者或其他 AWS 帳戶。
注意
S3 物件擁有權是一項 Amazon S3 儲存貯體層級設定,您可以用來同時控制上傳至儲存貯體之物件的擁有權,以及停用或啟用 ACL。根據預設,物件擁有權設定為「儲存貯體擁有者強制執行」設定,而且所有 ACL 都會停用。停用 ACL 時,儲存貯體擁有者會擁有儲存貯體中的所有物件,並使用存取管理政策專門管理對這些物件的存取。
Amazon S3 中的大多數新式使用案例不再需要使用 ACL。建議您將 ACL 保持停用狀態,除非是在必須個別控制每個物件存取的情況。停用 ACL 後,您可以使用政策來控制對儲存貯體中所有物件的存取,無論是誰將物件上傳到您的儲存貯體。如需更多詳細資訊,請參閱 控制物件的擁有權並停用儲存貯體的 ACL。
在此範例中,假設儲存貯體擁有者尚未套用儲存貯體擁有者強制執行的「物件擁有權」設定。儲存貯體擁有者向其自己帳戶中的使用者委派許可。以下是逐步解說步驟的摘要:
-
帳戶 A 管理員使用者使用兩個陳述式來連接儲存貯體政策。
-
允許帳戶 B 上傳物件的跨帳戶許可。
-
允許其自己帳戶中的使用者存取儲存貯體中的物件。
-
-
帳戶 B 管理員使用者將物件上傳至帳戶 A 所擁有的儲存貯體。
-
帳戶 B 管理員會更新物件 ACL,以新增將物件完全控制許可給予儲存貯體擁有者的授予。
-
帳戶 A 中的使用者會存取儲存貯體中的物件來進行驗證,而不管其擁有者為何。
在此範例中,您需要兩個帳戶。下表顯示如何參照這些帳戶與這些帳戶中的管理員使用者。在此演練中,您不會根據建議的 IAM 指導方針使用帳戶根使用者憑證。如需更多詳細資訊,請參閱 關於使用管理員使用者來建立資源並授予許可。相反地,您可以在每個帳戶中建立管理員,並使用這些憑證來建立資源以及向其授予許可。
| AWS 帳戶 ID | 帳戶稱為 | 帳戶中的管理員 |
|---|---|---|
|
|
帳戶 A |
AccountAadmin |
|
|
帳戶 B |
AccountBadmin |
所有建立使用者與授予許可的任務都是在 AWS 管理主控台 完成。為了驗證許可,此演練會使用命令列工具 (AWS Command Line Interface (AWS CLI) 與 AWS Tools for Windows PowerShell),因此您不需要撰寫任何程式碼。
步驟 0:準備演練
-
確定您有兩個 AWS 帳戶,而且每個帳戶都有一個管理員,如上節的表格中所示。
-
視需要註冊一個 AWS 帳戶。
-
使用帳戶 A 憑證登入 IAM 主控台
,然後執行下列步驟以建立管理員使用者: -
建立使用者
AccountAadmin,並記下使用者的安全憑證。如需有關新增使用者的詳細資訊,請參閱《IAM 使用者指南》中的在您的 AWS 帳戶 中建立 IAM 使用者。 -
連接給予完整存取權的使用者政策,以授予 AccountAadmin 管理員許可。如需說明,請參閱《IAM 使用者指南》中的管理 IAM 政策。
-
在 IAM 主控台
儀表板中,記下 IAM 使用者登入 URL。登入 時,此帳戶中的使用者必須使用此 URLAWS 管理主控台 如需詳細資訊,請參閱《IAM 使用者指南》中的使用者如何登入您的帳戶。
-
-
使用帳戶 B 憑證重複前一個步驟,並建立管理員使用者
AccountBadmin。
-
-
設定 AWS CLI 或 Tools for Windows PowerShell。請確定您如下所示儲存系統管理員憑證:
-
如果使用 AWS CLI,請在組態檔中建立兩個描述檔,即
AccountAadmin和AccountBadmin。 -
如果使用 Tools for Windows PowerShell,請確定您將工作階段的憑證作為
AccountAadmin和AccountBadmin來存放。
如需說明,請參閱「為逐步解說設定工具」。
-
步驟 1:執行帳戶 A 任務
針對帳號 A 執行以下步驟:
步驟 1.1:登入主控台
使用帳戶 A 的 IAM 使用者登入 URL,以 AccountAadmin 使用者身分登入 AWS 管理主控台。此使用者將建立儲存貯體並連接其政策。
步驟 1.2:建立儲存貯體和使用者,並新增授予使用者許可的儲存貯體政策
-
在 Amazon S3 主控台中建立儲存貯體。此練習假設儲存貯體是在美國東部 (維吉尼亞北部) AWS 區域建立,且名稱為
。amzn-s3-demo-bucket1如需說明,請參閱「建立一般用途儲存貯體」。
-
在 IAM 主控台
中,建立使用者 Dave。如需逐步說明,請參閱《IAM 使用者指南》中的建立 IAM 使用者 (主控台)。
-
記下使用者 Dave 的憑證。
-
在 Amazon S3 主控台中,將下列儲存貯體政策連接至
儲存貯體。如需說明,請參閱「使用 Amazon S3 主控台新增儲存貯體政策」。遵循新增儲存貯體政策的步驟。如需有關如何尋找帳戶 ID 的資訊,請參閱尋找您的 AWS 帳戶 ID。amzn-s3-demo-bucket1政策會將
s3:PutObject與s3:ListBucket許可授予帳戶 B。該政策也會將s3:GetObject許可授予使用者Dave。
步驟 2:執行帳戶 B 任務
現在,帳戶 B 具有對帳戶 A 之儲存貯體執行操作的許可,帳戶 B 管理員會執行下列操作:
-
將物件上傳至帳戶 A 的儲存貯體
-
在物件 ACL 中新增授權,以允許帳戶 A (儲存貯體擁有者) 具有完整控制權。
使用 AWS CLI
-
使用
put-objectAWS CLI 命令上傳物件。命令中的 ---body參數會識別要上傳的來源檔案。例如,若檔案位於 Windows 電腦的C:磁碟機,請指定c:\HappyFace.jpg。--key參數提供物件的金鑰名稱。aws s3api put-object --bucketamzn-s3-demo-bucket1--key HappyFace.jpg --body HappyFace.jpg --profile AccountBadmin -
新增物件 ACL 的授予許可,以允許儲存貯體擁有者可完全控制物件。如需如何尋找正式使用者 ID 的資訊,請參閱《AWS帳戶管理參考指南》中的尋找 AWS 帳戶的正式使用者 ID。
aws s3api put-object-acl --bucketamzn-s3-demo-bucket1--key HappyFace.jpg --grant-full-control id="AccountA-CanonicalUserID" --profile AccountBadmin
使用 Tools for Windows PowerShell
-
使用
Write-S3Object命令上傳物件。Write-S3Object -BucketNameamzn-s3-demo-bucket1-key HappyFace.jpg -file HappyFace.jpg -StoredCredentials AccountBadmin -
新增物件 ACL 的授予許可,以允許儲存貯體擁有者可完全控制物件。
Set-S3ACL -BucketNameamzn-s3-demo-bucket1-Key HappyFace.jpg -CannedACLName "bucket-owner-full-control" -StoredCreden
步驟 3:測試許可
現在,驗證帳戶 A 中的使用者 Dave 可以存取帳戶 B 所擁有的物件。
使用 AWS CLI
-
將使用者 Dave 憑證新增至 AWS CLI 組態檔,並建立新的描述檔
UserDaveAccountA。如需詳細資訊,請參閱「為逐步解說設定工具」。[profile UserDaveAccountA] aws_access_key_id =access-keyaws_secret_access_key =secret-access-keyregion =us-east-1 -
執行
get-objectCLI 命令來下載HappyFace.jpg,並將其儲存在本機。您可以新增--profile參數,來提供使用者 Dave 憑證。aws s3api get-object --bucketamzn-s3-demo-bucket1--key HappyFace.jpgOutputfile.jpg--profile UserDaveAccountA
使用 Tools for Windows PowerShell
-
將使用者 Dave AWS 憑證作為
UserDaveAccountA存放,以便長久存放。Set-AWSCredentials -AccessKeyUserDave-AccessKey-SecretKeyUserDave-SecretAccessKey-storeas UserDaveAccountA -
執行
Read-S3Object命令來下載HappyFace.jpg物件,並將其儲存在本機。您可以新增-StoredCredentials參數,來提供使用者 Dave 憑證。Read-S3Object -BucketNameamzn-s3-demo-bucket1-Key HappyFace.jpg -file HappyFace.jpg -StoredCredentials UserDaveAccountA
步驟 4:清理
-
完成測試之後,您可以執行下列步驟進行清除:
-
使用帳戶 A 憑證登入 AWS 管理主控台
,並執行下列操作: -
在 Amazon S3 主控台中,移除連接至
amzn-s3-demo-bucket1的儲存貯體政策。在儲存貯體 Properties (屬性) 中,刪除 Permissions (許可) 區段中的政策。 -
如果儲存貯體是為此練習而建立,請在 Amazon S3 主控台中刪除物件,然後刪除儲存貯體。
-
在 IAM 主控台
中,移除 AccountAadmin 使用者。如需逐步說明,請參閱《IAM 使用者指南》中的刪除 IAM 使用者。
-
-