You need to enable JavaScript to run this app.
导航

配置双端固定

最近更新时间2023.08.14 11:15:48

首次发布时间2023.07.14 19:44:36

本文介绍如何配置双端固定,以及双端固定的场景示例。

注意事项

仅使用 VPC 终端节点发出请求时,TOS 才能获取到 SourceVpc 这一鉴权上下文信息。因此单独使用 SourceVpc 这个 condition 来实现单端固定,不会生效。

操作说明

  • 配置 VPC 终端节点策略
    您可以在创建终端节点时,配置 VPC 访问策略,您也可以修改终端节点的访问策略。具体操作,请参见创建网关终端节点修改终端节点

注意

VPC 终端节点功能处于邀测状态,如您需要使用该功能,请联系客户经理。

示例一:只配置 VPC 终端节点策略

  • 场景描述: 允许 VPC1 内的服务器使用任意账号对 tos-example 存储桶执行任意操作。
    VPC 终端节点策略配置如下:

    {
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": [
            "*"
          ],
          "Action": "*",
          "Resource": [
            "trn:tos:::tos-example",
            "trn:tos:::tos-example/*"
          ]
        }
      ]
    }
    
  • 场景描述:只允许 VPC1 内的服务器使用 100000 账号下的子用户 user1tos-example 存储桶执行 GET 类操作。
    VPC 终端节点策略配置如下:

    {
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": [
            "trn:iam::100000:user/user1"
          ],
          "Action": "tos:Get*",
          "Resource": [
            "trn:tos:::tos-example",
            "trn:tos:::tos-example/*"
          ]
        }
      ]
    }
    

示例二:同时配置 VPC 终端节点策略和桶策略

  • 场景描述:允许 VPC1 内的服务器使用任意账号对 tos-example 存储桶执行任意操作,tos-example 存储桶允许来自 VPC1 的任意请求。

    VPC 终端节点策略配置如下:

    {
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": [
            "*"
          ],
          "Action": ["*"],
          "Resource": [
            "trn:tos:::tos-example",
            "trn:tos:::tos-example/*"
          ]
        }
      ]
    }
    

    桶策略配置如下:
    设置 Action*,并在 Condition 参数下设置条件运算符为StringEquals,然后设置 tos:sourcevpcvpc-pedgr4xdnklc4acvz69o****,表示允许来自vpc-pedgr4xdnklc4acvz69o**** VPC 的请求访问存储桶。

    {
      "Statement": [
        {
          "Sid": "id-11",
          "Effect": "Allow",
          "Principal": [
            "*"
          ],
          "Action": [
            "*"
          ],
          "Resource": [
            "trn:tos:::tos-example",
            "trn:tos:::tos-example/*"
          ],
          "Condition": {
            "StringEquals": {
              "tos:sourcevpc": [
                "vpc-pedgr4xdnklc4acvz69o****"
              ]
            }
          }
        }
      ]
    }
    
  • 场景描述: 只允许 VPC1 内的服务器使用任意账号对 tos-example 存储桶执行上传、下载对象操作,tos-example 存储桶允许来自 VPC1 的请求执行上传、下载对象操作。

    VPC 终端节点策略配置如下:

{
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": [
        "*"
      ],
      "Action": ["tos:PutObject","tos:GetObject"],
      "Resource": [
        "trn:tos:::tos-example/*"
      ]
    }
  ]
}

桶策略配置如下:
设置 ActionPutObjectGetObject,并在 Condition 参数下设置条件运算符为StringEquals,然后设置 tos:sourcevpcvpc-pedgr4xdnklc4acvz69o****,表示只允许来自 vpc-pedgr4xdnklc4acvz69o**** VPC 的请求在存储桶执行上传、下载对象操作。

{
  "Statement": [
    {
      "Sid": "id-11",
      "Effect": "Allow",
      "Principal": [
        "*"
      ],
      "Action": [
        "tos:PutObject",
        "tos:GetObject"
      ],
      "Resource": [
        "trn:tos:::tos-example/*"
      ],
      "Condition": {
        "StringEquals": {
          "tos:sourcevpc": [
            "vpc-pedgr4xdnklc4acvz69o****"
          ]
        }
      }
    }
  ]
}

示例三:同时配置 VPC 终端节点策略和桶策略,并授权指定 rolename 访问存储桶

当同时设置了 VPC1 的终端节点策略与 tos-example 桶策略后,由于双端固定的限制,其他云服务以及 TOS 内部跨区域复制和桶清单请求可能无法访问 tos-example 存储桶。针对这种情况,您可以指定 rolename 使得其他云服务和 TOS 内部请求能够正常访问存储桶 tos-example
场景描述:只允许 VPC1 内的服务器使用任意账号对 tos-example 桶执行上传、下载对象操作,tos-example 存储桶允许来自 VPC1 的请求执行上传、下载对象操作。同时允许来自 TOS 内部跨区域复制请求执行上传、下载对象操作。
VPC 终端节点策略配置如下:

{
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": [
        "*"
      ],
      "Action": ["tos:PutObject","tos:GetObject"],
      "Resource": [
        "trn:tos:::tos-example/*"
      ]
    }
  ]
}

桶策略配置如下:
设置 ActionPutObjectGetObject,并在 Condition 参数下设置条件运算符为StringEquals,然后设置 tos:sourcevpcvpc-pedgr4xdnklc4acvz69o****,表示允许来自 vpc-pedgr4xdnklc4acvz69o**** VPC 的请求在存储桶执行上传、下载对象操作。
设置 ActionPutObjectGetObject,并在 Condition 参数下设置条件运算符为StringEquals,然后设置 tos:rolenameServiceRoleforReplicationAccessTOS,表示允许来自跨区域复制的请求在存储桶执行上传、下载对象操作。

{
  "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"
          ]
        }
      }
    }
  ]
}

除此之外,桶策略也可以配置为拒绝除指定 VPC1 或指定 rolename 外的访问。但此种配置会导致无法通过控制台访问该存储桶。
桶策略配置如下:
设置 ActionPutObjectGetObject,并在 Condition 参数下设置条件运算符为 StringNotEquals,然后设置 tos:sourcevpcvpc-pedgr4xdnklc4acvz69o****,设置 tos:rolenameServiceRoleforReplicationAccessTOS。表示拒绝除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"
          ]
        }
      }
    }
  ]
}

rolename 说明

TOS 内部请求和其他云服务对应 rolename 如下:

请求来源rolename
跨区域复制ServiceRoleforReplicationAccessTOS
桶清单TosArchiveTOSInventory

其他云服务

服务关联角色名称。

说明

为其他云服务设置 rolename 前,您需要创建角色,并设置授权的身份类型为云服务。关于创建服务关联角色的具体操作,请参见角色管理