Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Azure Migrate 设备是一种轻型工具,可发现本地服务器并将其配置和性能数据发送到 Azure。 它还执行软件清单、执行无代理依赖项分析,并检测 Web 应用和 SQL Server 或 MySQL Server 实例等工作负荷。
若要使用这些功能,请在设备配置管理器中添加服务器和来宾凭据。 遵循最低特权原则有助于确保设置安全高效。
发现 VMware 资产
若要发现 VMware 资产中运行的服务器的基本设置,需要以下权限。
vCenter 帐户权限
发现服务器元数据
- 若要在 VMware 环境中发现基本服务器配置,需要以下权限:
- 只读:使用内置只读角色或创建其副本。
- 若要发现服务器元数据并启用软件清单、依赖项分析和性能评估,需要以下权限:
- 只读:使用内置只读角色或创建其副本。
- 来宾作:将来宾作权限添加到只读角色。
VMware 服务器的作用域发现
- 若要发现特定的虚拟机(VM),请在各个 VM 上分配读取权限。
- 若要发现文件夹中的所有 VM,请在文件夹级别分配读取权限,并打开“ 传播到子 级”选项。
- 若要启用软件清单、依赖项分析和性能评估,请将来宾作权限分配给 vCenter 帐户以及读取权限。
- 授予对托管虚拟机的所有父对象(例如主机、群集、主机文件夹、群集文件夹和数据中心)的只读访问权限。 无需将这些权限应用于所有子对象。
- 在 vSphere 客户端中,检查在 主机和群集视图和VM 和模板 视图的父对象上是否设置了读取权限。
无代理迁移
若要执行无代理迁移,请确保 Azure Migrate 设备使用的 vCenter 帐户在所有必需级别具有权限:数据中心、群集、主机、VM 和数据存储。 在每个级别应用权限以避免复制错误。
| vSphere 特权名称 | 特权用途 | 必选 | API 特权名称 |
|---|---|---|---|
| 浏览数据存储 | 允许用户浏览 VM 日志文件以排查快照创建和删除问题 | Datastores | Datastore.Browse |
| 低级别文件操作 | 允许在数据存储浏览器中进行读取、写入、删除和重命名操作,以排查与快照创建和删除相关的问题。 | Datastores | Datastore.FileManagement |
| 更改配置 - 切换磁盘更改跟踪 | 允许用户启用或禁用 VM 磁盘的更改跟踪,以拉取快照之间更改的数据块 | 虚拟机 | VirtualMachine.Config.ChangeTracking |
| 更改配置 - 获取磁盘租约 | 允许 VM 上的磁盘租用作使用 VMware vSphere 虚拟磁盘开发工具包(VDDK)读取磁盘 | 虚拟机 | VirtualMachine.Config.DiskLease |
| 预配 - 允许只读磁盘访问 | 允许只读磁盘访问:在 VM 上打开磁盘以使用 VDDK 读取磁盘 | 虚拟机 | VirtualMachine.Provisioning.DiskRandomRead |
| 配置 - 允许磁盘访问 | 允许在 VM 上打开磁盘,以使用 VDDK 读取磁盘 | 虚拟机 | VirtualMachine.Provisioning.DiskRandomAccess |
| 预配 - 允许虚拟机下载 | 允许虚拟机下载以读取 VM 文件、获取日志和排查故障 | 根主机或 vCenter Server | VirtualMachine.Provisioning.GetVmFiles |
| 快照管理 | 允许在 VM 上发现、软件清单和依赖项映射 | 虚拟机 | VirtualMachine.State.* |
| 来宾作 | 允许创建和管理用于复制的 VM 快照 | 虚拟机 | VirtualMachine.GuestOperations.* |
| 交互电源关闭 | 允许在迁移到 Azure 期间关闭 VM | 虚拟机 | VirtualMachine.Interact.PowerOff |
来宾发现已安装的软件、依赖项和工作负载
为了有效地发现目标服务器上的软件、应用程序依赖项和工作负载,Azure Migrate 设备需要来宾作系统(OS)凭据。 这些凭据使设备能够安全地连接到服务器,并收集详细的清单和性能数据。
快速来宾发现
若要快速发现软件清单、服务器依赖项和数据库实例,需要以下权限:
| 用例 | 发现的元数据 | 凭据类型 | 安全权限 |
|---|---|---|---|
| 快速来宾发现 | 软件清单 服务器依赖项(有限数据) 数据库实例清单 |
Windows Linux |
本地来宾用户帐户 任何非 Sudo 来宾用户帐户 |
Note
可以使用 Windows 来宾或 Linux 非 Sudo 用户帐户来获取依赖项映射数据。 但是,对于某些使用更高权限运行的进程,你可能不会收集进程信息(如进程名称或应用名称)。 这些进程在单服务器视图中的计算机下显示为 “未知 ”。
深入的来宾发现
若要深入发现软件清单、服务器依赖项和 Web 应用(如 .NET 和 Java Tomcat),需要具有以下权限:
| 用例 | 发现的元数据 | 凭据类型 | 所需的权限 |
|---|---|---|---|
| 深入的来宾发现 | 软件清单 服务器依赖项(完整数据) 数据库实例清单 .NET 和 Java Tomcat 等 Web 应用 |
Windows | 管理员 |
| 深入的来宾发现 | 软件清单 服务器依赖项(完整数据) 数据库实例清单 .NET 和 Java Tomcat 等 Web 应用 |
Linux | 若要标识服务器依赖项,需要以下 Sudo 权限: /usr/bin/netstat 和 /usr/bin/ls。 如果 netstat 不可用,则需要对 Sudo 权限 ss 。 对于 Java Web 应用发现(Tomcat 服务器),用户应该对所有 Catalina 家庭拥有读取和执行权限 r-x。 使用以下命令查找所有 Catalina 家庭: ps -ef \| grep catalina.home。 下面是设置最低特权用户的示例命令: setfacl -m u:<username>:rx <catalina/home/path> |
发现 Hyper-V 庄园
若要查找在 Hyper-V 资产中运行的服务器的基本设置,需要某些权限。 在所有 Hyper-V 主机上,创建属于这三个组的一部分的本地用户:
- Hyper-V 管理员
- 性能监控工具用户
- 远程管理用户
使用 脚本 准备 Hyper-V 主机。
若要深入发现 Hyper-V 资产并执行软件清单和依赖项分析,需要来宾帐户 凭据 。
发现物理服务器和云服务器
若要发现和评估托管在其他公有云中的物理服务器或服务器,Azure Migrate 设备需要具有最低特权访问权限的凭据。 这些凭据允许设备连接和收集必要的数据,而无需过度公开敏感系统权限。
快速服务器发现
若要快速发现软件清单、服务器依赖项和数据库实例,需要以下权限:
| 用例 | 发现的元数据 | 凭据类型 | 详细信息 |
|---|---|---|---|
| 快速服务器发现 | 软件清单 无代理依赖项分析(有限数据) 数据库和 Web 应用的工作负荷清单 |
Windows | 需要遵循的步骤 |
| 快速服务器发现 | 软件清单 无代理依赖项分析(完整数据) 数据库和 Web 应用的工作负荷清单 |
Linux | 需要遵循的步骤 |
Windows 服务器
若要快速发现 Windows 服务器,请创建属于以下用户组的 Windows 用户帐户:
- 远程管理用户
- 性能监控工具用户
- 性能日志用户
来宾用户帐户需要有权访问控制面板中 WMI 控件项中的 CIMV2 命名空间及其子命名空间。 若要设置访问权限,请使用以下步骤:
在目标 Windows 服务器上,打开 “开始 ”菜单,搜索 “运行”,然后选择它。
在 “运行 ”对话框中,键入
wmimgmt.msc并按 Enter 键。在 wmimgmt 控制台中,右键单击 WMI 控件(本地),然后选择“ 属性”。
在 “WMI 控件(本地)属性 ”对话框中,选择“ 安全 ”选项卡。
展开命名空间树中的 根 文件夹,然后选择 CIMV2 命名空间。
选择 “安全性 ”以打开 “ROOT\CIMV2 安全 ”对话框。
在 “组或用户名 ”部分中,选择“ 添加 ”以打开 “选择用户或组 ”对话框。
搜索用户帐户,将其选中,然后选择 “确定 ”以返回到 ROOT\CIMV2 安全对话框。
在 “组或用户名 ”部分中,选择来宾用户帐户。 验证是否允许以下权限:
- 启用帐户
- 远程启用
选择 “应用” 以启用在用户帐户上设置的权限。
添加新来宾用户后重启 WinRM 服务。
Linux 服务器
若要快速发现 Linux 服务器:
创建用户帐户;例如,
AzMigrateLeastprivuser.通过在文件中添加以下行
/etc/sudoers,仅向用户授予 Sudo 权限以获取所需的命令:AzMigrateLeastprivuser ALL=(ALL) NOPASSWD: /usr/sbin/dmidecode, /usr/sbin/fdisk -l, /usr/sbin/fdisk -l *, /usr/bin/ls -l /proc/*/exe, /usr/bin/netstat -atnp, /usr/sbin/lvdisplay "" Defaults:AzMigrateLeastprivuser !requiretty
深入服务器检测
若要深入发现软件清单、服务器依赖项和 Web 应用(如 .NET 和 Java Tomcat),需要具有以下权限:
| 用例 | 发现的元数据 | 凭据类型 | 要配置的命令 |
|---|---|---|---|
| 深入服务器检测 | 深入发现 .NET 和 Java Tomcat 等 Web 应用 无代理依赖项分析(完整数据) |
Windows Linux |
需要管理员权限。 若要发现 Tomcat 服务器上的 Java Web 应用,用户帐户需要对所有 Catalina 主目录具有读取和执行 ( r-x) 权限。使用以下命令查找所有 Catalina 家庭: ps -ef \| grep catalina.home。下面是设置最低特权用户的示例命令: setfacl -m u:<username>:rx <catalina/home/path> |
数据库发现
要启动工作负荷发现,需要准备软件清单。 若要启用它,请确保添加来宾凭据。 发现 SQL 和 MySQL 数据库的权限适用于所有设备类型:VMware、Hyper-V 和物理服务器。
发现 SQL Server 实例和数据库
在单个 SQL Server 实例上创建最低特权帐户。 使用 Windows 身份验证并仅分配所需的权限。
Windows 身份验证
-- Create a login to run the assessment.
use master;
DECLARE @SID NVARCHAR(MAX) = N'';
CREATE LOGIN [MYDOMAIN\MYACCOUNT] FROM WINDOWS;
SELECT @SID = N'0x'+CONVERT(NVARCHAR, sid, 2) FROM sys.syslogins where name = 'MYDOMAIN\MYACCOUNT'
IF (ISNULL(@SID,'') != '')
PRINT N'Created login [MYDOMAIN\MYACCOUNT] with SID = ' + @SID
ELSE
PRINT N'Login creation failed'
GO
-- Create a user in every database other than tempdb, model, and secondary AG databases (with connection_type = ALL) and provide minimal read-only permissions.
USE master;
EXECUTE sp_MSforeachdb '
USE [?];
IF (''?'' NOT IN (''tempdb'',''model''))
BEGIN
DECLARE @is_secondary_replica BIT = 0;
IF CAST(PARSENAME(CAST(SERVERPROPERTY(''ProductVersion'') AS VARCHAR), 4) AS INT) >= 11
BEGIN
DECLARE @innersql NVARCHAR(MAX);
SET @innersql = N''
SELECT @is_secondary_replica = IIF(
EXISTS (
SELECT 1
FROM sys.availability_replicas a
INNER JOIN sys.dm_hadr_database_replica_states b
ON a.replica_id = b.replica_id
WHERE b.is_local = 1
AND b.is_primary_replica = 0
AND a.secondary_role_allow_connections = 2
AND b.database_id = DB_ID()
), 1, 0
);
'';
EXEC sp_executesql @innersql, N''@is_secondary_replica BIT OUTPUT'', @is_secondary_replica OUTPUT;
END
IF (@is_secondary_replica = 0)
BEGIN
CREATE USER [MYDOMAIN\MYACCOUNT] FOR LOGIN [MYDOMAIN\MYACCOUNT];
GRANT SELECT ON sys.sql_expression_dependencies TO [MYDOMAIN\MYACCOUNT];
GRANT VIEW DATABASE STATE TO [MYDOMAIN\MYACCOUNT];
END
END'
GO
-- Provide server-level read-only permissions.
use master;
GRANT SELECT ON sys.sql_expression_dependencies TO [MYDOMAIN\MYACCOUNT];
GRANT EXECUTE ON OBJECT::sys.xp_regenumkeys TO [MYDOMAIN\MYACCOUNT];
GRANT EXECUTE ON OBJECT::sys.xp_instance_regread TO [MYDOMAIN\MYACCOUNT];
GRANT VIEW DATABASE STATE TO [MYDOMAIN\MYACCOUNT];
GRANT VIEW SERVER STATE TO [MYDOMAIN\MYACCOUNT];
GRANT VIEW ANY DEFINITION TO [MYDOMAIN\MYACCOUNT];
GO
-- Provide msdb-specific permissions.
use msdb;
GRANT EXECUTE ON [msdb].[dbo].[agent_datetime] TO [MYDOMAIN\MYACCOUNT];
GRANT SELECT ON [msdb].[dbo].[sysjobsteps] TO [MYDOMAIN\MYACCOUNT];
GRANT SELECT ON [msdb].[dbo].[syssubsystems] TO [MYDOMAIN\MYACCOUNT];
GRANT SELECT ON [msdb].[dbo].[sysjobhistory] TO [MYDOMAIN\MYACCOUNT];
GRANT SELECT ON [msdb].[dbo].[syscategories] TO [MYDOMAIN\MYACCOUNT];
GRANT SELECT ON [msdb].[dbo].[sysjobs] TO [MYDOMAIN\MYACCOUNT];
GRANT SELECT ON [msdb].[dbo].[sysmaintplan_plans] TO [MYDOMAIN\MYACCOUNT];
GRANT SELECT ON [msdb].[dbo].[syscollector_collection_sets] TO [MYDOMAIN\MYACCOUNT];
GRANT SELECT ON [msdb].[dbo].[sysmail_profile] TO [MYDOMAIN\MYACCOUNT];
GRANT SELECT ON [msdb].[dbo].[sysmail_profileaccount] TO [MYDOMAIN\MYACCOUNT];
GRANT SELECT ON [msdb].[dbo].[sysmail_account] TO [MYDOMAIN\MYACCOUNT];
GO
-- Clean up
--use master;
-- EXECUTE sp_MSforeachdb 'USE [?]; DROP USER [MYDOMAIN\MYACCOUNT]'
-- DROP LOGIN [MYDOMAIN\MYACCOUNT];
--GO
SQL Server 身份验证
--- Create a login to run the assessment.
use master;
-- NOTE: SQL Server instances that host replicas of Always On availability groups must use the same SID for the SQL Server login.
-- After the account is created in one of the members, copy the SID output from the script and include this value when executing against the remaining replicas.
-- When the SID needs to be specified, add the value to the following @SID variable definition.
DECLARE @SID NVARCHAR(MAX) = N'';
IF (@SID = N'')
BEGIN
CREATE LOGIN [evaluator]
WITH PASSWORD = '<provide a strong password>'
END
ELSE
BEGIN
DECLARE @SQLString NVARCHAR(500) = 'CREATE LOGIN [evaluator]
WITH PASSWORD = ''<provide a strong password>''
, SID = ' + @SID
EXEC SP_EXECUTESQL @SQLString
END
SELECT @SID = N'0x'+CONVERT(NVARCHAR(100), sid, 2) FROM sys.syslogins where name = 'evaluator'
IF (ISNULL(@SID,'') != '')
PRINT N'Created login [evaluator] with SID = '''+ @SID +'''. If this instance hosts any Always On Availability Group replica, use this SID value when executing the script against the instances hosting the other replicas'
ELSE
PRINT N'Login creation failed'
GO
-- Create a user in every database other than tempdb, model, and secondary AG databases (with connection_type = ALL) and provide minimal read-only permissions.
USE master;
EXECUTE sp_MSforeachdb '
USE [?];
IF (''?'' NOT IN (''tempdb'',''model''))
BEGIN
DECLARE @is_secondary_replica BIT = 0;
IF CAST(PARSENAME(CAST(SERVERPROPERTY(''ProductVersion'') AS VARCHAR), 4) AS INT) >= 11
BEGIN
DECLARE @innersql NVARCHAR(MAX);
SET @innersql = N''
SELECT @is_secondary_replica = IIF(
EXISTS (
SELECT 1
FROM sys.availability_replicas a
INNER JOIN sys.dm_hadr_database_replica_states b
ON a.replica_id = b.replica_id
WHERE b.is_local = 1
AND b.is_primary_replica = 0
AND a.secondary_role_allow_connections = 2
AND b.database_id = DB_ID()
), 1, 0
);
'';
EXEC sp_executesql @innersql, N''@is_secondary_replica BIT OUTPUT'', @is_secondary_replica OUTPUT;
END
IF (@is_secondary_replica = 0)
BEGIN
CREATE USER [evaluator] FOR LOGIN [evaluator];
GRANT SELECT ON sys.sql_expression_dependencies TO [evaluator];
GRANT VIEW DATABASE STATE TO [evaluator];
END
END'
GO
-- Provide server-level read-only permissions.
USE master;
GRANT SELECT ON sys.sql_expression_dependencies TO [evaluator];
GRANT EXECUTE ON OBJECT::sys.xp_regenumkeys TO [evaluator];
GRANT EXECUTE ON OBJECT::sys.xp_instance_regread TO [evaluator];
GRANT VIEW DATABASE STATE TO [evaluator];
GRANT VIEW SERVER STATE TO [evaluator];
GRANT VIEW ANY DEFINITION TO [evaluator];
GO
-- Provide msdb-specific permissions.
USE msdb;
GRANT EXECUTE ON [msdb].[dbo].[agent_datetime] TO [evaluator];
GRANT SELECT ON [msdb].[dbo].[sysjobsteps] TO [evaluator];
GRANT SELECT ON [msdb].[dbo].[syssubsystems] TO [evaluator];
GRANT SELECT ON [msdb].[dbo].[sysjobhistory] TO [evaluator];
GRANT SELECT ON [msdb].[dbo].[syscategories] TO [evaluator];
GRANT SELECT ON [msdb].[dbo].[sysjobs] TO [evaluator];
GRANT SELECT ON [msdb].[dbo].[sysmaintplan_plans] TO [evaluator];
GRANT SELECT ON [msdb].[dbo].[syscollector_collection_sets] TO [evaluator];
GRANT SELECT ON [msdb].[dbo].[sysmail_profile] TO [evaluator];
GRANT SELECT ON [msdb].[dbo].[sysmail_profileaccount] TO [evaluator];
GRANT SELECT ON [msdb].[dbo].[sysmail_account] TO [evaluator];
GO
-- Clean up
--use master;
-- EXECUTE sp_MSforeachdb 'USE [?]; BEGIN TRY DROP USER [evaluator] END TRY BEGIN CATCH PRINT ERROR_MESSAGE() END CATCH;'
-- BEGIN TRY DROP LOGIN [evaluator] END TRY BEGIN CATCH PRINT ERROR_MESSAGE() END CATCH;
--GO
有关如何大规模设置具有最低特权的自定义 SQL 帐户的信息,请参阅 预配具有 SQL Server 发现和评估最低特权的自定义帐户。
发现 MySQL Server 实例和数据库
若要发现 MySQL 数据库,请将 MySQL 数据库凭据添加到设备。
确保与添加的 MySQL 凭据对应的用户具有以下权限:
- 选择对
information_schema表的权限 - 选择对
mysql.users表的权限
对于 MySQL 发现,请配置必要的防火墙规则和 MySQL 用户权限,确保允许设备的 IP 或域。 还应将 my.cnf 中的 bind-address 设置为允许外部连接(如果需要)。
使用以下命令向 MySQL 用户授予必要的权限:
GRANT USAGE ON *.* TO 'username'@'ip';
GRANT PROCESS ON *.* TO 'username'@'ip';
GRANT SELECT (User, Host, Super_priv, File_priv, Create_tablespace_priv, Shutdown_priv) ON mysql.user TO 'username'@'ip';
GRANT SELECT ON information_schema.* TO 'username'@'ip';
GRANT SELECT ON performance_schema.* TO 'username'@'ip';
相关内容
- 了解如何 发现 VMware 资产。
- 了解如何 发现 Hyper-V 资产。
- 了解如何 发现在公有云中运行的物理服务器或服务器。