範例 1:為其使用者授予儲存貯體許可的儲存貯體擁有者 - Amazon Simple Storage Service

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

範例 1:為其使用者授予儲存貯體許可的儲存貯體擁有者

重要

授予許可給 IAM 角色比授予許可給個別使用者更好。如需如何授予許可給 IAM 角色的詳細資訊,請參閱了解跨帳戶許可和使用 IAM 角色

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

以下是演練步驟的摘要:

顯示 AWS 帳戶授予許可的圖表。
  1. 帳戶管理員建立儲存貯體政策,並將一組許可授予使用者。

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

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

在此範例中,您將需要 AWS 帳戶。您必須建立管理員使用者,而非使用帳戶的根使用者憑證 (請參閱「關於使用管理員使用者來建立資源並授予許可」)。我們參考 AWS 帳戶 和管理員使用者,如下表所示。

帳戶 ID 帳戶稱為 帳戶中的管理員使用者

1111-1111-1111

帳戶 A

AccountAadmin

注意

此範例中的管理員使用者是 AccountAadmin,它指的是帳戶 A 而非 AccountAdmin

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

準備演練

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

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

      1. 前往 https:// AWS https://aws.amazon.com/s3

      2. 遵循螢幕說明。

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

    2. 在帳戶 A 中建立管理員使用者 AccountAadmin。使用帳戶 A 憑證來登入 IAM 主控台,然後執行下列操作:

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

        如需說明,請參閱《IAM 使用者指南》中的在 AWS 帳戶中建立 IAM 使用者

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

        如需說明,請參閱《IAM 使用者指南》中的管理 IAM 政策

      3. 記下 AccountAadminIAM 使用者登入 URL。登入 AWS Management Console時,您必須使用此 URL。如需如何尋找登入 URL 的詳細資訊,請參閱《IAM 使用者指南》中的以 IAM 使用者的 AWS Management Console 身分登入記下各個帳戶的 URL。

  2. 設定 AWS CLI 或 AWS Tools for Windows PowerShell。確定依照下列方式儲存管理員使用者憑證:

    • 如果使用 AWS CLI,AccountAadmin請在組態檔案中建立設定檔 。

    • 如果使用 AWS Tools for Windows PowerShell,請確定您將工作階段的登入資料儲存為 AccountAadmin

    如需說明,請參閱為逐步解說設定工具

步驟 1:在帳戶 A 中建立資源並授予許可

使用帳戶 A AccountAadmin 中使用者的登入資料和特殊 IAM 使用者登入 URL,登入 AWS Management Console 並執行下列動作:

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

    1. 在 Amazon S3 主控台中建立儲存貯體。請注意您建立儲存貯 AWS 區域 體的 。如需說明,請參閱建立一般用途儲存貯體

    2. IAM 主控台中,執行下列步驟:

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

        如需逐步說明,請參閱《IAM 使用者指南》中的建立 IAM 使用者 (主控台)

      2. 記下 UserDave 憑證。

      3. 記下使用者 Dave 的 Amazon Resource Name (ARN)。在 IAM 主控台中,選取使用者,摘要 索引標籤隨即提供使用者 ARN。

  2. 授予許可。

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

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

      此政策具有兩個陳述式。

      • 第一個陳述式會授予 Dave 儲存貯體操作許可 s3:GetBucketLocations3:ListBucket

      • 第二個陳述式則會授予 s3:GetObject 許可。因為帳戶 A 也擁有該物件,所以帳戶管理員能夠授予 s3:GetObject 許可。

      Principal 陳述式中,Dave 將以其 ARN 識別。如需政策元素的詳細資訊,請參閱「Amazon S3 中的政策和許可」。

      { "Version": "2012-10-17", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountA-ID:user/Dave" }, "Action": [ "s3:GetBucketLocation", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::awsexamplebucket1" ] }, { "Sid": "statement2", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountA-ID:user/Dave" }, "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::awsexamplebucket1/*" ] } ] }
    2. 使用下列政策,建立使用者 Dave 的內嵌政策。政策也會將 s3:PutObject 許可授予使用者 Dave。您必須提供儲存貯體名稱以更新政策。

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

      如需說明,請參閱《IAM 使用者指南》中的管理 IAM 政策。請記得您需要使用帳戶 A 憑證來登入主控台。

步驟 2:測試許可

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

使用 測試許可 AWS CLI
  1. 新增下列UserDaveAccountA設定檔來更新 AWS CLI 組態檔案。如需詳細資訊,請參閱為逐步解說設定工具

    [profile UserDaveAccountA] aws_access_key_id = access-key aws_secret_access_key = secret-access-key region = us-east-1
  2. 驗證 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 的憑證。然後使用這些憑證對物件進行 PUTGET 操作。

    set-awscredentials -AccessKey AccessKeyID -SecretKey SecretAccessKey -storeas AccountADave
  2. 使用使用者 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