本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
範例 2:授予跨帳戶儲存貯體許可的儲存貯體擁有者
重要
將權限授予 IAM 角色比授予個別使用者更好。若要了解如何操作,請參閱 了解跨帳戶許可和使用 IAM 角色。
AWS 帳戶例如,帳戶 A — 可以授與另一個 AWS 帳戶帳戶 B 存取其資源 (例如值區和物件) 的權限。帳戶 B 接著可以將這些許可委派給其帳戶中的使用者。在此案例範例中,儲存貯體擁有者會將跨帳戶許可授予另一個帳戶,以執行特定儲存貯體操作。
注意
帳戶 A 也可以直接將使用儲存貯體政策的許可授予帳戶 B 中的使用者。不過,即使帳戶 B 沒有帳戶 A 的權限,使用者仍需要使用者所屬之父帳號帳號 B 的權限,只要使用者同時擁有資源擁有者和父帳號的權限,使用者就能夠存取資源。
下列是演練步驟的摘要:
![AWS 帳戶 授與另一個存取其資源的 AWS 帳戶 權限。](images/access-policy-ex2.png)
-
帳戶 A 管理員使用者會將授予跨帳戶許可的儲存貯體政策連接至帳戶 B,以執行特定儲存貯體操作。
請注意,帳戶 B 中的管理員使用者將自動繼承許可。
-
帳戶 B 管理員使用者會將使用者政策連接至委派接收自帳戶 A 之許可的使用者。
-
帳戶 B 中的使用者接著會存取帳戶 A 所擁有之儲存貯體中的物件來驗證許可。
在此範例中,您需要兩個帳戶。下表顯示如何參照這些帳戶與其中的管理員使用者。根據 IAM 準則 (請參閱關於使用管理員使用者來建立資源並授予許可),我們不會在本逐步解說中使用 root 使用者登入資料。相反地,您可以在每個帳戶中建立管理員使用者,並使用這些憑證來建立資源以及將許可授予它們。
AWS 帳戶 身份證 | 帳戶稱為 | 帳戶中的管理員使用者 |
---|---|---|
|
帳戶 A |
AccountAadmin |
|
帳戶 B |
AccountBadmin |
所有建立使用者與授予許可的任務都是在 AWS Management Console完成。若要驗證權限,逐步解說會使用命令列工具 AWS Command Line Interface (CLI) 和 AWS Tools for Windows PowerShell,因此您不需要撰寫任何程式碼。
準備演練
-
請確定您有兩個帳戶, AWS 帳戶 而且每個帳戶都有一個系統管理員使用者,如前一節的表格所示。
-
如果需要 AWS 帳戶,請註冊。
-
使用帳戶 A 憑證來登入 IAM 主控台
,建立管理員使用者: -
創建用戶
AccountAadmin
並記下安全憑據。如需說明,請參閱《IAM 使用者指南》中的在 AWS 帳戶中建立 IAM 使用者。 -
附加提供完整存取權AccountAadmin的使用者原則,以授予管理員權限。如需說明,請參閱《IAM 使用者指南》中的使用政策。
-
-
當您在 IAM 主控台中時,請記下儀表板上的 IAM 使用者登入 URL。登入 AWS Management Console時,帳戶中的所有使用者都必須使用此 URL。
如需詳細資訊,請參閱《IAM 使用者指南》中的使用者如何登入您的帳戶。
-
使用帳戶 B 認證重複上述步驟,並建立系統管理員使用者
AccountBadmin
。
-
-
設定 AWS Command Line Interface (AWS CLI) 或 AWS Tools for Windows PowerShell. 請確定您儲存系統管理員使用者認證,如下所示:
-
如果使用 AWS CLI,請建立兩個設定檔
AccountBadmin
,AccountAadmin
並在組態檔案中建立。 -
如果使用 AWS Tools for Windows PowerShell,請確定您將工作階段的認證儲存為
AccountAadmin
和AccountBadmin
。
如需說明,請參閱設定逐步解說的工具。
-
-
儲存管理員使用者憑證 (也稱為描述檔)。您可以使用描述檔名稱,而不是為所輸入的每個命令指定憑證。如需詳細資訊,請參閱 設定逐步解說的工具。
-
在每個管理員使用者的 AWS CLI 認證檔案中新增設定檔
AccountBadmin
,AccountAadmin
並在兩個帳戶中新增設定檔。[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 -
如果您使用的是 AWS Tools for Windows PowerShell,請執行下列命令。
set-awscredentials –AccessKey
AcctA-access-key-ID
–SecretKeyAcctA-secret-access-key
–storeas AccountAadmin set-awscredentials –AccessKeyAcctB-access-key-ID
–SecretKeyAcctB-secret-access-key
–storeas AccountBadmin
-
步驟 1:執行帳戶 A 任務
步驟 1.1:登入 AWS Management Console
使用帳戶 A 的 IAM 使用者登入 URL,首先以使用AccountAadmin者 AWS Management Console 身分登入。此使用者將建立儲存貯體並連接其政策。
步驟 1.2:建立儲存貯體
-
在 Amazon S3 主控台中建立儲存貯體。本練習假設值區是在美國東部 (維吉尼亞北部) 建立 AWS 區域 並命名的
。DOC-EXAMPLE-BUCKET
如需說明,請參閱建立儲存貯體。
-
將範例物件上傳至儲存貯體。
如需取得說明,請前往 步驟 2:將物件上傳至您的儲存貯體。
步驟 1.3:連接儲存貯體政策以將跨帳戶許可授予帳戶 B
值區政策會將s3:GetLifecycleConfiguration
和s3:ListBucket
權限授予帳戶 B。假設您仍使用使用AccountAadmin者認證登入主控台。
-
將下列儲存貯體政策連接至
。政策會將DOC-EXAMPLE-BUCKET
s3:GetLifecycleConfiguration
與s3: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:::DOC-EXAMPLE-BUCKET
" ] } ] } -
確認帳戶 B (以及其系統管理員使用者) 可以執行作業。
-
使用驗證 AWS CLI
aws s3 ls s3://
DOC-EXAMPLE-BUCKET
--profile AccountBadmin aws s3api get-bucket-lifecycle-configuration --bucketDOC-EXAMPLE-BUCKET
--profile AccountBadmin -
使用驗證 AWS Tools for Windows PowerShell
get-s3object -BucketName
DOC-EXAMPLE-BUCKET
-StoredCredentials AccountBadmin get-s3bucketlifecycleconfiguration -BucketNameDOC-EXAMPLE-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:::
DOC-EXAMPLE-BUCKET
" ] } ] }
如需說明,請參閱《IAM 使用者指南》中的管理 IAM 政策。
步驟 2.4:測試許可
現在,帳戶 B 中的 Dave 可以列出帳戶 A 所擁有
的內容。您可以使用下列任一個程序來驗證許可。DOC-EXAMPLE-BUCKET
使用測試權限 AWS CLI
-
將配置文
UserDave
件添加到 AWS CLI 配置文件中。如需組態檔的詳細資訊,請參閱「設定逐步解說的工具」。[profile UserDave] aws_access_key_id =
access-key
aws_secret_access_key =secret-access-key
region =us-east-1
-
在命令提示字元中,輸入下列 AWS CLI 命令以確認 Dave 現在可以從帳戶 A
所擁有的物件清單中取得物件清單。請注意指定設定DOC-EXAMPLE-BUCKET
UserDave
檔的命令。aws s3 ls s3://
--profile UserDaveDOC-EXAMPLE-BUCKET
戴夫沒有任何其他權限。因此,如果他嘗試任何其他操作(例如,下面的
get-bucket-lifecycle
配置),Amazon S3 將返回被拒絕的權限。aws s3api get-bucket-lifecycle-configuration --bucket
DOC-EXAMPLE-BUCKET
--profile UserDave
使用測試權限 AWS Tools for Windows PowerShell
-
將戴夫的憑據存儲為
AccountBDave
.set-awscredentials -AccessKey AccessKeyID -SecretKey SecretAccessKey -storeas AccountBDave
-
嘗試列出儲存貯體命令。
get-s3object -BucketName
DOC-EXAMPLE-BUCKET
-StoredCredentials AccountBDave戴夫沒有任何其他權限。因此,如果他嘗試任何其他操作(例如,以下操作),
get-s3bucketlifecycleconfiguration
Amazon S3 將返回被拒絕的權限。get-s3bucketlifecycleconfiguration -BucketName
DOC-EXAMPLE-BUCKET
-StoredCredentials AccountBDave
步驟 3:(選用) 嘗試明確拒絕
您可以使用存取控制清單 (ACL)、儲存貯體原則或使用者策略來授與權限。但是,如果儲存貯體原則或使用者原則有明確拒絕設定,則明確拒絕的優先順序會高於任何其他權限。若要進行測試,請更新值區政策,並明確拒絕帳戶 B 的s3:ListBucket
權限。此政策也會授予s3:ListBucket
權限。不過,明確拒絕優先順序,而帳戶 B 或帳戶 B 中的使用者將無法列出中的物件
。DOC-EXAMPLE-BUCKET
-
使用帳戶 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:::DOC-EXAMPLE-BUCKET
" ] }, { "Sid": "Deny permission", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::AccountB-ID
:root" }, "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET
" ] } ] } -
現在,如果您嘗試使用
AccountBadmin
憑據獲取存儲桶列表,則訪問被拒絕。-
使用 AWS CLI,執行下列命令:
aws s3 ls s3://
DOC-EXAMPLE-BUCKET
--profile AccountBadmin -
使用 AWS Tools for Windows PowerShell,執行下列命令:
get-s3object -BucketName
DOC-EXAMPLE-BUCKET
-StoredCredentials AccountBDave
-
步驟 4:清理
-
完成測試後,您可以執行以下操作來清理:
-
使用帳戶 A 認證登入 AWS Management Console (AWS Management Console
),然後執行下列動作: -
在 Amazon S3 主控台中,移除連接至
的儲存貯體政策。在儲存貯體 Properties (屬性) 中,刪除 Permissions (許可) 區段中的政策。DOC-EXAMPLE-BUCKET
-
如果儲存貯體是為此練習而建立,請在 Amazon S3 主控台中刪除物件,然後刪除儲存貯體。
-
在 IAM 主控台
中,移除使 AccountAadmin
用者。
-
-
-
使用帳戶 B 登入資料登入 IAM 主控台
。刪除使用者 AccountBadmin
。如需 step-by-step 指示,請參閱 IAM 使用者指南中的刪除 IAM 使用者。