本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
如果您希望将一个账号下某个地域Bucket的数据复制到另一个账号下的另一个地域,以达到数据跨账号跨地域容灾的目的,您需要使用跨账号跨区域复制。
前提条件
已在账号A下的某个地域创建Bucket A作为跨区域复制的源Bucket,并记录账号A的UID、Bucket A的名称及所在地域。
账号A必须有以下权限:
oss:PutBucketReplication
、oss:GetBucketReplication
、oss:DeleteBucketReplication
、oss:GetBucketReplicationLocation、oss:GetBucketReplicationProgress。具体操作,请参见为RAM用户授权自定义的权限策略。已在账号B下的另一个地域创建Bucket B作为跨区域复制的目标Bucket,并记录账号B的UID、Bucket B的名称及所在地域。
角色授权
跨账号复制任务涉及两个不同账号的Bucket,您需要按照以下说明完成RAM角色所需的信任策略和最小权限策略。
通过账号A完成以下操作。
创建普通服务角色。
您可以选择通过RAM用户创建角色,RAM用户必须拥有以下权限:
ram:CreateRole
、ram:GetRole
、ram:ListRoles
、ram:ListPoliciesForRole
、ram:AttachPolicyToRole
。但是考虑到授予RAM用户ram:CreateRole
、ram:GetRole
等角色相关的权限风险较大,您可以通过RAM用户关联的阿里云账号创建RAM角色并为相应的RAM角色完成授权。授权完成后,RAM用户可以直接复用阿里云账号创建的RAM角色。创建角色过程中,需选择可信实体类型为阿里云服务,角色类型选择普通服务角色,受信服务选择对象存储。具体步骤,请参见创建普通服务角色。
角色创建成功后,请记录基本信息区域的RAM角色ARN,以便后续添加权限时使用。
为角色授予源Bucket执行跨区域复制的权限。
您可以选择以下任意方式为角色授权。
为RAM角色授予系统策略为RAM角色授予自定义策略您可以选择为RAM角色授予系统策略
AliyunOSSFullAccess
。AliyunOSSFullAccess
默认拥有当前账号下所有Bucket的所有操作权限,请谨慎使用。通过RAM Policy的方式对RAM角色授予源Bucket(src-bucket)复制所需的最小权限。
实际使用时,请相应替换源Bucket名称。
{ "Version":"1", "Statement":[ { "Effect":"Allow", "Action":[ "oss:ReplicateList", "oss:ReplicateGet" ], "Resource":[ "acs:oss:*:*:src-bucket", "acs:oss:*:*:src-bucket/*" ] } ] }
如果您希望将KMS加密的Object复制到目标Bucket,您还需要为角色授予
AliyunKMSFullAccess
系统策略。具体步骤,请参见为RAM角色授权。
通过账号B授予角色在目标Bucket接收复制对象的权限。
(推荐)方式一:按图形策略添加方式二:按语法策略添加在左侧导航栏,选择权限控制>Bucket 授权策略。
在Bucket 授权策略页面的按语法策略添加页签,单击编辑。
在语法策略输入框中,输入以下Bucket Policy。
通过Bucket Policy按语法策略的方式进行授权时,新添加的策略会覆盖已有的策略,请确保新添加策略包含已有策略的内容,否则可能导致关联已有策略的操作失败。
实际使用时,请相应替换自定义角色名称(如果自定义角色名称包含大写字母,需转换为对应的小写字母。例如已创建的角色名称为AliyunOssDrsRole,您需要转换为aliyunossdrsrole)、目标Bucket名称(dest-bucket)、源Bucket所属账号UID(137918634953xxxx)以及目标Bucket所属账号UID(111933544165xxxx)。
{ "Version":"1", "Statement":[ { "Effect":"Allow", "Action":[ "oss:ReplicateList", "oss:ReplicateGet", "oss:ReplicatePut", "oss:ReplicateDelete" ], "Principal": [ "arn:sts::137918634953xxxx:assumed-role/aliyunossdrsrole/*" ], "Resource":[ "acs:oss:*:111933544165xxxx:dest-bucket", "acs:oss:*:111933544165xxxx:dest-bucket/*" ] } ] }
单击保存。
复制KMS加密的Object
支持复制KMS加密的Object到以下目标地域:华东1(杭州)、华东2(上海)、华南1(深圳)、华南2(河源)、华南3(广州)、华北1(青岛)、华北2(北京)、华北3(张家口)、华北5(呼和浩特)、华北6(乌兰察布)、西南1(成都)、华东2(上海金融云)、中国香港、新加坡、马来西亚(吉隆坡)、印度尼西亚(雅加达)、菲律宾(马尼拉)、泰国(曼谷)、日本(东京)、美国(硅谷)、美国(弗吉尼亚)、德国(法兰克福)、英国(伦敦)。
如果您希望将账号A下源Bucket中KMS加密的Object复制到账号B下的目标Bucket,您需要使用目标Bucket所属账号B执行以下步骤。
登录密钥管理服务控制台的实例管理页面,在与目标Bucket相同的地域购买并启用KMS实例。购买KMS实例时,确保访问管理数量大于等于2,其他参数保留默认配置。具体步骤,请参见购买和启用KMS实例。
在KMS实例下创建密钥。密钥类型限制为非默认密钥(建议软件密钥)。具体步骤,请参见创建软件密钥。
密钥创建成功后,请记录基本信息区域的密钥ARN,以便后续创建复制规则时使用。
为创建的密钥设置密钥策略。设置密钥策略时,选择其他账号使用者,并将其他账号使用者指定为上述步骤创建的角色ARN。具体步骤,请参见设置密钥策略。
跨账号复制KMS加密数据要求密钥策略至少包含解密(
kms:Decrypt
)和生成数据密钥(kms:GenerateDataKey
)的权限。通过控制台设置密钥策略时,默认包含这些权限。如果通过OpenAPI设置自定义密钥策略,需要确保至少包含kms:Decrypt
和kms:GenerateDataKey
权限。
操作步骤
相关文档
- 本页导读 (1)
- 前提条件
- 角色授权
- 复制KMS加密的Object
- 操作步骤
- 使用OSS控制台
- 使用阿里云SDK
- 使用命令行工具ossutil
- 使用REST API
- 相关文档