本文介绍数据管理DMS服务关联角色(AliyunServiceRoleForDMS)的应用场景以及如何删除服务关联角色。
背景信息
DMS服务关联角色是一种RAM角色(RAM role)。在某些场景下,该角色可以帮助DMS获取到其他云服务的访问权限,来实现自身的某个功能。更多关于服务关联角色的信息,请参见服务关联角色。
应用场景
当DMS部分功能需要访问ECS、VPC、RDS以及各类型数据库或工具相关的资源时,您可以通过DMS服务关联角色获取访问资源的权限。
AliyunServiceRoleForDMS介绍
角色名称:AliyunServiceRoleForDMS。
策略名称:AliyunServiceRolePolicyForDMS。
权限说明:创建该关联角色后,DMS即可访问ECS、VPC、RDS以及各类型数据库或工具相关的资源。
权限的作用
查询RDS、PolarDB、Lindorm等各类型数据库的资源详情,以便管理云数据库。
查询ECS、VPC的资源详情,以便管理ECS、公网自建数据库。
使用DTS、DBS等云生态工具,进行一站式的数据管理。
策略内容
{
"Version": "1",
"Statement": [
{
"Action": [
"ecs:DescribeInstances",
"ecs:JoinSecurityGroup",
"ecs:LeaveSecurityGroup",
"ecs:DescribeImages",
"ecs:CreateSecurityGroup",
"ecs:AuthorizeSecurityGroup",
"ecs:DescribeSecurityGroupAttribute",
"ecs:DescribeSecurityGroups",
"ecs:RevokeSecurityGroup",
"ecs:DescribeRegions",
"ecs:DescribeInstances",
"ecs:DescribeInstanceAttribute",
"ecs:CreateCommand",
"ecs:DeleteCommand",
"ecs:DescribeInvocationResults"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"ecs:InvokeCommand",
"ecs:StopInvocation"
],
"Resource": "acs:ecs:*:*:instance/*",
"Condition": {
"StringEquals": {
"acs:ResourceTag/dms": "script-for-dms"
}
},
"Effect": "Allow"
},
{
"Action": [
"ecs:InvokeCommand",
"ecs:StopInvocation"
],
"Resource": "acs:ecs:*:*:command/*",
"Effect": "Allow"
},
{
"Action": [
"rds:DescribeDBInstanceHAConfig",
"rds:DescribeBinlogFiles",
"rds:DescribeDBInstancePerformance",
"rds:DescribeDBInstanceAttribute",
"rds:DescribeSlowLogs",
"rds:DescribeSlowLogRecords",
"rds:DescribeSQLCollectorPolicy",
"rds:ModifySQLCollectorPolicy",
"rds:DescribeSQLLogRecords",
"rds:DescribeSQLLogFiles",
"rds:DescribeResourceUsage",
"rds:DescribeRegions",
"rds:DescribeDBInstances",
"rds:DescribeDBInstanceAttribute",
"rds:ModifyBackupPolicy",
"rds:DescribeSecurityGroupConfiguration",
"rds:DescribeDBInstanceEncryptionKey",
"rds:DescribeDBInstanceTDE",
"rds:DescribeDBInstanceSSL",
"rds:DescribeCrossRegionBackupDBInstance"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"dds:DescribeSecurityIps",
"dds:ModifySecurityIps"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"kvstore:DescribeSecurityIps",
"kvstore:ModifySecurityIps",
"kvstore:DescribeRegions",
"kvstore:DescribeInstances",
"kvstore:DescribeInstanceAttribute"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"drds:DescribeDrdsInstances",
"drds:QueryInstanceInfoByConn",
"drds:DescribeDrdsInstanceList",
"drds:DescribeDrdsDBIpWhiteList",
"drds:ModifyDrdsIpWhiteList",
"drds:DescribeDrdsInstanceVersion"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"polardb:DescribeRegions",
"polardb:DescribeDBClusters",
"polardb:DescribeDBClusterAttribute",
"polardb:DescribeDBClusterEndpoints"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"polardbx:DescribeDBInstances",
"polardbx:DescribeSecurityIps",
"polardbx:ModifySecurityIps",
"polardbx:DescribeDBInstanceAttribute",
"polardbx:DescribeBinaryLogList"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"petadata:DescribeInstances",
"petadata:DescribeInstanceInfoByConnection",
"petadata:DescribeSecurityIPs",
"petadata:ModifySecurityIPs"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"hdm:AccessHDMInstance"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"dts:CreateMigrationJob",
"dts:ConfigureMigrationJob",
"dts:StartMigrationJob",
"dts:StopMigrationJob",
"dts:DescribeMigrationJobStatus",
"dts:DescribeMigrationJobDetail",
"dts:CreateSynchronizationJob",
"dts:ConfigureSynchronizationJob",
"dts:StartSynchronizationJob",
"dts:SuspendSynchronizationJob",
"dts:DescribeSynchronizationJobStatus",
"dts:ShieldPrecheck",
"dts:CreateDtsInstance",
"dts:ConfigureDtsJob",
"dts:StartDtsJob",
"dts:ModifyDtsJob",
"dts:StopDtsJob",
"dts:DescribeDtsJobDetail",
"dts:DescribeDtsJobs",
"dts:ConfigureEtlJob",
"dts:SaveEtlJob",
"dts:SuspendDtsJob",
"dts:DeleteDtsJob",
"dts:ModifyDtsJobName",
"dts:SkipPreCheck",
"dts:DescribeDtsEtlJobVersionInfo",
"dts:DescribeEtlJobLogs",
"dts:PreviewSql",
"dts:DescribePreCheckStatus",
"dts:DescribeDtsJobLogs",
"dts:DescribeJobMonitorRule",
"dts:CreateJobMonitorRule",
"dts:DescribeConfigRelations",
"dts:DescribeFormInfo",
"dts:DescribeDmsInstanceDetail",
"dts:DescribeSchemaList",
"dts:DescribeColumns",
"dts:DescribeStruct",
"dts:DescribeDtsInstancePrice",
"dts:DescribeRegions",
"dts:DescribeInstanceInventory",
"dts:CreateCheckJob",
"dts:DescribeCheckJobDiffDetails",
"dts:EtlMockData",
"dts:EtlMockResult",
"dts:DescribeCheckJobStatus",
"dts:Ping"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"apigateway:CreateApiGroup",
"apigateway:ModifyApiGroup",
"apigateway:DeleteApiGroup",
"apigateway:DescribeApiGroups",
"apigateway:CreateApi",
"apigateway:ModifyApi",
"apigateway:DeployApi",
"apigateway:AbolishApi",
"apigateway:DeleteApi",
"apigateway:DescribeApi",
"apigateway:DescribeApis",
"apigateway:CreateApp",
"apigateway:ModifyApp",
"apigateway:DeleteApp",
"apigateway:DescribeAppSecurity",
"apigateway:ResetAppCode",
"apigateway:ResetAppSecret",
"apigateway:DescribeAppAttributes",
"apigateway:SetApisAuthorities",
"apigateway:DescribeAuthorizedApps"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"dg:GetUserGateways",
"dg:GetUserDatabases"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"openanalytics:QueryBucketList",
"openanalytics:QueryDirectoryList",
"openanalytics:ListVirtualClusters",
"openanalytics:SubmitSparkJob",
"openanalytics:KillSparkJob",
"openanalytics:GetJobLog",
"openanalytics:GetJobDetail",
"openanalytics:GetJobStatus",
"openanalytics:ExecuteService",
"openanalytics:QueryService",
"openanalytics:ExecuteOnVirtualCluster"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"dbs:DescribeBackupPlanList",
"dbs:DescribeFullBackupList",
"dbs:CreateBackupPlan",
"dbs:ConfigureBackupPlan",
"dbs:ModifyBackupObjects",
"dbs:StartBackupPlan",
"dbs:ModifyBackupSourceEndpoint",
"dbs:StartTask",
"dbs:StopBackupPlan",
"dbs:CreateRestoreTask",
"dbs:StartRestoreTask",
"dbs:DescribeRestoreTaskList",
"dbs:DescribeRestoreRangeInfo",
"dbs:CreateDLAService",
"dbs:DescribeDLAService",
"dbs:CloseDLAService",
"dbs:CreateAndStartBackupPlan",
"dbs:DescribeFullBackupSet",
"dbs:DescribeDataSourceQueryableAttribute",
"dbs:DescribeDataSourceQueryableAttributeDetail",
"dbs:GetTimeTravelInstance"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"oceanbase:DescribeAllTenantsConnectionInfo",
"oceanbase:DescribeInstances"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": "ram:DeleteServiceLinkedRole",
"Resource": "*",
"Effect": "Allow",
"Condition": {
"StringEquals": {
"ram:ServiceName": "dms.aliyuncs.com"
}
}
},
{
"Action": [
"hbase:DescribeInstances",
"hbase:DescribeInstance",
"hbase:DescribeEndpoints",
"hbase:DescribeIpWhitelist",
"hbase:ModifyIpWhitelist"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"cassandra:DescribeClusters",
"cassandra:DescribeCluster",
"cassandra:DescribeDataCenters",
"cassandra:DescribeIpWhitelistGroups",
"cassandra:ModifyIpWhitelistGroup"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"lindorm:GetLindormInstanceList",
"lindorm:GetLindormInstance",
"lindorm:GetLindormInstanceEngineList",
"lindorm:GetLindormInstanceListForDMS",
"lindorm:GetLindormInstanceForDMS",
"lindorm:GetLindormInstanceForDMSByConnStr",
"lindorm:GetInstanceIpWhiteList",
"lindorm:UpdateInstanceIpWhiteList",
"lindorm:CreateComputeEngineJob",
"lindorm:GetComputeEngineJobDetail",
"lindorm:GetComputeEngineJobLog",
"lindorm:ReleaseLindormComputeJob"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"adb:CreateDBCluster",
"adb:CreateAccount",
"adb:DescribeDBClusters",
"adb:DescribeDBClusterNetInfo",
"adb:SubmitSparkApp",
"adb:KillSparkApp",
"adb:ListSparkApps",
"adb:GetSparkAppLog",
"adb:GetSparkAppInfo",
"adb:GetSparkAppState",
"adb:GetSparkAppAttemptLog",
"adb:GetSparkAppWebUiAddress",
"adb:ListSparkAppAttempts",
"adb:DescribeDBResourceGroup"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"gpdb:DescribeDBInstances",
"gpdb:ResumeInstance",
"gpdb:PauseInstance"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"vpc:DescribeVpcs",
"vpc:DescribeVSwitches"
],
"Resource": "*",
"Effect": "Allow"
}
]
}
创建服务关联角色所需的权限
您需要拥有指定的权限,才能创建DMS服务关联角色。
若您的RAM用户权限不足,则需要添加如下权限后再执行为RAM用户授权操作。添加权限和授权的具体操作,请参见创建自定义权限策略和为RAM用户授权。
权限策略示例:允许为DMS创建服务关联角色。
{
"Action":"ram:CreateServiceLinkedRole",
"Resource":"*",
"Effect":"Allow",
"Condition":{
"StringEquals":{
"ram:ServiceName": "dms.aliyuncs.com"
}
}
}
创建服务关联角色
若您的RAM用户已添加DMS创建服务关联角色权限,则需要登录DMS控制台,并且在弹出的DMS服务关联角色对话框中,单击确认,系统将自动为您创建DMS服务关联角色。更多创建服务关联角色信息,请参见创建服务关联角色。
删除服务关联角色
若您需要删除服务关联角色(AliyunServiceRoleForDMS),需要在DMS控制台上移除实例列表中的所有实例,移除后再尝试删除该服务关联角色。移除实例和服务关联角色的具体操作,请参见删除实例和删除服务关联角色。