本文介绍如何配置双端固定,以及双端固定的场景示例。
TOS 只有从 VPC 终端节点发出的请求中才能获取到 SourceVpc 这一鉴权上下文信息。因此单独使用 SourceVpc 这个 condition 来限制请求需要符合某些条件实现单端固定,不会生效。
配置双端固定时,您需要在终端节点处配置终端节点策略,限制 VPC 内云资源访问的对象存储范围。还需要在对象存储处配置桶策略或 IAM 策略,使得 VPC 内的账号拥有对存储桶执行指定操作的权限。
Action
指定允许执行的操作,通过 Resource
指定允许访问的对象存储资源范围。通过 Condition(例如tos:BucketTag
) 指定允许访问的具有指定标签的存储桶。具体操作,请参见创建网关终端节点和修改终端节点。注意
VPC 终端节点功能处于邀测状态,如您需要使用该功能,请联系客户经理。
Condition
参数下的 tos:sourcevpc
指定授权的 VPC。通过 tos:rolename
指定授权的其他云服务或内部请求,具体操作,请参见自定义创建桶策略(JSON 视图),您也可以使用可视化视图配置桶策略,具体操作,请参见自定义创建桶策略(可视化视图)。Condition
参数下的 SourceVpc
指定授权的 VPC,具体操作,请参见配置 IAM 策略。场景描述:在 VPC 终端节点策略处允许 VPC 内的云资源使用任意账号对 tos-example
存储桶执行所有操作,在桶策略处授予 VPC 内账号对 tos-example
存储桶执行所有操作的权限。
VPC 终端节点策略配置如下:
{ "Statement": [ { "Effect": "Allow", "Principal": [ "*" ], "Action": ["*"], "Resource": [ "trn:tos:::tos-example", "trn:tos:::tos-example/*" ] } ] }
桶策略配置如下:
{ "Statement": [ { "Sid": "id-11", "Effect": "Allow", "Principal": [ "*" ], "Action": [ "*" ], "Resource": [ "trn:tos:::tos-example", "trn:tos:::tos-example/*" ], "Condition": { "StringEquals": { "tos:sourcevpc": [ "vpc-pedgr4xdnklc4acvz69o****" ] } } } ] }
场景描述: 在 VPC 终端节点策略处允许 VPC 内的云资源使用任意账号对 tos-example
存储桶执行上传、下载对象操作,在桶策略处授予 VPC 内账号对 tos-example
存储桶执行上传、下载对象的权限。
VPC 终端节点策略配置如下:
{ "Statement": [ { "Effect": "Allow", "Principal": [ "*" ], "Action": ["tos:PutObject","tos:GetObject"], "Resource": [ "trn:tos:::tos-example/*" ] } ] }
桶策略配置如下:
{ "Statement": [ { "Sid": "id-11", "Effect": "Allow", "Principal": [ "*" ], "Action": [ "tos:PutObject", "tos:GetObject" ], "Resource": [ "trn:tos:::tos-example/*" ], "Condition": { "StringEquals": { "tos:sourcevpc": [ "vpc-pedgr4xdnklc4acvz69o****" ] } } } ] }
TOS 支持通过 BucketTag 进行权限控制,您可以通过桶标签对存储桶进行分类,然后使用 VPC 终端节点策略和 IAM 策略授予 VPC 内云资源访问具有指定标签的存储桶的权限。
场景描述:在 VPC 终端节点策略处允许 VPC 内的云资源使用任意账号对桶标签为 Tag1:Value1
的存储桶执行上传、下载对象操作,在 IAM 策略处授予 VPC 内账号对存储桶执行上传、下载对象操作。
VPC 终端节点策略配置如下:
{ "Statement": [ { "Effect": "Allow", "Principal": [ "*" ], "Action": ["tos:PutObject","tos:GetObject"], "Resource": [ "*" ], "Condition":{ "StringEquals":{ "tos:BucketTag/Tag1": ["Value1"] } } } ] }
IAM 策略配置如下:
{ "Statement": [ { "Sid": "id-11", "Effect": "Allow", "Action": [ "tos:PutObject", "tos:GetObject" ], "Resource": [ "*" ], "Condition": { "StringEquals": { "SourceVpc": [ "vpc-pedgr4xdnklc4acvz69o****" ] } } } ] }
当同时设置了 VPC 的终端节点策略与 tos-example
桶策略后,由于双端固定的限制,其他云服务以及 TOS 内部跨区域复制和桶清单请求可能无法访问 tos-example
存储桶。针对这种情况,您可以指定 rolename
使得其他云服务和 TOS 内部请求能够正常访问存储桶 tos-example
。
场景描述:在 VPC 终端节点策略处允许 VPC 内的云资源使用任意账号对 tos-example
桶执行上传、下载对象操作,在桶策略处授予 VPC 内账号对 tos-example
存储桶执行上传、下载对象的权限,同时允许来自 TOS 内部跨区域复制请求执行上传、下载对象操作。
VPC 终端节点策略配置如下:
{ "Statement": [ { "Effect": "Allow", "Principal": [ "*" ], "Action": ["tos:PutObject","tos:GetObject"], "Resource": [ "trn:tos:::tos-example/*" ] } ] }
桶策略配置如下:
{ "Statement": [ { "Sid": "id-11", "Effect": "Allow", "Principal": [ "*" ], "Action": [ "tos:PutObject", "tos:GetObject" ], "Resource": [ "trn:tos:::tos-example/*" ], "Condition": { "StringEquals": { "tos:sourcevpc": [ "vpc-pedgr4xdnklc4acvz69o****" ] } } }, { "Sid": "id-12", "Effect": "Allow", "Principal": [ "*" ], "Action": [ "tos:PutObject", "tos:GetObject" ], "Resource": [ "trn:tos:::tos-example/*" ], "Condition": { "StringEquals": { "tos:rolename": [ "ServiceRoleforReplicationAccessTOS" ] } } } ] }
除此之外,桶策略也可以配置为拒绝除指定 VPC 或指定 rolename 外的访问。但此种配置会导致无法通过控制台访问该存储桶。
拒绝除vpc-pedgr4xdnklc4acvz69o****
VPC 和跨区域复制外的请求在存储桶执行上传、下载对象操作,示例如下:
{ "Statement": [ { "Sid": "id-11", "Effect": "Deny", "Principal": [ "*" ], "Action": [ "tos:PutObject", "tos:GetObject" ], "Resource": [ "trn:tos:::tos-example/*" ], "Condition": { "StringNotEquals": { "tos:sourcevpc": [ "vpc-pedgr4xdnklc4acvz69o****" ], "tos:rolename": [ "ServiceRoleforReplicationAccessTOS" ] } } } ] }
TOS 内部请求和其他云服务对应 rolename
如下:
请求来源 | rolename |
---|---|
跨区域复制 | ServiceRoleforReplicationAccessTOS |
桶清单 | TosArchiveTOSInventory |
其他云服务 | 服务关联角色名称。 说明 为其他云服务设置 |