範例 2:授予跨帳戶儲存貯體許可的儲存貯體擁有者 - Amazon Simple Storage Service

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

範例 2:授予跨帳戶儲存貯體許可的儲存貯體擁有者

重要

將權限授予 IAM 角色比授予個別使用者更好。若要了解如何操作,請參閱 了解跨帳戶許可和使用 IAM 角色

AWS 帳戶例如,帳戶 A 可以授予另一個 AWS 帳戶帳戶 B 存取其資源的許可,例如儲存貯體和物件。帳戶 B 接著可以將這些許可委派給其帳戶中的使用者。在此案例範例中,儲存貯體擁有者會將跨帳戶許可授予另一個帳戶,以執行特定儲存貯體操作。

注意

帳戶 A 也可以直接將使用儲存貯體政策的許可授予帳戶 B 中的使用者。不過,使用者仍然需要所屬父帳戶 (帳戶 B) 的許可,即使帳戶 B 沒有帳戶 A 的許可也是一樣。只要使用者同時擁有資源擁有者與父帳戶的許可,使用者就可以存取資源。

以下是逐步解說步驟的摘要:

AWS 帳戶 授予另一個 AWS 帳戶 許可來存取其資源。
  1. 帳戶 A 管理員使用者會將授予跨帳戶許可的儲存貯體政策連接至帳戶 B,以執行特定儲存貯體操作。

    請注意,帳戶 B 中的管理員使用者將自動繼承許可。

  2. 帳戶 B 管理員使用者會將使用者政策連接至委派接收自帳戶 A 之許可的使用者。

  3. 帳戶 B 中的使用者接著會存取帳戶 A 所擁有之儲存貯體中的物件來驗證許可。

在此範例中,您需要兩個帳戶。下表顯示如何參照這些帳戶與其中的管理員使用者。根據 IAM 準則 (請參閱關於使用管理員使用者來建立資源並授予許可),我們不會在此逐步解說中使用根使用者憑證。相反地,您可以在每個帳戶中建立管理員使用者,並使用這些憑證來建立資源以及將許可授予它們。

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

1111-1111-1111

帳戶 A

AccountAadmin

2222-2222-2222

帳戶 B

AccountBadmin

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

準備演練

  1. 請確定您有兩個 , AWS 帳戶 而且每個帳戶都有一個管理員使用者,如上一節的表格所示。

    1. 如有需要 AWS 帳戶,請註冊 。

    2. 使用帳戶 A 憑證來登入 IAM 主控台,建立管理員使用者:

      1. 建立使用者 AccountAadmin,並記下安全憑證。如需說明,請參閱《IAM 使用者指南》中的在 AWS 帳戶中建立 IAM 使用者

      2. 連接給予完整存取權的使用者政策,以授予 AccountAadmin 管理員權限。如需說明,請參閱《IAM 使用者指南》中的使用政策

    3. 當您位於 IAM 主控台時,請記下儀表板上的 IAM 使用者登入 URL。登入 AWS Management Console時,帳戶中的所有使用者都必須使用此 URL。

      如需詳細資訊,請參閱《IAM 使用者指南》中的使用者如何登入您的帳戶

    4. 使用帳戶 B 憑證重複前一個步驟,並建立管理員使用者 AccountBadmin

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

    • 如果使用 AWS CLI,請在組態檔案中建立兩個設定檔AccountBadminAccountAadmin以及 。

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

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

  3. 儲存管理員使用者憑證 (也稱為描述檔)。您可以使用描述檔名稱,而不是為所輸入的每個命令指定憑證。如需詳細資訊,請參閱為逐步解說設定工具

    1. 在 AWS CLI 登入資料檔案中新增每個管理員使用者的設定檔,AccountAadmin並在AccountBadmin兩個帳戶中新增 。

      [AccountAadmin] aws_access_key_id = access-key-ID aws_secret_access_key = secret-access-key region = us-east-1 [AccountBadmin] aws_access_key_id = access-key-ID aws_secret_access_key = secret-access-key region = us-east-1
    2. 如果您使用 AWS Tools for Windows PowerShell,請執行下列命令。

      set-awscredentials –AccessKey AcctA-access-key-ID –SecretKey AcctA-secret-access-key –storeas AccountAadmin set-awscredentials –AccessKey AcctB-access-key-ID –SecretKey AcctB-secret-access-key –storeas AccountBadmin

步驟 1:執行帳戶 A 任務

步驟 1.1:登入 AWS Management Console

使用帳戶 A 的 IAM 使用者登入 URL,首先以 AccountAadmin 使用者 AWS Management Console 身分登入 。此使用者將建立儲存貯體並連接其政策。

步驟 1.2:建立儲存貯體

  1. 在 Amazon S3 主控台中建立儲存貯體。此練習假設儲存貯體是在美國東部 (維吉尼亞北部) 建立 AWS 區域 ,且名為 。 amzn-s3-demo-bucket

    如需說明,請參閱 建立儲存貯體

  2. 將範例物件上傳至儲存貯體。

    如需取得說明,請前往 步驟 2:將物件上傳至您的儲存貯體

步驟 1.3:連接儲存貯體政策以將跨帳戶許可授予帳戶 B

儲存貯體政策會將 s3:GetLifecycleConfigurations3:ListBucket 許可授予帳戶 B。假設您仍然使用 AccountAadmin 使用者憑證來登入主控台。

  1. 將下列儲存貯體政策連接至 amzn-s3-demo-bucket。政策會將 s3:GetLifecycleConfigurations3:ListBucket 動作的許可授予帳戶 B。

    如需說明,請參閱 使用 Amazon S3 主控台新增儲存貯體政策

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Example permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountB-ID:root" }, "Action": [ "s3:GetLifecycleConfiguration", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket" ] } ] }
  2. 驗證帳戶 B (與其管理員使用者) 可以執行操作。

    • 使用 驗證 AWS CLI

      aws s3 ls s3://amzn-s3-demo-bucket --profile AccountBadmin aws s3api get-bucket-lifecycle-configuration --bucket amzn-s3-demo-bucket --profile AccountBadmin
    • 使用 驗證 AWS Tools for Windows PowerShell

      get-s3object -BucketName amzn-s3-demo-bucket -StoredCredentials AccountBadmin get-s3bucketlifecycleconfiguration -BucketName amzn-s3-demo-bucket -StoredCredentials AccountBadmin

步驟 2:執行帳戶 B 任務

現在,帳戶 B 管理員會建立使用者 Dave,並委派接收自帳戶 A 的許可。

步驟 2.1:登入 AWS Management Console

使用帳戶 B 的 IAM 使用者登入 URL,首先以 AccountBadmin 使用者 AWS Management Console 身分登入 。

步驟 2.2:在帳戶 B 中建立使用者 Dave

IAM 主控台中,建立使用者 Dave

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

步驟 2.3:將許可委派給使用者 Dave

使用下列政策,建立使用者 Dave 的內嵌政策。您需要提供儲存貯體名稱來更新政策。

假設您使用 AccountBadmin 使用者憑證來登入主控台。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Example", "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket" ] } ] }

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

步驟 2.4:測試許可

現在,帳戶 B 中的 Dave 可以列出帳戶 A 所擁有 amzn-s3-demo-bucket 的內容。您可以使用下列任一個程序來驗證許可。

使用 測試許可 AWS CLI
  1. UserDave設定檔新增至 AWS CLI 組態檔案。如需組態檔的詳細資訊,請參閱「為逐步解說設定工具」。

    [profile UserDave] aws_access_key_id = access-key aws_secret_access_key = secret-access-key region = us-east-1
  2. 在命令提示中,輸入下列 AWS CLI 命令,確認 Dave 現在可從帳戶 A amzn-s3-demo-bucket擁有的 取得物件清單。請注意,命令會指定UserDave設定檔。

    aws s3 ls s3://amzn-s3-demo-bucket --profile UserDave

    Dave 不會有任何其他許可。因此,如果他嘗試任何其他操作 (例如下列 get-bucket-lifecycle 組態),則 Amazon S3 會傳回許可遭拒。

    aws s3api get-bucket-lifecycle-configuration --bucket amzn-s3-demo-bucket --profile UserDave
使用 測試許可 AWS Tools for Windows PowerShell
  1. AccountBDave 身分儲存 Dave 的憑證。

    set-awscredentials -AccessKey AccessKeyID -SecretKey SecretAccessKey -storeas AccountBDave
  2. 嘗試列出儲存貯體命令。

    get-s3object -BucketName amzn-s3-demo-bucket -StoredCredentials AccountBDave

    Dave 不會有任何其他許可。因此,如果他嘗試任何其他操作 (例如下列 get-s3bucketlifecycleconfiguration),則 Amazon S3 會傳回許可遭拒。

    get-s3bucketlifecycleconfiguration -BucketName amzn-s3-demo-bucket -StoredCredentials AccountBDave

步驟 3:(選用) 嘗試明確拒絕

您可以使用存取控制清單 (ACL)、儲存貯體政策或使用者政策來授予許可。但如果有儲存貯體政策或使用者政策所設定的明確拒絕,則明確拒絕會優先於任何其他許可。針對測試,更新儲存貯體政策,並明確拒絕帳戶 B 的 s3:ListBucket 許可。此政策也會授予 s3:ListBucket 許可。不過,會優先使用明確拒絕,而且帳戶 B 或帳戶 B 中的使用者將無法列出 amzn-s3-demo-bucket 中的物件。

  1. 使用帳戶 A 中使用者 AccountAadmin 的憑證,將儲存貯體政策取代如下。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Example permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountB-ID:root" }, "Action": [ "s3:GetLifecycleConfiguration", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket" ] }, { "Sid": "Deny permission", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::AccountB-ID:root" }, "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket" ] } ] }
  2. 現在,如果您嘗試使用 AccountBadmin 憑證來取得儲存貯體清單,存取會遭拒。

    • 使用 AWS CLI執行下列命令:

      aws s3 ls s3://amzn-s3-demo-bucket --profile AccountBadmin
    • 使用 AWS Tools for Windows PowerShell執行下列命令:

      get-s3object -BucketName amzn-s3-demo-bucket -StoredCredentials AccountBDave

步驟 4:清理

  1. 完成測試之後,您可以執行下列步驟進行清除:

    1. 使用帳戶 A 登入資料登入 AWS Management Console (AWS Management Console),然後執行下列動作:

      • 在 Amazon S3 主控台中,移除連接至 amzn-s3-demo-bucket 的儲存貯體政策。在儲存貯體 Properties (屬性) 中,刪除 Permissions (許可) 區段中的政策。

      • 如果儲存貯體是為此練習而建立,請在 Amazon S3 主控台中刪除物件,然後刪除儲存貯體。

      • IAM 主控台中,移除 AccountAadmin 使用者。

  2. 使用帳戶 B 憑證登入 IAM 主控台。刪除使用者 AccountBadmin。如需逐步說明,請參閱《IAM 使用者指南》中的刪除 IAM 使用者