跳到主要内容

阿里云前置准备

本文主要介绍创建 BYOC 类型仓库涉及的阿里云平台相关操作,包括 准备专有网络 VPC 和交换机了解资源编排和资源栈 等。

准备专有网络 VPC 和交换机

提示:

  1. 如果已有符合地域和可用区要求的 VPC 和交换机,并期望将 BYOC 仓库部署在此 VPC 内,可以跳过下面创建专有网络 VPC 和交换机步骤
  2. 当前支持的地域和交换机可用区为:
云平台地域名称地域 ID可用区 ID
阿里云华北 2 (北京)cn-beijingH, K
阿里云华东 2 (上海)cn-shanghaiB, E
阿里云华南 1 (深圳)cn-shenzhenD, F
阿里云华南 3 (广州)cn-guangzhouB
阿里云德国 (法兰克福)eu-central-1A

创建 BYOC 类型仓库前,如果没有符合要求的已有 VPC 和交换机,则需要提前创建专有网络 VPC 和交换机,以下是具体操作。

打开阿里云 专有网络 VPC 控制台,点击 专有网络 > 创建专有网络,进入 VPC 创建页面。

选择您期望创建 BYOC 仓库的地域,输入名称、选择 IPv4 网段,输入交换机名称和可用区,点击确定完成创建。

了解资源编排和资源栈(可选)

在您的云账号下通过资源编排服务(ROS)执行资源栈模板时,会对 VPC、ECS、OSS 等云资源进行相关操作,因此需要一系列 RAM 权限。
请使用管理员权限进行资源栈创建,或者是联系管理员为你创建这个资源栈,否则可能会遇到因权限不足导致执行模板失败的情况。

ROS 资源编排模版说明

SelectDB 提供的资源编排模板运行在您的云账号下,并且模版代码可见、可审计,不会对您的数据与 VPC 内的其他环境进行操作。您可以通过以下链接获取 SelectDB 提供的资源编排模板:

https://selectdb-cloud-online-bj.oss-cn-beijing.aliyuncs.com/public/aliyun-byoc.yaml

当您通过阿里云 ROS 执行上述资源模板时,它会自动进行 Agent 的创建与部署。然后 Agent 会与 SelectDB Cloud 建立私有连接,并完成仓库初始化流程。

在完成资源编排脚本执行后,您即可从 SelectDB Cloud 平台进入相应仓库,像使用普通的仓库一样,开始新建用于数据分析的计算集群。

如何查看资源栈信息

您可以通过阿里云 资源编排ROS 控制台,查看由 SelectDB 资源栈模板创建的所有资源信息,并可通过资源名称查看特定资源。

注意 所有资源栈模版创建出来的资源,都属于您的云账号,并只在您的 VPC 内使用,不会外泄。

  • 虚拟机
    • 名称:SelectDBAgent(ECS)
    • 用途:用于部署 Agent,Prometheus,FluentBit 等程序
  • 终端节点
    • 名称:SelectDBEndpoint(VPC Endpoint)
    • 用途:与 SelectDB Cloud 平台建立私网连接,从而可以拉取管控指令、推送监控和日志
  • 存储桶
    • 名称:SelectDBBucket(OSS Bucket)
    • 用途:存储数仓数据
  • 安全组
    • 名称:SelectDBSecurityGroupForEndpoint,SelectDBSecurityGroup(VPC SecurityGroup)
    • 用途:分别绑定在终端节点和 SelectDB 创建出的所有 ECS 实例,并通过安全组规则限定特定端口特定来源的流量出站入站
  • 子用户/角色
    • 名称:(RAM User / RAM Role)
      • SelectDBUser(子用户),SelectDBUserAccessKey(aksk),SelectDBUserPolicy(子用户权限)
      • SelectDBControlPlaneRole(管控侧角色),SelectDBControlPlaneRolePolicy(管控侧角色权限),SelectDBDataAccessRole(内核侧角色),SelectDBDataAccessRolePolicy(内核侧角色权限)
    • 用途:
      • 创建出的子用户具备 Agent 所需的最小权限策略,之后进行的所有管控操作均使用该子用户的身份进行操作
      • 创建出的角色将会绑定到 ECS 实例,通过该角色可以获取临时凭据,相较于使用永久 ak/sk 的方式更加安全

资源栈模板创建的子用户的权限说明

初次执行完资源栈模板后会创建一个子用户,用于后续在您的 VPC 内管控数据仓库相关组件,以下为该子用户权限示例以及说明:

注意 创建出来的子用户隶属于您的云账号,并只在您的 VPC 内使用,不会外泄。

{
"Version": "1",
"Statement": [
{
"Action": [
"ecs:TagResources",
"ecs:UnTagResources",
"ecs:DescribeInstances",
"ecs:StopInstance",
"ecs:StartInstance",
"ecs:RebootInstance",
"ecs:RenewInstance",
"ecs:DeleteInstance",
"ecs:ModifyInstanceAttribute",
"ecs:ModifyInstanceChargeType",
"ecs:ModifyInstanceAutoRenewAttribute",
"ecs:ModifyInstanceSpec",
"ecs:ModifyPrepayInstanceSpec",
"ecs:AttachInstanceRamRole",
"ecs:DetachInstanceRamRole",
"ecs:ResizeDisk",
"ecs:DescribeTags",
"ecs:AddTags",
"ecs:RemoveTags",
"ecs:DescribeSecurityGroups",
"ecs:AuthorizeSecurityGroup",
"ecs:AuthorizeSecurityGroupEgress",
"ecs:DescribeSecurityGroupAttribute",
"ecs:DeleteSecurityGroup",
"slb:DescribeLoadBalancers",
"slb:DescribeLoadBalancerAttribute",
"slb:DeleteLoadBalancer",
"slb:DescribeLoadBalancerListeners",
"slb:StartLoadBalancerListener",
"slb:DeleteLoadBalancerListener",
"slb:DescribeVServerGroups",
"slb:DescribeVServerGroupAttribute",
"slb:ModifyVServerGroupBackendServers",
"slb:RemoveVServerGroupBackendServers",
"slb:RemoveBackendServers",
"slb:DeleteVServerGroup",
"slb:DescribeAccessControlLists",
"slb:DescribeRules",
"slb:CreateRules",
"slb:DeleteRules",
"slb:DescribeTags",
"slb:AddTags",
"slb:RemoveTags"
],
"Resource": [
"acs:ecs:cn-beijing:*:*",
"acs:vpc:cn-beijing:*:*",
"acs:slb:cn-beijing:*:*"
],
"Effect": "Allow",
"Condition": {
"StringEquals": {
"acs:ResourceTag/resource-created-by": [
"selectdb"
]
}
}
},
{
"Action": [
"vpc:DescribeVpcs",
"vpc:DescribeVSwitches",
"ecs:DescribeDisks",
"ecs:CreateInstance",
"ecs:RunInstances",
"ecs:CreateSecurityGroup",
"slb:CreateLoadBalancer",
"slb:CreateLoadBalancerTCPListener",
"slb:CreateVServerGroup",
"slb:AddVServerGroupBackendServers",
"slb:CreateAccessControlList",
"slb:AddAccessControlListEntry",
"slb:RemoveAccessControlListEntry",
"slb:DeleteAccessControlList"
],
"Resource": [
"acs:ecs:cn-beijing:*:*",
"acs:vpc:cn-beijing:*:*",
"acs:slb:cn-beijing:*:*"
],
"Effect": "Allow"
},
{
"Action": "oss:*",
"Resource": [
"acs:oss:*:*:selectdb-bucket-bbkxkwwlcnmqcjyh",
"acs:oss:*:*:selectdb-bucket-bbkxkwwlcnmqcjyh/*"
],
"Effect": "Allow",
"Condition": {
"StringEquals": {
"oss:BucketTag/resource-created-by": [
"selectdb"
]
}
}
},
{
"Effect": "Allow",
"Action": "ram:PassRole",
"Resource": "acs:ram:*:*:role/selectdb-data-access-role-bbkxkwwlcnmqcjyh",
"Condition": {
"StringEquals": {
"acs:Service": [
"ecs.aliyuncs.com"
]
}
}
}
]
}

具体权限划分如下:

  • ECS 权限:

    • 管理 ECS 实例
    "ecs:TagResources",
    "ecs:UnTagResources",
    "ecs:DescribeDisks",
    "ecs:RunInstances",
    "ecs:DescribeInstances",
    "ecs:StopInstance",
    "ecs:StartInstance",
    "ecs:RebootInstance",
    "ecs:RenewInstance",
    "ecs:DeleteInstance",
    "ecs:ModifyInstanceAttribute",
    "ecs:ModifyInstanceChargeType",
    "ecs:ModifyInstanceAutoRenewAttribute",
    "ecs:ModifyInstanceSpec",
    "ecs:ModifyPrepayInstanceSpec",
    "ecs:AttachInstanceRamRole",
    "ecs:DetachInstanceRamRole",
    "ecs:ResizeDisk",
    "ecs:DescribeTags",
    "ecs:AddTags",
    "ecs:RemoveTags",
    • 管理 ECS 安全组
    "ecs:DescribeSecurityGroups",
    "ecs:AuthorizeSecurityGroup",
    "ecs:AuthorizeSecurityGroupEgress",
    "ecs:DescribeSecurityGroupAttribute",
    "ecs:CreateSecurityGroup",
    "ecs:DeleteSecurityGroup",
  • VPC & SLB 权限:

    • 获取 VPC 相关资源信息
    "vpc:DescribeVpcs",
    "vpc:DescribeVSwitches",
    • 管理负载均衡器 SLB 资源
    "slb:DescribeLoadBalancers",
    "slb:DescribeLoadBalancerAttribute",
    "slb:DeleteLoadBalancer",
    "slb:DescribeLoadBalancerListeners",
    "slb:StartLoadBalancerListener",
    "slb:DeleteLoadBalancerListener",
    "slb:DescribeVServerGroups",
    "slb:DescribeVServerGroupAttribute",
    "slb:ModifyVServerGroupBackendServers",
    "slb:RemoveVServerGroupBackendServers",
    "slb:RemoveBackendServers",
    "slb:DeleteVServerGroup",
    "slb:DescribeAccessControlLists",
    "slb:DescribeRules",
    "slb:CreateRules",
    "slb:DeleteRules",
    "slb:DescribeTags",
    "slb:AddTags",
    "slb:RemoveTags",
    "slb:CreateLoadBalancer",
    "slb:CreateLoadBalancerTCPListener",
    "slb:CreateVServerGroup",
    "slb:AddVServerGroupBackendServers",
    "slb:CreateAccessControlList",
    "slb:AddAccessControlListEntry",
    "slb:RemoveAccessControlListEntry",
    "slb:DeleteAccessControlList"
  • OSS 权限:

    • 管理 OSS 存储桶以及对存储桶及其内容进行读写操作(针对特定桶)
    {
    "Action": "oss:*",
    "Resource": [
    "acs:oss:*:*:selectdb-bucket-bbkxkwwlcnmqcjyh",
    "acs:oss:*:*:selectdb-bucket-bbkxkwwlcnmqcjyh/*"
    ],
    "Effect": "Allow",
    "Condition": {
    "StringEquals": {
    "oss:BucketTag/resource-created-by": [
    "selectdb"
    ]
    }
    }
    }
  • RAM 权限:

    • 允许将刚建出来的内核侧数据访问角色传递给虚机(MS/FE/BE)
    {
    "Effect": "Allow",
    "Action": "ram:PassRole",
    "Resource": "acs:ram:*:*:role/selectdb-data-access-role-bbkxkwwlcnmqcjyh"
    "Condition": {
    "StringEquals": {
    "acs:Service": [
    "ecs.aliyuncs.com"
    ]
    }
    }
    }