SelectDB Cloud
管理指南
亚马逊云科技前置准备

亚马逊云科技前置准备

本文主要介绍创建 BYOC 类型仓库涉及的亚马逊云科技相关操作,包括创建 IAM 用户并授权创建 VPC 和子网了解资源编排和资源栈 等。

准备 IAM 用户并授权

创建 BYOC 类型仓库前,需提前准备好具备相关权限的亚马逊云科技 IAM 用户。

请将此文档发送给您的亚马逊云科技管理员,请求管理员参照此文档为您创建 IAM 用户,并授权。

管理员访问亚马逊云科技 身份和访问管理 IAM (opens in a new tab) 控制台,执行以下操作:

创建权限策略

创建 SelectDB Cloud BYOC 类型仓库时,需要通过资源编排服务(CloudFormation)执行资源栈模板,会创建 EC2、VPC、S3 等云资源或进行相关操作,因此需要一系列 IAM 权限。

点击左侧 访问管理 > 策略,进入权限策略管理页面,点击创建策略

切换到JSON模式,清空原有文本框,复制以下脚本,输入文本框。详细的权限说明,请见下文 资源栈模板依赖的权限说明 部分。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/resource-created-by": [
                        "selectdb"
                    ]
                }
            },
            "Action": [
                "ec2:TerminateInstances",
                "ec2:StopInstances",
                "ec2:StartInstances",
                "ec2:RebootInstances",
                "ec2:ModifyInstanceAttribute",
                "ec2:DescribeSecurityGroupRules",
                "ec2:AuthorizeSecurityGroupIngress",
                "ec2:RevokeSecurityGroupIngress",
                "ec2:AuthorizeSecurityGroupEgress",
                "ec2:RevokeSecurityGroupEgress",
                "ec2:DeleteSecurityGroup",
                "ec2:GetEbsEncryptionByDefault",
                "ec2:GetEbsDefaultKmsKeyId"
            ],
            "Resource": [
                "arn:aws-cn:ec2:*:*:*"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "ec2:DescribeVpcs",
                "ec2:DescribeSubnets",
                "ec2:DescribeAccountAttributes",
                "ec2:DescribeAddresses",
                "ec2:DescribeInternetGateways",
                "ec2:DescribeAvailabilityZones",
                "ec2:DescribeInstanceTypes",
                "ec2:DescribeVolumes",
                "ec2:ModifyVolume",                
                "ec2:DescribeImages",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeInstances",
                "ec2:RunInstances",
                "ec2:CreateSecurityGroup",
                "ec2:DescribeTags",
                "ec2:CreateTags",
                "ec2:DeleteTags",
                "ec2:*VpcEndpoint*",
                "compute-optimizer:GetEnrollmentStatus",
                "elasticloadbalancing:*",
                "s3:CreateBucket"
            ],
            "Resource": [
                "*"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "s3:Get*",
                "s3:List*",
                "s3:Put*",
                "s3:Delete*"
            ],
            "Resource": [
                "arn:aws-cn:s3:::selectdb-bucket-*"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "sts:GetCallerIdentity",
                "sts:AssumeRole",
                "iam:GetUser",
                "iam:TagUser",
                "iam:CreateUser",
                "iam:DeleteUser",
                "iam:ListAccessKeys",
                "iam:CreateAccessKey",
                "iam:DeleteAccessKey",
                "iam:GetRole",
                "iam:TagRole",
                "iam:ListRoles",
                "iam:CreateRole",
                "iam:DeleteRole",
                "iam:CreatePolicy",
                "iam:GetUserPolicy",
                "iam:PutUserPolicy",
                "iam:GetRolePolicy",
                "iam:PutRolePolicy",
                "iam:DeleteUserPolicy",
                "iam:DeleteRolePolicy",
                "iam:GetInstanceProfile",
                "iam:CreateInstanceProfile",
                "iam:AddRoleToInstanceProfile",
                "iam:RemoveRoleFromInstanceProfile",
                "iam:DeleteInstanceProfile"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "iam:PassRole"
            ],
            "Resource": "arn:aws-cn:iam::*:role/selectdb-*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "cloudformation:*"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "lambda:GetFunction",
                "lambda:CreateFunction",
                "lambda:DeleteFunction",
                "lambda:InvokeFunction",
                "lambda:TagResource"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "iam:CreateServiceLinkedRole"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:AWSServiceName": "elasticloadbalancing.amazonaws.com"
                }
            },
            "Effect": "Allow"
        }
    ]
}

点击下一步,输入名称,点击确定,完成创建权限策略。

创建 IAM 用户,并授权

提示: 如果已有 IAM 用户,可以跳过创建 IAM 用户步骤,直接授权。

点击左侧 访问管理 > 用户,进入用户管理页面,点击创建用户,输入相关信息,点击下一步

选择上述步骤中创建的策略,点击下一步,点击创建用户,完成创建。

创建 IAM 用户组,并授权(可选)

提示: 如果已有 IAM 用户组,可以跳过创建 IAM 用户组步骤,直接授权。

如果企业内存在多名人员使用 SelectDB Cloud,可以创建 IAM 用户组,并将相关人员加入用户组,并统一授权。

点击左侧 访问管理 > 用户组,进入用户组管理页面,点击创建用户组,输入用户组名,选择要添加的用户权限策略,点击创建用户组,完成创建。

准备 VPC 和子网

创建 BYOC 类型仓库前,需要使用上述 IAM 用户提前创建 VPC 和子网,以下是具体操作。

提示: 如果已有符合地域、可用区和以下子网要求的 VPC 和子网,并期望将 BYOC 仓库部署在此 VPC 内,可以跳过下面创建虚拟私有云 VPC 和子网步骤。

子网要求

由于 SelectDB 服务的部署和管理需要通过互联网访问 AWS 的 EC2 ELB S3服务(以及未来的其他服务),因此我们目前支持两种类型的子网:

1. 具有外网访问能力的私有子网(推荐)
子网路由表中包含有 0.0.0.0/0 到 NAT 公网网关的路由。建议使用该类型子网,在这种情况下,所有创建出的机器都将通过共享 NAT 公网网关的公共 IP 地址访问外部网络,这样更安全。不过需要注意的是,如果你选择了私有子网,我们即假定你们公司内网和该 VPC 网络是互通的,否则将无法顺利访问 WebUI。

2. 公网子网(不推荐)
子网路由表中包含有 0.0.0.0/0 到 IGW 互联网网关的路由。不建议使用该类型子网,在这种情况下,我们将会给 SelectDB 后续所有创建出的机器自动分配一个公网 IP。

当使用 CloudFormation 创建资源栈时,请确保 IGW 或 NAT 状态正常,以及路由表配置正确。对于不满足上述两个条件的子网,我们将在 CloudFormation 构建期间直接报告错误并阻止后续执行。

以下为亚马逊云科技提供的经典网络架构图。子网4为具有外网访问能力的私有子网,子网1和子网2为公网子网,这三个子网符合要求,而子网3将会部署失败。

创建 VPC

打开亚马逊云科技 VPC (opens in a new tab) 控制台,切换到期望部署 BYOC 仓库的地域。

点击 创建 VPC ,进入 VPC 创建页面。

选择 仅 VPC ,输入名称、选择 IPv4 CDR,点击 创建 VPC ,完成创建。

创建子网

点击左侧 子网 > 创建子网 ,进入子网创建页面。

我们建议创建两个子网(注意,子网可用区id需要保持一致),一个作为公共子网,一个作为私有子网,最终我们将在私有子网上部署 SelectDB 服务。

注意: 当前支持的地域和子网可用区如下:

云平台地域名称地域 ID可用区 ID
亚马逊云科技宁夏cn-northwest-1cnnw1-az1

创建 IGW 和 NAT 并配置路由表

创建一个 IGW 互联网网关并关联到 VPC

在公网子网的路由表中添加到 IGW 的路由

在公网子网中创建一个 NAT 网关

为私有子网新建一个路由表,并添加到 NAT 的路由

将新的路由表关联到私有子网

最终的网络拓扑应该如下所示

了解资源编排和资源栈

当用户创建 BYOC 类型仓库时,会首先借助云厂商的资源编排服务自动部署 Agent,完成 Agent 与 SelectDB Cloud 平台之间的私有连接,然后由 Agent 负责 BYOC 仓库的部署与管理工作。

资源编排模版说明

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

https://selectdb-cloud-online-cn-north-1.s3.cn-north-1.amazonaws.com.cn/public/aws-cn-byoc.yaml

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

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

如何查看资源栈信息

您可以通过亚马逊云科技 CloudFormation (opens in a new tab) 控制台,切换到地域,查看由 SelectDB 资源栈模板创建的所有资源信息,并可通过资源名称查看特定资源。

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

  • EC2
    • 名称:SelectDBAgent(EC2)
    • 用途:用于部署 Agent,Prometheus,FluentBit 等程序
  • VPC Endpoint
    • 名称:SelectDBEndpoint(VPC Endpoint)
    • 用途:与 SelectDB Manage服务建立私网连接, 从而可以拉取管控指令并且能够单向推送监控、日志
  • S3 Bucket
    • 名称:SelectDBBucket(S3 Bucket)
    • 用途:用于存储数仓数据
  • SecurityGroup
    • 名称:SelectDBSecurityGroupForEndpoint,SelectDBSecurityGroup(VPC SecurityGroup)
    • 用途:一个绑定在终端节点,只允许访问某些端口,如2222、8666、8888、9090。一个绑定在 SelectDB 创建的所有 EC2 实例,并通过安全组规则限制流量(允许来自同一安全组的所有流量访问所有端口,来自同一子网的流量访问端口5000,并允许所有出站流量)
  • IAM User / IAM Role
    • 名称:SelectDBUser(子用户),SelectDBUserAccessKey(aksk),SelectDBUserPolicy(子用户权限),SelectDBRole(角色),SelectDBRolePolicy(角色权限)
    • 用途:
      • 创建出的子用户具备 Agent 所需的最小权限,之后进行的所有的业务操作均使用该子用户的身份(所有子用户信息只会在用户 VPC 内使用,不会外泄)
      • 绑定到 EC2 实例获取临时 Token 进行认证,这比使用永久 AkSk 更安全。一个用于控制侧(绑定到 Agent 机器),一个用于内核侧(绑定到 MS/FE/BE 机器)
  • Lambda Function
    • 名称:
      • CustomFunction*(Lambda Function 逻辑)
      • CustomResourceRole(执行 Lambda Function 的临时角色)
    • 用途:Lambda function 被用来实现一些在 CF 模板中不可用但在 Python SDK 中可用的逻辑。针对该模板,主要有以下几个方面:
      1. 获取小写的 S3 桶名称。因 Amazon S3 不允许使用大写字母命名 S3 桶。
      2. 获取用户选择子网的相关信息, 比如子网类型和子网网段。

资源栈模板依赖的权限说明

在您的云账号下通过资源编排服务(CloudFormation)执行资源栈模板时,会创建 EC2、VPC、S3 等云资源或进行相关操作,因此需要一系列 IAM 权限。在正式执行前,请确保执行此模板的用户具备相应权限,否则可能会遇到执行模板失败的情况。

注意 资源栈模版的执行过程完全在您的云账号下进行,创建出来的资源也都属于您的云账号。SelectDB 不会获取您的云账号信息,也无法使用该账号的相应 IAM 权限。

以下是根据模板中定义的资源和操作所需的权限:

  • 权限汇总:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/resource-created-by": [
                        "selectdb"
                    ]
                }
            },
            "Action": [
                "ec2:TerminateInstances",
                "ec2:StopInstances",
                "ec2:StartInstances",
                "ec2:RebootInstances",
                "ec2:ModifyInstanceAttribute",
                "ec2:DescribeSecurityGroupRules",
                "ec2:AuthorizeSecurityGroupIngress",
                "ec2:RevokeSecurityGroupIngress",
                "ec2:AuthorizeSecurityGroupEgress",
                "ec2:RevokeSecurityGroupEgress",
                "ec2:DeleteSecurityGroup",
                "ec2:GetEbsEncryptionByDefault",
                "ec2:GetEbsDefaultKmsKeyId"
            ],
            "Resource": [
                "arn:aws-cn:ec2:*:*:*"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "ec2:DescribeVpcs",
                "ec2:DescribeSubnets",
                "ec2:DescribeAccountAttributes",
                "ec2:DescribeAddresses",
                "ec2:DescribeInternetGateways",
                "ec2:DescribeAvailabilityZones",
                "ec2:DescribeInstanceTypes",
                "ec2:DescribeVolumes",
                "ec2:ModifyVolume",                
                "ec2:DescribeImages",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeInstances",
                "ec2:RunInstances",
                "ec2:CreateSecurityGroup",
                "ec2:DescribeTags",
                "ec2:CreateTags",
                "ec2:DeleteTags",
                "ec2:*VpcEndpoint*",
                "compute-optimizer:GetEnrollmentStatus",
                "elasticloadbalancing:*",
                "s3:CreateBucket"
            ],
            "Resource": [
                "*"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "s3:Get*",
                "s3:List*",
                "s3:Put*",
                "s3:Delete*"
            ],
            "Resource": [
                "arn:aws-cn:s3:::selectdb-bucket-*"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "sts:GetCallerIdentity",
                "sts:AssumeRole",
                "iam:GetUser",
                "iam:TagUser",
                "iam:CreateUser",
                "iam:DeleteUser",
                "iam:ListAccessKeys",
                "iam:CreateAccessKey",
                "iam:DeleteAccessKey",
                "iam:GetRole",
                "iam:TagRole",
                "iam:ListRoles",
                "iam:CreateRole",
                "iam:DeleteRole",
                "iam:CreatePolicy",
                "iam:GetUserPolicy",
                "iam:PutUserPolicy",
                "iam:GetRolePolicy",
                "iam:PutRolePolicy",
                "iam:DeleteUserPolicy",
                "iam:DeleteRolePolicy",
                "iam:GetInstanceProfile",
                "iam:CreateInstanceProfile",
                "iam:AddRoleToInstanceProfile",
                "iam:RemoveRoleFromInstanceProfile",
                "iam:DeleteInstanceProfile"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "iam:PassRole"
            ],
            "Resource": "arn:aws-cn:iam::*:role/selectdb-*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "cloudformation:*"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "lambda:GetFunction",
                "lambda:CreateFunction",
                "lambda:DeleteFunction",
                "lambda:InvokeFunction",
                "lambda:TagResource"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "iam:CreateServiceLinkedRole"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:AWSServiceName": "elasticloadbalancing.amazonaws.com"
                }
            },
            "Effect": "Allow"
        }
    ]
}
  • EC2 & VPC 权限:

    • 管理 EC2、安全组
    {
        "Condition": {
            "StringEquals": {
                "aws:ResourceTag/resource-created-by": [
                    "selectdb"
                ]
            }
        },
        "Action": [
            "ec2:TerminateInstances",
            "ec2:StopInstances",
            "ec2:StartInstances",
            "ec2:RebootInstances",
            "ec2:ModifyInstanceAttribute",
            "ec2:DescribeSecurityGroupRules",
            "ec2:AuthorizeSecurityGroupIngress",
            "ec2:RevokeSecurityGroupIngress",
            "ec2:AuthorizeSecurityGroupEgress",
            "ec2:RevokeSecurityGroupEgress",
            "ec2:DeleteSecurityGroup",
            "ec2:GetEbsEncryptionByDefault",
            "ec2:GetEbsDefaultKmsKeyId"
        ],
        "Resource": [
            "arn:aws-cn:ec2:*:*:*"
        ],
        "Effect": "Allow"
    }
  • 获取 VPC 相关资源信息,管理终端节点

    {
        "Action": [
            "ec2:DescribeVpcs",
            "ec2:DescribeSubnets",
            "ec2:DescribeAccountAttributes",
            "ec2:DescribeAddresses",
            "ec2:DescribeInternetGateways",
            "ec2:DescribeAvailabilityZones",
            "ec2:DescribeInstanceTypes",
            "ec2:DescribeVolumes",
            "ec2:ModifyVolume",        
            "ec2:DescribeImages",
            "ec2:DescribeSecurityGroups",
            "ec2:DescribeInstances",
            "ec2:RunInstances",
            "ec2:CreateSecurityGroup",
            "ec2:DescribeTags",
            "ec2:CreateTags",
            "ec2:DeleteTags",
            "ec2:*VpcEndpoint*",
            "compute-optimizer:GetEnrollmentStatus"
        ],
        "Resource": [
            "*"
        ],
        "Effect": "Allow"
    },
  • ELB 权限:

    • 管理负载均衡器 ELB 资源
      elasticloadbalancing:*
  • S3 权限:

    • 管理 S3 存储桶以及对存储桶及其内容进行读写操作(针对特定桶)
    {
        "Action": [
            "s3:CreateBucket"
        ],
        "Resource": [
            "*"
        ],
        "Effect": "Allow"
    },
    {
        "Action": [
            "s3:Get*",
            "s3:List*",
            "s3:Put*",
            "s3:Delete*"
        ],
        "Resource": [
            "arn:aws-cn:s3:::selectdb-bucket-*"
        ],
        "Effect": "Allow"
    },
  • IAM & STS & Lambda 权限:

    • IAM & STS 服务相关
    {
        "Action": [
            "sts:GetCallerIdentity",
            "sts:AssumeRole",
            "iam:GetUser",
            "iam:TagUser",
            "iam:CreateUser",
            "iam:DeleteUser",
            "iam:ListAccessKeys",
            "iam:CreateAccessKey",
            "iam:DeleteAccessKey",
            "iam:GetRole",
            "iam:TagRole",
            "iam:ListRoles",
            "iam:CreateRole",
            "iam:DeleteRole",
            "iam:CreatePolicy",
            "iam:GetUserPolicy",
            "iam:PutUserPolicy",
            "iam:GetRolePolicy",
            "iam:PutRolePolicy",
            "iam:DeleteUserPolicy",
            "iam:DeleteRolePolicy",
            "iam:GetInstanceProfile",
            "iam:CreateInstanceProfile",
            "iam:AddRoleToInstanceProfile",
            "iam:RemoveRoleFromInstanceProfile",
            "iam:DeleteInstanceProfile"
        ],
        "Resource": "*",
        "Effect": "Allow"
    },
    {
        "Action": [
            "iam:PassRole"
        ],
        "Resource": "arn:aws:iam::*:role/selectdb-*",
        "Effect": "Allow"
    },
    • Lambda 服务相关
    {
      "Action": [
          "lambda:GetFunction",
          "lambda:CreateFunction",
          "lambda:DeleteFunction",
          "lambda:InvokeFunction",
          "lambda:TagResource"
      ],
      "Resource": "*",
      "Effect": "Allow"
    },
    • ELB 服务关联角色相关
    {
        "Action": [
            "iam:CreateServiceLinkedRole"
        ],
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "iam:AWSServiceName": "elasticloadbalancing.amazonaws.com"
            }
        },
        "Effect": "Allow"
    }
  • CloudFormation 权限:

    {
      "Action": [
          "cloudformation:*"
      ],
      "Resource": "*",
      "Effect": "Allow"
    },

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

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

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

{
    "Version": "2012-10-17",
    "Statement": [
            {
                    "Condition": {
                            "StringEquals": {
                                    "aws:ResourceTag/resource-created-by": [
                                            "selectdb"
                                    ]
                            }
                    },
                    "Action": [
                            "ec2:TerminateInstances",
                            "ec2:StopInstances",
                            "ec2:StartInstances",
                            "ec2:RebootInstances",
                            "ec2:ModifyInstanceAttribute",
                            "ec2:DescribeSecurityGroups",
                            "ec2:DescribeSecurityGroupRules",
                            "ec2:AuthorizeSecurityGroupIngress",
                            "ec2:AuthorizeSecurityGroupEgress",
                            "ec2:DeleteSecurityGroup",
                            "ec2:GetEbsEncryptionByDefault",
                            "ec2:GetEbsDefaultKmsKeyId"
                    ],
                    "Resource": [
                            "arn:aws-cn:ec2:cn-northwest-1:*:*"
                    ],
                    "Effect": "Allow"
            },
            {
                    "Action": [
                            "ec2:DescribeVpcs",
                            "ec2:DescribeSubnets",
                            "ec2:DescribeAccountAttributes",
                            "ec2:DescribeAddresses",
                            "ec2:DescribeInternetGateways",
                            "ec2:DescribeAvailabilityZones",
                            "ec2:DescribeInstanceTypes",
                            "ec2:DescribeVolumes",
                            "ec2:ModifyVolume",
                            "ec2:DescribeImages",
                            "ec2:DescribeInstances",
                            "ec2:RunInstances",
                            "ec2:CreateSecurityGroup",
                            "ec2:DescribeTags",
                            "ec2:CreateTags",
                            "ec2:DeleteTags",
                            "compute-optimizer:GetEnrollmentStatus",
                            "elasticloadbalancing:*"
                    ],
                    "Resource": "*",
                    "Effect": "Allow"
            },
            {
                    "Condition": {
                            "StringEquals": {
                                    "aws:ResourceTag/resource-created-by": [
                                            "selectdb"
                                    ]
                            }
                    },
                    "Action": [
                            "s3:*"
                    ],
                    "Resource": [
                            "arn:aws-cn:s3:::selectdb-bucket-*/*",
                            "arn:aws-cn:s3:::selectdb-bucket-*"
                    ],
                    "Effect": "Allow"
            },
            {
                    "Action": [
                            "sts:GetCallerIdentity",
                            "sts:AssumeRole",
                            "iam:CreateInstanceProfile"
                    ],
                    "Resource": "*",
                    "Effect": "Allow"
            },
            {
                    "Condition": {
                            "StringEquals": {
                                    "iam:PassedToService": [
                                            "ec2.amazonaws.com.cn"
                                    ]
                            }
                    },
                    "Action": [
                            "iam:PassRole",
                            "iam:AddRoleToInstanceProfile"
                    ],
                    "Resource": "arn:aws-cn:iam::*:role/selectdb-*",
                    "Effect": "Allow"
            },
            {
                    "Condition": {
                            "StringEquals": {
                                    "iam:AWSServiceName": [
                                            "elasticloadbalancing.amazonaws.com"
                                    ]
                            }
                    },
                    "Action": [
                            "iam:CreateServiceLinkedRole"
                    ],
                    "Resource": "*",
                    "Effect": "Allow"
            }
    ]
}

具体权限划分如下:

  • EC2 & VPC 权限:

    • 管理 EC2、安全组

      {
          "Condition": {
                  "StringEquals": {
                          "aws:ResourceTag/resource-created-by": [
                                  "selectdb"
                          ]
                  }
          },
          "Action": [
                  "ec2:TerminateInstances",
                  "ec2:StopInstances",
                  "ec2:StartInstances",
                  "ec2:RebootInstances",
                  "ec2:ModifyInstanceAttribute",
                  "ec2:DescribeSecurityGroups",
                  "ec2:DescribeSecurityGroupRules",
                  "ec2:AuthorizeSecurityGroupIngress",
                  "ec2:AuthorizeSecurityGroupEgress",
                  "ec2:DeleteSecurityGroup",
                  "ec2:GetEbsEncryptionByDefault",
                  "ec2:GetEbsDefaultKmsKeyId"
          ],
          "Resource": [
                  "arn:aws-cn:ec2:cn-northwest-1:*:*"
          ],
          "Effect": "Allow"
      },
      • 获取 VPC 相关资源信息
      {
          "Action": [
                  "ec2:DescribeVpcs",
                  "ec2:DescribeSubnets",
                  "ec2:DescribeAccountAttributes",
                  "ec2:DescribeAddresses",
                  "ec2:DescribeInternetGateways",
                  "ec2:DescribeInstances",
                  "ec2:DescribeAvailabilityZones",
                  "ec2:DescribeInstanceTypes",
                  "ec2:DescribeVolumes",
                  "ec2:ModifyVolume",
                  "ec2:DescribeImages",
                  "ec2:RunInstances",
                  "ec2:CreateSecurityGroup",
                  "ec2:DescribeTags",
                  "ec2:CreateTags",
                  "ec2:DeleteTags",
                  "compute-optimizer:GetEnrollmentStatus",
          ],
          "Resource": "*",
          "Effect": "Allow"
      },
  • ELB 权限:

    • 管理负载均衡器 ELB 资源
      elasticloadbalancing:*
  • S3 权限:

    • 管理 S3 存储桶以及对存储桶及其内容进行读写操作(针对特定桶)
      {
              "Condition": {
                      "StringEquals": {
                              "aws:ResourceTag/resource-created-by": [
                                      "selectdb"
                              ]
                      }
              },
              "Action": [
                      "s3:*"
              ],
              "Resource": [
                  "arn:aws-cn:s3:::selectdb-bucket-008f3509df2de314e/*",
                  "arn:aws-cn:s3:::selectdb-bucket-008f3509df2de314e"
              ],
              "Effect": "Allow"
      }
  • IAM & STS 权限:

    • IAM & STS 服务相关
       {
          "Action": [
                  "sts:GetCallerIdentity",
                  "sts:AssumeRole",
                  "iam:CreateInstanceProfile"
          ],
          "Resource": "*",
          "Effect": "Allow"
      },
      {
              "Condition": {
                      "StringEquals": {
                              "iam:PassedToService": [
                                      "ec2.amazonaws.com.cn"
                              ]
                      }
              },
              "Action": [
                      "iam:PassRole",
                      "iam:AddRoleToInstanceProfile"
              ],
              "Resource": "arn:aws-cn:iam::*:role/selectdb-*",
              "Effect": "Allow"
      },
      {
          "Condition": {
                  "StringEquals": {
                          "iam:AWSServiceName": [
                                  "elasticloadbalancing.amazonaws.com"
                          ]
                  }
          },
          "Action": [
                  "iam:CreateServiceLinkedRole"
          ],
          "Resource": "*",
          "Effect": "Allow"
      }
© 2025 北京飞轮数据科技有限公司 京ICP备2022004029号 | Apache、Apache Doris 以及相关开源项目名称均为 Apache 基金会商标