如何透過僅限於 VPC 的 S3 存取點,存取另一個帳戶中的儲存貯體?
我在不同的 AWS 帳戶中擁有 AWS Identity and Access Management (IAM) 實體和 Amazon Simple Storage Service (Amazon S3) 儲存貯體。我想透過 Amazon S3 存取點,將 IAM 實體跨帳戶存取權授予該儲存貯體。存取點僅限於 Amazon Virtual Private Cloud (Amazon VPC)。
簡短說明
您可以透過僅限於 Amazon VPC 的 S3 存取點,將某個 AWS 帳戶中 IAM 角色或使用者的存取權,授予其他 AWS 帳戶中的 Amazon S3 儲存貯體。
假設 IAM 實體位於帳戶 A 中,而 S3 儲存貯體位於帳戶 B 中,若要透過僅限於 Amazon VPC 的 S3 存取點,將 IAM 實體存取權授予該儲存貯體,請完成下列步驟:
- 在帳戶 B 中建立 Amazon S3 存取點,並將其連接至儲存貯體。
- 在帳戶 A 中建立 Amazon S3 VPC 閘道端點。
- 將政策連接至存取點、儲存貯體和 IAM 實體。
**注意:**帳戶 A 中的 IAM 身分必須與帳戶 B 中的 S3 儲存貯體位於相同的 AWS 區域。
解決方法
在帳戶 B 中建立 Amazon S3 存取點,並將其連接至儲存貯體
若要在帳戶 B 中建立 Amazon S3 存取點,並將其連接至儲存貯體,請完成下列步驟:
- 開啟 Amazon S3 主控台。
- 在導覽窗格中,選擇存取點。
- 選擇建立存取點。
- 對於存取點名稱,請輸入存取點的名稱。如需如何為存取點命名的詳細資訊,請參閱 Rules for naming Amazon S3 access points。
- 對於儲存貯體名稱,請選擇選擇此帳戶中的儲存貯體,然後輸入要連接存取點的儲存貯體名稱。
- 對於網路來源,請選擇 Virtual Private Cloud (VPC)。
- 對於 VPC ID,請輸入其他 AWS 帳戶 (帳戶 A) 的 VPC ID。
- 在此存取點的「封鎖公開存取」設定中,選擇要套用至存取點的封鎖公開存取設定。
**注意:**建立存取點後,便無法變更其封鎖公開存取設定。 - 將存取點政策保留空白。
- 選擇建立存取點。
在帳戶 A 中建立 Amazon S3 VPC 閘道端點
若要在帳戶 A 中建立 S3 VPC 閘道端點,將存取權授予帳戶 B 中的 Amazon S3 儲存貯體,請完成下列步驟:
- 開啟 Amazon VPC 主控台。
- 在導覽窗格中,選擇端點。
- 選擇建立端點。
- 對於服務類別,選擇 AWS 服務。
- 對於服務,新增篩選條件類型 = 閘道,然後選取 com.amazonaws.<region>.s3。
- 對於 VPC,選取您用來在帳戶 B 中建立存取點的 VPC。
- 對於路由表,選擇您需要端點使用的路由表。
- 對於政策,選取完整存取,以允許所有主體透過 VPC 端點在所有資源上執行所有操作。或者,選取自訂並使用您自己的政策,允許所需 S3 動作。
例如,下列 VPC 端點政策允許對所有儲存貯體進行所有 S3 動作:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:*" } ] }
**注意:**閘道端點不允許從其他 AWS 區域存取。
將政策連接至存取點、儲存貯體和 IAM 實體
若要透過存取點,將帳戶 A 中 IAM 實體的存取權授予帳戶 B 中的儲存貯體,您必須將政策連接至下列項目:
- 存取點
- S3 儲存貯體
- IAM 實體
存取點政策
若要將帳戶 A 中 IAM 實體的許可授予帳戶 B 中的 S3 存取點,請將下列政策連接至您的存取點:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DelegateControlToAccessPoint", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::AccountA-ID:user/user1", "arn:aws:iam::AccountA-ID:role/role01" ] }, "Action": [ "s3:ListBucket", "s3:PutObject", "s3:GetObject" ], "Resource": [ "arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-acess-point/object/*", "arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point" ] } ] }
儲存貯體政策
若要透過存取點,將帳戶 A 中 IAM 實體的許可授予帳戶 B 中的儲存貯體,請將下列政策連接至您的儲存貯體:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCrossAccountAccess", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::AccountA-ID:user/user1", "arn:aws:iam::AccountA-ID:role/role01" ] }, "Action": [ "s3:GetObject", "s3:ListBucket", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::my-bucket", "arn:aws:s3:::my-bucket/*" ], "Condition": { "StringEquals": { "s3:DataAccessPointArn": "arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point" } } } ] }
IAM 政策
若要將帳戶 A 中 IAM 實體的許可授予帳戶 B 中的儲存貯體和存取點,請將下列政策連接至您的 IAM 實體:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCrossAccountAccessToBucketAndAP", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:PutObject", "s3:GetObject" ], "Resource": [ "arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point", "arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point/object/*", "arn:aws:s3:::my-bucket", "arn:aws:s3:::my-bucket/*" ] } ] }
透過存取點在儲存貯體上執行 S3 操作的 AWS CLI 範例命令
**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤,請參閱AWS CLI 錯誤疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
若要透過存取點列出物件,請執行 ls 命令:
aws s3 ls arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point
若要透過存取點上傳檔案,請執行 cp 命令:
aws s3 cp file.txt s3://arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point
您也可以使用 cp 命令,透過存取點下載檔案:
aws s3 cp s3://arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point file.txt
**注意:**請求必須來自同一 VPC 內的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體,且與儲存貯體位於相同區域。
相關內容
- 已提問 2 個月前lg...
- 已提問 6 個月前lg...
- 已提問 4 個月前lg...
- AWS 官方已更新 9 個月前
- AWS 官方已更新 1 個月前