範例 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 管理主控台 完成。為了驗證許可,此演練會使用命令列工具 (AWS Command Line Interface (AWS CLI) 與 AWS Tools for Windows PowerShell),因此您不需要撰寫任何程式碼。

準備演練

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

    1. 視需要註冊一個 AWS 帳戶。我們將此帳戶稱為帳戶 A。

      1. 前往 https://aws.amazon.com/s3,然後選擇建立 AWS 帳戶

      2. 遵循螢幕說明。

        AWS您的帳戶已作用並且可供您使用時, 會以電子郵件通知您。

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

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

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

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

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

      3. 記下 AccountAadminIAM 使用者登入 URL。登入 時,您必須使用此 URLAWS 管理主控台 如需何處可以找到登入 URL 的詳細資訊,請參閱《IAM 使用者指南》中的以 IAM 使用者身分登入 AWS 管理主控台。記下各個帳戶的 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 管理主控台並執行下列步驟:

  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 中的政策和許可」。

      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/*" ] } ] }
    2. 使用下列政策,建立使用者 Dave 的內嵌政策。政策也會將 s3:PutObject 許可授予使用者 Dave。您必須提供儲存貯體名稱以更新政策。

      JSON
      { "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